2012-02-13 116 views
3

我有大约15-20个服务 - 每个服务都有自己的合同和实现文件。我想在控制台应用程序中托管所有这些服务,以便在开发过程中更易于调试。控制台中的主机WCF服务应用程序

项目结构

  • 服务 - 解决方案
    • ServiceContracts - 项目
    • 实施 - 项目
    • 的ServiceHost - Windows服务项目 - 已经就位,工作细..
    • ServiceConsoleHost - 项目 - 目前正在开展工作。

我有一个app.config文件在这里ServiceConsoleHost项目从配置文件中的示例文本...

<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> 

在此先感谢...

+3

问题是什么? – Rajesh 2012-02-13 16:32:49

+0

需要代码来在控制台应用程序中驻留这些服务 - 在循环中。 – venky 2012-02-13 16:40:14

+1

“循环”是什么意思?同样在你的app.config中,你有一个net.tcp绑定和一个mexhttpbinding,你的服务名称不完全合格。 – Rajesh 2012-02-13 16:41:08

回答

2

您可能正在寻找自我托管服务。请参阅MSDN Reference使用ServiceHost进行自我托管。

也看看enumerating WCF configuration bindings。这是一篇SO帖子,其中描述了enumerating WCF service and endpoint bindings

+0

我已经看过 - 所有的例子都展示了如何承载单一服务 - 在我的情况下我有15个服务,我不想为每个服务创建一个主机对象服务。 – venky 2012-02-13 16:49:46

+1

@venky - 您需要为每项服务单独设置一个“ServiceHost”。 – SliverNinja 2012-02-13 16:52:49

+0

我们可以使用serviceHost作为集合来保存所有服务吗? – venky 2012-02-14 14:06:01

1

大家都提到你需要15个ServiceHosts来承载15个服务。但是他们没有阻止。如果您注意到MSDN代码只是在服务运行时等待按键。这意味着所有的服务代码都在不同的线程上运行。所以创建和托管15个服务不是问题。你不需要一个“循环”,因为一旦你做了ServiceHost.Open()就已经处理了。

相关问题