zoukankan      html  css  js  c++  java
  • WCF 第四章 绑定 跨机器通信

    这一部分描述了用来在.NET应用程序间跨机器通信的绑定。我们将描述如何通过配置文件和代码来自定义每一个绑定。每一个绑定都会在一个典型场景的上下文中查看。

    提示 以”net” 为前缀的绑定应该被用于.NET应用程序之间

    WCF把所有在.NET应用程序之间使用的绑定加上”net”前缀。绑定名字的前缀是一个暗示,让我们知道应该选择一个特定的绑定来使用。这意味着这些绑定有特殊的仅能用于.NET应用程序的特性。相反的,所有以”ws”为前缀的绑定意味着使用Web Services的非.NET应用程序。

    netTcpBinding

    netTcpBinding绑定用来支持在一个网络中的不同机器间部署的.NET应用程序,包括在局域网和广域网间的通信。我们称这种类型的通信为跨机器通信。在这种情况下不需要互通性,因为两个应用程序都创建在.NET平台上。当在网络间通信时这提供给我们非常大的灵活性。因为没有互通信的需求,通信可以为最佳性能而完善。

    netTcpBinding绑定使用二进制编码和TCP协议来实现在网络间的最好性能。通常建议在.NET应用程序间跨机器通信时使用netTcpBinding绑定。这不是一个硬性规定,但是覆盖了大多数情况。在防火墙将两个.NET应用程序分开时使用netTcpBinding并不合适。通常唯一能够在防火墙之间通信的方式就是使用HTTP协议。在这种情况下,你将需要使用basicHtppBinding绑定而不是netTcpBinding绑定。

    下面的代码显示了netTcpBinding绑定的地址格式

    net.tcp://{hostname}[:port]/{service location}

    TCP协议的默认端口是808。这是任何基于TcpTransportBindingElement绑定元素,包括netTcpBinding绑定的情形。

    表4.3 列出了netTcpBinding绑定可配置的绑定属性。依据具体情况,它们都是非常重要的需要了解的内容。例如,默认的netTcpBinding绑定要关掉端口共享。这会影响你的应用程序如果你打算在同一个端口寄宿多个服务的话。查看附录中”服务间共享端口”部分,”高级主题”,来获取更多关于端口共享的信息。另外一个netTcpBinding的重要属性是maxConnections. maxConnections属性限制了到终结点的连接数量。默认值是0。为了最大化吞吐量这个值需要增加。

    表4.3 netTcpBinding 属性

    n/a-意味着这个设置是一个需要多个属性被设置的子节点元素或者依赖于其他属性的设置才能使用。

    下面的配置信息是用来与列表4.2到4.4的示例程序一起使用的。列表4.7中的配置文件使用netTcpBinding绑定来暴露StockQuoteService服务。

    列表 4.7 netTcpBinding 寄宿配置

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.serviceModel>
    <services>
    <service name="EssentialWCF.StockQuoteService">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
    name
    ="myEndpoint" contract="EssentialWCF.IStockQuoteService" />
    <host>
    <baseAddresses>
    <add baseAddress="net.tcp://localhost/stockquotservice" />
    </baseAddresses>
    </host>
    </service>
    </services>
    </system.serviceModel>
    </configuration>

    列表4.8 显示了调用列表4.7中显示的使用netTcpBinding 绑定的服务的客户端配置文件。

    列表4.8 netTcpBinding客户端配置

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.serviceModel>
    <client name="EssentialWCF.StockQuoteService">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
    name
    ="myEndpoint" contract="EssentialWCF.IStockQuoteService" />
    </client>
    </system.serviceModel>
    </configuration>
     

  • 相关阅读:
    python_tkinter弹出对话框2
    python_tkinter弹出对话框1
    python生成图片二维码(利用pillow)
    nginx配置ssl证书流程及常见问题
    Django app安装,配置mysql,时区,模板,静态文件,媒体,admin
    使用Git Flow规范!
    python快速生成验证码
    json&pickle模块
    sys模块
    常用模块
  • 原文地址:https://www.cnblogs.com/danielWise/p/2090796.html
Copyright © 2011-2022 走看看