请指出我是否有任何直接方法可以运行 Windows 服务中托管的 Orleans。如果没有直接的方法,那么有没有间接的方法呢?
先感谢您
请指出我是否有任何直接方法可以运行 Windows 服务中托管的 Orleans。如果没有直接的方法,那么有没有间接的方法呢?
先感谢您
注意:这是针对 v1.x Orleans 的。2.x 配置改变了很多
这是一个基于topshelf的示例。参考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;
}
}