Overview

OpenEdge applications can access .NET classes from ABL on the Linux platform as well as Windows. .NET class access on Linux is possible from the character client, the ABL batch client, and the Progress Application Server (PAS) for OpenEdge agent. The same OpenEdge .NET application, on both Linux or Windows platforms, should work without code modification, as long as it does not include graphical user interface (GUI) code (for example, WinForms). The syntax for instantiating classes, calling methods, accessing properties, implementing interfaces, subscribing to events, and extending .NET classes (hybrid classes) is the same on both Linux and Windows.

Restrictions

The following restrictions and limitations apply when using .NET with OpenEdge on Linux:
  • .NET is not included with OpenEdge. You must source the assemblies that work with .NET on Linux.
  • .NET Framework is not available for Linux. OpenEdge only supports the .NET runtime on Linux.
  • Desktop applications, such as WinForms (or any Desktop-targeted runtime), are not supported on Linux. As such, OpenEdge does not support access to any GUI functionality on Linux. Language features directly related to GUI, such as extensions to the WAIT-FOR statement, which have .NET specific behavior, do not work on Linux and raise an error if called.
  • The Progress.Data.BindingSource class supplied with OpenEdge on Windows is not available on Linux. The binding source is primarily used with GUI controls, such as grids, tables, and trees, and may serve little purpose on Linux.

.NET installation

OpenEdge does not supply an installation of .NET. You are expected to provide your own installation of the .NET runtime that is supported by OpenEdge. See the OpenEdge 13 Platform Compatibility Guide for details on the supported versions. You must install a compatible version of .NET appropriate for your distribution of Linux. As with support for .NET on Windows, OpenEdge works with either the .NET Runtime or the .NET SDK. However, the .NET SDK is not required.

For more information on installing .NET on Linux, see the Microsoft documentation at https://learn.microsoft.com/en-us/dotnet/core/install/linux.

Configuration of .NET host

Each .NET installation directory can contain multiple versions of the .NET runtime and standard libraries. The exact version selection rules are controlled by the Progress.clrbridge.netcore.runtimeconfig.json file. This file is shipped with OpenEdge in the $DLC/bin folder and contains properties that control which version of .NET can be used.

You may edit the JSON file if you want to restrict your application to a specific version of .NET, or want to restrict which .NET framework (standard libraries) are available to the application. See Adjust the OpenEdge installation to use a different .NET version for the details.

For more information on .NET Runtime configuration settings, see https://learn.microsoft.com/en-us/dotnet/core/runtime-config/.

.NET-related startup parameters

The following OpenEdge startup parameters are supported on Linux.

  • .NET Common Language Runtime (-clrnetcore)—Enables the use of .NET. This parameter is required if you want to use .NET on Linux.
  • Assemblies (-assemblies)—Specifies the path to the directory containing the Assembly References File (assemblies.xml) and any third-party assemblies.
  • Preload CLR (-preloadCLR)—Loads the .NET Common Language Runtime (CLR) and any specified assemblies into the ABL session at startup. This parameter ensures .NET is loaded before any ABL code is executed.
Note: The -nodialogdispose startup parameter is only applicable on Windows. No CLR (-noclr) is the default setting on Linux, and does not need to be specified when .NET support is not required..

Platform-specific .NET libraries

The same ABL syntax for working with .NET on Windows is expected to work on Linux if the .NET library used is compatible with Linux. Note that some .NET NuGet packages have a platform-specific component. For example, the Kafka® .NET component depends on the librdkafka.redist NuGet package which contains both Windows and Linux (and macOS) versions of native libraries. You must extract the native platform-specific libraries from the NuGet package for the .NET library to work properly.

Progress.NETUI assembly differences between Linux and Windows

Progress.NetUI.Common.dll and Progress.NetUI.NetCore.dll are .NET assemblies compiled with platform-specific behavior. They cannot be copied across operating systems.