Silverlight - Prism(patterns & practices Composite WPF)與團隊開發

Prism(patterns & practices Composite WPF)與團隊開發

SilverLight是這幾年微軟程式開發中相當重要的一項產品,看其發佈週期會發現微軟從未有一個產品會如此密集的一直出新版本,可見其重要度.

受限於WebUI,SilverLight這類RIA程式越來越有其重要性,但了解或用過SilverLight的人都應該曉得,SilverLight的開發模式應該是Windows application而非Web application,所以如果是原來ASP.Net的程式設計人員撰寫SilverLight原先的技術很多都不適用,反之原來撰寫Windows application的程式設計師卻如魚得水.

 

所以SilverLight的一些設計架構或模式不能在採用ASP.Net的觀念,舉例來說以往撰寫ASP.Net若一個網站要多人開發時,劃分程式,有很大多數的公司的做法就是切功能然後透過Session,Post或Get方式做專案間的連結,但這種方式完全不能用於SilverLight中,因為在SilverLight所有程式最終只會產生一個XAP(註1),所以切割程式後該如何整合是個相當大的難題.

最好的整合是,個模組間能夠獨立開發但又能互相溝通,而且能夠達到雙向且即時).

 

所以微軟為此提供了一個設計模式,並出了一個Framework Library-“Prism”.

 

在Prism中可以讓架構師使用Module方式切割專案,而且不限定在功能上來切割,即使是同一個View也可以切割成多個Module由不同的負責人來撰寫程式最後組合起來.

譬如Prism所帶的範例StockTraderRI就是一個最好的展示

 

StockTraderRI展式圖

clip_image002

 

StockTraderRI的切割

clip_image010

 

在VS中的專案切割

image image image image

由上面圖是可以看出同一個 View中的不同區塊已分別分割至不同的專案中,最後再合併一起.而Prism本身提供一些機制可以讓各切割專案的程式作溝通,單向或雙向皆可.

 

不過要使用Prism並不是那麼容易,因為要了解一些OO的概念,如果對於ASP.Net MVC開發方式已有深入了解那對於Prism會容易許多,.因為Prism採用的MVVM樣式就是由MVC樣式演進而來,雖然作法有相當大的不同,但觀念是相同的.

 

學習Prism目前的資源不多,底下為主要的中文文章,提供作參考

http://www.cnblogs.com/Jax/category/213017.html

http://www.cnblogs.com/zhouyinhui/category/143606.html

http://www.cnblogs.com/Clingingboy/archive/2009/06/01/prsim_tutorial.html

 

而Prism的官網為

http://compositewpf.codeplex.com/

 

 

註1:或許有人使用切XAP方式然後透過Web間的連結來解決(如同傳同Winform,切割成不同的dll或執行檔,然後撰寫一個 Host Application來呼叫各模組) ,但這種做法會犧牲掉很多SilverLight的好處,譬如程式間的雙向溝通.