Windows Server App Fabric入門

by Vivid 15. 一月 2011 17:16

贊助廣告

  • 作    者:許薰尹
  • 審    稿:張智凱
  • 文章編號:
  • 出刊日期:

本文開始:

Windows Server App Fabric是微軟的應用程式伺服器,提供一組整合性的技術,希望讓程式設計師不要花費時間在建立應用程式的基礎架構上,而是讓Windows Server App Fabric做為應用程式架構的基礎平台,更容易建立、管理運行在IIS伺服器上的應用程式,如此程式設計師便能專注在設計應用程式本身的邏輯。本文將介紹Windows Server App Fabric基本觀念,以及如何將WCF服務裝載到Windows Server App Fabric。

Windows Server App Fabric可以助益於ASP.NET應用程式、WCF服務和WF流程應用程式這三類應用程式,主要功能包含兩大區塊:

l AppFabric快取服務(AppFabric Caching Services):可以在不修改任何程式的情況下,將ASP.NET Session物件分散在多台伺服器上進行快取,加速ASP.NET應用程式執行效能。

l AppFabric裝載服務(AppFabric Hosting Services):用來裝載Windows Communication Service。

AppFabric裝載服務與AppFabric快取服務可以分開來個別使用之,或一起使用來增加應用程式的效能以及延展性。

AppFabric快取服務

要提升ASP.NET應用程式執行效能不外乎採用向外延展(Scale out)方式,增加多台伺服器,執行相同的ASP.NET應用程式。但無論向外延展了多少台Web伺服器,資料庫伺服器還是只有一台,因此就成為瓶頸所在。App Fabric快取服務能夠提供分散式的快取功能,當應用程式經常存取相同的資料時,可以讓資料存在於不同台機器,如此ASP.NET應用程式就可從多台伺服器存取資料,以加快資料存取程式之執行效能和延展性,App Fabric快取服務的應用架構可以參考圖1所示。

clip_image002

圖 1:App Fabric快取服務架構。

在AppFabric的架構下,多個快取用戶端可以存取相同的快取叢集中之伺服器,用戶端也可以有自己的本機快取,快取的資料都被序列化成.NET物件。快取叢集中的伺服器都運行著AppFabric快取服務,其中包含快取的資料,資料會存放在快取伺服器的記憶體中。當有多個用戶端程式同時存取快取叢集上的資料時,可能會遇到資料衝突問題,AppFabric快取服務提供兩種衝突處理機制來解決這個問題:樂觀同步與悲觀同步。樂觀同步提供快取物件版本號碼以便控管;而悲觀同步則採用鎖定機制處理。為了安全性的理由,所有快取用戶端與快取伺服器之間的資料都會先經過數位簽章以及加密的處理,才會進行傳輸,也可以設定個別使用者的存取權限。

ASP.NET網頁程式可以當作是AppFabric的快取用戶端程式,在過去ASP.NET Session物件若採用Out-of-Process方式儲存,可以利用ASP.NET預設提供的State Service或SQL Server資料庫來儲存。有了AppFabric架構,您可以設定網站組態檔案,將ASP.NET 的Session物件儲存在AppFabric快取伺服器。

AppFabric快取服務也提供高可用性的支援,當存放快取資料的主要伺服器掛點時,利用複本伺服器來提供快取資料。

AppFabric裝載服務

使用Windows Communication Foundation設計的服務導向程式現在也可以裝載在AppFabric上執行,特別是搭配流程(Windows Workflow Foundation)設計出來的服務。若要讓WCF服務能夠在AppFabric上運作,在開發階段您需要使用Windows 7、Vista SP2以上版本、Windows Server 2008或Windows Server 2008 R2作業系統。而上線階段,可以使用Windows Server 2008或Windows Server 2008 R2作業系統,需購買授權。AppFabric裝載服務的架構可以參考圖2所示。

clip_image004

圖 2:AppFabric裝載服務。

AppFabric裝載服務並沒有提供自己的裝載服務,而是以現有的IIS和Windows Process Activation Service(WAS)為基礎,可以用於裝載WCF服務和流程服務,支援多種協定,如HTTP、TCP/IP、具名管道(Named Pipes)。您可以在IIS工作處理序 (IIS Worker Process)載入WCF服務與WF服務來執行。

AppFabric裝載服務擴充原有IIS管理工具的能力,參考圖3,提供一個AppFabric Dashboard工具能夠用來:

