2012-11-27 54 views
2

是否有可能擁有多個Wcf服務類。因爲我有兩個合同接口,並且想要在兩個不同的服務類中實現。可能嗎?是否有可能擁有多個Wcf服務類?如果是,那麼如何?

+0

是 - 你只需創建兩個服務類和每個人都實現了該接口....問題在哪裏? –

+0

我編輯了我的問題,其實我有兩個不同的合同界面。 –

+0

再一次:是的 - 當然 - 問題是什麼? '公共類Service1:IService1'和'公共類Service2:IService2' ..... –

回答

0

是的,但暴露這些服務是不同的事情,你不能在單個地址上公開兩個合同(除非你把它們包裝在一個單一的接口,不建議)。您需要在web.config中爲這兩個服務合同提供不同的端點。 Forexample,

<services> 
    <service name="TwoContracts.Service1"> 
    <endpoint address="" binding="basicHttpBinding" contract="TwoContracts.IService1"> 
    </endpoint> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://yoururl.com/TwoContracts/Service1" /> 
     </baseAddresses> 
    </host> 
    </service> 
    <service name="TwoContracts.Service2"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://yoururl.com/TwoContracts/Service2" /> 
     </baseAddresses> 
    </host> 
    <endpoint address="" binding="basicHttpBinding" 
     contract="TwoContracts.IService2" /> 
    </service> 
</services> 
1

如果你有2個合同說IService1和IService2,你有兩個選擇:

  • 兩個2個服務合同由實現從IService1和IServe2所有的方法一個服務來實現。那麼你的配置文件看起來像:

    <services> 
        <service name="MyNamespace.Service"> 
         <host> 
          <baseAddresses> 
           <add baseAddress="http:localhost:8080" /> 
          </baseAddresses> 
         </host> 
         <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" /> 
         <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" /> 
        </service> 
    </services>
  • 每個合同是由單獨的服務實現我們說服務1和服務2那麼你的配置將是這樣的:

    <services> 
        <service name="MyNamespace.Service1"> 
         <host> 
          <baseAddresses> 
           <add baseAddress="http:localhost:8081" /> 
          </baseAddresses> 
         </host> 
         <endpoint address="Service1" binding="basicHttpBinding" contract="MyNameSpace.IService1" /> 
        </service> 
        <service name="MyNamespace.Service2"> 
         <host> 
          <baseAddresses> 
           <add baseAddress="http:localhost:8082" /> 
          </baseAddresses> 
         </host> 
         <endpoint address="Service2" binding="basicHttpBinding" contract="MyNameSpace.IService2" /> 
        </service> 
    </services>
相關問題