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协议,是一种明确构建在客户端/服务端体系结构上的一种风格。特征如下:
1、网络上的资源都被抽象为资源,这些资源都具有唯一的统一资源标识符
(URI:Uniform Resource Identiter),这些资源都是自我们描述的。这些资源使用HTTP内容标头类型指定。如:XML、JSON、HTML、PNG等。
2、服务的使用者通过HTTP协议的标准动作(Get、Put、Post、Delete)通过统一的接口对资源进行操作。
3、对资源进行的操作不会改变它的URI。
4、客户端、服务端之间的交互是没有状态的。由于这种无状态行,服务端不需要为每个客户端维护Context
*SOA的特征
首先给出一张图:
1、通过网络终结点对外提供服务。
2、粗粒度的服务接口。
*REST与SOA的共同点
REST与SOA两者,虽有不同点,但是他们都作为服务的不同架构风格,具有服务的一般属性。具体如下:
1、统一的服务契约接口与服务接口
2、松散的耦合。
3、只要有权限都可以进行访问
*REST与SOA的不同点
1、REST风格下的,只有一种协议,那就是HTTP。而SOA下的WCF就和多种协议了。如:TCP、HTTP、MSMQ等多种协议
2、使用方式上的不同。REST只要客户端能够模拟HTTP请求,通过标准的HTTP动作,都可以进行访问。它使用的是HTTPChannel管道,而SOA下的WCF由于
协议的多样性,使用的管道有HTTPChannel、TcpChannel、RPC等多种。
3、REST寄宿时,虽然可以选择多种寄宿方式,但必须有IIS的支持(稍后章节会介绍它的寄宿方式)。SOA下的WCF却没有这个限制
*Demo程序
程序沿用了上节使用的实例,分别实现了REST与SOA服务。服务中,契约的定义以及实现完全相同。为了使用用REST相同的协议,SOA服务端采用了wsHttpBinding协议。REST与SOA服务的消费者采用同一个客户端。
程序结构如下图:
客户端对SOA服务的调用代码如下:
以下是引用片段: using (ChannelFactory<ILog> factory = new ChannelFactory<ILog> (“SOAService”)) { ILog log = factory.CreateChannel(); List<LogEntity> listAll = log.GetAll(); Console.WriteLine(string.Format(“GetAll 方法获取到日志记录有{0}条”, listAll.Count)); Console.WriteLine(); const string year = “2011”; const string month = “10”; List<LogEntity> list = log.GetMonthLog(year, month); Console.WriteLine(string.Format(“GetMonthLog 方法获取到{0}年{1}月日志记录有{2}条”,year,month,list.Count)); } |
对REST的调用代码如下:
以下是引用片段: HttpWebRequest request = WebRequest.Create(“http://localhost:27790/RESTService.svc/”) as HttpWebRequest; request.Method = “GET”; HttpWebResponse response = request.GetResponse() as HttpWebResponse; using (StreamReader reader=new StreamReader(response.GetResponseStream())) { if (response.StatusCode==HttpStatusCode.OK) { Console.WriteLine(reader.ReadToEnd()); } } |
如下图所示:
在REST中调用 GetMonthLog方法,只需将URI 换成http://localhost:27790/RESTService.svc/Get/2011/10即可
有兴趣的朋友可以试试。
源码下载:http://files.cnblogs.com/tyb1222/WCFStyle.rar
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
API管理工具能否弥补REST与Web服务之间的鸿沟?
随着企业学习如何通过RESTful利用现有服务,API管理工具正在引起轰动。API管理工具能否弥补REST与Web服务之间的鸿沟?
-
支付宝分布式事务测试方案
基于SOA架构,整个支付宝系统会拆分成一系列独立开发、自包含、自主运行的业务服务,并将这些服务通过各种机制灵活地组装成最终用户所需要的产品与解决方案。
-
解读阿米巴:用友U9克服“包干到户”的复杂性
日本实业家稻盛和夫提出的阿米巴经营模式备受我国企业的推崇,企业学习阿米巴经营模式蔚然成风。然而,阿米巴经营使得企业的核算模式变得复杂。
-
SOA架构:为什么需要API管理?
为什么我需要API管理?它能带来哪些好处?其实只是术语变了,但需求还是一样的。在SOA炒作的鼎盛时期,厂商们都宣扬他们的产品支持SOA治理。