文转自http://www.cnblogs.com/huangxincheng/archive/2011/10/23/2221845.html

作为WCF速成系列,只介绍些项目开发中常用到的实战知识。

学习wcf,还是对其中的几个术语要了解一下。wcf中有一个ABC的概念,就是

第一: "A" 是地址,就是告诉别人我wcf在何处。

第二: "B"是绑定,就是告诉别人应该走什么路才能过来。

第三: "C"是契约:就是告诉别人我wcf这里有哪些东西。

项目开发中常用到的三种绑定:

第一:wsHttpBinding,  这个binding可以认为是webservice的加强版WSE,设计的目的就是用于异构系统的交互(比如java)。

第二:netTcpBinding,   这个binding可以认为是remoting的加强版,设计的目的就是用于不同机器的.net 程序交互,

第三: netMsmqBinding,  这个binding可以认为是msmq的加强版本,设计目的就是脱机环境下不同机器的.net程序交互,确保信息不丢失。

下面对前二种binding的实际代码运用。

第二步: 既然”C"已经出来了,那么她必须要有承载她的环境,也就是所谓的“宿主”。这里用console来承载。

新建console程序。

第三步:现在服务处于预开启状态,为了让wcf更加灵活,更加容易控制,就要将相关配置写入到config里面。

在console类库中新建一个config文件,最后运行console程序正式启动。代码图如下:

    <!--定义客户端元数据类型-->    <behaviors>      <serviceBehaviors>        <!--配置名称-->        <behavior name="wsHttpBindingExample.MyserviceBehavior">          <!--客户端是否支持HttpGet方式获取数据-->          <serviceMetadata httpGetEnabled="true" />          <!--客户端是否能捕获异常-->          <serviceDebug includeExceptionDetailInFaults="true" />        </behavior>      </serviceBehaviors>    </behaviors>    <services>

      <!--数据配置-->      <!--name就是服务名称,behaviorConfiguration:服务要暴露元数据  -->      <service        behaviorConfiguration="wsHttpBindingExample.MyserviceBehavior"        name="wsHttpBindingExample.Myservice">

        <!--address:就是告诉wcf的地址是基地址baseAddresses,这个地方可以定义相对地址和决定地址-->        <!--binding:该wcf走的协议是http协议wse-->        <!--contract:就是契约内容-->        <endpoint          address=""          binding="wsHttpBinding"          contract="wsHttpBindingExample.IMyservice">          <!--定义服务器类型-->          <!--<identity>            <dns value="localhost" />          </identity>-->        </endpoint>        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />        <host>          <baseAddresses>            <!--二个用途:第一:这个地址用于给客户端作为服务引用的地址-->            <!--二个用途;第二,做为endpoint的基地址存在-->            <add baseAddress="http://localhost:8732/Design_Time_Addresses/wsHttpBindingExample/Myservice/" />          </baseAddresses>        </host>      </service>    </services>  </system.serviceModel></configuration>

最后:  wcf已经开启,正在监视着address,然后我们就是先建一个console的Client程序,“引用”中“点击右键”添加服务引用。

客户端应用代码:

如果大家看懂了wsHttpBinding如何使用,那么改成netTcpBinding将会是轻而易举。 因为只要修改两个地方即可。

第一:修改配置文件中的endpoint地址。

为了配置大文件传输我们需要重新定义bindings

