2009年10月份 .NET Services SDK CTP 之改變

image

2009年9月18日 Windows Azure Platform 中的 .NET Services Team blog 透露了下一版 CTP 即將發生的改變。自去年 10 月份起於 PDC 2008 釋出 .NET Services SDK CTP起,該開發團隊便以如何讓應用系統能夠跨越防火牆與組織間的藩籬,便捷地利用雲端交換資料為目的,以便讓開發人員專注於更有價值之應用系統的邏輯,而不是部署和管理自己的資料交換平台基礎設施 。在過去一年中 .NET Services 開發團隊不斷接收來自先期導入用戶的意見,作為刺一雲端平台研發的方向。首先在 2009年7月份釋出的 .NET Services SDK CTP 中,暫時移除了 Workflow 的功能,原因在於 .NET Framework 4.0 推出在即,當用戶面對功能強大的 Workflow Foundation 4.0,都有著共同的疑問,我們該如何使用 Workflow Foundation 4.0 並與雲端的 .NET Services Workflow 互通所定義的流程呢? 這使得 .NET Services 研發團隊決定暫時移除此一功能,以避免用戶重複投資兩種不同的流程引擎 。

在過去一年中,.NET Services 研發團隊也發現以 REST ( Representational State Transfer) 為基礎的輕量化 Web Services,越來越受企業用戶的關注,在一般消費性 Internet Web 應用中,REST 早已成為重要的 Internet 分散式架構的一環。由於 REST 是一種架構概念而非技術標準,對於企業用戶而言,目前 REST 的身份識別和存取控制技術仍需要些額外的技術與服務來填補與實際應用需求間的落差。 .NET Services 研發團隊發現目前開發 REST 的 Web Services 服務缺乏一種簡單易用的方法來解決跨組織身份識別和存取控制時的問題,在 MIX09 活動中 .NET Services 研發團隊提出解決此一問題的初步想法,而在下一版本的 .NET Services SDK CTP 則正式列為正式的功能,在 .NET Services 兩大項功能:存取控制 (Access Control) 與服務匯流排 (Services bus) 都因此而有所改變。

存取控制 (Access Control) 部分

.NET Services 之存取控制之目的,在於提供用戶一的簡易方法,以業界身分認證標準來管制 Web 應用程式與 Web Services 存取權限,所謂業界身分認證標準包含了支援 Open ID 的 Microsoft Live ID,企業內部之目錄服務。此一服務能夠使得權限管制相關問題不再需要寫在個別 Web 應用程式中,運用 .NET Services 的存取控制可透過定義的方式,將存取規則定義出來,並且在兩個位處不同組織的 Web 應用系統與 Web Services 互通時,能夠透過Security Claims 轉換方式,讓彼此能夠存取對方之服務。2009 年 10 月份版本的改變就是針對 REST 提供簡易的 Simple Web Trust 能力。

Simple Web Trust

提供 REST Web Services 與 .NET Service Bus 連接時所需之權限管制能力

  • 服務存取端點 (endpoints) 間的 Token 交換: REST 可以利用對稱式 (symmetric key) 式加密方式,利用 SAML Extension 來編碼身分資訊。包含以下功能
    • REST with symmetric key: 一個可跨平台並讓開發人員易於使用之機制,可將 claims 包裝起來以便讓 .NET Service 進行存取控制。
    • REST with SAML Extension: 能夠讓 ADFS V2 所核發之Token 能與.NET Service 間順利整合運作。
    • 所有服務端點 (endpoints) 皆可使用標準 HTTPs POST 請求取得
  • Claims 轉換引擎: 可運用 .NET Services 入口網站定義的規則,將輸入的 claims 轉換為輸出的 claims。
  • Security Token Service: 輸出的 claims 中使用 REST tokens 在網路中傳遞

但是另一方面,目前所支援之 WS-* 相關存取控制的功能,將在下一版 CTP 中暫時移除無法使用,由於受限於研發上的優先順序,待 REST 相關存取控制功能到位後,未來版本微軟將再恢復 WS-* 相關功能的支援能力,使得 .NET Services 同時兼具 REST 與 SOAP 兩大 Web Services 規格存取控指功能。

服務匯流排 (Services Bus) 部分

.NET Service 中的 Services Bus 是讓應用程式可以輕易地跨越 Internet 彼此相互連接,一旦服務註冊於 .NET Services,便可讓其他應用系統尋得並使用。這種 Internet Service Bus 的概念非常類似於企業內部的 Enterprise Service Bus。在跨越防火牆的 Internet 整合應用鍾,解決了許多複雜之整合問題。在 2009 年10 月份的 Microsoft .NET Services SDK CTP 中,.NET Services Bus 將有以下的改變:

  • 服務命名系統與註冊 (Services Naming System and Registry)
    • 提供樹狀的階層式結構之命名系統
    • Service Naming Registry 可提供額外之外部搜尋功能
  • 訊息 (Messaging)
    • 提供 單向(one way) 式, 請求-回應 (request/response) 式與點對點 (peer-to-peer) 三種方式,穿透防火牆進行資料交換
    • NET Service Bus 存取端點 (endpoint) 由 .NET 存取控制來進行安全管制
  • 訊息緩衝區 (Message Buffer)
    • 在 .NET Services 中提供先進先出(FIFO) 的資料結構,取代現有的 Queue 機制。

由於年底正式商業營運日期將近,以下幾項現有功能也將有所改變,概述如下:

  • Routers – 在 2009 年 10 月份 CTP 中將暫時移除此一資料傳遞型態,對於需要 Routers 這類 Publish/Subscribe,或是多點傳遞 (multicast) 模型的開發人員,可以參考新版 CTP 中的範例,來達到類似效果。
  • Queues - 如前所述 Queues 將被更簡易使用的訊息緩衝區 (Message Buffers) 所取代,在新的版本中訊息緩衝區 一樣提供訊息不漏失之安全保證。
  • WSHttpRelay Binding - 將不再提供 WSHttpRelay Binding 這項功能,目前使用WSHttpRelay Binding 的開發人員建議改用 WS2007Relay Binding
  • 外部存取端點註冊 (External Endpoint Registration) - 不再提供此項功能