1.RESTful架構
本人也是剛接觸ASP.NET開發,以下為自己簡單的理解,並做了一些記錄,表述不當或者錯誤之處還請指正,在此謝過。
首先,REST(REpresentational State Transfer)翻譯為表述性狀態轉移,它是一種架構風格,而不是一種架構本身,具有這種架構風格的架構就稱為RESTful架構。
RESTful架構是面向資源的。網絡上的任意一個實體,包括圖片、電影、音樂等等都是一種資源,在該架構中,每一個資源都有一個對應的URI來標識。HTTP協議是無狀態的,無狀態簡單而言就是說服務器不會為了下一次連接而保存客戶端這一次連接所傳輸的信息,所以如果客戶端想要操作服務器端的狀態或資源,就必須通過資源所對應的URI來進行(HTTP的)CURD(Create,Update,Read,Delete)操作,而這些操作中資源是以他們的某種表現形式來傳輸的,比如Html、JSON、XML等,或者二進制格式等,因而這樣就形成了(資源的)表述性狀態轉移。同時,REST最重要的一個特點就是客戶端與服務器之間的請求和交互是無狀態的。這一點也得到了解釋。
接下來,REST架構風格其實是定義了一系列的約束條件,要符合REST風格,就必須滿足如下這幾點:
1.Uniform Interface(統一的接口):定義客戶端和服務器之間的接口,簡化和降低了架構的耦合程度
2.Stateless(無狀態):服務器端不保留客戶端的狀態
3.Client-Server(客戶端-服務器模式):假定系統是不相連的,統一的接口才是客戶端與服務器之間的鏈接
4.Cacheable(可緩存):服務器端的響應,比如返回的各種資源,在客戶端是要能緩存的
5.Layered System(分層系統):通過限制組件的行為,將架構分解為若干等級的層,將組件對系統的知識限制在單一的層內,為系統的復雜性設置了邊界,從而提高了底層的獨立性,中間組件還能夠通過支持跨多個網絡和處理器的負載均衡來改善系統的可伸縮性
6.Code on Demand(按需代碼,此條件非必須)
2.SOA架構
SOA(Service-Oriented Architecture),面向服務的體系結構,它是一個組件模型,它將應用程序之間的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。
傳統的“單一的應用程序”,它把將各種功能整合到一起的代碼與每個單獨的功能的實現代碼混合在了一起,這樣各功能組件之間的耦合度高,一是不方便代碼的復用,二是維護起來不方便,一個功能組件的更新都可能要涉及到整個應用程序的大改。
而區別於單一的應用程序,SOA將不同的功能組件視為一種服務,它將每一種服務單獨進行封裝,我感覺有點類似OOP中類的概念,這樣不同的組件之間的耦合程度降低,代碼的復用程度也變高,具有很多好處。
SOA架構中的三種不同的角色:
服務提供者:發布服務,並對服務的請求進行響應
服務注冊中心:注冊已經發布的Web Service,對其進行分類,並提供搜索服務
服務請求者:利用服務中心查找服務,並使用該服務
SOAP:簡單對象訪問協議,Simple Object Access Protocol
WSDL:Web服務描述語言,Web Services Description Language
UDDI:統一描述、發現和集成,Universal Description Discovery and Integration
WSDL用來描述服務,UDDI用來注冊和查找服務,而SOAP作為傳輸層,用來在消費這和服務者之間傳送消息,一個消費者可以在UDDI注冊表查找服務,取得服務的WSDL描述,然后通過SOAP來調用該服務。