2008-12-02 7 views

ответ

5

Удостоверьтесь, что вы можете предоставить столько конечных точек в пределах веб-приложений, сколько хотите (даже для разных служб WCF). Это не должно ограничиваться ни IIS, ни WPAS.

Это позволит вам получить доступ к любым общим данным. Хотя я бы обычно советовал не использовать статические переменные для обмена информацией (но, конечно, я не знаю ваших требований).

2

Несомненно. В Visual Studio просто добавьте еще один элемент службы WCF. IIS будет запускать обе службы в том же AppDomain. В этом примере я создал первую библиотеку только следующие определения интерфейса:

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

Да, вы можете сделать это как в IIS и WPAS. Но единственный способ сделать это - собрать обе службы в одной сборке AFAIK.