【问题标题】:WPF Architecture with Business Layer and DAL具有业务层和 DAL 的 WPF 体系结构
【发布时间】:2015-01-30 20:02:24
【问题描述】:

我正在 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();
        }
    }

这种方法有什么好处吗? 提前谢谢你们。

【问题讨论】:

  • 如果它只是一个客户端应用程序,那么这是一个很好的关注点分离

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


【解决方案1】:

虽然我不太确定您的应用程序规模,但在我看来,您已经开始走上关注点分离的正确道路。

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

再次,我不确定您是否是 WPF 新手,但对于 View 层而言,为了更好的可维护性、松散耦合和可测试性等,MVVM 是组织事物的最佳选择模式。 为了使 MVVM 到位,您可以从头开始手动编码所有内容,或者有一些不错的框架可用,例如:

MVVM Lite

Assisticant

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

完成视图部分后,您需要关注应用的验证,以及您是在 ViewModel 中还是在域对象中实现验证。 Assisticant 框架内置了一些良好的以领域为中心的验证机制。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2012-11-27
    • 2017-10-10
    • 2018-09-15
    • 2015-11-28
    • 2014-04-13
    • 2012-07-12
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多