創建HTTP服務
Web Service,WCF,Web API。在 .net 平台下,有很多的選擇來構建一個 HTTP Services。1
Web Service
Web Service 是一種 服務導向架構1 的技術,透過網路以 HTTP 通訊協定 傳送資料格式的開放式標準(例如 HTTP、XML 及 SOAP等)的方式提供跨平台、跨語言的系統整合。
- 微軟的 Web 服務實現稱為 ASP.NET Web Service. 它使用 Soap 簡單對象訪問協議來實現 分佈式環境 裡 應用進程 之間的數據交互。
- WSDL 來實現服務接口相關的描述。此外 Web services 可以註冊到 UDDI 中心,供其客户查找使用。
- Web Service 提供者會在 UDDI 註冊其服務,並使用 WSDL 描述 Web Service 的呼叫使用細節。
- 用戶端 則從 UDDI 尋找所需的 Web Service,將 SOAP 訊息 封包發送到佈署在 URI 資源所在的服務端點(即 Web Service),經過相關邏輯處理之後,Web Service 會以 SOAP 訊息封包回應給用戶端處理結果或者錯誤訊息。
- Web Services 的基礎架構 1
- Web Services 的基礎包括:XML、WSDL、SOAP、UDDI。
- 以 XML 格式為基準將資料轉變為 Web Services 的資料。
- 利用 WSDL 描述將服務的對象做一個描述。
- 使另一端可以特過這一個描述,解譯所得的資料。
- 以 SOAP 通訊底層,進行傳送的動作。
- 向 UDDI 進行搜尋或是註冊動作。
- WSDL、SOAP 與 UDDI 皆是用 XML 方法來描述。
Web Services 架構
- WCF
- 基於 SOAP,數據格式是 XML。
- 是 Web Service(ASMX)的進化版,可支持各種各樣的協議,像 TCP,HTTP,HTTPS,Named Pipes,MSMQ。
- WCF 的主要問題是,它配置起來特別的繁瑣。
- 它不是開源的,但可以被任意一個瞭解 XML 的人使用。
- 它可以部署應用進程中或者 IIS 上或者 Windows 服務中。
- 當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇 WCF。
- WCF Rest
- 想使用 WCF Rest service,你必須在 WCF 中使用 webHttpBindings。
- 它分別用 [WebGet] 和 [WebInvoke] 屬性,實現了 HTTP 的 GET 和 POST 動詞。
- 要想使用其他的 HTTP 動詞,你需要在 IIS 中做一些配置,使 .svc 文檔可以接受這些動詞的請求。
- 使用 WebGet 通過參數傳輸數據,也需要配置。而且必須指定 UriTemplate。
- 它支持 XML、JSON 以及 ATOM 這些數據格式。
- Web API
*目前趨勢
- 這是一個簡單的構建 HTTP 服務的新框架。
- 在 .net 平台上 Web API 是一個開源的、理想的、構建 REST-ful 服務的技術。
- 不像 WCF REST Service. 它可以使用 HTTP 的全部特點(比如 URIs、request/response 頭,緩存,版本控制,多種內容格式)
- 它也支持 MVC 的特徵,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。這些可以使進程更簡單、更健壯。
- 它可以部署在應用進程和 IIS 上。
- 這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好。
- Response 可以被 Web API 的 MediaTypeFormatter 轉換成 Json、XML 或者任何你想轉換的格式。
註:
- 當你想創建一個基於 HTTP 的面向資源的服務並且可以使用 HTTP 的全部特徵時(比如 URIs、request/response 頭,緩存,版本控制,多種內容格式),你應該選擇 Web API。
- 當你想讓你的服務用於瀏覽器、手機、iPhone 和平板電腦時,你應該選擇 Web API。
資料格式的開放式標準
SOAP 和 REST 都是 Web Service 通訊協定,當你在 Internet 上公開一個 API:
- REST 多元資料格式,通過獨立且一致的介面進行操作,用以訪問命名資源(資料)。
- SOAP 交換結構化的資訊(XML格式),並且它通過不同的介面來操作。
- 在大多數情況下,可以使用 SOAP 與 REST 來實現相同結果。
- REST 優點
- REST 提供更多元資料格式。SOAP 只有 XML。
- 基於 JSON,REST 被公認是易於處理的。
- 基於 JSON,REST 提供對瀏覽器更好的支援。
- REST 提供優越的性能。特別指快取資料。
- 世界級大公司主要服務協定。
- REST 一般而言比較快且省頻寬。
- SOAP 優點
- SOAP 是標準 HTTP 協定,能更方便通過防火牆和Proxy而不對協定本身進行修改。
- 如果你需要處理 ACID 交易,那麼 SOAP 是不錯的方向。
- SOAP 擁有各種 WS- 擴充服務,擁有高可擴充性。
- B2B 的世界,安全與穩定重於一切。
傳輸協定
- UDDI (Universal Description, Discovery and Integration)
- 一種有關於 Web Services 的目錄註冊服務,以 XML 為基礎。
- 其主要的目的為提供 Web Services 的提供者,透過 UDDI 告知其他人提供者有提供 Web Services。(目的就是要快速告知服務使用者他可以利用的 Web Services 有哪些。)
- SOAP (Simple Object Access Protocol)
- 交換資料的一種協議規範。
- 將應用程式邏輯的元件公開為服務,交換結構化的資訊(XML格式),並且它通過不同的介面來操作。
- 一個基於 XML 的可擴展消息信封格式,需同時綁定一個網絡傳輸協議。這個協議通常是 HTTP 或 HTTPS,但也可能是 SMTP 或 XMPP。
- WSDL (Web Services Description Language)
- 用來描述 Web 服務,由 XML 寫成。
- 關於如何與 Web 服務通訊和使用的服務描述和使用協議的細節,也就是描述與目錄中列出的Web服務進行交互時需要綁定的協議和信息格式。
- 通常用來輔助生成伺服機和客戶端代碼及配置信息。
ref:
- https://hk.saowen.com/a/10a8da42da858dfd23dfda97f4a00714a332e9fc45c260df7cf094b1e3638085