在控制台应用程序中托管WCF服务

3
我有大约15-20个服务,每个服务都有自己的合同和实现文件。我想在控制台应用程序中托管所有这些服务,以便在开发期间更容易调试。
项目结构
- 服务-解决方案 - ServiceContracts-项目 - Implementation-项目 - ServiceHost-Windows服务项目--已安装并正常工作。 - ServiceConsoleHost-项目-目前正在处理它。
我在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>

提前感谢您……


需要在控制台应用程序中编写代码以循环托管这些服务。 - venky
1
“in loop” 是什么意思?另外,在你的 app.config 文件中,你有一个 net.tcp 绑定和一个 mexhttpbinding,并且你的服务名称没有完全限定。 - Rajesh
我在这里尝试的是...尝试在控制台应用程序中托管所有这些15个服务,而不是为每个服务创建主机对象 - 我们能否使用ServiceHost集合来实现这样的功能? - venky
想使用NetTcp绑定来托管服务。 - venky
1
当您说单个主机时,您是指为您的net tcp绑定使用单个端口。如果是这种情况,请查看此文章:http://msdn.microsoft.com/en-us/library/aa395195.aspx - Rajesh
1
一个 ServiceHost 只能承载 一个服务 - 因此,如果您需要托管 15 个服务,则需要 15 个 ServiceHost 实例。 - marc_s
2个回答

2

我已经看过了,所有的例子都是展示如何托管单个服务--在我的情况下,我有15个服务,我不想为每个服务创建一个主机对象。 - venky
1
@venky - 您需要为每个服务单独创建一个 ServiceHost - SliverNinja - MSFT
我们可以使用serviceHost作为集合来容纳所有的服务吗? - venky

1

正如其他人所提到的,您需要15个ServiceHost来托管15个服务。但是它们不会阻塞。如果您注意到MSDN代码,您会发现当服务正在运行时,代码只是等待按键。这意味着所有服务代码都在单独的线程上运行。因此,创建和托管15个服务并不是问题。一旦执行ServiceHost.Open(),您就不需要“循环”了,因为这已经处理好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接