2014-12-02 49 views
1

我開始在WPF中的新應用程序,我希望它有一個很好的架構,以便它可以維護。我使用實體框架和我迄今爲止的計劃是。WPF架構與業務層和DAL

•查看圖層:具有啓動視圖和主菜單的一個項目(啓動)。例如,如果我有與書籍相關的視圖,那麼我將擁有一個名爲BooksView的項目,其中包含所有視圖。

•業務層:每種業務類型的一個項目,例如BusinessBooks。每個人都有一個具有特定操作的存儲庫和任何助手根據需要進行計算。

•數據接取層:它包含一個名爲實體框架與的DbContext並用T4生成的類和一個名爲ContextCreator類具有下面的代碼文件夾:

public class ContextCreator : IDisposable 
{ 
    private MesaOperativaDB context; 

    public ContextCreator() 
    { 
     context = new MesaOperativaDB(); 
    } 

    public MesaOperativaDB getContext() 
    { 
     return context; 
    } 

    public void Dispose() 
    { 
     context.Dispose(); 
    } 
} 

然後視圖將使用業務層中的任何項目的靜態庫需要,而這個版本庫會使用上面的類來獲取的DbContext和使用它像這樣:

public static List<Novedades> GetNovedades() 
    { 
     using (ContextCreator db = new ContextCreator()) 
     { 
      IQueryable<Novedades> novedades = db.getContext().Set<Novedades>().AsQueryable(); 
      return novedades.ToList(); 
     } 
    } 

是這種做法有什麼好處? 提前謝謝你們。

+1

如果它的客戶端應用程序只有那麼很好的分離問題 – liquidsnake786 2014-12-02 14:25:51

回答

6

儘管我對您的應用程序規模還不太確定,但對我來說,您似乎已經開始了一條分離問題的正確道路。

但是,如果爲每個視圖類別創建單獨項目不會引入不必要的複雜性,您可能需要重新考慮。

我再次不確定您是否是WPF的新手,但對於更好的可維護性,鬆散耦合以及可測試性等視圖層而言,MVVM是組織事物的最佳選擇模式。 爲了得到MVVM在的地方,你可以handcode一切從頭開始或有可喜歡漂亮的框架:

MVVM Lite

Assisticant

此外,如果你正朝着一個比較大的(外行項!!)策劃/企業級應用程序,因爲您正在尋找高度可維護,靈活的應用程序,您可以考慮使用PRISM framework from MicrosoftPrism Guidance and downloadable PDFs etc.

一旦你在View部分定稿,你需要關注你的應用程序的驗證以及你是否要在ViewModel或你的域對象中實現驗證。助理框架內置了一些很好的以域爲中心的驗證機制。

對於數據訪問層,由於您選擇使用EF,據我瞭解,到目前爲止,Unit-Of-Work with Repository pattern將極大地幫助您獲得可擴展性,可測試性等功能。如果您計劃在單元測試性和應用程序的鬆耦合方面做得很好,您需要考慮使用控制反轉和依賴注入,或許還需要一個合適的框架。

Here您可以檢查WPF應用程序框架,以瞭解如何在分層方法中組織WPF應用程序的不同區域。

希望這可以幫助你進一步挖掘。