The PPJ Framework is the collection of libraries that are needed by ported applications to support features that are not available, or are too different, in the standard .NET Framework. For example, masked editing is not available in .NET 1.1 and the way it's implemented in .NET 2.0 is too different from what SQLWindows/Team Developer applications expect to use.
Additionally the PPJ Framework provides a very convenient layer in between the newly generated .NET code and the .NET Framework. Thanks to this layer we can provide fixes for bugs that are present in the .NET Framework and we can debug applications putting breakpoints into key places in the core libraries.
The PPJ Framework is composed of 6 separate libraries (Table 1) compiled into .NET assemblies. Its architecture is very thin, most of the low level work is left to the .NET Framework and the PPJ Framework simply provides plumbing code, or adapts parameters and checks for errors.
The core support library. Contains everything that is needed by most SAL applications, including support for reports, SQL binding, COM/ActiveX support, forms, QuickObjects, etc.
Implementation of the Visual ToolChest library. The implementation is fully based on .NET controls and classes and there are no proprietary controls.
Implementation of the XSal2 library in .NET.
Implementation of DDE functionality found in SQLWindows/Team Developer. The implementation is based on Microsoft's DDEML module, which is extremely reliable and still used by most Microsoft applications, including Office.
Reporting module for Crystal Reports .NET.
Reporting module for Combit List & Labels.
Reporting module for Microsoft Reporting Services.
Reporting module for Stimulsoft.
FlexGrid.NET component. This component is redistributed as part of the PPJ Framework under an OEM license between ITG and ComponentOne.
RibbonBar.NET assemblies. This component is redistributed as part of the PPJ Framework under an OEM license between ITG and ComponentOne.
Flexgrid and Ribbon designer files. These assemblies are needed only if the application is deployed as source code.
Skinning engine assembly. Needed if the application uses skinning.
Ported applications reference only the PPJ libraries that are actually needed. If your application doesn't use DDE functionality, you will not need to reference or deploy PPJ.Runtime.DDE.DLL.