第四章 Binding --.Net应用下的跨机器通信

.Net应用下的跨机器通信
    这一节描述.Net应用下跨机器通信的绑定。我们将演示如何在配置和代码中自定义每个绑定。默认的方案中每个binding都会被重新评定。
    提示:已“net”开始的binding应该用于.Net应用
    所有标有“net”前缀的binding应该使用在.net程序中哦你,binding的前缀名标识出你应该如何选择。这就是说,这些binding有某些特别的性质只能在.Net程序中使用。相反的,已“ws”做前缀的binding名是表示非.net程序的Webservice交互。

netTcpBinding
    netTcpBinding设计用来在跨网络的单机中的.Net应用间通信,包括内网和互联网通信。我们将这类通信称作跨机通信。在这种解决方案中并不需可互操作性,因为所有的程序都是构建在.Net上。这就让我们跨网络通信是获得了很大的灵活性。因为没有可互操作性的需求存在,通信将可以采用最优化的执行。
    netTcpBinding使用二进制编码和TCP协议来获得跨网络的最佳性能。在.NET程序间跨机通信采用netTcpBinding绑定是通常的做法。虽然这不是硬性规定,但这可以用在多数解决方案中。比如当两个.Net程序间有个防火墙分隔这时采用netTcpBinding就不合适了,而这种情况下要想能穿越防火墙通信你只能使用HTTP了。对于这个解决方案,你将需要一个支持HTTP协议的binding,你可以使用basicHttpBinding而不是采用netTcpBinding。
    下面是netTcpBinding的地址格式:
    net.tcp//{hostname}[:port]/{service location}
    TCP协议的默认端口是808。这种情况适合所有基于TcpTransportBindingElement的元素的绑定。自然也包括netTcpBinding。
    表4.3列出了netTcpBinding的可配置的binding属性。这些都是必须知道的。比如,netTcpBinding默认是关闭端口共享的。如果你想使用一个端口托管多个服务这将是很重要的。关于端口共享的更多信息可以参考附录"高级指南"中的"服务间共享端口"章节。netTcpBinding中另一个重要的属性是maxConnections。maxConnections属性限制了endpoint的连接数量。它的默认值是10。为了获得更多的吞吐量可以增加此值。
表4.3

    下面的配置是清单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">         
          <host>
            <baseAddresses>
              <add baseAddress="net.pipe://localhost:9090/StockQuoteService" />
            </baseAddresses>
          </host>
          <endpoint address="" binding="netTcpBinding" contract="EssentialWCF.IStockQuoteService" />
        </service>
      </services>     
    </system.serviceModel> 
</configuration>

------------------------------------------------

    清单4.8展示了使用netTcpBinding的服务端被客户端消费的配置
------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <client>
          <endpoint address="net.tcp://localhost/stockquoteservice"
                    binding="netTcpBinding"
                    contract="EssentialWCF.IStockQuoteServce">           
          </endpoint>
        </client>
    </system.serviceModel>
</configuration>
------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值