Integrating .NET Assemblies Using EntireX

Issue 4, 2012 Download pdf

For EntireX users who have an interest in preserving or extending their custom-written Windows applications, this article introduces the features and capabilities of EntireX .NET tooling for addressing reuse, sharing and integration of clients, servers or services wherever they are running.

By virtue of its application wrapping and messaging technology, EntireX effectively provisions seamless interoperability between diverse applications independent of platform, vendor or programming language. This article introduces the general concepts that are provided in a lengthier, more detailed article that explains how to implement and integrate with .NET interfaces using an example application. Aficionados of .NET should go to the references at the end of this article to find the extended 'how-to' article and link to the example application source package, both of which are hosted on the Software AG Tech Community Wiki.

It is important to understand.NET Framework basics before we get into EntireX components, extended features and application interface specifics.

.NET Framework
The .NET Framework is Microsoft’s application architecture specification containing dev-time and run-time components for supporting a wide-array of applications on Windows. It includes software libraries (i.e. class library) for explicit programming languages that can be shared across language boundaries. Programs written for the .NET Framework execute in the Common Language Runtime (CLR) which supports a virtual runtime environment providing security, memory management and error handling independent of the underlying programming language being used.

The .NET Base Class Library provides common and consistent classes for building security, user interfaces, data access, web development, numeric functions and network communications. Microsoft’s Visual Studio is the most popular IDE for developing .NET applications and provides an extendable  third-party interface for ISVs to add value.

In the .NET framework, an assembly is a compiled code library used for deployment, versioning and security. There are two assembly types: process assemblies (EXE) and library assemblies (DLL). A process assembly represents a process that will use classes defined in library assemblies. .NET assemblies contain code in a Common Intermediate Language which is the lowest-level readable programming language—usually defined and generated from a Common Language Infrastructure specification, and then compiled into machine language at runtime (bytecode-style) by the CLR just-in-time compiler.

An assembly can contain one or more code files (called modules); and since it is possible to use different languages to create code modules, it is technically possible to use several different languages within a single assembly.

EntireX .NET Features
EntireX facilitates the integration of client or server applications running on Windows using the .NET Framework, as shown in Figure 1. The EntireX .NET Wrapper provides bi-directional access to RPC servers for .NET client applications, and access to .NET servers for any RPC client. The .NET Wrapper generation feature of the EntireX Workbench takes as input a Software AG IDL file, which describes the interface of the RPC, and generates C# (or manually C++) classes that implement the methods and data types of the existing interface.

Figure 1: EntireX .NET Integration

The Visual Studio Wizard for .NET Wrapper is an add-in for Microsoft Visual Studio which makes incorporating the functionality of the EntireX .NET Wrapper available to developers using a familiar environment. Following EntireX’s IDL-first methodology, you start by extracting the IDL from an existing application artifact (source) representing a client or server interface. Once the IDL is available, you will then generate the appropriate wrapper code that shares the appropriate client or server interface using common RPC messages.

On Windows, Microsoft Visual Studio is the flagship development platform and the .NET runtime provisions consistency across Windows programming languages. EntireX leverages these popular environments so enterprise users can extend existing applications beyond the boundaries they were originally intended while modernizing both the user interface and mid-tier infrastructure.

Further Reading

  • To view the full article on implementing EntireX's .NET integration and/or download example code, please visit the Wiki article on “Integrating .NET Assemblies Using EntireX” on the Software AG Tech Community.
  • .NET Travel Demo package contains documents, data, runtime, and source to create a fully functional RPC client and RPC server using .NET; by Dr. Josef Metzinger, Software AG: 
  • See .NET Wrapper C# client and server examples installed with EntireX Broker on Windows at: C:\SoftwareAG\EntireX\examples\RPC\basic\example
  • Find the latest EntireX .NET documentation