圖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)系。

服務(wù)總線(Service Bus)

Windows Azure platform AppFabric的服務(wù)總線與傳統(tǒng)SOA中的企業(yè)服務(wù)總線(ESB)在概念上有相似的地方,但是在范圍和功能上是不一樣的。這里的服務(wù)總線是專門針對互聯(lián)網(wǎng)上的服務(wù)相互調(diào)用的而不僅限于企業(yè)內(nèi)部。將傳統(tǒng)的應(yīng)用服務(wù)部署到互聯(lián)網(wǎng)上比大多數(shù)人想象的要難得多,服務(wù)總線的目標(biāo)就是使其變得簡單化。無論是傳統(tǒng)的自有應(yīng)用還是云應(yīng)用,都可以通過服務(wù)總線互相訪問對方的Web服務(wù)。服務(wù)總線為每個服務(wù)端點(diǎn)分配一個固定的URI地址,從而幫助其他應(yīng)用定位和訪問。

另外,服務(wù)總線還可處理網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)和企業(yè)防火墻所帶來的挑戰(zhàn)。服務(wù)總線可以將企業(yè)內(nèi)網(wǎng)的服務(wù)暴露給互聯(lián)網(wǎng)。大多數(shù)企業(yè)都擁有自己的局域網(wǎng),為了解決IP地址不足的問題,通常都設(shè)置了網(wǎng)絡(luò)地址轉(zhuǎn)換,因此每臺服務(wù)器對外都沒有一個確定的地址。同時,出于安全性考慮,防火墻往往都限制了大多數(shù)的端口。這就使得要在互聯(lián)網(wǎng)上訪問部署在內(nèi)網(wǎng)的服務(wù)變得相當(dāng)困難。

服務(wù)總線正是為了解決這一問題而產(chǎn)生的。服務(wù)總線作為一個中間人,用戶的服務(wù)和使用服務(wù)的客戶端全都作為服務(wù)總線的客戶端與它進(jìn)行交流。因?yàn)榉?wù)總線不存在網(wǎng)絡(luò)地址轉(zhuǎn)換的問題,所以用戶的服務(wù)和服務(wù)客戶端都很方便地能與它通信。在最簡單的場合下,服務(wù)總線只需要用戶的服務(wù)器暴露出站(Outbound)服務(wù)的80或443端口,也就是只需要用戶的服務(wù)器能夠以HTTP/HTTPS協(xié)議訪問互聯(lián)網(wǎng),用戶的服務(wù)就能連上服務(wù)總線。由于服務(wù)的訪問是由用戶服務(wù)端向服務(wù)總線發(fā)起出站網(wǎng)絡(luò)連接的,因此它對防火墻的要求可以說是相當(dāng)?shù)偷摹?/p>

當(dāng)用戶的服務(wù)連接到服務(wù)總線以后,可以注冊成為一個互聯(lián)網(wǎng)的服務(wù)。盡管該服務(wù)是托管在內(nèi)網(wǎng)中的,總線服務(wù)將會分配一個互聯(lián)網(wǎng)上的URI地址。此時該服務(wù)已經(jīng)和總線服務(wù)建立了連接,其他應(yīng)用只需要訪問這個URI地址,服務(wù)總線將會負(fù)責(zé)將請求轉(zhuǎn)發(fā)給內(nèi)網(wǎng)中的服務(wù),并將該服務(wù)的應(yīng)答轉(zhuǎn)發(fā)給客戶端。

從本質(zhì)上講,Windows Azure platform AppFabric提供了一個基于互聯(lián)網(wǎng)的服務(wù)總線,幫助用戶把不同的應(yīng)用服務(wù)在互聯(lián)網(wǎng)上高效地連接起來。熟悉企業(yè)應(yīng)用架構(gòu)的開發(fā)者和架構(gòu)師應(yīng)該能夠更加靈活地使用總線功能,構(gòu)建出面向服務(wù)的互聯(lián)網(wǎng)應(yīng)用。

訪問控制服務(wù)(Access Control Service,ACS)

