private void RegisterCoreServices() { switch (KernelConfiguration.DefaultSecurityChanged) { case false: { ModuleAppDomain = AppDomain.CreateDomain("Modules AppDomain", new Evidence( AppDomain.CurrentDomain. Evidence), AppDomain.CurrentDomain. BaseDirectory, AppDomain.CurrentDomain. BaseDirectory, true); break; } case true: { AppDomainSetup appDomainSetup = new AppDomainSetup { ApplicationBase = AppDomain.CurrentDomain.BaseDirectory, }; ModuleAppDomain = AppDomain.CreateDomain( "Sandboxed Modules AppDomain", new Evidence(AppDomain.CurrentDomain.Evidence), appDomainSetup, KernelConfiguration.ModulesDomainPermissions, KernelConfiguration.FullTrustAssembliesSet.ToArray() ); break; } } // create kernel version of the event aggregator4 var siteEventAggregator = new EventAggregator(new NullGuiThreadProvider()); // use container creator to create communication services on modules app domain string asmName = typeof(ContainerCreator).Assembly.FullName; string typeName = typeof(ContainerCreator).FullName; var moduleLoaderCreator = (ContainerCreator) ModuleAppDomain.CreateInstanceAndUnwrap(asmName, typeName); // create facade for event aggregator combining proxy and on site object EventAggregator = new ForwardingEventAggregator(moduleLoaderCreator.EventAggregatorOnModulesDomain, siteEventAggregator); // used proxied service locator ServiceLocator = moduleLoaderCreator.ServiceLocator; ModuleLoader = moduleLoaderCreator.CreateModuleLoaderInstance(); _moduleManager = new ModuleManager(ModuleLoader, KernelConfiguration.ModuleFilter, KernelConfiguration.DependencyChecker); }
private void RegisterCoreServices(NomadConfiguration nomadConfiguration) { ModuleAppDomain = AppDomain.CreateDomain("Modules AppDomain", new Evidence(AppDomain.CurrentDomain.Evidence), AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.BaseDirectory, true); // create kernel version of the event aggregator4 var siteEventAggregator = new EventAggregator(new NullGuiThreadProvider()); // use container creator to create communication services on modules app domain string asmName = typeof(ContainerCreator).Assembly.FullName; string typeName = typeof(ContainerCreator).FullName; if (typeName != null) { _moduleLoaderCreator = (ContainerCreator) ModuleAppDomain.CreateInstanceAndUnwrap(asmName, typeName); DistributedConfiguration distributedConfiguration = nomadConfiguration.DistributedConfiguration; String loggerConfiguration = KernelConfiguration.ModulesLoggerConfigurationFilePath; _moduleLoaderCreator.Install(distributedConfiguration, loggerConfiguration); // create facade for event aggregator combining proxy and on site object EventAggregator = new ForwardingEventAggregator(_moduleLoaderCreator.EventAggregatorOnModulesDomain, siteEventAggregator); // used proxied service locator ServiceLocator = _moduleLoaderCreator.ServiceLocator; ModuleLoader = _moduleLoaderCreator.CreateModuleLoaderInstance(); } _moduleManager = new ModuleManager(ModuleLoader, KernelConfiguration.ModuleFilter, KernelConfiguration.DependencyChecker); }