asp.net-mvc – MVC范例中的模型,域,存储库和服务有什么区别?
模型,域和存储库基本上是一回事吗?
解决方法
没有.
区分域模型与其包含的存储库的第一种方法是考虑存储库的作用. 从本质上讲,存储库只是封装了一大块数据访问代码,以这种方式暴露给定的接口,以便程序员可以轻松地交换不同的存储方法,例如,独立于数据库问题测试其他代码. 相比之下,域模型包含给定应用程序的所有必需存储库.因此,很明显它是一个非常不同的野兽. 一个更大的野兽. 域模型还将包括其他代码和类,例如通过控制器传递给Views的模型(在MVC范例中). 一派思想坚持认为域模型应该在自己的类库中.这种思想反对在默认的MVC项目中使用Model文件夹.我同意这一点,通常会将其删除. 域模型为域建模.它与传递给每个视图的模型不同,它实际上只代表视图所需的数据,而不是对给定的业务问题进行建模,包含存储库和服务等. 我认为你的问题是一个很好的问题,因为它解决了一个很容易被混淆的问题,如果你不了解它们背??后的想法. 首先是鸡肉还是鸡蛋?答:都没有.首先是问题. DDD: 这些概念是领域驱动设计的一部分,它不是关于给定的技术实现,而是关于如何标准化需要转换为软件的复杂域的理解和建模的一套指南. MVC的一大优点是它允许你使用像Domain Driven Design这样的东西.相比之下,在ASP.NET webforms中,在尝试应用良好的设计原则时,您会受到更多限制. 即,MVC允许您设计您的应用程序,以便将域的表示封装在MVC的M位中. 在一天结束时,由你来到M位有多远.它可以只在Models文件夹中,或者你可以将它重构到它自己的类库中,并根据你的内容重构它,实现DDD最佳实践或你想要的任何其他. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – SignalR维护浏览器刷新时的连接ID
- 浅谈ASP.NET Core 2.0 部分视图(译)
- asp.net-mvc – 使用数据注释进行自定义验证
- asp.net-mvc-4 – 使用ASP.NET MVC进行基于声明的授权
- .net – 有人有一个例子,说明为什么我会主持一个WCF服务
- asp.net-mvc – 可以为多个部署转换MVC视图,例如web.config
- asp.net-mvc-2 – 如何通过ASP.NET MVC 2.0中的textarea接受
- 在Asp.Net中使用JQuery绑定DropDownlists
- asp.net – 如何在VB.net中使用Dictionary?
- asp.net – 使用FormsAuthentication持久的cookie超时
- asp.net – 如何在使用服务器端分隔符时转义字符
- 为什么ASP.NET回发时请求cookie属性为null或不正
- asp.net-mvc – ASP.NET MVC – 仅经过身份验证的
- ValidateInput属性似乎无法在ASP.NET MVC中工作
- ASP.NET MVC2模型验证失败,非美国日期格式
- exception throw in progress runner thread_VS2
- asp.net-core – 无法在VS2015中定位netstandard
- asp.net – 如何在ListView中使UpdatePanel工作?
- ASP.NET Web API 2:通过本机移动(iOS)应用程序与
- asp.net – SelectedDate不适用于Calendar对象