Web Client Software Factory初始
簡介
Web用戶端軟體工廠( wcsf )提供了一套指導建築師和開發人員來構建企業級的Web應用程式。該軟體工廠包括,結合Visual Studio.net可以開發出可重複使用的代碼和指導方案及自動化的開發工作單位。
使用Web用戶端軟體工廠,開發人員可以建立可複用的相互獨立的(獨立開發和部署)Web應用程式塊。這些模組是動態聚集在運行時納入一個共同的殼。此外,工廠,包括支援asp.net AJAX技術,從而為使用者提供更豐富的更負責任的使用者體驗。
系統內容
- Microsoft Windows XP, Windows Server 2003, or Windows Vista operating system
- Microsoft .NET Framework 3.0 (required to use page flow; otherwise, .NET Framework 2.0 is satisfactory)
- Microsoft Visual Studio 2005 Team Edition for Software Testers (required to run unit tests in the first labs)
- Guidance Automation Extensions July 2007 CTP
- Enterprise Library 3.1 – May 2007
- Web Client Software Factory - June 2007
系統功能模組
從圖上我們可以很清楚看到該軟體工廠已經包含的一個企業級Web應用程式所必需具備的模組功能
從上向下看:
從表現層(Presentation Layer)UI組件(ajax),頁面流程式控制制(page flow),到商務邏輯層(Business Layer) 包含標準的商務程序模組(可以使用wwf),實體類(可以用ado.net entity framwork),業務功能模組或是說抽象出來的業務介面,底層就是資源訪問層主要就兩類,一類資料庫,一類Web Service
橫向看:
異常處理,認證,受權,模組管理,註冊,部署功能模組,當然這裡提供的這些類庫並非是在功能上有多麼強大,比如認證授權,但可以很方便的進行擴充和自訂開發。
如何使用wcsf
Wcsf提供了那麼多的基礎的功能模組,如何有效地組織在一個web解決方案(Solution)中,協助構架師,開發人員構建出一個優秀的企業級web應用程式,這一切都要依賴於Web Client Development guidance package 通過嚮導的方式一步一步地構建出一個web應用程式。
描述了在wcsf的web解決方案中提供的模組,從這些模組中很容易可以看出這個解決方案使用的是MVC或MVP的設計模式(有module,control,view,presenter當然這些都是通過嚮導自動幫我們建立好),另外還有一塊頁面流程模組(page flow)對於做一些流程審批功能非常有協助,page flow是在wwf(.net 3.5)上擴充出來的功能。
同時也告訴我們建立一個 web應用程式解決方案的順序或是開發流程,從建立項目,加添註冊業務模組,定義流程,系統配置到最後的部署一步一步的通過嚮導的方式指導開發人員進行開發;
使用wcsf帶來的優勢
不說大道理(松耦合loosely-coupled,擴充性Extensibility,健壯性robustness,可維護性maintainability,等等,這些內容可以寫在項目方案裡);
只談在使用過程中體會到方便:
專業(professional):因為有了上面優秀的架構和功能齊全的基礎類庫,有幫你有機的整合到一起構建出一套專業的web應用程式。
規範(standard):因為有自動化嚮導幫我們建立一系列模組和指導我們下一步該做什麼,正常化的開發流程,正常化的命名,正常化的功能模組。
抽象(abstract):因為wcsf只是幫你建立了商務邏輯(IService),UI(IView),流程(IPageFlow)等空介面,需要架構師或開發人員通過對實際業務中提煉出有共性,變化的東西出來;迫使你往更高層面的抽象去思考設計問題,而不只是停留在實體層面的CRUD的操作。
動手實驗1
讓我們通過一個微軟提供的動手實驗來體驗一下wcsf是如何一步一步協助我們完成一個web應用程式從架構到開發到最後的部署。
建立一個web client解決方案
Figure 2
Create Web Client Solution recipe wizard
添加一個EFT業務模組
業務模組(Business Module)從項目的角度可以看是一個大的業務功能模組,比如管理模組,報表模組。也可以當作只有一個頁面的小模組。但是該業務模組是必需的。
- 選擇解決方案下面 Modules目錄,滑鼠右鍵建立一個目錄 命名 EFT.
- 通過嚮導建立一個新的業務模組(business module)在 EFT目錄下.右擊EFT 目錄,點 Web Client Factory, 在選擇 Add Business Module (C#).
- 建立項目的對話方塊Figure 4,命名 EFT
- 選擇一下路徑 C:\GlobalBank\Modules\EFT
Figure 4
Add New Project dialog box
- 單擊OK開始一個建立業務模組嚮導.
- Figure 5一個建立業務模組的嚮導, 如果需要加添單元測試的選擇 Create project for unit tests然後單擊 Finish.
Figure 5
Add Business Module recipe wizard
驗證一下建立的Web應用程式
- 設定這個Website 作為啟動項目as StartUp Project.
- 設定Default.aspx page 為起始頁as Start Page.
- 編譯並運行這個Web Figure 8.我們添加的業務模組就會自動在功能表列中顯示
Figure 8
GlobalBank Web client application default page
- 單擊每個功能表項目會自動連接到每個模組的預設頁面中.
程式碼分析
整個解決方案(Solution)的結構
主要有兩大塊組成Module和WebSites;
Module目錄下面就是每個業務模組對應如的Module內的內容有Presentation,Busincess,Resource access.
展開一個EFT的Module看一下裡面的內容如每一個類(Class)都能找到在中的位置
下面定義了很多Interface和這些Interface的實現(implement)
IEFTController:MVC中的控制器用於串連UI和Business logic從下面的代碼我們可以很清楚的看出來;下面定義了ITransferService(定義的商務邏輯),INavigationService(控制頁面跳轉)。IPageFlow(頁面流程式控制制類)
INewTransferViewView:處理頁面(aspx)發送過來的請求並且響應的結果返回給頁面,代碼如下,這裡有Controller,有響應頁面的CRUD的操作;
通過aspx實現了INewTransferViewView進行關聯
ITransferService:我們抽象出來的Business Logic或是說User Case
EFTModuleInitializer:實現初始化註冊模組,載入功能表項目;
Shell:公用的模組下面定義MasterPage上的公用屬性,初始化首頁面的資訊,和載入公用的業務模組如,EnterpriseLibraryAuthorizationService, SiteMapBuilderService 認證/授權,菜單
WebSites就是一個web應用程式網站其中只包含web頁面(aspx)和UI Control;不同的模組由不同的目錄分開。主要處理UI的操作,驗證,顯示。
整個解決方案(Solution)結構非常清晰,各模組間的功能非常明確,所有模組之間引用或是說依賴(Dependency)都是通過介面(Interface)實現,面向介面編程。這樣可以很好做到松耦合。
評價
平時我們在程式設計開發都很喜歡講要物件導向,要SOA,要MVC,要分N層等等進階思想,可一到實際的項目過程中往往這些思想便成了理論或是寫方案充頁數的東西;而微軟patterns & practices Team把這些優秀的架構,先進的思想通過工具,讓它變得更加實際,更加方便,更容易接受,我想這就是微軟patterns & practices Team價值所在。