.net - 绑定(bind)配置和行为有什么区别?

标签 .net wcf

我正在尝试更好地获取 WCF 配置文件,以便我可以更轻松地处理更复杂的场景。通常情况下,我正在重新审视我对基础知识的理解。所以这就提出了一个问题,绑定(bind)配置和行为有什么区别? 我不是在问什么是绑定(bind)(即 netTcpBinding 等)。我明白了。

因此,假设我有一个配置文件,其中包含针对该单个绑定(bind)的多个配置:

  <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 “绑定(bind)配置”。

现在我有了那个配置,我也可以有多个行为,其中一个可能看起来像这样:
<behavior name="DefaultServiceBehavior">
  <serviceCredentials>
    <serviceCertificate findValue="1234123412341234123412341234"
                        x509FindType="FindByThumbprint" />
  </serviceCredentials>
  <serviceMetadata/>
  <serviceDebug includeExceptionDetailInFaults="true" />
</behavior>

在这种情况下,DefaultServiceBehavior是一种行为。

所以问我问题的另一种方式是,为什么我的绑定(bind)配置不能包含我的行为指定的所有设置?或相反亦然?在基本和高层次上,为什么我们有两组设置? 似乎两者都会显着影响我的传输配置或消息配置。我只是看不到设置分离的逻辑。

最佳答案

在技​​术方面:

  • Bindings : 用于指定客户端和服务相互通信所需的传输、编码和协议(protocol)详细信息。
  • Behaviors : 是修改或扩展服务或客户端功能的类型。

  • 通俗地说:
  • 绑定(bind) : 用于指定您的服务使用的语言(例如:英语、葡萄牙语等)。服务和客户只有在同意说同一种语言的情况下才能相互交流。
  • 行为 : 用于定义您的服务应该如何操作。例如,British Queen's Guards他们在执勤时应该完全静止不动,因为这是礼仪规定他们应该采取的行动,否则人们可能会怀疑他们是真正的英国 guard 。

  • 结论,您的服务应该使用适当的语言(绑定(bind))和行为(行为),否则客户可能很难与他们沟通。

    关于.net - 绑定(bind)配置和行为有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697535/

    相关文章:

    .net - 如何获取消息契约(Contract)以在正文而不是 header 中发送 SOAP 操作

    architecture - OData 是否仅用作向其他方发布数据的方式,或者我可以将其用作我的应用程序的数据层吗

    wcf - 在来自 .NET 的 SAP PI 调用中使用基本身份验证

    c# - 在 WCF 服务 channel 调度程序上安装 IErrorHandler

    c# - 类型初始化异常 : The type initializer for 'vService.CheckService' threw an exception

    c# - 为什么我们要将 ClassInterface 属性应用于类?

    c# - 在 Visual Studio v.09 中使用 C#/.NET 的 Qt?

    c# - 指令重新排序

    c# - Asp.net 核心部署不能在服务器上运行,但可以在机器上运行

    .net - LabVIEW:如何检查引用是否已关闭?