Насколько синхронизированными должны быть файлы конфигурации при настройке клиента и сервера WCF?

Большинство примеров WCF показывают вам, как настроить клиент и сервер WCF. Что произойдет, если вы немного различаете конфигурацию между ними? Я имею в виду, за кем последнее слово?

Возьмем для примера такую ​​конфигурацию клиента:

<configuration>
<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_ISampleService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Message">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        algorithmSuite="Default" establishSecurityContext="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:8080/SampleService" binding="wsHttpBinding"
            bindingConfiguration="WSHttpBinding_ISampleService" contract="ISampleService"
            name="WSHttpBinding_ISampleService">
        </endpoint>
    </client>
</system.serviceModel>

Обычно на стороне сервера настроена такая же привязка на открытом сервере.

Но что произойдет теперь, если на стороне сервера определено openTimeout = 00:00:30. Какой будет тайм-аут? Кто выигрывает? Я задаю тот же вопрос для всех других параметров.

Как вы можете сказать, все это выглядит большим беспорядком для каждого элемента конфигурации (привязка, клиент, служба, поведение и т. Д.) И всех их деталей, которые требуются параметры и на какой стороне (клиент или сервер)?

Кажется, вы могли бы определить всю привязку со всеми параметрами тайм-аута на стороне сервера, а на стороне клиента просто установить минимально необходимую конфигурацию, чтобы все параметры с сервера были принято. Но сейчас, каковы минимальные требуемые параметры на клиенте, учитывая, что сервер имеет более глубокую конфигурацию?

Каковы наилучшие практики при настройке клиента и сервера с использованием WCF в отношении параметров для каждого элемента конфигурации: привязки, службы, клиент / конечная точка и поведение?

Когда конфликтующие параметры определяются между клиентом и сервером, как WCF обрабатывает это?

14
задан Alex 2 February 2011 в 20:07
поделиться