В большинстве примеров 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?