WCF 编程实验室】的更多相关文章

最近由于项目需要,简单研究了一下.NET WCF编程. 首先,简单说下WCF是什么,WCF 本质上,是一种开发框架.它用来开发类似COM+ .WEB SERVICE 这样“远程方法调用” 功能. 普通情况想,一个进程中,A模块调用B模块的方法. 有了COM+ .Webservice 这些,可以实现A进程 调用 B进程的方法. 更好的是,A,B可以不在同一个机器上.WCF就用来开发这样的“功能” WCF 比 COM+ WebService 灵活,(高效不知道,没有实际案例测试) 能在http\tc…
一.契约的基本概念 契约是消息参与者之间的约定.在SOA架构中,契约提供了服务通信所必需的元数据.契约用来定义数据类型,操作,消息交换模式和消息交换使用的传输协议.契约通常是在标准化平台中使用与编程语言无关的XML格式发布的.这样做的好处是:允许契约涉及的各方都能够使用和理解契约.在WCF中,服务元数据通常是用WSDL(Web服务描述语言)和XSD(扩展样式定义)文档格式来描述的.在WCF程序中,契约不一定是WSDL和XSD的文档集合,而可能是.NET类型定义的集合,如有需要就可以转化为WSDL…
01 WCF编程概述 SOA的优点 1.服务独立于平台和工作环境.服务并不关心自己所处的环境,也不关心与之进行通信的服务所处的    环境. 2.服务相互隔离. 3.服务对协议.格式和传输中立. 4.服务可以扩展. 5.服务行为不受限制.     实现SOA思想的技术:     1.webService     2.WCF   什么是WCF   MSDN上的定义:          WCF为.NetFramework 提供了一个基础,使其能够编写代码,以在组件.应用程序.系统之间进行通信.WCF…
WCF编程系列(七)信道及信道工厂   信道及信道栈 前面已经提及过,WCF中客户端与服务端的交互都是通过消息来进行的.消息从客户端传送到服务端会经过多个处理动作,在WCF编程模型中,这些动作是按层 次进行的:上一层次对消息处理完成后,将消息传递给下一层次,依次类推.这里对应的每个层即为信道(我们可以理解为消息通道).而这一些列的信道层构成了 一个信道栈.明显的,信道栈中的最后一个信道应该是传输信道,该信道将处理后的消息发送给服务端或接受从服务端返回的消息应答,而在传输信道之上还有一系 列的协议…
WCF编程系列(六)以编程方式配置终结点   示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来完成的.在本讲中,我们将直接使用编程方式来配置终结点. ServiceHost类 即服务宿主类,它为我们的服务提供一个运行环境.ServiceHost的构造函数有三个重载: ServiceHost()  使用无参数的构造必须要有相应的配置文件设置. ServiceHost(Object,Uri[])…
WCF编程系列(四)配置文件   .NET应用程序的配置文件 前述示例中Host项目中的App.config以及Client项目中的App.config称为应用程序配置文件,通过该文件配置可控制程序的运行时 行为,相对于在设计时通过程序来设定运行时行为,配置文件具有更高的灵活性:我们无需重新编译程序即可修改应用程序行为.编译器最终会将 App.config编译成 [应用程序名称].exe.config 文件,并放在当前应用程序目录中.而对应Web应用程序(ASP.NET)其对应的配置文件为Web…
WCF编程系列(五)元数据   示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs 命令中http://localhost:8000/?wsdl连接返回一个XML,该XML即为元数据:用以描述如何与服务的终结点进行交互.正因为有元数据的存在,svcutil命令才能自动生成客户端代理类. 元数据遵循Web服务描述语言(WSDL)标准,所以可被多种语言支持,除WC…
WCF编程系列(二)了解WCF   面向服务     服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用提升到服务层次. 在面向服务的应用程序中,开发者只需要关注业务逻辑的编写,以及通过可交换的.可互操作的服务终结点暴露业务逻辑.客户端调用这些终结点,而不是服务代码 或它的实现包.客户端与服务终结点的交互基于标准的消息交换,服务发布各种标准元数据,描述服务的功能,以及客户端调用服务操作的方式.正因为是…
WCF编程系列(三)地址与绑定   地址     地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://localhost:8000/ 表明通讯协议为http,位置是localhost(本机)的8000端口.     注意上述提到的消息是指一个独立的数据单元,一般由消息正文和消息头组成,而服务端与客户端的交互都是通过消息来进行的.     WCF中支持的传输协议包括HTTP.TCP.Peer network…
WCF编程系列(一)初识WCF   Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念:  地址:定义服务的地址  绑定:定义服务的通讯方式(传输协议.编码方案)  契约:定义服务的具体实现  终结点:由地址.绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务. 下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们…
ylbtech-.Net-WCF-图书:<WCF编程> <WCF编程>是2008年1月机械工业出版社出版的图书,作者是Juval Lowy.Clemens Vasters. 1.返回顶部 1. 书    名:WCF编程 作    者:Juval Lowy.Clemens Vasters 原版名称:Programming WCF Services 译    者:张逸.徐宁 ISBN:9787111227786 页    数:590 出版社:机械工业出版社 出版时间:2008年1月 开…
一.投票与提交 虽然WCF负责事务传播及两阶段提交协议的管理工作,但是 她不知道事务是否应该提交或终止.这需要根服务告诉WCF应该何时启动两阶段提交协议.是提交还是终止.WCF提供了两种编程模式来对事务的结果进行投票,即声明式和显式模式. 声明式投票 WCF可以代替服务自动完成提交或终止事务的投票.自动投票是通过OpreationBehavior的TransactionAutoComplete属性来控制的. TransactionAutoComplete属性的默认值为true,可以如下使用: /…
一.事务协议 总体来说,WCF开发人员不需要涉及事务协议与管理器.我们应该依赖WCF来选择相应的事务协议和管理器,重点关注业务逻辑的实现. WCF是根据事务范围里的参与个体来选择事务管理协议的.事务管理协议之间的差别与远程调用.通行协议,以及跨越的系统边界有关. 可选择的管理协议如下: 轻量级事务协议 这个协议只在本地同一个应用程序域内的上下文环境里管理事务,他不能跨越应用程序边界来传播事务(更不能跨越进程或机器边界了),也不能跨越服务边界(从客户端到服务段).轻量级协议只能在单个服务内部或同一…
一.事务概述 维护系统一致性和正确地处理错误恢复挑战的最佳方式是使用事务. 一个事务就是一个复杂操作的集合,这个集合中任何一个操作的失败都会引起整个集合的失败. 尽管在事务进行时系统被允许暂时出于不一致的状态,但是一旦事务结束,系统一定会处于一直的状态. 事务资源 事务编程需要资源(如数据库或消息队列)一起协作,这类资源要能够参与事务并回滚在事务中发生的变化. 一般情况下,我们必须通知这些希望执行事务性工作的资源,这个行为称为在事务中登记资源.一些资源支持自动登记,也就是说它们能够检测到自身是否…
一.错误传播 服务需要向客户端报告特定错误,当WCF默认的错误屏蔽方法并不包含这一实现.另一个重要的问题与传播到客户端有关,即由于异常是针对特定技术的,因此无法跨越服务边界而被共享.要实现无缝的互操作性,就需要将基于特定技术的异常映射为某种与平台无关的错误信息.这种表现形式就是所谓的SOAP错误. SOAP错误基于一种行业标准,它不依赖任何一种诸如CLR异常.Java异常或者C++异常等的特定技术异常. 若要返回一个SOAP错误,服务就不能抛出一个传统的CLR异常.相反,服务必须抛出FaultE…
一.错误概述 不管是哪一种操作,在任意时刻都可能出现不可预期的错误.问题在于我们应该如何将错误报告给客户端.异常和异常处理机制是与特定技术紧密结合的,不能跨越边界的.此外,如果有客户端来处理错误,必定会导致耦合度增加.通常,错误处理应该是本地的实现细节,并不会影响到客户端.在设计良好的应用程序中,服务应该是被封装的,客户端无法知道有关错误的消息.设计良好的服务应尽可能是自治的,不能依赖客户端去处理或恢复错误.任何非空的错误通知都应该是客户端与服务端之间契约交互的一部分. 二.错误隔离和解耦 WC…
一.流操作概述 在默认情况下,当客户端调用服务时,服务只有在接收到完整的消息后才会被调用,同样,客户端只有在包含了调用结果的返回消息被完整接受时,才会解除对它的阻塞. 对于数据量小的消息,这种交换模式提供了简单的编程模型,因为接收消息的耗时较之处理消息本身而言是微不足道的.然而,一旦需要处理数据量较大的消息,如包含了多媒体内容.大文本或数据块的消息,如果每次都要等到完整接收消息之后才能解除阻塞,则未免不太现实. 为了解决这样的问题,WCF允许接收到(客户端或服务)在通过通道接收消息的同时,启动对…
一.回调操作概述 WCF支持服务将调用返回给它的客户端.在回调期间,许多方面都将颠倒过来:服务将成为客户端,客户端将编程服务.回调操作可以用在各种场景和应用程序中,但在涉及事件或者服务发生时间需要通知客户端时,显得特别有用. 回调操作通常被认为是双向操作.并非所有的绑定都支持回调操作,只有在具有了双向能力的绑定时,才支持回调操作.比如,HTTP协议本质上是与与连接无关的,所以他不能用于回调,所以,不能基于BasicHttpBingding绑定或WsHttpBingding绑定使用回调.为了让HT…
一.调用操作概述 WCF除了支持经典的服务端-客户端的请求/应答操作外,还提供了对其他操作类型的内建支持,包括:即发即弃的单向调用:允许服务将调用返回给客户端的双向回调:允许客户端或服务器处理大量负荷的流操作. 二.请求/应答操作 在先前介绍的实例中,契约中的操作均为请求/应答类型.在这些类型中,客户端以消息形式发出请求,它会阻塞客户端直到收到应答消息.应答的默认超时时间为1min,如果超过这一时间服务仍然没有应答,客户端就会获得一个TimeoutException异常.请求/应答是默认的操作模…
一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来控制服务对象的实例化行为有PerCall.PerSession和Singleton三种模式可供选择. 绑定决定了传输协议和编码格式.此外,通过绑定可以使用很多的WS*协议. 并发模式决定了是否允许多个线程同时访问同一个对象.并发模式是有[ServiceBehavior]特性来控制的,它的默认值为Co…
一.服务实例的生命周期概览 我们已经直到,通过显式调用Close方法或等待默认的超时时间到来,都可以释放服务实例.但是,在会话连接里,经常需要按一定顺序调用方法. 二.分步操作 会话契约的操作有时隐含了操作调用的顺序.WCF提供了一种被称之为分步操作(Demarcating Operation)的方法,以应对服务契约的操作需要指定执行顺序的情况.分步操作是使用OperationContract特性的IsInitiating和IsTerminating属性: [AttributeUsage(Att…
一.实例上下文模式概述 实例上下文(IntanceContext Mode)表示服务端的服务实例与客户端的服务代理的绑定方式. 在实例化服务器对象时,WCF采用了3种不同的模式:单调(Per-Call)模式,会话(Per-Session)模式和单例(Single)模式.其中会话模式是默认的. 服务器实例化模式的选择只在服务端是可见的,并没有反映到WSDL文档中.由于每当客户端调用一个方法时,它并不知道接受对象是否来自同一个实例,也不知道以前设置的值是否保留了下来,更不知道每次调用的实例是否否是重…
一.绑定行为概述 为了支持服务端的其它本地特性,WCF定义了行为的概念.行为就是服务的本地特性,不会影响服务的通信模式.客户端并不知道服务端行为,所以行为不会出现在服务的绑定和发布的元数据中.说下WCF下“契约(Contract)”和“行为(Behavior)”的区别:契约是涉及双边的描述(契约是服务的提供者和服务消费者进行交互的手段),那么行为就是基于单边的描述.客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式.所以服务契约会通过元数据对外发布,而WCF…
一.绑定概述 WCF提供了一个编程框架,可以抽象化服务创建的复杂过程.绑定允许开发人员将精力集中在问题本身上,而无需考虑如何创建允许系统运行的架构,因为WCF已经创建了架构. 绑定类型是开发人员控制WCF程序与其它消息交互的主要手段.从功能上看,绑定创建了通道工厂或通道侦听器的堆栈对象.在服务模型层和通道层中,绑定在服务模型层是可见的,但它创建的对象作用于通道层. WCF通道模型: 绑定包含以下三个方面的内容: 传输协议--要使用的协议,如HTTP或TCP 编码格式--客户端与服务器之间传输消息…
一.服务 服务是一组公开功能的集合. 服务内部包含了如语言.技术.版本与框架等概念,服务之间的交互只允许使用规定的通信模式 外界客户端并不知道服务内部的实现细节,所以WCF服务通常通过元数据的方式描述可用的功能及服务可能采用的通信方式 WCF不允许客户端直接与服务交互,客户端总是使用代理将调用转发给服务 ,WCF允许客户端跨越执行边界与服务通信,如跨应用程序域.进程甚至网络. WCF要求客户端对本地对象还是远程对象都保持一致的编程模型,而不用考虑服务的位置 WCF对本地对象还是远程对象都使用代理…
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有Http和Ftp的相关技术,是Windows平台上开发分布式应用最佳的实践方式.使用该框架,开发人员可以构建跨平台.安全.可靠和支持事务处理的企业级互联应用解决方案. 二.WCF的优势 1.统一性 WCF涵盖了之前微软推出的所有用于分布式开发的技…
一.概述 传入的客户端调用消息会分发给Windows I/O线程池(线程默认为1000)上的服务实例.多个客户端可以发起多个并发的调用,并且服务可以在多个线程上处理这些请求.如果传入的调用分发给同一个服务实例,就必须对内存中的服务状态提供线程安全的访问方式,否则,可能存在错误的风险.客户端回调时的内存状态亦是如此,因为回调也是分发给I/O线程池上的线程.此外,为了同步访问实例的状态,还需要同步访问实例之间共享的资源,比如静态变量. WCF提供了两种同步模式:自动同步与手动同步.虽然自动同步会指导…
一.设置环境事务 默认情况下,服务类和操作没有环境事务,即使客户端事务传播到服务端也是如此. 尽管强制事务流从客户端传播过来,但服务端的环境事务依旧为null.为了启用环境事务,每个操作必须告诉WCF启用事务.为了解决这个问题,WCF提供了OperationBehaviorAttribute的TransactionScopeRequired属性: // 指定服务方法的本地执行行为.[AttributeUsage(AttributeTargets.Method)]public sealed cla…
一.事务传播概述 WCF可以跨越服务边界传递事务.这可以让服务参与到客户端事务里,客户端还可以在同一个事务里调用多个服务.客户端本身不一定是WCF服务.客户端事务是否传播到服务端可以通过绑定和操作契约契约的设置来控制. 我们把能够支持客户端事务传播给服务端的绑定称为"事务感知"型绑定. 只有TCP.IPC和WS绑定支持事务传播. 二.事务流与绑定 默认情况下,事务感知型绑定并不会传播事务.服务宿主或管理员必须明确设置服务接收进入的跨越组织或业务边界的事务. 为了支持事务传播.就必须在服…
一.事件概述 基础的WCF回调机制并不能阐明客户端与服务之间交互的本质.双向回调的规范使用可以通过事件来完成.客户端发生的相关事项都可以通过事件通知客户端或者多个客户端.事件可能源于直接的客户端调用,也可能来源于服务监听器.激活事件的服务称为发布者,而接受事件答得客户端则称为订阅者.如下图所示: 与回调操作相比,WCF更重视对事件的运作.从本质讲,事件代表了发布者与订阅者之间更加松散的关系,他优于客户端和服务之间的关系.处理事件时,服务通常会为多个订阅客户端发布同样的事件.发布者一般不会考虑订阅…