Framework

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 .NET.

Assemblies

Additionally, the PPJ Framework provides a very convenient layer in between the newly generated code and the .NET system. Thanks to this layer we can provide fixes for bugs that are present in .NET itself and we can debug applications putting breakpoints into key places in the core libraries.

The PPJ Framework is composed of several separate libraries (see tables below) 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.

Most of the implementation work is related to the visual layer and SQL Support.

Web (Wisej.NET)

AssemblyDescription

PPJ.Web.#.dll

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.

PPJ.Web.Vis.#.dll

Implementation of the Visual ToolChest library. The implementation is fully based on .NET controls and classes and there are no proprietary controls.

PPJ.Web.XSal.#.dll

Implementation of the XSal2 library in .NET.

PPJ.Web.CrystalReports.#.dll

Reporting module for Crystal Reports .NET.

PPJ.Web.Reports.LL.#.dll

Reporting module for Combit List & Labels.

PPJ.Web.Reports.RS.#.dll

Reporting module for Microsoft Reporting Services.

PPJ.Web.Reports.ST.#.dll

Reporting module for Stimulsoft.

Desktop (WinForms)

PPJ AssemblyDescription

PPJ.Runtime.#.dll

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.

PPJ.Runtime.Vis.#.dll

Implementation of the Visual ToolChest library. The implementation is fully based on .NET controls and classes and there are no proprietary controls.

PPJ.Runtime.XSal.#.dll

Implementation of the XSal2 library in .NET.

PPJ.Runtime.DDE.#.dll

Implementation of DDE functionality found in Team Developer. The implementation is based on Microsoft's DDEML module, which is extremely reliable and still used by most Microsoft applications, including Office.

PPJ.Runtime.Reports.#.dll

Reporting module for Crystal Reports .NET.

PPJ.Runtime.Reports.LL.#.dll

Reporting module for Combit List & Labels.

PPJ.Runtime.Reports.RS.#.dll

Reporting module for Microsoft Reporting Services.

PPJ.Runtime.Reports.ST.#.dll

Reporting module for Stimulsoft.

All the PPJ assemblies are strongly named and can be deployed using XCOPY deployment or the GAC.

Namespaces

PPJ Framework assemblies are organized into several namespaces. The table below lists the public namespaces that are imported by the Ice Porter conversion tool when generating the new .NET code.

There is no difference in the namespaces in the PPJ.Runtime (Desktop) and PPJ.Web (Wisej.NET) assemblies.

NamespaceFunctional areas grouped by the namespace

PPJ.Runtime

All core data types and functionality, SAL functions, system constants.

PPJ.Runtime.Com

COM server and client support, COM classes (Variant, SafeArray, etc.).

PPJ.Runtime.Sql

SQL support, SQL Types and functions, binding, error management.

PPJ.Runtime.Reports

Implementation of reporting functionality based on Crystal Reports for .NET.

PPJ.Runtime.Reports.LL, PPJ.Runtime.Reports.RS, PPJ.Runtime.Reports.ST,

Implementation of reporting functionality using alternative reporting engines (LL, RS, ST).

PPJ.Runtime.Windows

All visual classes, messaging system, and visual implementation.

PPJ.Runtime.Windows.QO

Supported QuickObjects.

PPJ.Runtime.DDE

SalDDE functions and DDE implementation.

PPJ.Runtime.Vis

Visual Toolchest functions and classes.

PPJ.Runtime.XSal

XSal2 functions and classes.

Deployment

The deployment of the PPJ Framework is very easy. You can simply copy the assemblies to the same directory (or the working directory) of the application or anywhere in the PATH. In alternative you can register the assemblies with the GAC using GACUTIL.EXE. We also provide MSI installers that you can use as part of your deployment procedure.

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.

References

The PPJ Framework references some additional libraries:

  • Wisej.Framework (Web)

  • FlexGrid.NET (WinForms)

  • Oracle ODP

  • SharpZipLib

However, because of the .NET architecture, the referenced libraries are needed only if they are actually used by the application. If your application doesn't use the Oracle driver to connect to Oracle (or if it doesn't use Oracle at all) you don't need to reference the Oracle ODP assembly. Similarly, if your ported application doesn't use XSalZip functions you don't need the SharpZipLib library.

Additional ADO.NET libraries may be needed depending on the configuration of sql.config for accessing databases using ADO.NET drivers.

Last updated