自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

REST與SOA兩種架構(gòu)下WCF的異同比較(含源碼)

開發(fā) 后端
REST(Representational State Transfer)與SOA(Service-Oriented Architecture)作為當(dāng)今軟件架構(gòu)中主流的兩種架構(gòu)思想在當(dāng)前開發(fā)過程中已經(jīng)越來越流行。作為微軟.NET平臺(tái)下的下一代通訊技術(shù),WCF也很好的體現(xiàn)了對(duì)他們的支持。那么他們到底有哪些差別又有哪些相同之處呢。?

REST(Representational State Transfer)與SOA(Service-Oriented Architecture)作為當(dāng)今軟件架構(gòu)中主流的兩種架構(gòu)思想在當(dāng)前開發(fā)過程中已經(jīng)越來越流行。作為微軟.NET平臺(tái)下的下一代通訊技術(shù),WCF也很好的體現(xiàn)了對(duì)他們的支持。那么他們到底有哪些差別又有哪些相同之處呢。?本篇將針對(duì)這個(gè)問題談?wù)勛约旱恼J(rèn)識(shí),并通過Demo演示程序。

本篇設(shè)計(jì)的內(nèi)容如下:

1、REST的特性

2、SOA的特征

3、REST與SOA的共同點(diǎn)

4、REST與SOA的不同點(diǎn)

5、Demo程序說明

*REST的特性。

首先給出一張圖:

 

 

它基于HTTP協(xié)議,是一種明確構(gòu)建在客戶端/服務(wù)端體系結(jié)構(gòu)上的一種風(fēng)格。特征如下:

1、網(wǎng)絡(luò)上的資源都被抽象為資源,這些資源都具有唯一的統(tǒng)一資源標(biāo)識(shí)符

(URI:Uniform Resource Identiter),這些資源都是自我們描述的。這些資源使用HTTP內(nèi)容標(biāo)頭類型指定。如:XML、JSON、HTML、PNG等。

2、服務(wù)的使用者通過HTTP協(xié)議的標(biāo)準(zhǔn)動(dòng)作(Get、Put、Post、Delete)通過統(tǒng)一的接口對(duì)資源進(jìn)行操作。

3、對(duì)資源進(jìn)行的操作不會(huì)改變它的URI。

4、客戶端、服務(wù)端之間的交互是沒有狀態(tài)的。由于這種無狀態(tài)行,服務(wù)端不需要為每個(gè)客戶端維護(hù)Context

*SOA的特征

首先給出一張圖:

 

 

1、通過網(wǎng)絡(luò)終結(jié)點(diǎn)對(duì)外提供服務(wù)。

2、粗粒度的服務(wù)接口。

*REST與SOA的共同點(diǎn)

REST與SOA兩者,雖有不同點(diǎn),但是他們都作為服務(wù)的不同架構(gòu)風(fēng)格,具有服務(wù)的一般屬性。具體如下:

1、統(tǒng)一的服務(wù)契約接口與服務(wù)接口

2、松散的耦合。

3、只要有權(quán)限都可以進(jìn)行訪問

*REST與SOA的不同點(diǎn)

1、REST風(fēng)格下的,只有一種協(xié)議,那就是HTTP。而SOA下的WCF就和多種協(xié)議了。如:TCP、HTTP、MSMQ等多種協(xié)議

2、使用方式上的不同。REST只要客戶端能夠模擬HTTP請(qǐng)求,通過標(biāo)準(zhǔn)的HTTP動(dòng)作,都可以進(jìn)行訪問。它使用的是HTTPChannel管道,而SOA下的WCF由于

協(xié)議的多樣性,使用的管道有HTTPChannel、TcpChannel、RPC等多種。

3、REST寄宿時(shí),雖然可以選擇多種寄宿方式,但必須有IIS的支持(稍后章節(jié)會(huì)介紹它的寄宿方式)。SOA下的WCF卻沒有這個(gè)限制

