Apache Ignite.NET
Apache.Ignite.Core.Deployment Namespace Reference

Enumerations

enum  PeerAssemblyLoadingMode { PeerAssemblyLoadingMode.Disabled, PeerAssemblyLoadingMode.CurrentAppDomain }
 Peer assembly loading mode. See IgniteConfiguration.PeerAssemblyLoadingMode. More...
 

Enumeration Type Documentation

Enumerator
Disabled 

Disabled peer assembly loading. Default mode.

CurrentAppDomain 

Automatically load assemblies from remote nodes into the current AppDomain.

.NET does not allow assembly unloading, which means that all peer-loaded assemblies will live as long as the current AppDomain lives. This may cause increased memory usage.

Assemblies are distinguished using their fully qualified name. Multiple versions of the same assembly can be loaded and the correct version will be used (according to Type.AssemblyQualifiedName). So in case when a new version of some type needs to be executed on remote nodes, corresponding assembly version should be bumped up. If assembly is recompiled without version increment, it is considered the same as before and won't be updated.

Assemblies are requested from remote nodes on demand. For example, IComputeFunc<TRes> is sent to all nodes via ICompute.Broadcast<TRes>. Each node then deserializes the instance and, if containing assembly is not present, requests it from originating node (which did the ICompute.Broadcast<TRes> call), if it is alive, or from any other node in cluster. Therefore it is possible that eventually all nodes in cluster will have this assebly loaded.