2008-12-16 54 views
3

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

回答

5

如果您打算在MVC应用程序之外重用模型,则单独的类库仍然是可接受的设置。我这样做,但离开模型文件夹,并把我的意见模型。

如果你想将你的DAL放在WebForms项目的App_Code中,那么我会把它放在你的MVC项目中的模型中。否则,继续像你一样使用单独的项目。

1

我以类似的方式布局我的解决方案 - businessLogic,dataaccess,域对象都驻留在一个项目中。视图(Web,Web服务,Windows窗体,WPF ..)都进入他们自己的独立项目。

这种方式UI特定的代码不会过滤到应用程序的低层。在大多数Web项目中,我不得不将一个窗体绑定到一起,以便将新数据插入数据库或管理某些类型的应用程序,而这些应用程序在Web媒体中不可行。

如果我在业务级别的HttpCaching中烘烤,我将无法在视图之间切换。

1

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

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

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

我喜欢接受批评:)

相关问题