專案分離

前言

  在之前的數篇文章中曾經提過,筆者想介紹推廣的CALA.NET Framework是一種使用者介面與商業邏輯分離的應用程式設計模式。而所謂的分離,意謂不可再將所有的程式碼寫在相同的專案(Project)當中, 必須以一個方案(Solution)並在底下包含數個專案。本篇文章會說明如何使用Visual Studio來建構方案,並說明如何建立在方案中各個專案的相依性。

建立空白方案

  首先請開啟您的Visual Studio,接著在功能表上按「檔案(N)」à「新增(N)」à「專案(P)…」,由於我們希望是在一個方案下包含數個專案,所以請先在「專案類型」選擇「其它專案類型」、「Visual Studio 方案」、「空白方案」,並給於方案名稱及儲存位置。接著按【確定】







新增方案資料夾

    由於現今的程式開發愈來愈複雜,在一個方案底下可能會因應不同的目的而有許許多多的專案,為了容易分門別類管理,可在方案底下建立「方案資料夾」,讀 者可依實際需要為您的方案建立方案資料夾,並給與合適的名稱。例:Data Access、Business Logic….。

  請在方案的節點上按滑鼠右鍵,並選擇「加入(D)」à「新增方案資料夾(D)」,並給與新方案資料夾合適的名稱。

 


  或許,您所開發的應用程式,並不會太複雜,所需的專案數並不會太多,此時也可不必使用方案資料夾,直接將專案掛在方案底下即可。

新增類別庫專案

   由於商業物件並沒有負責實際與應用程式操作者溝通的使用者介面(UI),因此可被視為類別庫專案。請在方案目錄樹下欲放置類別庫專案的方案資料夾上按滑 鼠右鍵,並選擇「加入(D)」「新增專案(N)…」,在加入新的專案的視窗中選擇您所熟悉的程式語言,並選擇「類別庫」範本,並給與專案名稱。





新增使用者介面專案

   正常來講,應用程式最終總是要與使用者溝通,因此最後需要一個負責使用者介面的應用程式,因此接下來可依類似新增類別庫專案的方式,新增負責使用者介面 的專案,請依您欲開發的應用程式類型選擇合適的專案範本。例如:「Windows應用程式」、「ASP.NET Web應用程式」或「WPF應用程式」。

  或許您的應用程式解決方案(Solution)也有可能會希望在公司內部是使用Widows應用程式,而外部或許是廠商、客戶,使用ASP.NET Web應用程式。



您可依情況加入不限個數的各種專案,且可利用方案資料夾來為各個專案分類以方便管理。

為專案加入參考

  由於各個專案間,要相互使用時必須先將該專案所產生的組件加入參考,例如:作為商業物件的類別庫專案,要讓Windows Form應用程式使用時,就必須在Windows Form應用程式的專案中將商業物件類別庫專案所產生的組件加入參考。

  本系列文章所介紹的商業物件的設計是使用CSLA.NET Framework,因此在商業物件的類別庫專案也必需將前述文章「CSLA.NET Framework 簡介」中,所介紹並下載編譯成Csla.dll加入參考,所以接下來會以在上例中在Stock.Library專案中加入Csla.dll參考來說明如何為專案加入參考。
請在方案總管中方案樹狀結構Stock.Library專案的「My Project」節點雙擊滑鼠右鍵,開啟如下圖的專案屬性。並選擇如圖的「參考」頁籤。



接著請按「加入(A)…」,在新出現的視窗如下圖所示瀏覽到前述「CSLA.NET Framework 簡介」中,所介紹並下載編譯成Csla.dll所在位置,點選後按「確定」。





讀者可依上所述之方法,為所有須要相互參考的專案加入參考。

專案相依性

  以商業物件與使用者介面分離為例,商業物件類別庫專案所產生的組件是要讓使用者介面專案參考使用的,所以在建置方案時,商業物件類別庫專案必需先建置,也就是使用者介面專案是相依於商業物件類別庫專案。

   也因此必須為各個專案指定相依性,這樣Visual Studio才能決定專案建置的先後順序。請在方案總管的根節點按滑鼠右鍵,並選擇「專案相依性(S)…」,並在出現的視窗中依各個專案相互的關係指定相 依性,並確定各個專案建置順序是否適當。確認後按「確定」以建立各個專案間之相依性。







結語

   本篇文章說明了如何建立方案,及在方案內新增專案的方法,並說明了專案之間的參考及各個專案間相依性的設定。接下來的系列文章會以實例說明CSLA.NET基本功、商業物件的建立,及各式使用者介面的建構實例。


posted on 2008/4/21 20:49 | 我要推薦 | 閱讀數 : 570 | 文章分類 [ 其他 ] 訂閱

Comments on this entry:

目前沒有回應.

回應:

標題:
姓名:
電子郵件: (將不會被顯示)
個人網頁:
 
 
Please add 8 and 8 and type the answer here: