Веб-ферма ISA и служба WCF, размещенные в службе Windows с базовым HTTBBinding - PullRequest
0 голосов
/ 24 марта 2010

Я создал службу WCF, которую необходимо разместить в оконной службе, поскольку она участвует в сетке P2P (NetPeerTcpBinding). Когда я попытался разместить службу WCF с конечными точками NetPeerTcpBinding в контейнере службы IIS, служба не работала, потому что оказалось, что привязка P2P не работает в IIS.

Я предоставил конечную точку HTTP от службы WCF, размещенной в контейнере службы Windows, и хочу узнать, существует ли способ создания веб-фермы ISA, которая будет направлять трафик к конечным точкам http на двух компьютерах, на каждом из которых работает один и тот же WCF служба в контейнере службы Windows.

1 Ответ

0 голосов
/ 10 июля 2010

Я понял это довольно давно, извините, что так много времени понадобилось, чтобы опубликовать ответ.

Создайте отдельный контракт на обслуживание с именем IDefaultDocumentService с одним методом, который оформлен как с OperationContract, так и с WebGet.

<OperationContract(), WebGet()> 
Function GetDefaultDocument() As System.ServiceModel.Channels.Message

Теперь реализуйте этот контакт в очень простом классе DefaultDocumentService

Public Class DefaultDocumentService
    Implements IDefaultDocumentService

    Public Function GetDefaultDoc() As Message Implements IDefaultDocumentService.GetDefaultDocument
        Return Message.CreateMessage(MessageVersion.None, "", "Hello!")
    End Function
End Class

В конфигурационном файле для вашей службы Windows подключите отдельную службу для DefaultDocumentService и сопоставьте ее с корневым каталогом вашей другой службы WCF. Когда вы помещаете эти сервисы в веб-ферму на ISA, она попадает в службу документов по умолчанию и получает сообщение «Hello!». сообщение, достаточное для того, чтобы сервер ISA знал, что служба активна.

<system.serviceModel>
  <services>
    <service name="YourMainService">
      <endpoint address="http://localhost:10000/YourMainService.svc"
                binding="wsHttpBinding"
                contract="IYourMainService" />
    </service>

    <service name="DefaultDocumentService">
      <endpoint address="http://localhost:10000/"
                binding="webHttpBinding"
                behaviorConfiguration="DefaultDocumentEndpointBehavior"
                contract="IDefaultDocumentService" />
    </service>
  </services>

  <behaviors>
    <endpointBehaviors>
      <behavior name="DefaultDocumentEndpointBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
</system.serviceModel>
...