Framework
Assemblies
The PPJ Framework adapts SAL behavior to .NET. Generated code calls PPJ types and services, which in turn use the UI framework, database provider, and reporting engine. Keeping these responsibilities separate helps identify whether a problem belongs to the application, the compatibility layer, or a dependency.
The framework is divided into .NET assemblies. Core libraries provide compatibility types and services; optional libraries add integrations such as reporting. The target UI framework and ADO.NET provider still perform the underlying rendering and database work.
Most of the implementation work is related to the visual layer and SQL Support.
Web (Wisej.NET)
| Assembly | Description |
|---|---|
| PPJ.Web.#.dll | The core support library. Contains everything that is needed by most SAL applications, including support for reports, SQL binding, forms, QuickObjects, etc. |
| PPJ.Web.Vis.#.dll | Implementation of the Visual ToolChest library. Uses the target .NET UI and supporting libraries; check the installed package for optional control dependencies. |
| 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 & Label. |
| PPJ.Web.Reports.RS.#.dll | Reporting module for Microsoft Reporting Services. |
| PPJ.Web.Reports.ST.#.dll | Reporting module for Stimulsoft. |
Desktop (WinForms)
| PPJ Assembly | Description |
|---|---|
| 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. Uses the target .NET UI and supporting libraries; check the installed package for optional control dependencies. |
| 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, for Windows desktop interprocess communication. |
| PPJ.Runtime.Reports.#.dll | Reporting module for Crystal Reports .NET. |
| PPJ.Runtime.Reports.LL.#.dll | Reporting module for Combit List & Label. |
| PPJ.Runtime.Reports.RS.#.dll | Reporting module for Microsoft Reporting Services. |
| PPJ.Runtime.Reports.ST.#.dll | Reporting module for Stimulsoft. |
The release suffix in these assembly names is represented by #. Deploy a consistent set from the installed PPJ release; matching namespaces do not make desktop and web assemblies interchangeable.
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.
Desktop and Web share many PPJ namespace and type names to simplify conversion. This does not make their assemblies interchangeable or guarantee every desktop API exists on Web. Select references and signatures for the intended target.
| Namespace | Functional 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
For a .NET Framework desktop application, private managed assemblies normally belong beside the executable or in configured probing paths. The operating-system PATH and the current working directory are not general managed-assembly probing locations. See How the runtime locates assemblies.
The Global Assembly Cache is a .NET Framework mechanism, not the deployment model for modern .NET. Use the deployment output appropriate to the project target. Native DLLs, COM registration, reporting runtimes, and provider installation can require additional steps. A successful copy of the PPJ DLLs alone does not establish that deployment is complete.
For PPJ Web, deploy the web application and its dependencies to the server. Server-side compatibility libraries do not install ActiveX controls, native DLLs, or printers in a user's browser.
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.
Dependency Checklist
Record the PPJ release, target framework, UI target, process architecture, database provider, reporting adapter, and native components. Reproduce startup, database access, and report generation on a clean target machine. Optional libraries may be loaded dynamically by configuration, so inspecting compile-time references alone is insufficient.