<?xml version="1.0" encoding="utf-8" ?><configuration>  <system.serviceModel>    <!--定义客户端元数据类型-->    <behaviors>      <serviceBehaviors>        <!--配置名称-->        <behavior name="wsHttpBindingExample.MyserviceBehavior">          <!--客户端是否支持HttpGet方式获取数据-->          <serviceMetadata httpGetEnabled="false" />          <!--客户端是否能捕获异常-->          <serviceDebug includeExceptionDetailInFaults="true" />        </behavior>      </serviceBehaviors>    </behaviors>    <services>      <!--数据配置-->      <service        behaviorConfiguration="wsHttpBindingExample.MyserviceBehavior"        name="netTcpBindingExample.ManFly">

        <!--address:这个地址是绝对地址用的协议netTcp协议传输-->        <!--binding:该wcf走的协议是netTcpBinding协议-->        <!--contract:就是契约内容-->        <endpoint          address=""          binding="netTcpBinding"          contract="netTcpBindingExample.IFly"          bindingConfiguration="netTcpBindConfig"           />        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>

        <host>          <baseAddresses>            <!--二个用途:第一:这个地址用于给客户端作为服务引用的地址-->            <!--二个用途;第二,做为endpoint的基地址存在-->            <add baseAddress="net.tcp://localhost:8735/Design_Time_Addresses/netTcpBindingExample/ManFly/" />          </baseAddresses>        </host>

      </service>

    </services>

    <!--定义netTcpBinding协议为主-->    <!--如果想传输大文件,下面几个配置也是必不可少的:

  maxBufferPoolSize="2147483647 " 

  maxBufferSize="2147483647 "  

   maxReceivedMessageSize="2147483647 "1、closeTimeout指定完成关闭操作提供的时间间隔、默认值为一分钟2、hostnameComparisonMode指定用于分析的Http主机名比较模式 默认值为StrongWildcard3、listenBacklog指定侦听器伤等待接受的最大通道数4、connectionTimeout 属性限制客户端在引发连接异常之前将等待连接的时间。默认值为 105、maxBufferPoolSize一个整数,指定此绑定的最大缓冲池大小,默认是512*1024字节6、maxBufferSize正整数,指定内存中用于存储消息的存储区的最大大小(字节)     如果 transferMode 属性等于 Buffered,则此属性应等于 maxReceivedMessageSize 属性值。     如果 transferMode 属性等于 Streamed,则此属性不能大于 maxReceivedMessageSize 属性值,应当至少为标头的大小。     默认值为 65536。7、maxConnections整数指定服务将创建/接受的最大出站和入站连接数。传入和传出连接分别根据此属性指定的限制进行计数。默认值为108、maxReceivedMessageSize正整数,指定采用此绑定配置的通道上可以接受的最大信息大小,包括信息头,如果消息超出此限制则发送方将收到 SOAP 错误。接收方将删除该消息,并在跟踪日志中创建事件项。默认值为 65536。9、name一个包含绑定的配置名称的字符串。因为此值用作绑定的标识,所以它应该是唯一的。.net4.0;里面就没自动配置了10、openTimeout指定完成打开操作提供的时间间隔11、portSharingEnabled一个布尔值,指定是否为此连接启用 TCP 端口共享。如果此值为 false,则每个绑定都使用自己的独占端口。此设置只与服务相关,因为客户端不受影响。12、receiveTimeout一个 TimeSpan 值,指定为完成接收操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:10:00。13、sendTimeout一个 TimeSpan 值,指定为完成发送操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。14、transactionFlow一个布尔值,指定绑定是否支持流动 WS-Transactions。默认值为 false。15、transactionProtocol指定与此绑定一起使用的事务处理协议。有效值为OleTransactions WSAtomicTransactionOctober2004 默认值为 OleTransactions。此属性的类型为 TransactionProtocol。16、transferMode一个 TransferMode 值,指定为请求或响应对消息进行缓冲处理还是流式处理。   -->    <bindings>      <netTcpBinding>        <binding           name="netTcpBindConfig"           closeTimeout="00:01:00"           openTimeout="00:1:00"           receiveTimeout="00:10:00"           sendTimeout="00:01:00"           transactionFlow="false"           transferMode="Buffered"           listenBacklog="10"           maxBufferPoolSize="2147583647"           maxBufferSize="2147483647"           maxConnections="10"           maxReceivedMessageSize="2147483647"          >

          <readerQuotas maxDepth="32"                        maxStringContentLength="2147483647 "                        maxArrayLength="2147483647 "                        maxBytesPerRead="4096"                        maxNameTableCharCount="16384" />

          <reliableSession ordered="true"                           inactivityTimeout="00:10:00"                           enabled="false" />

          <security mode="Transport">            <transport              clientCredentialType="Windows"              protectionLevel="EncryptAndSign" />          </security>        </binding>      </netTcpBinding>    </bindings>

  </system.serviceModel></configuration>

至此我已经安装此博友的第一篇文章进行了汇总

转载于:https://www.cnblogs.com/zhijianliutang/archive/2011/11/14/2248090.html

