The ModuleApiProxy has been created to allow Noah Modules utilizing .NET 6 or later to connect to Noah 4.
The current ModuleAPI which is implemented using the Full .NET Framework (version 4.6) relies upon technologies that have been deprecated in .NET 6 and later.
To mitigate this HIMSA is providing the ModuleApiProxy which will host the Noah 4 ModuleApi in a process separate from the .NET 6+ module and allow the module to interact with the Noah 4 ModuleApi via the ModuleApiProxyLib.
See diagram below:
Legend:
Green = Shared library (provided by Himsa)
Yellow = REST-based Proxy for IMC and Module API (PIMA) (provided by Himsa)
Blue = Module (provided by Module Developer)
Orange = Noah Client (Part of Noah 4 and Noah ES) (provided by Himsa)
Anyone who plans to use .NET 6 or later for their development of Noah 4 modules.
Noah 4.9 and later are supported by the ModuleApiProxy.
Windows 10, Version 1607 and later
Windows Server 2019 or later
The general performance overhead appears to be just a few percent of the total request time.
Please observe!!When porting modules utilizing the Noah 4 ModuleApi to a .NET 6+ module using the ModuleApiProxy there are some differences to be aware of. |
The binaries for the ModuleApiProxyLib and SharedLib libraries and .NET 6+ module sample source code is available here:
https://www.himsa.com/members-2/noah-4-module-development/noah-module-development-with-net-6-and-later/ (log-in required)
When developing a new .NET 6+ module for Noah 4 you will need to reference a few files required when developing a .NET 6+ module utilizing the ModuleApiProxy.
Reference the following files in your .NET module project (available from the ModuleApiProxy SDK see here:
ModuleApiProxyLib.dll (the library is the API client to access the REST API provided by the ModuleApiProxy )
ModuleApiProxyLib.dll.xml (this xml file contains XML documentation comments which provides additional information for Visual Studio intellisense)
SharedLib.dll (this library contains common functionality, types and definitions required to utilize the ModuleProxyApi)
SharedLib.dll.xml (this xml file contains XML documentation comments which provides additional information for Visual Studio intellisense)
Ensure that the following files are copied to the output folder of your .NET module project (available from the ModuleApiProxy SDK see here:
ModuleApiProxyLib.dll (the library is the API client to access the REST API provided by the ModuleApiProxy )
SharedLib.dll (this library contains common functionality, types and definitions required to utilize the ModuleProxyApi)
ModuleApiProxy.exe (this is the Proxy process which has a REST API that the ModuleApiProxyLib connects to when interacting with Noah 4 moduleApi)
ModuleApiProxy.Config.json (Do NOT edit this file - this file specifies the default port range which is 5025 to 5050. This port range is used when the ModuleProxyLib library connect to the ModuleApiProxy)
When deploying a .NET 6+ module using the ModuleApiProxy to a computer with Noah 4 the following files must be deployed.
The files in the ModuleApiProxy are self-contained and do not depend upon the .NET Runtime, however the .NET 6+ module utilizing the ModuleApiProxy will have to install the appropriate .NET Runtime upon which it depends.
The .NET 6+ Runtimes can be downloaded from here: Download .NET
In addition to all the .NET 6+ modules files the following files, (which are ModuleApiProxy dependencies), must be added to the modules deployment folder as part of the installation process.
All Module Api Proxy files deployed to the .NET 6+ modules folder (SharedLib.dll, ModuleApiProxyLib.dll, ModuleApiProxy.exe, ModuleApiProxy.Config.json) can be removed when the module is uninstalled.
IMPORTANT!! This means that if a module is based on a PIMA version prior to 1.1.0.926 (e.g. PIMA 1.0.3.806), then take BootStrapper.exe from the latest available ModuleApiProxy SDK and follow the above steps to install the ModuleApiService for the module based on e.g. PIMA 1.0.3.806. Use BootStrapper.exe to initiate the installation of the ModuleApiService. The 'ModuleApiService' will create and update the certificate used for the https communication between ModuleApiProxyLib and ModuleApiProxy. |
The ModuleApiService should never be uninstalled when a PIMA module is uninstalled as this service is shared by all PIMA modules on the computer |
Deployment configurations (version dependent)
|
Using PIMA version 1.0.0 and 1.0.1 of the ModuleApiProxy the component must be deployed like this:
(In the table below the files in cells with green background are provided by HIMSA)
.NET 6+ Module Deployment files | Deployment Folders |
---|---|
MyDotNet6Module.exe | ..\MyModuleFolder\ |
SharedLib.dll | ..\MyModuleFolder\ |
Starting with version 1.0.3 of the ModuleApiProxy the component must be deployed like this:
(In the table below the files in cells with green background are provided by HIMSA)
.NET 6+ Module Deployment files | Deployment Folders |
---|---|
MyDotNet6Module.exe | ..\MyModuleFolder\ |
ModuleApiProxyLib.dll | ..\MyModuleFolder\ |
ModuleApiProxy.Config.json | ..\MyModuleFolder\.proxy |