【问题标题】:Which is good architecture with Fluent NHibernate?哪个是 Fluent NHibernate 的好架构?
【发布时间】:2011-09-29 08:00:30
【问题描述】:

我正在使用 MVC 3 和 Fluent NHibernate 开发应用程序。我想知道什么是应用程序的最佳架构,比如我们是否应该将业务层、DAL 和存储库层分开,稍后在业务中定义实体类和映射类,所有接口都在存储库中,所有数据逻辑都在 DAL 中。 任何想法处理应用程序的最佳方式是什么?

谢谢

【问题讨论】:

    标签: asp.net-mvc design-patterns architecture fluent-nhibernate


    【解决方案1】:

    在我看来,S#arp Architecture 是一个很好的代码库,可以帮助您了解使用 NHibernate 和 Fluent NHibernate 作为 ORM 的 ASP.NET MVC 项目的设计良好、松散耦合和域驱动的设计架构。

    【讨论】:

      【解决方案2】:

      一个非常不错的开源项目可以看看是CodeCampServer

      这是我开始的地方,它正在使用您感兴趣的堆栈(MVC,Fluent NHib)

      【讨论】:

        【解决方案3】:

        您可以将业务实体定义到单独的层中。然后,您可以拥有定义与这些业务实体(存储库)的 CRUD 操作的接口。然后您将拥有这些存储库的特定实现:在您的情况下使用 NHibernate。这是您拥有数据访问逻辑和 FluentNHibernate 映射的地方。最后,您将拥有一个服务层,它将定义复杂的业务操作,包括对您的业务实体的多个简单的 CRUD 操作。业务层还可以包含业务验证逻辑。

        由于存储库实现的接口,服务层和数据访问层将弱耦合,业务层不应该知道这些存储库的具体实现。

        最后,您的 MVC 控制器将与服务方法和业务实体一起工作。它位于 UI 层(MVC 应用程序)中,您还可以在其中定义视图模型,以便控制器操作可以在业务实体和视图模型之间映射,并将这些视图模型传递给视图。

        【讨论】:

        • 存储库中的 FluentNhibernate 映射?
        • @alexn,在包含存储库的特定 NHibernate 实现的层内。
        • 当您谈论层时,您不是真的在谈论物理分离(即项目)吗?
        • @alexn,不,不需要物理分离。它可能是但不是必需的。
        • @Darin ,感谢您的回复,我不清楚服务层?你能再定义一下吗?
        猜你喜欢
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多