Acquire Image Tool Properties Client and Server Side Plugins Plugins are 3rd party libraries developed with Visual Studio that are loaded directly within the ACE.exe process. Client Plugins are assciated with the ACE user interface. Server Plugins are associated with the ACE runtime. Examples of Client and Server plugins can be located in the AceDemo.zip file that ships with ACE. Visual Studio Solution A user can develop external applications that interact with ACE using a tool like Visual Studio. In this case, Visual Studio is used to create a separate executable that communicates with the ACE.exe process using the ACE API.
Examples of this can also be found in the AceDemo.zip file that ships with ACE. Application Domains When developing a Plugin, Visual Studio solution that interacts with ACE or scriptable objects within ACE, it is important to understand Application Domains. Application domains are sandboxes which allow for the isolation of software components. The ACE software is a multi-application domain application and under this model, the AceServer is run in its own isolated application domain. It uses the .NET framework remoting infrastructure to expose itself to software components outside of its application domain.
Depending on how you are accessing the AceServer, there are implications for users seeking to customize ACE. This table details the different ways the ACE product can be customized and identifies if it is running in the AceServer application domain: Customization Type Running in AceServer Application Domain C# Program Object No Custom Allocation Script Yes C# Custom Vision Tooloffset No Client Side Plug-In Yes or no, depending how ACE was launched.
Server Side Plug-In Yes Crossing the Application Domain Boundaries If you are accessing a property or a method that exists in a different application domain, it should be understood that the access involves transferring information from the current application domain to the remote application domain. The process of transferring information is known as marshalling data. The way data is marshaled depends on the kind data being passed. If the object is considered a value type, then a copy of the data is made and passed to the remote domain. Any changes made to the value type on the server are not reflected in the original application domain where the object was originally created.
If the object is considered a reference type, then the object itself will be passed across the domain boundary. Any changes made in the remote application domain are reflected in the original object. All reference types in the ACE API will derive from Ace.Core.RemoteableObject which derives from the System.MarshalByRef base class. ACE Reference Guide, 18317-000 Rev A Page 625