Loading

随笔分类 -  02.WCF初探

摘要: 理解WCF中的并发机制  在对WCF并发机制进行理解时,必须对WCF初探-27:WCF中的实例化进行理解,因为WCF中的并发特点是伴随着服务实例上下文实现的。WCF的实例上下文模型可以通过InstanceContext的属性来进行设置,WCF中的并发就是指一个实例上下文处理请求消息的能力,当需要在一个实例上下文中处理多个消息请求时就会产生并发。所以当InstanceContextMode的值为PerSession或Single的时候就会产生并发的情况,这时我们可以通过设置ConcurrencyMode的值来控制服务并发处理消息的模式。 阅读全文
posted @ 2015-07-14 07:57 wangweimutou 阅读(4152) 评论(10) 推荐(12) 编辑
摘要: 理解WCF中的实例化机制  “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制。也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对象,实例化就是对这个对象的生命周期的管理(比如:代理服务对象的创建,对象调用服务端方法后需要对其进行的回收处理)。 阅读全文
posted @ 2015-05-21 08:04 wangweimutou 阅读(1982) 评论(4) 推荐(10) 编辑
摘要: 理解WCF中的会话机制  在WCF应用程序中,会话将一组消息相互关联,从而形成对话。会话”是在两个终结点之间发送的所有消息的一种相互关系。当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调用的基础消息交换)必须是同一对话的一部分。如果某个协定指定它允许使用会话但不要求使用会话,则客户端可以进行连接,并选择建立会话或不建立会话。如果会话结束,然后在同一个通道上发送消息,将会引发异常。 阅读全文
posted @ 2015-05-20 08:02 wangweimutou 阅读(1971) 评论(5) 推荐(3) 编辑
摘要: 前言  在上一篇WCF序列化和反序列化中,文章介绍了WCF序列化和反序列化的机制,虽然WCF针对序列化提供了默认的DataContractSerializer序列化引擎,但是WCF还支持其他的序列化引擎,那就是XmlSerializer序列化引擎。本文将详细介绍XmlSerializer类在WCF中具体的使用方式。 阅读全文
posted @ 2015-05-18 11:42 wangweimutou 阅读(1975) 评论(3) 推荐(2) 编辑
摘要: 前言  WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的。比如上一篇讲解的Message。这一篇我将讲解WCF的另一种内部机制,WCF的序列化和反序列化。通常我们在编写WCF服务程序的时候,我们并没有手动对WCF的数据传递做序列化和反序列化的操作,这是因为WCF默认通过序列化引擎DataContractSerializer帮我们做了这些操作,使得开发人员只需关注数据对象定义本身(比如数据协定、消息协定),而不必关注数据对象的在WCF传输时的序列化机制。 阅读全文
posted @ 2015-05-15 11:23 wangweimutou 阅读(4642) 评论(2) 推荐(3) 编辑
摘要: 前言  在上一篇WCF中使用Message类(上)中,文章介绍了WCF中使用Message类的基本知识和怎样创建消息,本文是承接上一篇文章,如果想要更好的阅读本文,请先阅读上一篇文章。在这篇文章中,我将介绍怎样来操作消息。  从WCF中使用Message类(上)中,我们知道了消息的基本结构,针对不同的情况,我们对消息进行了创建。在创建消息后,我们还可以对消息进行写入、读取、复制等操作,以便我们在不同的任务环境下更好的运用消息传输机制。 阅读全文
posted @ 2015-05-11 08:07 wangweimutou 阅读(1955) 评论(2) 推荐(0) 编辑
摘要: 前言  从我们学习WCF以来,就一直强调WCF是基于消息的通信机制。但是由于WCF给我们做了高级封装,以至于我们在使用WCF的时候很少了解到消息的内部机制。由于WCF的架构的可扩展性,针对一些特殊情况,WCF为我们提供了Message类来深度定制消息结构,以便我们拓展WCF的通信机制。  在之前的文章中,我们针对一些常用的WCF传递数据的方式进行了说明,比如数据协定和消息协定等。他们传递的数据最终都会转化为消息的实例。具体参照: WCF初探-16:WCF数据协定之基础知识 WCF初探-19:WCF消息协定 阅读全文
posted @ 2015-05-08 08:01 wangweimutou 阅读(3089) 评论(2) 推荐(8) 编辑
摘要: WCF终结点概述  在之前文章的示例中,我们都是通过配置服务的终结点(endpoint)发布的服务,供客户端调用,这是因为WCF服务的所有通信都是通过该服务的终结点进行的。每个终结点(endpoint)包含四个属性。 1. 一个指示可以查找终结点的位置的地址。 2. 一个指定客户端如何与终结点进行通信的绑定。 3. 一个标识可用操作的协定。 4. 一组指定终结点的本地实现细节的行为。 阅读全文
posted @ 2015-04-29 08:00 wangweimutou 阅读(2288) 评论(3) 推荐(15) 编辑
摘要: WCF错误协定概述 在所有托管应用程序中,处理错误由 Exception 对象表示。 在基于 SOAP 的应用程序(如 WCF 应用程序)中,服务方法使用 SOAP 错误消息来传递处理错误信息。 SOAP 错误是包括在服务操作元数据中的消息类型,因此会创建一个错误协定,客户端可使用该协定来使操作更加可靠或更具交互性。 此外,由于 SOAP 错误在客户端以 XML 格式表示,这是一种任何 SOAP 平台上的客户端都可以使用的具有极好的互操作性的类型系统,可增加 WCF 应用程序的适用范围。 阅读全文
posted @ 2015-04-27 08:00 wangweimutou 阅读(1424) 评论(4) 推荐(6) 编辑
摘要: WCF消息协定概述  在生成 WCF应用程序时,开发人员通常会密切关注数据结构和序列化问题,而不必关心携带数据的消息结构。 对于这些应用程序,为参数或返回值创建数据协定的过程很简单。但是,有时完全控制 SOAP 消息的结构与控制其内容一样重要。 当必须提供互操作性或需要在消息或消息部分级别特别控制安全问题时,更是如此。 在这些情况下,您可以创建消息协定 ,使您可以指定所需的精确的 SOAP 消息的结构。 阅读全文
posted @ 2015-04-24 10:00 wangweimutou 阅读(1680) 评论(0) 推荐(5) 编辑
摘要: KnownTypeAttribute 类概述  在数据到达接收终结点时,WCF 运行库尝试将数据反序列化为公共语言运行库 (CLR) 类型的实例。通过首先检查传入消息选择为反序列化而实例化的类型,以确定消息内容遵循的数据协定。然后反序列化引擎尝试查找实现与消息内容兼容的数据协定的 CLR 类型。反序列化引擎在此过程中允许的侯选类型集称为反序列化程序的“已知类型”集。 阅读全文
posted @ 2015-04-22 10:39 wangweimutou 阅读(1494) 评论(0) 推荐(3) 编辑
摘要: 数据协定等效性特点概述 对于客户端要将某种类型的数据成功发送到服务,或者服务要将数据成功发送到客户端的情况,接收端上并不一定必须存在此发送数据类型。 唯一的要求是两种类型的数据协定应该等效。 要使数据协定等效,其命名空间和名称必须相同。 此外,某一端上的每个数据成员还必须在另一端上具有等效的数据成员。注意,数据协定名称和命名空间以及数据成员名称均区分大小写。 要使数据成员等效,其名称必须相同。 此外,它们还必须表示同一类型的数据,也就是说,其数据协定必须等效。 阅读全文
posted @ 2015-04-21 08:00 wangweimutou 阅读(1264) 评论(0) 推荐(0) 编辑
摘要: 数据协定概念 “数据协定”是在服务与客户端之间达成的正式协议,用于以抽象方式描述要交换的数据。 也就是说,为了进行通信,客户端和服务不必共享相同的类型,而只需共享相同的数据协定。 数据协定为每一个做数据交换时需要被序列化的参数或者返回值做了精确定义。 阅读全文
posted @ 2015-04-20 08:00 wangweimutou 阅读(2158) 评论(5) 推荐(4) 编辑
摘要: 前言:在前面的文章中,我们定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract应用于方法,以指示该方法实现作为服务协定(由 ServiceContractAttribute 属性指定)一部分的服务操作。OperationContractAttribute 属性声明方法是服务协定中的操作。 只有具有 OperationContractAttribute 属性的方法可作为服务操作公开。 不含有 OperationContractAttribute 标记的所有方法的服务协定不公开任何操作。公开的操作方法我们称之为操作协定。 阅读全文
posted @ 2015-04-15 08:01 wangweimutou 阅读(1998) 评论(4) 推荐(6) 编辑
摘要: 前言:在前面的文章中,我们定义的服务协定上都会有一个ServiceContract的特性来修饰,这是因为服务契约的实现要靠ServiceContractAttribute 属性定义,然后使用一个或多个类(或接口)方法中的 OperationContractAttribute 属性定义协定的服务操作。 实现服务协定后并将其与WCF 绑定和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用。 阅读全文
posted @ 2015-04-14 08:03 wangweimutou 阅读(1674) 评论(1) 推荐(6) 编辑
摘要: 前言:在WCF初探-5:WCF消息交换模式之双工通讯(Duplex)博文中,我讲解了双工通信服务的一个应用场景,即订阅和发布模式,这一篇,我将通过一个消息发送的例子讲解一下WCF客户端如何为双工服务创建回调对象。 双工服务指定一个回调协定,客户端应用程序必须实现该协定以便提供一个该服务能够根据协定要求调用的回调对象。虽然回调对象不是完整的服务(例如,您无法使用回调对象启动一个通道),但是为了实现和配置,这些回调对象可以被视为一种服务。 阅读全文
posted @ 2015-04-13 08:01 wangweimutou 阅读(2519) 评论(6) 推荐(5) 编辑
摘要: 前言: 当我们打开WCF基础客户端通道(无论是通过显式打开还是通过调用操作自动打开)、使用客户端或通道对象调用操作,或关闭基础客户端通道时,都会在客户端应用程序中出现异常。而我们知道WCF是基于网络的通讯服务,错误异常也是要基于消息传递的,在WCF中提供了一个错误消息处理的类FaultException。接下来,我们看一下如何使用它在客户端处理异常。 阅读全文
posted @ 2015-04-11 08:00 wangweimutou 阅读(2603) 评论(8) 推荐(5) 编辑
摘要: 前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的。有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码部分的执行,这时我们就需要考虑使用异步的方式来调用服务。注意这里的异步是完全针对客户端而言的,与WCF服务契约的方法是否异步无关,也就是在不改变操作契约的情况下,我们可以用同步或者异步的方式调用WCF服务。 阅读全文
posted @ 2015-04-10 08:00 wangweimutou 阅读(2456) 评论(7) 推荐(9) 编辑
摘要: 创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定、绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 阅读全文
posted @ 2015-04-08 08:00 wangweimutou 阅读(3492) 评论(11) 推荐(13) 编辑
摘要: 在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念、环境、特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍。为了更好的说明各寄宿环境特点,本实例采用Http和net.tcp两种服务通讯方式,同时寄宿在不同的宿主中。程序结构如下: 阅读全文
posted @ 2015-04-01 00:13 wangweimutou 阅读(2453) 评论(3) 推荐(10) 编辑