我有大约15-20个服务 - 每个服务都有自己的合同和实施文件。我想在控制台应用程序中托管所有这些服务,以便在开发过程中更容易调试。
项目结构
我在ServiceConsoleHost项目中有一个app.config
文件,来自配置文件的示例文本......
<service name="TestpricingService" behaviorConfiguration="HostBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/testService/pricingService"/>
</baseAddresses>
</host>
<!-- use base address provided by host -->
<endpoint address="net.tcp://localhost:820/testService/pricingService"
binding="netTcpBinding"
bindingConfiguration="HostBinding"
contract="Test.Services.Contracts.IpricingService" />
<!-- the mex endpoint is exposed at http://localhost:8000/testService/purchasing/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
<behaviors>
<serviceBehaviors>
<behavior name="HostBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
<behavior name="PooledHostBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True" />
<ObjectPoolingServiceBehavior minPoolSize="0" maxPoolSize="5" idleTimeOut="30000"/>
</behavior>
</serviceBehaviors>
</behaviors>
提前致谢...
答案 0 :(得分:2)
您可能正在寻找自托管服务。使用ServiceHost
查看有关自托管的MSDN Reference。
另请查看enumerating WCF configuration bindings。这是一篇SO帖子,描述了enumerating WCF service and endpoint bindings。
答案 1 :(得分:1)
众所周知,您需要15个ServiceHosts来托管15项服务。然而,他们没有阻止。如果您注意到MSDN代码只是在服务运行时等待按键。这意味着所有服务代码都在不同的线程上运行。因此,创建和托管15项服务不是问题。你不需要一个“循环”,因为一旦你做ServiceHost.Open()就已经处理过了。