圖1. Windows Azure AppFabric的主要功能
名詞辨析:
有些讀者可能已經(jīng)聽說過另外一個產(chǎn)品的名字,那就是Windows Server AppFabric.它與Windows Azure platform AppFbric在功能定位上非常類似,都屬于中間件層次,只不過Windows Server AppFabric是針對Windows Server平臺的。隨著時間的推移,我們將看到兩個AppFabric在功能上也有越來越多的相似性。還有一個要注意的地方是,雖然這里講的兩個AppFabric與前面提到的Fabric控制器在名稱中都有Fabric,但是它們是完全不同的組成部分,沒有直接聯(lián)系。
服務總線(Service Bus)
Windows Azure platform AppFabric的服務總線與傳統(tǒng)SOA中的企業(yè)服務總線(ESB)在概念上有相似的地方,但是在范圍和功能上是不一樣的。這里的服務總線是專門針對互聯(lián)網(wǎng)上的服務相互調(diào)用的而不僅限于企業(yè)內(nèi)部。將傳統(tǒng)的應用服務部署到互聯(lián)網(wǎng)上比大多數(shù)人想象的要難得多,服務總線的目標就是使其變得簡單化。無論是傳統(tǒng)的自有應用還是云應用,都可以通過服務總線互相訪問對方的Web服務。服務總線為每個服務端點分配一個固定的URI地址,從而幫助其他應用定位和訪問。
另外,服務總線還可處理網(wǎng)絡地址轉換(NAT)和企業(yè)防火墻所帶來的挑戰(zhàn)。服務總線可以將企業(yè)內(nèi)網(wǎng)的服務暴露給互聯(lián)網(wǎng)。大多數(shù)企業(yè)都擁有自己的局域網(wǎng),為了解決IP地址不足的問題,通常都設置了網(wǎng)絡地址轉換,因此每臺服務器對外都沒有一個確定的地址。同時,出于安全性考慮,防火墻往往都限制了大多數(shù)的端口。這就使得要在互聯(lián)網(wǎng)上訪問部署在內(nèi)網(wǎng)的服務變得相當困難。
服務總線正是為了解決這一問題而產(chǎn)生的。服務總線作為一個中間人,用戶的服務和使用服務的客戶端全都作為服務總線的客戶端與它進行交流。因為服務總線不存在網(wǎng)絡地址轉換的問題,所以用戶的服務和服務客戶端都很方便地能與它通信。在最簡單的場合下,服務總線只需要用戶的服務器暴露出站(Outbound)服務的80或443端口,也就是只需要用戶的服務器能夠以HTTP/HTTPS協(xié)議訪問互聯(lián)網(wǎng),用戶的服務就能連上服務總線。由于服務的訪問是由用戶服務端向服務總線發(fā)起出站網(wǎng)絡連接的,因此它對防火墻的要求可以說是相當?shù)偷摹?/p>
當用戶的服務連接到服務總線以后,可以注冊成為一個互聯(lián)網(wǎng)的服務。盡管該服務是托管在內(nèi)網(wǎng)中的,總線服務將會分配一個互聯(lián)網(wǎng)上的URI地址。此時該服務已經(jīng)和總線服務建立了連接,其他應用只需要訪問這個URI地址,服務總線將會負責將請求轉發(fā)給內(nèi)網(wǎng)中的服務,并將該服務的應答轉發(fā)給客戶端。
從本質上講,Windows Azure platform AppFabric提供了一個基于互聯(lián)網(wǎng)的服務總線,幫助用戶把不同的應用服務在互聯(lián)網(wǎng)上高效地連接起來。熟悉企業(yè)應用架構的開發(fā)者和架構師應該能夠更加靈活地使用總線功能,構建出面向服務的互聯(lián)網(wǎng)應用。
訪問控制服務(Access Control Service,ACS)
認證和授權是應用安全最為基礎的兩個方面。身份認證是許多分布式應用的基礎,然后基于用戶的身份信息,應用系統(tǒng)將決定該用戶的操作權限。Windows Azure platform AppFabric中提供的訪問控制服務為開發(fā)人員提供了一個在應用中使用的授權服務,開發(fā)人員可以使用這個訪問控制服務來認證應用的用戶而不需要自己編寫代碼來實現(xiàn)。訪問控制服務不僅簡化了利用已有的企業(yè)內(nèi)部身份認證系統(tǒng)的方式,還使應用可以方便地使用Google、Windows Live、Yahoo和FaceBook等互聯(lián)網(wǎng)上流行的身份認證系統(tǒng)。
經(jīng)過幾十年的演變,身份認證的解決方案更多的采用基于聲明(Claim)的方式進行?;诼暶鞯恼J證模型允許應用程序將認證與授權交給外部的服務來完成,外部的服務可以集中管理和維護身份信息,并提供更專業(yè)的身份管理控制服務。Windows Azure platform AppFabric中提供的訪問控制服務就是一個基于聲明的認證模型。利用基于聲明的認證模型,開發(fā)人員可以通過訪問控制服務完成多種方式的認證和授權。通過訪問控制的配置,企業(yè)客戶端可以通過活動目錄聯(lián)合服務器(ADFS v2)提供的登錄憑據(jù),完成訪問控制服務的認證。這樣基于訪問控制服務的云端應用就可以接受這一認證,實現(xiàn)多種認證模式并存的方式。
分布式緩存
在金融危機的時候,有一句話很流行–“現(xiàn)金為王”.在計算機領域,如果要提升性能同樣有一個很流行的說法–“緩存為王”.我們可以在不同的計算機層次中看到各種不同緩存技術的使用。在Windows Azure平臺中,為了提升應用程序的性能,除了前面講到的內(nèi)容分發(fā)網(wǎng)絡(CDN)外,Windows Azure platform AppFabric還提供了分布式緩存功能。該緩存服務為Windows Azure 應用程序提供了基于內(nèi)存的分布式緩存功能,并提供訪問緩存的API庫,如圖1.12所示。
圖1.12 分布式緩存示意
該緩存服務在應用程序的每個角色實例上保存一份本地緩存。如果本地緩存沒有所需要的數(shù)據(jù),它會自動去訪問緩存服務提供的共享緩存。如圖1.12所示,緩存數(shù)據(jù)分散到多個實例上,每個實例保存不同的緩存數(shù)據(jù)。對應用程序而言這種緩存是透明的,也就是說,應用程序只管請求數(shù)據(jù),AppFabric的緩存功能將會自動找到和返回數(shù)據(jù)。最近被訪問的數(shù)據(jù)不會被自動緩存,應用程序需要通過API專門把數(shù)據(jù)添加到緩存中。對于運行在Windows Azure上的ASP.NET應用程序,可以通過配置的方式把會話數(shù)據(jù)保存到緩存服務中,這樣可以不用修改任何代碼就可以加快它的運行。
與Windows Azure AppFabric對等的本地Windows Server AppFabric(注:其最開始的開發(fā)項目代號是Velocity)也有緩存服務,其實兩者非常相似。與Windows Server AppFabric不同的是,Windows Azure AppFabric Caching是一個服務,它不需要去專門配置管理服務器,它的服務會自動處理。同時緩存服務是多租戶的,每個使用它的應用程序都有自己的實例。由于應用程序在實例上必須通過驗證,因此其他的應用程序訪問不到不屬于自己的緩存數(shù)據(jù)。