This page is for developers who want to go more into the details about the internal architecture of the EDMthinClient.
The figure to the left shows the main modules of the EDMthinClient. In the following, we will give a brief description of each module. When drawing system diagrams for EDMsix, a simplified block is used to represent the EDMstandaloneClient.
The EDMremoteInterface is represented by the greyed gates TCP and HTTP. Note that the gates for LOCAL_DB og LOCAL_CONTEXT are not available with EDMthinClients. EDMthinClients have no local EDMdatabase to loop back to.
When writing EDMthinClient applications, it is important to be aware of a serious performance catch. Since the communication through the TCP and HTTP gates is stateless, there may be a significant overhead with each call to the EDMremoteInterface API function calls. E.g, looping over the elements of huge aggregates will require a restore of the state for each single call. A good way to handle situations like that would be to write your code in EDMexpressX, compile it into the EDMdatabase and execute the method with a single call to the EDMvirtualMachine.
The following is a description of each of the modules in the block diagram.
EDMInterface Language Binding
The EDMInterface Language Bindings are implemented with the EDMremoteInterface API. The following language bindings are available; C, C++, Java, VisualBasic and .NET
EDMInterface API and EDMsix Core
For EDMthinClient applications, the EDMInterface API and the EDMsix Core is not in use and need not even be activated by an EDMsdk license. Note that there is no local EDMdatabase either.
EDMremoteInterface API
The EDMremoteInterface API is available without an EDMsdk license. EDMthinClient applications must use this API to access the TCP and HTTP communication ports. All EDMremoteInterface API functions take the Server Context input parameter to specify the information required to connect to an EDMsixServer.
The two ports LOCAL_CONTEXT and LOCAL_DB are not used by EDMthinClients. EDMthinClients have no local EDMdatabase to loop back to. With no EDMsdk, the EDMremoteInterface is reduced to a module that transfers parameter sets to the EDMsixServer in TCP/IP blocks and recei.ves execution results from the EDMsixServer. The actual execution is performed entirely on the EDMsixServer side