l 管理與設定以及部署WCF服務。

l 啟用、停用服務。

l 設定、檢視端點(Endpoint)資訊。

l 監控服務運行的狀態。

clip_image006

圖 3:AppFabric Dashboard管理工具。

Workflow應用程式可能會在執行過程,需執行長時間的工作,有時會處於閒置狀態,等待使用者輸入或回應,此時Workflow應用程式會將目前執行中的流程狀態自動保存,在等待到必要的輸入後,流程應用程式會自動還原其狀態,繼續處理。AppFabric裝載服務也提供Workflow應用程式保存狀態資訊,您可以利用AppFabric裝載服務管理工具(Microsoft.ApplicationServer.Configuration.exe) 設定流程程式狀態儲存體,例如儲存到SQL Server資料庫,來達到自動儲存、回復狀態的工作。

AppFabric裝載服務提供預設的狀態儲存空間給流程應用程式使用,讓流程應用程式存放監控的資訊。此外,也提供了IIS管理工具的擴充程式,AppFabric Dashboard,以便管理與監控流程應用程式。除了利用AppFabric Dashboard進行管理與監控之外,您也可以利用System Center Operations Manager工具來管理之。

下載與安裝

Windows Server App Fabric是架構在作業系統之上,需要事先下載、安裝之後方能使用。建議在上線的伺服器上,不要同時安裝AppFabric裝載服務與AppFabric快取服務。安裝完成後,在使用之前,您需要先利用Windows Server AppFabric Configuration Wizard進行組態設定,參考圖4。

clip_image008

圖 4:利用Windows Server AppFabric Configuration Wizard進行組態設定。

如果監控的資訊和流程實體的保存地是儲存在SQL Server,你可以利用Windows Server AppFabric Configuration Wizard這個精靈快速的進行設定。例如圖5,適當地設定搜集事件使用的服務帳號,然後設定Monitor Provider為System.Data.SqlClient。

clip_image010

圖 5:設定Monitor Provider為System.Data.SqlClient。

下一步便可以透過精靈建立資料庫,並設定連接到資料庫所要使用的帳號資訊。這些安全性的連接字串會自動儲存到組態檔案中,參考圖6所示。

clip_image012

圖 6:設定資料庫。

利用相同的方式設定Persistence Service,同樣地,這些資料庫連接字串的設定將會存在於機器等級的Web.config檔案(預設在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\目錄下)。AppFabric是可以擴充的,若相關的監控或保存資訊不想儲存在SQL Server,也允許你利用自定的提供者來儲存。

使用AppFabric裝載WCF服務

安裝以及設定完App Fabric環境之後,便可以開始使用它來裝載WCF服務,使用Visual Studio 2010在IIS 伺服器上直接建立一個新的WCF Service。例如參考圖7,建立一個WCFService,從 Visual Studio 2010的主選單點選「File」à「New」à「Web Site」,接著會開啟「New Web Site」對話窗,在對話窗裡「Templates」項目選擇Visual C#。在右邊的Templates區塊中選擇「WCF Service」,將「Web Location」設定為「HTTP」,右邊的文字盒輸入網址:「http://localhost/WCFService」。:

clip_image014

圖 7:建立一個新的WCF Service。

修改服務合約,合約的名稱為IService,其中包含一個SayHi方法,傳入一個字串當參數,回傳一個字串。

[ServiceContract]

public interface IService {

[OperationContract]

string SayHI(string value);

}

服務程式實作如下,Service類別中的SayHi方法,將會回傳一個字串到用戶端應用程式。

public class Service : IService {

public string SayHI(string value) {

return string.Format("Hi from WCF : {0}", value);

}

}

在方案總管(Solution Explorer)中的Service.svc項目上點右鍵,選擇「View in Browser」,以檢視服務測試頁面實際執行的結果,參考圖8所示。

clip_image016

圖 8:檢視服務測試頁面執行的結果。

WCF提供一個測試用的用戶端應用程式:Wcftestclient.exe,您可以使用此工具來建立叫用服務的代理物件,測試服務的運行。執行此程式之後,可以從My Service Projects項目,點選滑鼠右鍵,然後選取「Add Service」,參考圖9所示。

clip_image018

圖 9:使用Wcftestclient.exe測試服務

在「Add Service」對話盒中,輸入服務所在網址,參考圖10所示,例如輸入前例的「http://localhost/WCFService/Service.svc」,然後點選「OK」:

