Topshelf多个主机

时间:2012-02-09 22:31:20

标签: topshelf

topshelf中有没有办法在一个可执行文件中运行多个主机?

// Create hosts
var h1 = HostFactory.New (...); var h2 = HostFactory.New (...)

// Start hosts
 in one application Runner.Run (h1, h2);

修改

用线程解决。但不确定它是否安全......

new Thread (()=>Runner.Run (h1));    
new Thread (()=>Runner.Run (h2));

2 个答案:

答案 0 :(得分:8)

来自Topshelf docs

  

您只能提供一项服务!截至3.x Topshelf的基础产品没有   更长的支持托管多项服务。这样做是因为   要实现的代码非常脆弱且难以调试。我们选择了   更简单,更清洁的基础产品。这个功能很有可能   以添加nuget的形式回来。

答案 1 :(得分:1)

注意:这仅适用于Topshelf的3.0之前版本。在3.0中,这被删除,并被其他托管多种服务的方法所取代。

无法运行多个主机。启动主机块执行,做了很多东西。您可以在单个主机中注册多个逻辑服务。

https://github.com/Topshelf/Topshelf/wiki/Creating-a-service

return (int)HostFactory.Run(x => {
  x.Service<Service1>({ ... });
  x.Service<Service2>({ ... ]);
}); 

所有逻辑服务都在单个AppDomain下运行。这可能是也可能不是问题。如果您需要在单独的AppDomain中托管它们,我们就开始进行搁置。 http://topshelf-project.com/documentation/shelving/作为警告,如果您要启动多个具有相同类型的逻辑服务,请确保在配置时具有唯一的名称。