*Demo程序

程序沿用了上節(jié)使用的實(shí)例,分別實(shí)現(xiàn)了REST與SOA服務(wù)。服務(wù)中,契約的定義以及實(shí)現(xiàn)完全相同。為了使用用REST相同的協(xié)議,SOA服務(wù)端采用了wsHttpBinding協(xié)議。REST與SOA服務(wù)的消費(fèi)者采用同一個(gè)客戶端。

程序結(jié)構(gòu)如下圖:

 

 

客戶端對(duì)SOA服務(wù)的調(diào)用代碼如下:

  1. using (ChannelFactory<ILog> factory = new ChannelFactory<ILog>("SOAService"))  
  2. {  
  3. ILog log = factory.CreateChannel();  
  4. List<LogEntity> listAll = log.GetAll();  
  5. Console.WriteLine(string.Format("GetAll 方法獲取到日志記錄有{0}條", listAll.Count));  
  6. Console.WriteLine();  
  7. const string year = "2011";  
  8. const string month = "10";  
  9. List<LogEntity> list = log.GetMonthLog(year, month);  
  10. Console.WriteLine(string.Format("GetMonthLog 方法獲取到{0}年{1}月日志記錄有{2}條",year,month,list.Count));   

對(duì)REST的調(diào)用代碼如下:

  1. HttpWebRequest request = WebRequest.Create("http://localhost:27790/RESTService.svc/") as HttpWebRequest;  
  2. request.Method = "GET";  
  3. HttpWebResponse response = request.GetResponse() as HttpWebResponse;  
  4. using (StreamReader reader=new StreamReader(response.GetResponseStream()))  
  5. {  
  6. if (response.StatusCode==HttpStatusCode.OK)  
  7. {  
  8. Console.WriteLine(reader.ReadToEnd());  
  9. }  

如下圖所示:

 

 

在REST中調(diào)用 GetMonthLog方法,只需將URI 換成http://localhost:27790/RESTService.svc/Get/2011/10即可

有興趣的朋友可以試試。

源碼下載:http://files.cnblogs.com/tyb1222/WCFStyle.rar

原文:http://www.cnblogs.com/tyb1222/archive/2011/10/27/2226845.html

【編輯推薦】

  1. WCF Web API輕松實(shí)現(xiàn)REST
  2. jQuery調(diào)用WCF開發(fā)實(shí)例經(jīng)驗(yàn)分享
  3. 手把手教你如何應(yīng)用WCF中的REST
  4. 不要在using語句中調(diào)用WCF服務(wù)
  5. 詳解WCF 4安全性以及新WIF框架介紹
責(zé)任編輯:陳貽新 來源: tyb1222的博客
相關(guān)推薦

2010-02-24 14:25:48

WCF地址

2009-12-25 16:58:19

ADSL接入方式

2011-04-01 16:14:17

ADSL接入方式PPPoE

2010-07-14 16:28:58

配線架

2009-12-07 13:42:24

WCF框架

2012-10-16 09:40:38

洗牌算法

2009-12-31 13:37:46

多協(xié)議GMPLS

2018-12-03 09:03:18

SANNAS存儲(chǔ)系統(tǒng)

2009-11-06 12:59:56

WCF服務(wù)通信

2024-01-09 09:09:45

RESTGraphQL

2018-06-04 09:43:53

分層存儲(chǔ)Linux

2010-09-06 17:26:54

SQL函數(shù)

2010-07-13 10:47:18

Perl面向?qū)ο?/a>

2009-06-19 17:05:08

MVC框架Struts和Spri

2023-01-30 08:00:00

開發(fā)人工智能語言

2009-10-20 13:59:59

網(wǎng)絡(luò)綜合布線系統(tǒng)

2009-11-06 14:40:34

WCF REST架構(gòu)

2023-05-31 19:10:31

2009-07-31 14:04:11

C#時(shí)間比較大小

2013-04-18 09:33:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)