public RemoteServiceRunner(Action <RemoteDomainExpression> configure) { var expression = new RemoteDomainExpression(); configure(expression); _expression = expression; _messagingHub.AddListener(this); startUpAppDomain(expression); }
private void startUpAppDomain(RemoteDomainExpression expression) { AppDomainSetup setup = expression.Setup; _domain = AppDomain.CreateDomain(expression.Setup.ApplicationName, null, setup); expression.As <IAssemblyMover>().MoveAssemblies(setup); Type proxyType = typeof(RemoteServicesProxy); _proxy = (RemoteServicesProxy) _domain.CreateInstanceAndUnwrap(proxyType.Assembly.FullName, proxyType.FullName); _remoteListener = new RemoteListener(_messagingHub); _proxy.Start(expression.BootstrapperName, expression.Properties.ToDictionary().As <Dictionary <string, string> >(), _remoteListener); }