Ejemplo n.º 1
0
        private static void InitSilo(string[] args)
        {
            SiloHost.silo = new OrleansAzureSilo();
            var siloConfiguration = new OrleansConfiguration();

            siloConfiguration.Load(new StringReader(args[0]));

            SiloHost.siloStartResult = silo.Start(
                deploymentId: RoleEnvironment.DeploymentId,
                myRoleInstance: RoleEnvironment.CurrentRoleInstance,
                config: siloConfiguration);

            SiloHost.orleansSiloTask = Task.Factory.StartNew(() =>
            {
                SiloHost.silo.Run();
            });
        }
        static void Main(string[] args)
        {
            // The Orleans silo environment is initialized in its own app domain in order to more
            // closely emulate the distributed situation, when the client and the server cannot
            // pass data via shared memory.
            AppDomain hostDomain = AppDomain.CreateDomain("OrleansHost", null, new AppDomainSetup
            {
                AppDomainInitializer = InitSilo,
                AppDomainInitializerArguments = args,
            });

            var r = System.IO.File.OpenText(@"C:\DemoTd15Orleans\devTd15Orleans\SiloHost1\CityPowerSilo\OrleansConfiguration.xml");
            OrleansConfiguration cfg = new OrleansConfiguration(r);

            // TODO: once the previous call returns, the silo is up and running.
            //       This is the place your custom logic, for example calling client logic
            //       or initializing an HTTP front end for accepting incoming requests.

            Console.WriteLine("***************************************");
            Console.WriteLine("Orleans Silo is running.\nPress Enter to terminate...");
            Console.ReadLine();

            hostDomain.DoCallBack(ShutdownSilo);
        }