首頁 »
2009/08/21
多個Silverlight專案共用Mid-Tier公用程式的三種方式

2009年7月號的台灣微軟MSDN Flash,祭司撰文一篇【多個Silverlight專案共用Mid-Tier公用程式的三種方式】,其中的要訣就是使用最新的.NET RIA Services技術,透過它來撰寫CRUD的資料存真的是十分方便,也不用理會AJAX那種低生產力的開發方式,最後還可以達成N-Tiers分散式的架構。
當Web的N-Tiers分散式架構蔚為主流後,不例外的,Silverlight專案也慢慢步上N-Tiers這條道路,N-Tiers在良好的系統分層規劃下,不但好開發、容易除錯、具延性與好維護,最重要的是Mid-Tier中間層的程式碼,可以供眾多不同的Silverlight展現層專案共用,這是本篇專欄要聚焦討論的地方。
而當Silverlight專案愈來愈多,程式碼愈來愈大,甚至分由不同小組開發維護時,若您是採用不加思索的Copy&Paste方式,如此引用Mid-Tier中間層公用程式到每個Silverlight專案中,無形中您已埋下系統架構分崩離析的苦果,隨著專案程式愈趨龐雜,最後導致各個Silverlight系統都各自修改與維護,所謂的"共用"已名存實亡,且Copy的公用程式版本可能連自己都搞不清楚是哪一版的,更遑論要做到正確的共用。
為了避免落入上述N-Tiers分散式開發與維護的瓶頸,讓我們來看看Silverlight 3這個世代是如何克服"N-Tiers分散式開發與維護"這個議題,配合Silverlight 3分散式開發,有一個新的對應解決方案稱之為「.NET RIA Services」,它的目的在於能夠快速又容易地建立分散式N-Tiers應用程式,讓多個Silverlight專案可以有效共同相同的Mid-Tier中間層的公用程式,其提出的可行之道有三種作法:
- 產生Proxy型別物件(Generated proxy types)
- 分享原始程式碼(Shared source files)
- 分享組件(Shared assemblies)
詳細分述如下:
1.產生Proxy型別物件(Generated proxy types)
其做法是在Mid-Tier專案中建立.NET RIA Services的「DomainService類別」,DomainService類別之中再建立許多CRUD公用方法,而VS 2008的Solution之中若有數個Silverlight專案參考到Mid-Tier的DomainService類別,則於Solution編譯建置時,系統就會自動在Silverlight的Client專案中產生一個Proxy型別的程式,它可以說是Mid-Tier的DomainService類別在Silverlight Client專案中的一個Proxy類別投影。有了這個proxy投影,Silverlight便可以自由自在呼叫使用原本屬於Mid-Tier的公用程式,且Silverlight程式撰寫時,還受到Proxy物件的IntelliSense良好提示。

圖1 產生Proxy型別物件示意圖