摘要:
前一节(《WCF体系架构(之一:Client与Server信息交互处理流程初略介绍)》)大致介绍了WCF服务消息处理的大致流程,WCF服务的消费者可以是WEB客户端、也可以是其他语言开发的应用程序。 对于WEB客户端以及其他语言的应用程序,跨平台的性能主要是通过HTTP协议+SOAP消息机制实现。本节主要详细介绍消息在WCF客户端应用程序消息处理流程-------------------------------------------------------------------目录: -1、WCF通过客户端代理调用 服务-2、实际代理如何映射到服务目标对象上-3、WCF客户端框架的核... 阅读全文
摘要:
WCF在设计的时候,就封装了对常用协议如Tcp\HTTP\MSMQ的处理机制。但WCF同时也允许开发者在WCF现有平台上进行扩展,以解决实际问题。 大部分情况下,通过WCF常用的协议,就已经能完成了大部分工作了。在WCF揭秘中,作者在介绍如何扩展WCF时,讲了一些WCF是如何处理行为、信道、传输等方面的工作机制。本节从WCF行为作为切入点,谈谈个人对WCF体系的理解。 在WCF框架设计时,为了简化WCF普通的应用场景,也为了满足一些特殊环境下的应用,WCF的设计者们将WCF进行分成设计。实现方式是将上层 与底层应用区分开。 在一些特殊环境下对底层做一些扩展就行了。WCF将一般场景使用... 阅读全文
摘要:
SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService。在使用.Net开发WebService时候,只需要在对应的方法上加上WebMethod特性然后就可以通过网络进行SOAP消息的发送。这样在平时使用Webservice时,可能不太关心SOAP消息的结构到底是怎样的。下面大致说说SOAP消息的结构,以及使用工具监听SOAP消息报文。本节目录:1、XSD是什么2、基于SOAP的数据交互系统是XSD的3、SOAPSOAP消息结构4、支持SOAP的协议5、通过SOAPHeader扩展SOAP6、.. 阅读全文
摘要:
.Net SDK下有很多命令工具,有许多在我们平时开发应用中很有帮助。最近看书总结了一些,但是难免有点以偏概全,挂一漏万。下面就介绍这些命令的基本用法,实际应用中可以参考MSDN。 切入正题,打开SDK命令提示,如下图:1、ildasm (IL Disassembler IL 反汇编器)。 它是一个重要的工具,通过它,可以查看元数据(metedata)信息,IL等。 保存、查看IL代码:在VS2008命令窗口输入ILDAsm,然后通过它的【文件】菜单打开文件,如下图:查看元数据信息:在ILDASM中按"Ctrl+M"即能查看元数据信息。如下图 2、SN.exe(Strong 阅读全文
摘要:
回顾一下在REST WCF 4.0中可以这样简单实现缓存:1、配置<caching><outputCacheSettings><outputCacheProfiles><addduration="20"name="outCache"varyByParam="none"/></outputCacheProfiles></outputCacheSettings>2、使用配置[OperationContract][WebGet(UriTemplate="/Ti 阅读全文
摘要:
在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对Web开发者来说,它是一个非常重要的信息。它是用作缓存使 用的两个主要的头信息之一 (另一个是Expires)。除此之外,在REST架构中,它还可以用于控制并发操作(上节中已经大 致介绍AtomPub中控制并发的流程)。那么ETag是什么?它又几种类型?强ETag与弱ETag之间有什么区别。?如何计算 ETag值?它与Last-Modi... 阅读全文
摘要:
前一节介绍了一种IETF推荐的一种超媒体格式------Atom,这一节中主要Atom发布协议-------Atom Publish Protocol,简称AtomPub,有时更简洁写作APP。 开篇之前介绍几个重要概念先: 1、媒体类型 描述相关资源表述所使用的类型,如XML、JSON、JPG、MP3等、处理模型以及链接关系值 2、HTTP惯用语 它规范了如何对资源进行操作以及处理HTTP头信息和状态码 3、领域应用协议。 领域应用协议(Domain Application Protocol DAP),它为服务端与客户单的资源的交互定义了一套规范,如资源的媒体类型、链接关系... 阅读全文
摘要:
前面一节中讲述了REST架构风格中最核心本的要素之一:超媒体格式。虽然超媒体格式有很有用,如能被浏览器很好解析的HTML。但是HTML也不是万能的。如我们在AJAX应用中,使用JSON表述格式很显然比HTML要好。再者,我们为了实现某一特定领域而采用自定义的超媒体格式,如果消费者只需要处理表述中的一小部分,虽然我们可以通过获取资源的表述,然后过滤出我们需要处理的资源,但这显然不是一种好的方式。Atom社区所制定了一条深受欢迎的惯例。目录: 1、Atom简介 2、Atom1.0与RSS2.0 3、Atom中基本概念介绍 4、Atom中的链接关系 5、.Net FCL中对Atom的实... 阅读全文
摘要:
网上有许多介绍REST的资料,在这大部分资料中,基本都会介绍通过URI隧道技术与通用的连接器接口(也就是POST\GET\PUT\DELETE,即CRUD)对资源进行操作。 那么支持URI隧道技术与CRUD的服务就表明我们的服务就是REST风格的了吗。?事实上在Richardson成熟度模型中,URI隧道技术与HTTP出于第一级与第二级。如下图: 在他的最上层就是本节所叙述的超媒体(HyperMedia)。 本节目录:1、超媒体格式2、超媒体格式与POX比较3、如何处理超媒体4、标准超媒体格式 在REST中有一个很重要的约束,即统一接口。尤其是在接口制约在资源上的操作方法上。但是统... 阅读全文
摘要:
近来看了Jim Webber等REST实战,有一些体会,因此对一些概念做个简要的整理。以下是个人认识与理解,如有偏差,望指正。1、URI隧道技术。 通过URI来进行跨越系统边界转移信息的一种方式。它是通过将信息编码到URI中。如:http://www.taobao.com/PlaceOrder?size={xx}&type={xx}&color={xx}这是一种有效的方法。因为无论在Server端还是Client端,它都容易被理解。但是在一般情况下,URI隧道技术并非是Web友好的。因为它没有描述对资源进行操作的方式、以及操作资源时使用的元数据。如果有消费者使用Get操作来操作 阅读全文
摘要:
作为一种以HTTP协议为基础的WCF 服务,只要客户端能模拟进行HTTP请求,都能成为服务的消费者。之前写过《对Jquery+JSON+WebService的一点认识》,觉得在REST是基于HTTP协议的,AJAX的操作也应该一样。但是事实上还是有些差别的。由于网上资源聊聊无几,因此记录下自己的个人体会。希望对你有些帮助! 本篇主要讲述的类容为在ASP.NET中,如何通过AJAX来消费REST服务。 使用JQUERY框架模拟AJAX请求时,操作类型主要有GET、POST两种。本节也以这两种常用的方式来进行介绍。(type (String) : (默认: "GET") 请求方 阅读全文
摘要:
我们知道,在HTTP协议的报文头Header中存放着许多信息。如果你读过老A的《通过添加HTTP Header实现上下文数据在WCF的自动传递》,那你一定知道如何通过底层的扩展来实现如何在REST WCF中使用HTTP Header来进行数据交互。这对于大家更多的了解WCF的底层机制有很大的帮助作用。 窃以为:在实际的REST WC应用中,想通过Header头来实现数据交互不用那么麻烦。MicroSoft在它所提供的库中就已经为我们封装好了一些接口,可以很容易的让我们实现这一功能。 HTTP Header报文头可以在Server与Client之间传递很多数据。我们可以获取这些数据然后进... 阅读全文
摘要:
上节介绍了REST WCF 4.0相比3.5支持更多的交互格式,本篇就说说在Server与Client间通过最原始的流的格式进行通讯。开篇之前,介绍REST WCF 的一个特性:DescriptionAttribute。对这个特性相信都很熟悉,它的作用如同在WebService中通过它来标注出某个接口的描述信息,在REST WCF中同样如此。将它标注在REST WCF 接口中后,在help页面中将会显示接口的描述信息。 如以往,本篇将通过Demo的形式介绍如何在REST WCF中使用Stream。Demo的功能有以下几点: 1、通过Stream的形式获取服务端的图片资源,并保存到本地 ... 阅读全文
摘要:
前面几节介绍了REST WCF 3.5的一些基本特性以及使用方式,在WCF4.0的时代,也做了对REST的支持。相比3.5时代,4.0改进体现有如下几点:增加对路由的支持对缓存的支持。帮助(help)页面的改进。消息错误处理消息格式的多样性如(XML\JSON\ATOM\TEXT\BINARY)简化操作。 本节讲述的重点为如何使用路由注册REST服务、缓存以及help页面 1、使用路由注册服务。 WCF4.0中新增的路由服务可以帮助直接注册服务,而不再需要SVC的文件。 需要注意的是,使用路由注册服务时必须启动ASP.NET的兼容模式。即设置aspNetCompatibilityE... 阅读全文
摘要:
.Net Remoting是微软早前推出的一项分布式通讯技术框架,在.Net架构的程序中有着比较广泛的应用。在WCF中,已经集成了Remoting的技术。不过,他们有着很多相同的概念,如:信道(Channel)、代理(Proxy)、寄宿(host)等。在如今仍有一些分布式系统应用中运行着由Remoting技术构建的系统。本文将描述在服务端与客户端的交互中,他们各自的实现方式。 1、Remoting的实现。 在Remoting中,远程对象是一个重要的概念。服务端通过将它注册到制定的信道中,客户端服务... 阅读全文
摘要:
这几天思考REST 架构下POST复杂数据类型的问题查了写资料,以及通过与WCF 大牛------Frank Xulei进行了一番交流对REST有了一些进一步的认识。本篇作为:1、REST与SOA两种架构下WCF的异同比较 2、通过HTTP协议标准动作使用REST WCF 服务这两篇的一个补充。 起因是这样的:在SOA架构下,一般都是通过定义服务契约的方式最终通过WSDL将元数据对外发布,以供调用者使用。也就是说在SOA中,通过服务契约定义向外公布服务对外提供的操作。如果先学习SOA,然后接触REST,可能会在使用REST的时候会沿用SOA下的一些习惯。我在进行REST架构下的WCF学... 阅读全文
摘要:
Fiddler是一款强大的软件,在实际的开发中它能帮助我们跟踪HTTP请求,记录发送请求和获取到请求结果的数据。使用VS2008的时候,一直是用IE6浏览调试,使用Fiddler也正常。但本人一直习惯用FireFox,可怜用它访问的时Fiddler却不能帮助记录下数据(FireFox版本:4.0)。还以为Fiddle只能在IE下使用,试了试chrome,发现也可以用。言归正卷,本篇针对上篇中的REST服务(具体例子以及带代码采用上节中介绍的:通过HTTP协议标准动作使用REST WCF 服务)使用Fiddler简要做一个介绍。首先大致说说Fiddler的界面,如图: ... 阅读全文
摘要:
前几节介绍了REST WCF 服务的一些基本的特点,本节说明一下,如何基于HTTP的标准动作来使用REST WCF 服务。由于RESTful服务的架构风格基于HTTP协议,并且其设计原则中明确指出:通过通用的连接器接口来使用资源。对于REST架构风格的服务,主要通过它8个动作中的4个来使用资源,即:GET,POST,PUT,DELETE。 在RESTful 服务中,GET,POST,PUT,DELETE的标准操作如下: GET:获取资源 POST:修改资源 PUT:创建资源 DELETE:删除资源本节涉及的要点如下:1、如何定义接口规范,使客户端通过能通过HTTP协议的标准动作来... 阅读全文
摘要:
如同SOA下的WCF,REST架构下的WCF也有多种多样的寄宿方式,如IIS寄宿,自寄宿等等,即使它只有一种协议。由于REST基于HTTP协议的特点,所以这种架构下的WCF寄宿时,需要有Web服务器的支持。那么很显然,微软肯定会使用自己的Web服务器IIS了。本节目录:1、IIS寄宿2、控制台程序寄宿(暂且将它称为自寄宿)当然,REST WCF还有其他的寄宿方式,我这里只挑出典型的两种给大家介绍。有兴趣的朋友不妨试试其他的寄宿方式。本节中所使用的实例还是上节所使用的例子。Demo结构图如下:结构说明:Client为服务消费者,Contracts定义服务契约、数据契约,Services定义服.. 阅读全文
摘要:
REST(Representational State Transfer)与SOA(Service-Oriented Architecture)作为当今软件架构中主流的两种架构思想在当前开发过程中已经越来越流行。作为微软.NET平台下的下一代通讯技术,WCF也很好的体现了对他们的支持。那么他们到底有哪些差别又有哪些相同之处呢。?本篇将针对这个问题谈谈自己的认识,并通过Demo演示程序。本篇设计的内容如下: 1、REST的特性 2、SOA的特征 3、REST与SOA的共同点 4、REST与SOA的不同点 5、Demo程序说明*REST的特性。首先给出一张图:它基于HTTP协议,是一... 阅读全文