Конечно. В Visual Studio просто добавьте еще один элемент службы WCF. IIS будет запускать обе службы в одном домене приложений. В этом примере я сначала создал библиотеку только со следующим определением интерфейса:
namespace ServiceInterface
{
[ServiceContract]
public interface IClass
{
[OperationContract]
string GetMessage();
}
}
Затем я создал веб-приложение в VS и добавил две службы: MyService
и Service2
, которые обе поддерживают IClass
. Это мой раздел файла web.config для serviceModel
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WebService1.MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="WebService1.Service2Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="WebService1.MyServiceBehavior"
name="WebService1.MyService">
<endpoint address="" binding="wsHttpBinding" contract="ServiceInterface.IClass">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="WebService1.Service2Behavior"
name="WebService1.Service2">
<endpoint address="" binding="wsHttpBinding" contract="ServiceInterface.IClass">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
В клиентском приложении информация о вашей конфигурации может выглядеть следующим образом:
<client>
<endpoint address="http://mymachinename.local/MyService.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IClass"
contract="ServiceReference1.IClass" name="WSHttpBinding_IClass">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://mymachinename.local/Service2.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IClass1"
contract="ServiceReference2.IClass" name="WSHttpBinding_IClass1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>