認(rèn)證和授權(quán)是應(yīng)用安全最為基礎(chǔ)的兩個方面。身份認(rèn)證是許多分布式應(yīng)用的基礎(chǔ),然后基于用戶的身份信息,應(yīng)用系統(tǒng)將決定該用戶的操作權(quán)限。Windows Azure platform AppFabric中提供的訪問控制服務(wù)為開發(fā)人員提供了一個在應(yīng)用中使用的授權(quán)服務(wù),開發(fā)人員可以使用這個訪問控制服務(wù)來認(rèn)證應(yīng)用的用戶而不需要自己編寫代碼來實(shí)現(xiàn)。訪問控制服務(wù)不僅簡化了利用已有的企業(yè)內(nèi)部身份認(rèn)證系統(tǒng)的方式,還使應(yīng)用可以方便地使用Google、Windows Live、Yahoo和FaceBook等互聯(lián)網(wǎng)上流行的身份認(rèn)證系統(tǒng)。

經(jīng)過幾十年的演變,身份認(rèn)證的解決方案更多的采用基于聲明(Claim)的方式進(jìn)行。基于聲明的認(rèn)證模型允許應(yīng)用程序?qū)⒄J(rèn)證與授權(quán)交給外部的服務(wù)來完成,外部的服務(wù)可以集中管理和維護(hù)身份信息,并提供更專業(yè)的身份管理控制服務(wù)。Windows Azure platform AppFabric中提供的訪問控制服務(wù)就是一個基于聲明的認(rèn)證模型。利用基于聲明的認(rèn)證模型,開發(fā)人員可以通過訪問控制服務(wù)完成多種方式的認(rèn)證和授權(quán)。通過訪問控制的配置,企業(yè)客戶端可以通過活動目錄聯(lián)合服務(wù)器(ADFS v2)提供的登錄憑據(jù),完成訪問控制服務(wù)的認(rèn)證。這樣基于訪問控制服務(wù)的云端應(yīng)用就可以接受這一認(rèn)證,實(shí)現(xiàn)多種認(rèn)證模式并存的方式。

分布式緩存

在金融危機(jī)的時候,有一句話很流行–“現(xiàn)金為王”.在計算機(jī)領(lǐng)域,如果要提升性能同樣有一個很流行的說法–“緩存為王”.我們可以在不同的計算機(jī)層次中看到各種不同緩存技術(shù)的使用。在Windows Azure平臺中,為了提升應(yīng)用程序的性能,除了前面講到的內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)外,Windows Azure platform AppFabric還提供了分布式緩存功能。該緩存服務(wù)為Windows Azure 應(yīng)用程序提供了基于內(nèi)存的分布式緩存功能,并提供訪問緩存的API庫,如圖1.12所示。

圖1.12 分布式緩存示意

該緩存服務(wù)在應(yīng)用程序的每個角色實(shí)例上保存一份本地緩存。如果本地緩存沒有所需要的數(shù)據(jù),它會自動去訪問緩存服務(wù)提供的共享緩存。如圖1.12所示,緩存數(shù)據(jù)分散到多個實(shí)例上,每個實(shí)例保存不同的緩存數(shù)據(jù)。對應(yīng)用程序而言這種緩存是透明的,也就是說,應(yīng)用程序只管請求數(shù)據(jù),AppFabric的緩存功能將會自動找到和返回數(shù)據(jù)。最近被訪問的數(shù)據(jù)不會被自動緩存,應(yīng)用程序需要通過API專門把數(shù)據(jù)添加到緩存中。對于運(yùn)行在Windows Azure上的ASP.NET應(yīng)用程序,可以通過配置的方式把會話數(shù)據(jù)保存到緩存服務(wù)中,這樣可以不用修改任何代碼就可以加快它的運(yùn)行。

與Windows Azure AppFabric對等的本地Windows Server AppFabric(注:其最開始的開發(fā)項(xiàng)目代號是Velocity)也有緩存服務(wù),其實(shí)兩者非常相似。與Windows Server AppFabric不同的是,Windows Azure AppFabric Caching是一個服務(wù),它不需要去專門配置管理服務(wù)器,它的服務(wù)會自動處理。同時緩存服務(wù)是多租戶的,每個使用它的應(yīng)用程序都有自己的實(shí)例。由于應(yīng)用程序在實(shí)例上必須通過驗(yàn)證,因此其他的應(yīng)用程序訪問不到不屬于自己的緩存數(shù)據(jù)。

分享到

youjia

相關(guān)推薦