WCF初识3

WCF的三种消息交换模式

1.One-Way Calls

2.Request/Reply

3.Duplex

第一种是肉包子打狗,有去无回的类型。存在如下特征:

⑴没有返回值,返回值只能为void。

⑵不能包含ref或者out类型的参数。

⑶只有客户端发起请求,服务端并不会对请求进行回复。

第二种是有去有回类型,存在如下特征:

⑴调用服务方法后需要等待服务的消息返回,即便该方法返回void类型

⑵相比Duplex来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后,消息交换就结束了。

⑶在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明。

第三种是有去有回还附加一趟类型

1.消息交换过程中,服务端和客户端角色会发生调换

2.服务端处理完请求后,返回客户端的不是reply,而是callback请求

对于第三种,请参考事件广播代码。

WCF的三种实例模式:PerSession,PerCall,Single

Single

PerCall就是一种吞吐能力很强的一种模式,当一个请求操作来到的时候,再创建服务对象,申请必要的资源,而当操作完成之后,立即销毁对象并释放资源,留给下一个请求。这就是提高了吞吐能力。而且WCF中默认的实例创建模式就是这种。

PerSesson就是那种能在服务端和客户端维护状态,当一个对象对象创建之后不会马上销毁,而是等待客户再次来消费它。缺点是站着茅坑不拉屎,优点是能够保持状态链接和维护状态,如果服务端操作不需要比较多的资源或者占用的资源也不宝贵,这种模式可用。

Single

一个一个来。

使用不同的实例模式,需要注意的又哪些?

1.对于PerCall模式,一定要记住,如果服务对象中的数据没有固化,并且不是静态变量,那它每次操作都会被重新初始化。

2.对于PerSession模式,第一要清楚有些Binding是不能用于的,具体有什么用,什么不能用,可以查阅http://www.cnblogs.com/jillzhang/archive/2008/02/03/1063406.html 。另外PerSession模式并不是代表状态会自动维护,那些被设置了IsTerminating=True的操作完成的时候,也会释放资源和销毁对象,即使不是True,那如果客户端长时间不与服务端联系,达到服务端最大忍耐限度,服务端也会变心。

3.对于Single模式,既然例外就它老哥一个,就简单多了,它能保持服务对象中的非静态全局变量。但是特别要注意的是,如果在这种模式下的话,要特别注意线程安全的问题。让10个人同时让一个理发师来服务

异常处理

WCF定义了几种异常处理模型,它们分别如下:

⑴缺省模式

⑵包含详细信息模式

⑶自定义异常消息模式

各种异常处理所适用的应用场合?

缺省模式:此种异常是返回比较模糊的异常,只告诉客户端我出错了,但不告诉具体细节。用于保护场服务程序。

包含详细信息模式:顾名思义。可以通过IncludeExceptionDetaillnFaults=True来设置返回具体的异常信息,这样就能告诉客户端出错了,并指出错误在哪里。这只使用于比较信任的客户端。返回详细异常有两种方法:第一种:通过在服务端的配置文件中设置文件;

第二种方式为通过在代码中指定:【ServiceBehavior(IncludeExceptionDetaillnFaults=true)】

⑶自定义异常消息模式

在WCF中,还支持更详细 异常消息,它通过自定义的异常消息FaultMessage来传达更多的内容,WCF采用通用的Soap Fault来处理异常,并提供了FaultException和FaultException两个类型来描述和操作异常。

WCF包括三种常见的类型的异常:

1.通讯异常,这通常是因为链路问题,比如服务没有启动,网络阻塞等,这类异常是CommunicationException或者起派生类

2.状态异常,这类异常通常是与上文提到的实例模式相关的,当访问了一个已经销毁的服务器对象时便会引发此类的异常,它们通常是ObjectDisposedException

3.服务异常,由服务端根据具体的业务逻辑触发,通常是FaultException值得注意的是当抛出服务异常的时候,不同的实例模式的处理方式不同。

PerSession这种模式,抛出异常,服务实例将销毁,客户端抛出FaultException,客户端代理对象无法继续使用。

---恢复内容结束---

时间: 2024-11-08 16:41:21

WCF初识3的相关文章

WCF初识

WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域中的对象能进行直接的访问和控制,但超出这个范围,便不能进行直接的访问和控制了,所以说进程或这应用程序域有一定的隔离作用,如果是分布在不同的网路,不同操作系统上的不同进程,他们进行通信的难度就更大,而分布式应用程序要求的就是将原本隔离的作用域通过一定的契约联系起来.从而达成多个系统的沟通协作.当然能实

WCF 初识(一)

WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/HTTP/Pipeline communication)以及基础的Winsock等通信支持. 由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性(例如.NET Remoting可以开发SOAP, HTTP通信),对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人

我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wcf所遇到的困难以及解决方案一点点记下来,可能还有很多不足之处那我们一起共同学习.在学习之前我们有必要初步的看下百度百科对wcf的解释,让我们心中有这一个概念,然后建立项目,然后再次看概念,然后在去更深层的建立项目,然后再去理解这样反复的去做我相信可以做好wcf.那么下面我就会从初识wcf,wcf消息

初识WCF

WCF是对现有分布式通信技术的整合,其中包括Com/DCom..Net Remoting.Web服务及其WSE(web服务的升级版本).MSMQ..Net Remoting 远程调用,可以实现分布式开发,但是不能跨平台或者说是只能是在.Net和.Net之间进行调用.不能实现真正意义上的面向服务Web 服务 WSE 可以说是真正意义上的面向服务的设计,可以实现跨平台的调用,但是web服务只能通过http的方式传输,并且安全性.可靠性得不到有效的控制,所以不能完成企业级应用的要求.MSMQ 是基于W

WCF 之 初识WCF

在编程中服务的作用越来越大了,.net从2.0的 webservice,到3.5之后的WCF,服务的功能越来越强了.现在先从简单的看起,先看看WCF服务的发布. 现在来看看一步一步发布 WCF 服务. 环境: 系统:windows 7 开发工具:visual studio 2010 .net 版本:4.0 一.新建一个WCF服务 1.“ 文件 → 新建 → 项目 → WCF 服务应用程序 ”: 2.建好后,手动增加几个类,如图: 3.实现服务接口,创建序列化的数据类. 本项目中: [1] 服务接

wcf学习笔记--初识wcf

WCF,长久以来一直是只闻其名,未见其真身. 这家伙可以说是.net跨平台的利器,简单说来,wcf可以寄宿在多种类型的程序之中,比如IIS,exe,com+等等,看官方介绍是很NB的一个东西,奈何我是一窍不通... 根据WCF的使用场景,可以简单的概括为两方面: 1.服务器寄宿wcf服务: 2.客户端调用服务: 先说wcf的寄宿,wcf的寄宿方式有多种,常用的有IIS,winform,console控制台: IIS寄宿: 1,创建wcf服务应用程序,注意两个地方:应用于接口的[ServiceCo

初识WCF之使用配置文件部署WCF应用程序

二月份的开头,小编依旧继续着项目开发之路,开始接触全新的知识,EF,WCF,MVC等,今天小编来简单的总结一下有关于WCF的基础知识,学习之前,小编自己给自己提了两个问题,WCF是什么?WCF能用来做什么?WCF具有哪些优点?带着这样的问题,小编开始进行了一番搜索,一下是小编整理的结果. WCF是什么? WCF(Windows Communication Foundation)是用于构建面向服务的应用程序的框架 ,是由微软发展的一组数据通信的应用程序开发接口.根据MSDN上的定义:WCF为.Ne

(转载)WCF Demo

WCF编程系列(一)初识WCF Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念:  地址:定义服务的地址  绑定:定义服务的通讯方式(传输协议.编码方案)  契约:定义服务的具体实现  终结点:由地址.绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务. 下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们将在

初识自动化测试理论

自动化测试的分类 Web UI 的自动化测试(一类:模拟真实用户操作[鼠标键盘],二类:模拟HTTP请求) Windows 窗体的UI自动化测试 API测试(Web API,WCF Service) 数据库测试(存储过程) 接口测试 单元测试 性能测试 自动化应具备的知识点: 了解Javascript, CSS的知识. 熟练掌握DOM和HTML知识, (用来解析Web界面) 熟练掌握XML技术,(需要用XML保存测试数据,用XML展现测试报告) 熟练使用C# P/inoke技术调用Windows