WCF HTTP и служба NamedPipe - PullRequest
       12

WCF HTTP и служба NamedPipe

1 голос
/ 19 декабря 2010

Я создаю сервис WCF, который на данный момент выставляет ряд контрактов с использованием basicHttpBinding. Однако теперь я хочу использовать службу локально на той же машине, и netNamedPipeBinding кажется более подходящим с точки зрения производительности. По этой причине я хочу предоставить сервис, используя именованный канал и HTTP.

В данный момент я делаю это со следующей конфигурацией:

<service name="WCFService.MyService" behaviorConfiguration="serviceBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/MyService" />
        <add baseAddress="net.pipe://localhost/MyService" />
      </baseAddresses>
    </host>

    <endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" />
    <endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" />
</service>

Кажется, это работает нормально, но при ближайшем рассмотрении конечные точки по-прежнему используют базовую привязку HttpBinding. Это работает, но у меня создается впечатление, что это создает ненужные накладные расходы.

Нужно ли создавать конечную точку для каждого контракта и каждого типа привязки (т. Е. BasicHttpBinding и netNamedPipeBinding) или я полностью ошибаюсь?

(Если не ясно, я довольно новичок в WCF!)

1 Ответ

1 голос
/ 19 декабря 2010

Да, вам нужно указать несколько конечных точек (1 конечная точка на привязку):

<endpoint address="calculator" binding="basicHttpBinding" contract="WCFService.ICalculatorService" />
<endpoint address="database" binding="basicHttpBinding" contract="WCFService.IDatabaseService" />

<endpoint address="calculator" binding="netNamedPipeBinding" contract="WCFService.ICalculatorService" />
<endpoint address="database" binding="netNamedPipeBinding" contract="WCFService.IDatabaseService" />
...