[Network] 06. HTTP 服務

 · 2 mins read

創建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 或者任何你想轉換的格式。



註:

  1. 當你想創建一個基於 HTTP 的面向資源的服務並且可以使用 HTTP 的全部特徵時(比如 URIs、request/response 頭,緩存,版本控制,多種內容格式),你應該選擇 Web API。
  2. 當你想讓你的服務用於瀏覽器、手機、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