在ASP.NET MVC应用程序中放置域对象的最佳位置是什么?

3
我刚开始在ASP.NET MVC中进行我的第一个项目。在WebForms的经验中,我通常会有一个专门用于我的领域层的单独项目。在这里,我将拥有我的特定领域对象以及NHibernate映射文件和一些业务逻辑。我看到的大多数示例都将这些类以及业务逻辑放入MVC应用程序上的Models文件夹中,然后从控制器调用它们。根据我的经验,如果需要将该逻辑移动到不同的平台,则这样做似乎会更加困难。具体来说,我在考虑如果环境要求,需要将其移动到WebForms应用程序中的可能性。这可能是一个天真的问题,但是将领域数据放在自己的项目中还是放在Models文件夹中哪个更好呢?
3个回答

5
如果您计划在MVC应用程序之外重用模型,则单独的类库仍然是可接受的设置。我会这样做,但是保留Models文件夹并将我的视图模型放在其中。
如果您将DAL放在Webforms项目中的App_Code中,则我会将其放在MVC项目的Models中。否则,请继续使用像以前一样的单独项目。

1
我通常以相似的方式布置我的解决方案——业务逻辑、数据访问、域对象都位于同一个项目中。视图(Web、Web服务、Windows表单、WPF等)都放在它们自己的独立项目中。
这样,UI特定的代码不会过滤到应用程序的较低层。在大多数Web项目中,我不得不hack一下窗体来注入新数据到数据库或管理某些在Web媒介上不可行的应用程序类型。
如果我在业务层级中加入HttpCaching,那么我将不能在视图之间切换。

1

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

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

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

我喜欢接受批评 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接