2014-12-02 128 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应用程序的不同区域。

希望这可以帮助你进一步挖掘。