兩種常見的分布式應用架構風格包括:DO(分布式對象)、RPC(遠程過程調用)。這兩種架構風格在企業應用中得到了廣泛的應
用,然而,Web架構的設計者們卻有意避免采用這兩種架構風格。主要的原因是運行Web應用的互聯網環境,與運行企業應用的企業內網環境有很大的差別。
那么,互聯網環境有哪些獨有的特點呢?
1. 可伸縮性要求難以預測和無法控制:一個Web應用的並發訪問量,是開發者難以預測和無法控制的。
2. 安全性要求難以預測和無法控制:一個Web應用所接受的請求格式,是開發者難以預測和無法控制的,有可能出現大量惡意構造的請求格式。
3. 松耦合至關重要:因為存在着大量異構的系統,必須要追求最大限度的松耦合。
4. 簡單性至關重要:不可引入復雜的編程模型,必須降低開發者開發Web應用的門檻。
軟件應用所處的運行環境會對其架構設計產生巨大影響。設計軟件應用的架構,一定要深入考慮軟件所處的運行環境。脫離開軟件所處的運行環境,比較不同架構
之間的優劣是沒有意義的。
REST這種架構風格,正是為面向互聯網的Web應用量身定制的。它由一組架構約束組成:
1. 客戶-服務器
2. 無狀態
3. 緩存
4. 統一接口
5. 分層系統
6. 按需代碼(可選)
上述內容來自《REST實戰》譯者序。.NET上的分布式應用架構風格從WCF開始統一了Remoting,SOAP,以及對REST的支持。現在我們來看下最新的.NET平台上都有哪些REST框架和工具庫:
-
WCF WebHttp Services in .NET 4 :WCF 3.5開始支持REST,實現方式上還是RPC 方式,Windows Communication Foundation (WCF)Web HTTP 編程模型可以向非 SOAP 終結點公開 WCF 服務操作。文檔地址 http://msdn.microsoft.com/zh-cn/library/bb412169.aspx
-
ASP.NET Web Api:這是完全按照HTTP模型實現的REST,目前還處於預覽版,ASP.NET Web API允許開發人員通過HTTP開放他們的應用程序、數據和服務。這允許開發人員可以充分利用HTTP作為應用程序的協議,應用程序可以和豐富的客戶端進行交互,不僅僅是瀏覽器、移動設備、桌面應用還是其他的后端服務。
-
Open Rasta:OpenRasta是一個基於MIT協議開源的支持.NET 2.0以上的Rest開發框架,重點圍繞這資源和HTTP方法開發的REST框架。文檔地址:https://github.com/openrasta/openrasta-stable/wiki
-
Service Stack :是一個高性能的開源 .NET/Mono REST服務框架 地址:http://www.servicestack.net/
-
RestSharp :這只是一個支持WindowsPhone,Mono for Android, MonoTouch跨平台的Rest 客戶端開發庫。地址:http://restsharp.org/
-
Hammock是個免費開源的框架,托管在github上 對網絡操作進行了很好的封裝,包含OAuth。地址:https://github.com/danielcrenna/hammock