我正在尝试更好地获取 WCF配置文件,以便我可以更轻松地处理更复杂的场景。通常情况下,我正在重新审视我对基础知识的理解。所以这提出了一个问题, 绑定配置和行为之间有什么区别? 我不询问什么是绑定(即netTcpBinding
等)。我知道了。
因此,假设我有一个配置文件,其中包含多个配置:
<netTcpBinding>
<binding name="LargeMessages" maxBufferPoolSize="5242880" maxBufferSize="5242880" maxReceivedMessageSize="5242880">
<readerQuotas maxDepth="256" maxStringContentLength="16384" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
<binding name="LargeFiles" maxBufferPoolSize="15728640" maxBufferSize="15728640" maxReceivedMessageSize="15728640">
<!-- 15MB max size -->
<readerQuotas maxDepth="256" maxStringContentLength="15728640" maxArrayLength="15728640" maxBytesPerRead="204800" maxNameTableCharCount="15728640" />
<security mode="None"></security>
</binding>
<binding name="LargeStrings" maxBufferPoolSize="524288" maxBufferSize="524288" maxReceivedMessageSize="524288">
<!-- 0.5MB max size -->
<readerQuotas maxDepth="256" maxStringContentLength="524288" maxArrayLength="524288" maxBytesPerRead="204800" maxNameTableCharCount="524288" />
<security mode="None"></security>
</binding>
</netTcpBinding>
在这种情况下,我正在调用LargeMessages
,LargeFiles
和LargeStrings
“绑定配置”。
现在我有了这个配置,我也可以有多个行为,其中一个可能是这样的:
<behavior name="DefaultServiceBehavior">
<serviceCredentials>
<serviceCertificate findValue="1234123412341234123412341234"
x509FindType="FindByThumbprint" />
</serviceCredentials>
<serviceMetadata/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
在这种情况下,DefaultServiceBehavior
是一种行为。
所以提出问题的另一种方法是, 为什么我的绑定配置不能包含我的行为指定的所有设置?或相反亦然?在基本和高级别,为什么我们有两组设置? 这似乎都会对我的传输配置或我的消息配置产生很大影响。我只是没有看到分离设置的逻辑。
答案 0 :(得分:7)
技术术语:
外行人的说法:
结论,您的服务应该说出适当的语言(绑定)和行为(行为),否则客户可能会很难尝试与之通信。