2012-02-13 169 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()就已經處理了。

相關問題