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