2016-04-28 8 views
6

Windowsサービス内でホストされているOrleansを直接実行する方法がある場合は、教えてください。直接的な方法がない場合は、間接的な方法がありますか?Windowsサービス内でホストされているOrleansを実行することは可能ですか

ありがとうございました

+0

コードを記述したくありませんか? – BozoJoe

+0

@BozoJoe、実際はい。しかし、私の知る限り、そのための組み込み機能はありません。私はVisual Studioのテスト/ devホストプロジェクトにもっと注意を払いました。このコードは、追加のAppDomainで同じプロセス内でOrleansを実行するために使用されたものとかなり同じようになったようです。 – Rauf

答えて

8

ここはトップシェルフベースのサンプルです。 参照中https://github.com/migrap/Topshelf.Orleans

static void Main() 
{ 
    HostFactory.Run(c => { 
     c.Service<OrleansService>(s => { 
      s.ConstructUsing(sc => { 
       sc.ConfigFileName("OrleansConfiguration.xml"); 

       //do some config at runtime if you want 
       //sc.DeploymentId("blachblahc"); 

      }); 

      s.WhenStarted((service, control) => service.Start()); 
      s.WhenStopped((service, control) => service.Stop()); 
     }); 

     c.RunAsLocalSystem(); 
     c.UseAssemblyInfoForServiceInfo(); 
     c.SetServiceName("OrleansSiloHostService"); 
     c.StartAutomaticallyDelayed(); 
    }); 
} 

public class OrleansService 
{ 
    private readonly SiloHost host; 
    private Task startup; 

    internal OrleansService(SiloHost silohost) 
    { host = silohost; } 

    public bool Start() 
    { 
     host.LoadOrleansConfig(); 
     host.InitializeOrleansSilo(); 
     startup = Task.Factory.StartNew(() => 
     { 
      return host.StartOrleansSilo(); 
     }); 
     return true; 
    } 

    public bool Stop() 
    { 
     if (startup.Status == TaskStatus.RanToCompletion) 
     { host.ShutdownOrleansSilo(); } 
     return true; 
    } 
} 
関連する問題