複数の Wcf サービス クラスを持つことは可能ですか。2 つのコントラクト インターフェイスがあり、2 つの異なるサービス クラスに実装したいからです。出来ますか?
質問する
346 次
2 に答える
1
IService1 と IService2 という 2 つのコントラクトがある場合、次の 2 つのオプションがあります。
2 つのサービス コントラクトは両方とも、IService1 と IServe2 のすべてのメソッドを実装する 1 つのサービスによって実装されます。次に、構成ファイルは次のようになります。
<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>
各コントラクトは個別のサービスによって実装されます。たとえば、Service1 と Service2 の場合、構成は次のようになります。
<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>
于 2012-11-27T13:13:12.547 に答える
0
はい。ただし、これらのサービスを公開することは別のことです。1 つのアドレスで 2 つのコントラクトを公開することはできません (ただし、それらを 1 つのインターフェイスでラップする場合を除きますが、お勧めしません)。web.config で 2 つのサービス コントラクトに異なるエンドポイントを指定する必要があります。例えば、
<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>
于 2012-11-27T12:46:37.663 に答える