公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2010年6月11日 星期五

Windows Server AppFabric Caching (2) - 存放ASP.NET應用程式的Session資料

除了暫存應用程式可共享的快取資料之外,另一個Windows Server AppFabric Caching 服務重要的功能就是可以做為ASP.NET網際網路應用程式out-of-process session資料的存放空間。操作的方式相當的簡單:

1. 加入組件參考,用戶端應用程式需要用的的組件為Microsoft.ApplicationServer.Caching.Client.dll以及Microsoft.ApplicationServer.Caching.Core.dll。

2. 在Web.config中,加入下面設定:

a. 在<configSections>區段中,加入:

image

b. 接著,在<configuration>中,使用剛剛的宣告建立<dataCacheClient>區段,並設定快取服務的位置:

image

c. 修改<system.web>區段中Session Provoder的宣告:

image

如此一來,ASP.NET也可以使用分散式的in-memory快取叢集。比較需要注意的是,若是要使用High-Availability的快取來存放Session資料的話,所有快取叢集機器的作業系統都必須要是Enterprise或是Datacenter版本,並且要使用Secondaries參數建立具名快取

New-Cache –CacheName session –Secondaries 1 –TTL 1440

Windows Server AppFabric Caching 的二三事

1. 正式版的改變:

2009年6月的MSDN雜誌的這一篇文章 "Build Better Data-Driven Apps With Distributed Caching" (http://msdn.microsoft.com/zh-tw/magazine/dd861287.aspx) 寫得相當不錯,然而在正式版中有些地方不太一樣,例如:

(1) 參考的組件名稱與位置不同。

(2) CacheFactory –> DataCacheFactory; Cache –> DataCache.

(3) New-Cache 指令的參數名稱不太一樣。

好吧,我就直接告訴你,Beta 2跟正式版之間有許多不一樣的地方,有興趣操作Windows Server AppFabric的朋友可以參考我的前一篇範例操作。

2. 在ASP.NET應用程式中設定Windows Server AppFabric Caching做為Session providers會出現 "無法載入型別 'Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider'" 的錯誤:

這是因為在Web.Config中,若是要參考型別定義,要參照GAC的定義就要使用完整名稱:

image

若是要使用簡式名稱的話,就必須先把"Microsoft.ApplicationServer.Caching.Client.dll"組件複製到網站的bin目錄下:

image

簡式名稱設定如下:

image

Windows Server AppFabric Caching (1) - 初體驗

Windows Server AppFabric 是微軟在新一代分散式架構中,相當重量級的一個應用程式平台。而透過Windows Server AppFabric 所提供的資料快取服務,我們可以快速地利用多台機器建立分散式而且In-Memory 的Cache-Tier,不但可以減輕資料庫的負擔,也可以增加資料存取的速度。基本的架構圖如下:

image

(圖片來源:MSDN雜誌 http://msdn.microsoft.com/zh-tw/magazine/dd861287.aspx)

關於Windows Server AppFabric Caching的一些其他的基本資訊與一些基本觀念,各位可以先參考保哥之前整理的文章(http://blog.miniasp.com/post/2009/12/Windows-Server-AppFabric-Caching-Velocity-Notes.aspx),這裡就不再贅述。安裝建置好Windows Server AppFabric Caching的環境之後,可以按照下面的兩個步驟,建立簡單的快取層級環境:

1. 啟動快取叢集(Cache Cluster):

    Windows Server AppFabric Caching最大的特色之一,就是可以利用多台機器的記憶體環境建立快取叢集,用來暫存應用程式間可以共享的物件資料。在PowerShell中使用Start-CacheCluster指令可以啟動多台機器上的Cacheing Service所建立的快取叢集。

image

2. 建立具名快取(Named Cache)

    具名快取是在快取叢集中暫存資料的單元,而每個暫存在具名快取中的物件稱為快取項目(Cache Item)。程式要使用快取叢集之前,必須要先使用New-Cache指令建立可以暫存物件的具名快取。在PowerShell中執行下面指令,可以建立一個名為"catalog"的具名快取:

New-Cache -CacheName catalog -Eviction none -Expirable false

快取層級的環境建好之後,可以透過下面的方法建立簡單的用戶端程式測試:

1. 建立一個新的Console Application.

2. 加入組件參考,用戶端應用程式需要用的的組件為Microsoft.ApplicationServer.Caching.Client.dll以及Microsoft.ApplicationServer.Caching.Core.dll。這兩個組件是安裝在 Windows\System32\AppFabric 目錄底下;若是64位元的開發環境,請先在Windows目錄下建立一個SysNative資料夾,再參考到Windows\SysNative\AppFabric 目錄。

image

3. 加入下面兩個命名空間:

image

4. 宣告要加入快取中的物件類別定義,注意需要支援序列化:

image

5. 最後,透過程式建立要加入快取的物件,並且加入具名快取中。完成之後再取出來:

image

程式完成的結果如下:

image

這次先做到這,有時間再詳細一一介紹這些設定。

2010年6月8日 星期二

Microsoft Expression Studio 4 已經可以下載了!

雖然透過Visual Studio 2010就可以直接設計Silverlight 4的應用程式表單,不過若是要做比較炫的效果的話,還是需要透過好的設計工具。

下載Microsoft Expression Studio 4:http://www.microsoft.com/expression/try-it/

studio4-ultimate

Recommended Updates for Windows Server AppFabric

Here you will find the list of applicable updates for Windows Server AppFabric and its dependencies.

New updates will be added to the list as they become available.

  • You experience several issues when you use Powershell cmdlets or AppFabric features in IIS 7.0 or IIS 7.5
    KB980423
  • Some services are preloaded unexpectedly when you start a website that contains multiple applications in IIS 7.5
    KB983484

資料來源:Windows Server AppFabric(http://msdn.microsoft.com/en-us/windowsserver/ff637504.aspx)

Windows Server AppFabric – 應該是RTM

今天百敬問我Windows Server AppFabric release了沒,剛好我上星期demo時有介紹到,依稀記得當時安裝的是5/19號release的RC版,沒想到今天再查一次,發現6/4號又有一個版本,而且產品說明中有這一段話:

"支援從 Windows Server AppFabric Beta 2 Refresh 與 Windows Server AppFabric RC 升級。"

通常RC之後就是RTM版,而我下載之後也順利的把原本的Windows Server AppFabric升級到新版本,看來應該是RTM版。比較奇怪的是這次release居然沒有看到發表聲明(或是我漏掉了 ?)

下載 Window Server AppFabric:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2

2010年6月7日 星期一

如何使用Silverlight建構雲端應用程式--研討會講義

6/3號在台灣微軟跟大家分享了 "如何使用Silverlight建構雲端應用程式",當天研討會的Sildes已經上載到:http://docs.com/19DN

2010年6月1日 星期二

解決WCF RIA Services中,Entity Model改變DomainService不會同步更新的問題

WCF RIA Services 對於開發以資料為導向的Silverlight應用程式而言,是一個相當方便的工具。在Visual Studio 2010開發工具中,當建立好了一個Entity Model之後,若是資料庫的模型有修改過的話,你可以透過"Update Model from Database"的功能選項,將資料庫最新的定義更新到Entity Model中:

image

然而這一個動作只會更新Entity Model裡面資料時體的定義,並不會幫你在既有的Domain Service中針對這些資料實體新增Metadata定義及用戶端程式存取時所需要的指令。在WCF RIA 1.0當中,你可以試著用下面的步驟解決這一個問題:

1. 在Server端專案中加入一個新的DomainService定義檔

    這一個步驟的目標,是要透過Visual Studio 2010 開發工具,建立用戶端存取新的資料實體所需要的介面與中繼資料(metadata)。新的DomainService原始檔可以暫時先命名為TempDomainService.cs或是你可以識別的名稱:

image

接著在精靈中,設定DomainService類別的定義:

image

設定時注意兩個技巧:

(1) Domain service class name請設為原本的Domain Service類別名稱

(2) Entities 請選擇需要加入的資料實體定義即可,其他的不用選。

完成之後按下OK按鈕,開發工具會建立新的DomainService定義檔。

2. 開啟新的DomainService類別原始檔(以這個例子來說是TempDomainService.cs),刪除類別前面的"[EnableClientAccess()]"標籤,並且使用partial關鍵字將該DomainService宣告為部分類別。

3. 開啟既有的DomainService類別原始檔(以這個例子來說是MessageWallDomainService.cs),使用partial關鍵字將該DomainService宣告為部分類別 (但是不可以刪除類別前面的"[EnableClientAccess()]"標籤)。

接下來重新編譯Server端及Client端專案的程式,你就會可以從Silverlight應用程式中去存取Entity Model中新的資料實體了!

我不確定在下一版的WCF RIA Services開發工具中會不會修正這一個問題,不過透過部分類別來建立DomainServices,只要你的類別命名規則夠清楚,某種程度來說,也不會增加太多DomainService維護的負擔。

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)