具有业务层和DAL的WPF架构

时间:2014-12-02 14:23:44

标签: c# wpf entity-framework architecture data-access-layer

我在WPF中开始一个新的应用程序,我希望它有一个好的架构,以便它可以维护。我正在使用实体框架,到目前为止我的计划是。

•查看图层:一个项目(启动),包含启动视图和主菜单。每种类型的视图都有不同的项目,例如,如果我有与Books相关的视图,那么我就会有一个名为BooksView的项目,包含所有视图。

•业务层:每种业务类的一个项目,例如BusinessBooks。如果需要,每个人都有一个具有特定操作的存储库和任何帮助程序。

•数据访问层:它包含一个名为Entity Framework的文件夹,其中包含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 个答案:

答案 0 :(得分:6)

虽然我对你的应用程序规模还不太确定,但我觉得你已经开始走上正确的道路来分离问题了。

但是,如果为每个视图类别创建单独的项目不会引入不必要的复杂性,则可能需要重新考虑。

我不确定你是否是WPF的新手,但是对于View层来说,为了更好的可维护性,松耦合和可测试性等,MVVM是组织事物的最佳选择模式。 为了获得MVVM,您可以从头开始手动编码所有内容,或者有很好的框架,例如:

MVVM Lite

Assisticant

此外,如果您计划使用相对较大的(外行术语!!)/企业级应用程序,并且由于您正在寻找高度可维护,灵活的应用程序,您可以考虑使用PRISM framework from MicrosoftPrism Guidance and downloadable PDFs etc.

完成View部分后,您需要关注应用程序的Validations以及是否要在ViewModel或域对象中实现验证。辅助框架内置了一些很好的以域为中心的验证机制。

对于数据访问层,由于您选择使用EF,从我到目前为止的理解,Unit-Of-Work with Repository pattern将极大地帮助您获得可扩展性,可测试性等功能。

如果您计划对应用程序的单元可测试性和松散耦合进行高度计划,则需要考虑使用适当的框架来控制和依赖注入的反转。

Here您可以检查WPF应用程序框架,以了解如何以分层方法组织WPF应用程序的不同区域。

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