ASPNETMVC中使用ViewModel分离领域模型.docx

ASPNETMVC中使用ViewModel分离领域模型.docx

ID:59256887

大小:16.57 KB

页数:2页

时间:2020-09-08

ASPNETMVC中使用ViewModel分离领域模型.docx_第1页
ASPNETMVC中使用ViewModel分离领域模型.docx_第2页
资源描述:

《ASPNETMVC中使用ViewModel分离领域模型.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ASP.NETMVC中使用ViewModel分离领域模型MVC架构模式是近年来编程世界里最长被提及的模式之一,ModelViewController(模型-视图-控制器,MVC)模式将你的软件组织并分解成三个截然不同的角色:  ◆Model封装了你的应用数据、应用流程和业务逻辑。  ◆View从Model获取数据并格式化数据以进行显示。  ◆Controller控制程序流程,接收输入,并把它们传递给Model和View。  与其它设计模式不同,MVC模式并没有直接反映一个你能够编写或配置的类结构。相反,MVC更像一个概念上的指导原则或范型。概念上的MVC模式被描述为三

2、个对象——Model、View和Controller——之间的关系。由于View和Controller都可以从Model请求数据,所以Controller和View都依赖Model。任何输入都通过Controller进入你的系统,然后Controller选择一个View来发出结果。  Model包含了你的应用逻辑和数据,在你的应用程序中,它很可能是主要的值驱动器。Model没有任何与表现层相关的特性,而且也和HTTP请求处理职责中完全无关。DomainModel是一个对象层,是对现实世界逻辑、数据和你应用程序所处理的问题的抽象。DomainModel可分为两大类:Si

3、mpleDomainModel和RichDomainModel。  SimpleDomainModel往往是业务对象和数据库表之间一对一的通信。你已经见过的几种模式——ActiveRecord、TableDataGateway,以及DataMapper,所有这些与数据库相关的设计模式——可以帮助你把与数据库相关的逻辑组织成一个DomainModel。  RichDomainModel包含复杂的,使用继承机制紧密联系在一起的对象网络,在本书和GoF一书中介绍的众多模式起着杠杆作用。RichDomainModels往往是柔性的,精心测试过的,不断重构的,而且与它们所表达的

4、领域所需的业务逻辑紧密耦合。  采用哪种DomainModel类型取决于你的应用环境。如果你正在建立的是一个非常简单的表单处理web应用,没必要建立RichDomainModel。然而,如果你正在编写一个价值数百万的企业内联网架构的核心库,那么努力开发一个RichDomainModel就是值得的,它可以为你提供一个准确表达业务过程的平台,并可以让你快速传输数据。  MartinFowler在PoEAA中同时简要介绍了两种DomainModel。而EricEvans的DomainDrivenDesign一书,则完全专注于RichDomainModel的实践应用和开发过程

5、。View用于处理所有表现层方面的问题。View从Model获取数据,并可以把它格式化成用于web页的HTML,用于web服务的XML,或用于email的文本。  许多的MVC模式的实现也都使用一个ViewModel或ApplicationModel的概念,Controller是沟通的媒介,架起领域模型和用户界面之间的桥梁,属于表现层。为了View的简单性,Controller负责处理或者将领域模型转换成一个ViewModel,这通常叫做数据传输对象(DTO)。12个ASP.NETMVC最佳实践针对Model的最佳实践有这么一段:  7–DomainModel!=Vi

6、ewModel  DomainModel代表着相应的域,但ViewModel却是为View的需要而创建。这两者之间或许(一般情况下都)是不同的,此外DomainModel是数据加上行为的组合体,是由复杂的变量类型组成的并且具有层次。而ViewModel只是由一些String等简单变量类型组成。如果想移除冗余并且容易导致出错的ORM代码,可以使用AutoMapper.如果想要了解更多,我推荐阅读:ASP.NETMVCViewModelPatterns,那么领域模型(DomainModel)和视图模型(ViewModel)有什么不同呢?  在ASP.NETMVC的应用程序

7、中经常可以可以看到ViewModel,经常我们都认为领域模型和视图模型是同一个东西。这特别是把领域模型包含在数据传输对象DTO里的时候,例如使用EntityFramework之类的ORM工具生成的实体。在这种情况下,领域模型和视图模型包含的实体非常相似,都是一些简单的CRUD操作。  这些实体有许多属性,有相同或类似的名称,你可以很容易地映射领域实体对应视图模型中的一个属性。不过,这些相似的属性也可能略有不同,例如类型或者格式。例如,用户填写的用户界面的一个属性,他在视图模型里可能是一个“Nullable”的。  另一方面,领域实体可能需要一个经过验

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。