wcf系列---- binding的使用(1)相关推荐

  1. WCF系列(一)BasicHttpBinding 和 WsHttpBinding 的不同点

    aaaaaaaaaaaaaaaaaa WCF系列(一)[翻译]BasicHttpBinding 和 WsHttpBinding 的不同点 2010-02-21 12:23 by Virus-Beaut ...

  2. mysql分布式事务wcf_[转载]WCF系列_分布式事务(下)

    浏览到chnking的WCF的分布式事务处理不错,转载过来分享一下.1. WCF分布式事务例子这里也用转账的例子说事. 用户在系统A和系统B都有账户,账户间的资金可以互转,系统A的资金减少多少,系统B ...

  3. wcf系列5天速成——第一天 binding的使用(1)

    作为WCF速成系列,只介绍些项目开发中常用到的实战知识. 学习wcf,还是对其中的几个术语要了解一下.wcf中有一个ABC的概念,就是 第一: "A" 是地址,就是告诉别人我wcf ...

  4. 一步一个脚印学习WCF系列之WCF基础术语—绑定(Binding)(五)

    阅读目录 一:为什么会出现绑定? 一:为什么会出现绑定? . 服务之间的通信是多种多样的,有很多种通信模式 . 消息通信模式就有比如:同步请求/应答模式,异步的即发即弃消息等一系列,传递消息的传输协议 ...

  5. wcf系列5天速成——第二天 binding的使用(2)(转载)

    承接上一章,今天来讲MSMQ在实战项目中的应用.众所周知,放了防止订单丢失,我们都是采用Order过一下MSMQ. MSMQ的优点个人认为是:先天的异步消息发送和天生的自动负载均衡. 好了,看看MSM ...

  6. WCF系列(1)—— CustomBehavior 入门

    由于最近工作一直在做wcf平台上的开发,所以决定先结合自己平时工作中的经验实践写一个WCF的系列,希望能对大家有所帮助. 首先,说到WCF,就不得不提Endpoint这个概念,而Endpoint则由A ...

  7. WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务

    只使用代码而不用配置文件的情况不适合IIS为宿主的情况,IIS宿主必须使用配置文件配置WCF的ServiceHost. 1.服务端 1.1.    准备Contract和实现Contract的服务 很 ...

  8. WCF系列(二) -- 使用配置文件构建和使用WCF服务

    当然,配置一个ServiceHost除了上面说的完全使用代码的方式,更好的方式是使用配置文件,把一些可能需要修改的属性跟代码分离,放到配置文件中,这样可以提供服务配置的灵活性,也更容易维护. 看看前面 ...

  9. WCF系列之.net(3.0/3.5)Rest使用示例

    上面我介绍了在.NET(3.0/3.5)开发WCF的使用示例. 这篇,我将讲解Rest 这个炙手可热的新的开发方式,至于rest 是什么,请大家百度下. 我们还是以下面的方式做示例: 服务接口-> ...

最新文章

  1. Linux那些事儿 之 戏说USB(6)好戏开始了
  2. ORACLE expdp/impdp详解
  3. ccf--20140903--字符串匹配
  4. HttpWebRequest 忽略证书
  5. opencv基础---直方图均衡化(原理equalizeHist)
  6. 【基础】算法时空复杂度【OI缩水版】
  7. 3500份课程课后习题答案与大家分享~~
  8. 运行 java applet_创建运行第一个Java Applet程序
  9. 关于JavaScript闭包理解
  10. 网站漏洞扫描工具--Safe3 Web Vul Scanner功能展示
  11. NUC8 i5beh 黑苹果macOS Monterey 12.3.1安装教程
  12. DZone每日必读-News:2022 年 Java 开发:预测和选定趋势
  13. Set与List的前辈是Collection,Map自成一派
  14. 达梦数据库key文件更换
  15. mysql诸如漏洞攻击_MySQL及漏洞笔记
  16. BroadcastReceiver 广播
  17. 监控之美——监控之美-监控系统选型分析及误区探讨
  18. 《2021企业数智化转型升级先锋人物》榜重磅发布
  19. 刚入门学3D游戏美术设计最常见的几个问题
  20. 年度考核如何实现排名?

热门文章

  1. (转)Symbian启动J2ME程序
  2. ssh_config sshd_config 详解
  3. php猴子找大王算法,php 正常的猴子选大王算法
  4. C++ 构造函数初始化列表
  5. angular集成websocket_Angular + Websocket
  6. 电子称重管理计算机,称重管理系统
  7. linux常用命令linux自动挂载WinXP系统下的分区
  8. 如何附加被分离的质疑数据库?
  9. linux 开启独立iptables日志
  10. mysql 导入导出摘要