【问题标题】:Best place to place Domain objects in an ASP.NET MVC App?在 ASP.NET MVC 应用程序中放置域对象的最佳位置?
【发布时间】:2008-12-16 18:43:57
【问题描述】:

我刚刚开始我在 ASP.NET MVC 中的第一个项目。在我的 webforms 经验中,我通常会有一个单独的项目专门用于我的领域层。在这里,我将拥有我的域特定对象以及我的 NHibernate 映射文件和一些业务逻辑。我在网上看到的大多数示例都是将这些类与业务逻辑一起放入 MVC 应用程序的 Models 文件夹中,然后从控制器调用它。根据我的经验,如果需要,这似乎会使该逻辑更难转移到不同的平台上。具体来说,我正在考虑是否需要将其移动到网络表单应用程序中,如果环境要求的话。这可能是一个幼稚的问题,但是将域数据放在自己的项目中还是在 Models 文件夹中更好?

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    如果您打算在 MVC 应用程序之外重用模型,则单独的类库仍然是可接受的设置。我这样做了,但保留 Models 文件夹并将我的视图的模型放入其中。

    如果您将 DAL 放入 Webforms 项目的 App_Code 中,那么我会将其放入您的 MVC 项目中的模型中。否则,请像以前一样继续使用单独的项目。

    【讨论】:

      【解决方案2】:

      我以类似的方式布局我的解决方案——业务逻辑、数据访问、域对象都驻留在一个项目中。视图(Web、Web 服务、Windows 窗体、WPF..)都进入了各自独立的项目中。

      这样,特定于 UI 的代码不会过滤到应用程序的较低层。在大多数 Web 项目中,我不得不拼凑一个 Windows 表单来将新数据注入数据库或管理某种在 Web 媒体中不可行的应用程序。

      如果我在业务级别使用 HttpCaching,我将无法在视图之间切换。

      【讨论】:

        【解决方案3】:

        我使用类似的方法。我也在使用 MVC,我喜欢在单独的项目中使用 POCO 域模型。对于我现在正在构建的应用程序,我有以下项目:

        • Cms.Data
        • Cms.Services
        • Cms.Domain
        • Cms.Web

        Cms.Data 是一个数据访问项目,可将 LinqToSql 或实体框架模型转换为 Cms.Domain 中的 POCOs 模型,反之亦然。 Cms.Services 是一个具有业务逻辑的服务项目,它将 POCO 从/发送到数据层。最后,Cms.Web 是 MVC 项目,它使用来自控制器和 POCO 的服务作为模型。

        我喜欢接受批评:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-09
          • 1970-01-01
          • 1970-01-01
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-30
          相关资源
          最近更新 更多