clip_image020

圖 10:Add Service。

接著左邊的清單方塊中便會出現服務的合約(Contract)及作業(Operation)節點,雙擊左方的SayHi作業,右方將會顯示叫用此作業請求所需的參數及其型別,以下輸入value參數為「Mary」之後,點選「Invoke」按鈕回傳的執行結果,參考圖11所示。

clip_image022

圖 11:測試服務。

您可以利用App Fabric Dashboard來檢視WCF服務運作的結果。App Fabric Dashboard提供許多圖型化界面,能夠設定或檢視WCF服務。參考圖12所示,您可以開啟IIS管理工具,開啟App Fabric Dashboard,在WCF Call History區塊之中,您可以看到叫用服務的動作是成功還是失敗,從中檢視錯誤的統計資訊。

clip_image024

圖 12:檢視WCF服務呼叫歷程。

參考圖13所示,當你點選其中的超連結,便可看到追蹤的事件統計資訊 (Tracked Events),您可以從上方表格建立查詢事件的篩選條件來進行查詢:

clip_image026

圖 13:事件追蹤統計資訊。

您可以從Tracked Events監控WCF服務運作的情況,例如叫用服務作業的動作是否正確完成,還是發生例外,並檢視例外錯誤資訊。您可以使用AppFabric來檢視服務開放的端點(Endpoint)資訊,參考圖14所示:

clip_image028

圖 14:檢視服務開放的端點(Endpoint)資訊。

若WCF服務不是採用預設端點進行組態,您可以在AppFabric管理介面中檢視服務位址、繫結(Binding)、合約(Contract)、驗證等資訊,或設定效能選項,控管緩衝區以及可接收的訊息大小,參考圖15所示。

clip_image030

圖 15:設定端點。

AppFabric還提供一個服務管理介面,您可以檢視IIS中的WCF服務,或者觀察服務的統計資料,參考圖16所示:

clip_image032

圖 16:檢視IIS中的WCF服務。

修改WCF Service,加入WCFUserEventProvider類別,此類別是微軟內含在Windows Server AppFabric Training Kit 之中的範例程式碼,我們可以利用此類別,客製化要寫入追蹤的記錄,底下範例修改SayHi方法,叫用WriteInformationEvent方法輸出Information等級的訊息。

public string SayHI(string value) {

WCFUserEventProvider ep = new WCFUserEventProvider();

ep.WriteInformationEvent("My WCF Service", "My Custom Event , value :"+value);

return string.Format("Hi from WCF : {0}", value);

}

在IIS管理工具中還需要額外進行設定才能看到自訂的追蹤訊息,從IIS管理工具,點選您的WCF服務,然後點選滑鼠右鍵,選取「Manage WCF and WF Services」,再選Configure,參考圖17所示:

clip_image034

圖 17:Manage WCF and WF Services。

在Monitoring頁中,將等級設定為End-to-End Monitoring,參考圖18所示:

clip_image036

圖 18:設定Monitoring等級。

使用Wcftestclient.exe測試服務。再檢視Tracked Events,您可以點選其中的事件記錄,然後點選滑鼠右鍵,選擇「View All Related Events」就可以看到客製化的訊息,參考圖19所示:

clip_image038

圖 19:檢視客製化的訊息。

自訂訊息內容請參考圖20所示:

clip_image040

圖 20:自訂訊息。

總結

你可以在任何WCF服務中利用AppFabric裝載服務,AppFabric裝載服務也提供額外執行與管理Workflow服務的支援。利用AppFabric裝載服務裝載的WCF服務,可以和Windows Azure平台作整合,以便設計雲端類型的應用程式。您可以將WCF服務端點註冊到Service Bus,開放用戶端應用程式利用Service Bus來叫用WCF服務。AppFabric裝載服務可以裝載WF流程應用程式,WF流程應用程式可以和其它類型的應用程式作整合,例如BizTalk Server。

參考資源

l 下載Windows Server AppFabric

http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx

l Windows Server AppFabric Training Kit

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7290f7ed-e86b-4114-a452-4f07fa32403d

 
   

Tags:

NET 開發 | 許薰尹Vivid Hsu | .NET Magazine國際中文電子雜誌

評論 (1) -

Huanlin
Huanlin Taiwan
2011/9/9 下午 03:47:08 #

收藏參考。Thanks!

回覆

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List