Asp.net mvc ASP.NET MVC 4中的域对象建模

Asp.net mvc ASP.NET MVC 4中的域对象建模,asp.net-mvc,asp.net-mvc-4,model,Asp.net Mvc,Asp.net Mvc 4,Model,我遵循的是Pro ASP.NET MVC 4,本书建议创建一个包含两个项目的Visual Studio解决方案(SportsStore)——SportsStore.Domain(类库)和SportsStore.WebUI(MVC 4 web应用程序),而不是为web应用程序创建一个MVC 4项目 这些模型不是在sportstore.WebUI models文件夹中创建的,而是在sportstore.Domain的Entities文件夹中创建的,并通过存储库公开。这本书表明这是一种惯例/最佳实践

我遵循的是Pro ASP.NET MVC 4,本书建议创建一个包含两个项目的Visual Studio解决方案(SportsStore)——SportsStore.Domain(类库)和SportsStore.WebUI(MVC 4 web应用程序),而不是为web应用程序创建一个MVC 4项目

这些模型不是在sportstore.WebUI models文件夹中创建的,而是在sportstore.Domain的Entities文件夹中创建的,并通过存储库公开。这本书表明这是一种惯例/最佳实践


这是真的吗?若然,原因为何?这是一种常见/最佳实践吗?这是大多数ASP.NET MVC应用程序的通用方法还是更大的应用程序?

最佳实践几乎不适用于所有情况,这就是为什么我们需要专业软件开发人员做出判断。如果您知道您只是创建了一个简单的演示web应用程序,而该应用程序将被丢弃,那么为您的实体创建一个单独的项目可能就不值那么多麻烦了。在这种情况下,时间优先于可扩展性

话虽如此,大多数现实世界的项目都有单独的实体项目。即使实体项目只会被您的web项目使用,有时分离只是为了指导您进行良好的设计


至于存储库,它们并不总是一个好主意,有时会创建一个不需要的抽象。例如,请参见。我只想补充一下Jason所说的内容。MVC框架背后的整个思想是分离关注点。对于一个单独的项目,您允许一个人或一个团队处理应用程序的特定领域。此外,项目将不知道应用程序的其余部分发生了什么-它只是提供实体(模型)


此外,我个人发现,一旦进入站点的UI方面,MVVM模式就特别有用。屏幕很少与您的数据结构完全匹配,因此视图模型在视图和实体之间提供了一个很好的中介。

这将取决于您是否希望在另一个应用程序中表达相同的模型(无论是另一个MVC应用程序、Windows应用商店应用程序、winforms后端等),因为您可以重用相同的程序集。。。