wcf系列---- binding的使用(1)
文转自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)相关推荐
- WCF系列(一)BasicHttpBinding 和 WsHttpBinding 的不同点
aaaaaaaaaaaaaaaaaa WCF系列(一)[翻译]BasicHttpBinding 和 WsHttpBinding 的不同点 2010-02-21 12:23 by Virus-Beaut ...
- mysql分布式事务wcf_[转载]WCF系列_分布式事务(下)
浏览到chnking的WCF的分布式事务处理不错,转载过来分享一下.1. WCF分布式事务例子这里也用转账的例子说事. 用户在系统A和系统B都有账户,账户间的资金可以互转,系统A的资金减少多少,系统B ...
- wcf系列5天速成——第一天 binding的使用(1)
作为WCF速成系列,只介绍些项目开发中常用到的实战知识. 学习wcf,还是对其中的几个术语要了解一下.wcf中有一个ABC的概念,就是 第一: "A" 是地址,就是告诉别人我wcf ...
- 一步一个脚印学习WCF系列之WCF基础术语—绑定(Binding)(五)
阅读目录 一:为什么会出现绑定? 一:为什么会出现绑定? . 服务之间的通信是多种多样的,有很多种通信模式 . 消息通信模式就有比如:同步请求/应答模式,异步的即发即弃消息等一系列,传递消息的传输协议 ...
- wcf系列5天速成——第二天 binding的使用(2)(转载)
承接上一章,今天来讲MSMQ在实战项目中的应用.众所周知,放了防止订单丢失,我们都是采用Order过一下MSMQ. MSMQ的优点个人认为是:先天的异步消息发送和天生的自动负载均衡. 好了,看看MSM ...
- WCF系列(1)—— CustomBehavior 入门
由于最近工作一直在做wcf平台上的开发,所以决定先结合自己平时工作中的经验实践写一个WCF的系列,希望能对大家有所帮助. 首先,说到WCF,就不得不提Endpoint这个概念,而Endpoint则由A ...
- WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
只使用代码而不用配置文件的情况不适合IIS为宿主的情况,IIS宿主必须使用配置文件配置WCF的ServiceHost. 1.服务端 1.1. 准备Contract和实现Contract的服务 很 ...
- WCF系列(二) -- 使用配置文件构建和使用WCF服务
当然,配置一个ServiceHost除了上面说的完全使用代码的方式,更好的方式是使用配置文件,把一些可能需要修改的属性跟代码分离,放到配置文件中,这样可以提供服务配置的灵活性,也更容易维护. 看看前面 ...
- WCF系列之.net(3.0/3.5)Rest使用示例
上面我介绍了在.NET(3.0/3.5)开发WCF的使用示例. 这篇,我将讲解Rest 这个炙手可热的新的开发方式,至于rest 是什么,请大家百度下. 我们还是以下面的方式做示例: 服务接口-> ...
最新文章
- Linux那些事儿 之 戏说USB(6)好戏开始了
- ORACLE expdp/impdp详解
- ccf--20140903--字符串匹配
- HttpWebRequest 忽略证书
- opencv基础---直方图均衡化(原理equalizeHist)
- 【基础】算法时空复杂度【OI缩水版】
- 3500份课程课后习题答案与大家分享~~
- 运行 java applet_创建运行第一个Java Applet程序
- 关于JavaScript闭包理解
- 网站漏洞扫描工具--Safe3 Web Vul Scanner功能展示
- NUC8 i5beh 黑苹果macOS Monterey 12.3.1安装教程
- DZone每日必读-News:2022 年 Java 开发:预测和选定趋势
- Set与List的前辈是Collection,Map自成一派
- 达梦数据库key文件更换
- mysql诸如漏洞攻击_MySQL及漏洞笔记
- BroadcastReceiver 广播
- 监控之美——监控之美-监控系统选型分析及误区探讨
- 《2021企业数智化转型升级先锋人物》榜重磅发布
- 刚入门学3D游戏美术设计最常见的几个问题
- 年度考核如何实现排名?