与视图模型

2019-10-14 21:04 来源:未知

    Domain Model 可分为两大类:Simple Domain Model 和 Rich Domain Model。

    直接将你的圈子模型作为Conroller上的管理参数面前遭受着安全危机,因为Controller恐怕Model binder必得确认保证属性验证和顾客不能够修改她要好无法修改的属性(譬如,客户手动更新了一个潜藏的输入值,或追加多少个外加的属性值,而以此并非分界面上的要素,但却恰巧领域模型实体的个性,这种高风险叫做“over-posting”),纵然对最近版本的领域模型做了科学的印证,领域模型今后也许做了变动修改,并从未出现编写翻译错误大概警告,恐怕导致新的高风险。
    我们应当幸免使用前三种格局将世界模型转变到视图模型,推荐使用第两种办法,定义单独的视图模型类。做这种领域模型到视图模型的调换专门的学业是一种重复性的干活,已经有多少个工具得以扶持你来实现那项专门的学业。最常用的二个工具正是.NET 社区的开源项目AutoMapper。

    视图模型平日只包涵领域模型的三个子集,何况只含有分界面上所急需的性质。其余,视图模型可能是二个天地模型树的扁平版本,比如,三个Customer实体有一个Address,而那又是贰个完完全全,它蕴涵街道地址,邮编,国家等。一个Customer 视图模型用于展现数据,将地方数据拉平填充到视图模型类里。

    Model-View-Controller(模型-视图-调节器,MVC)方式将你的软件组织并分解成多少个完全区别的剧中人物:

 

    与别的设计形式分歧,MVC 形式并未直接体现三个你能够编写或安顿的类组织。相反,MVC 更像一个定义上的引导标准或范型。概念上的 MVC 格局被描述为四个对象 —— Model、View 和 Controller —— 之间的关联。由于 View 和 Controller 都能够从 Model 央浼数据,所以 Controller 和 View 都依赖Model。任何输入都因而 Controller 进入你的种类,然后 Controller 采用一个View 来发生结果。

    这个实体有为数不菲品质,有平等或相近的名号,你能够很轻松地映射领域实体对应视图模型中的叁特个性。不过,那么些相似的性情也大概略有不一致,比方类型大概格式。比如,顾客填写的客商分界面包车型大巴壹天性质,他在视图模型里可能是八个“Nullable”的。

    Model 包括了你的应用逻辑和数目,在您的应用程序中,它很可能是重大的值驱动器。Model 未有其他与表现层相关的特征,而且也和 HTTP 央求管理职务中完全无关。

  • 把世界模型充作视图模型来用,也正是小圈子模型正是视图模型,大多数都以那样用的。
  • 视图模型里面包涵一个世界模型,定义一个视图模型,里面包蕴了三个领域模型,通过品质方式展开拜候。
  • 将世界模型映射到视图模型,领域模型并未一贯照射到视图模型,必要管理这种映射关系。

    DomainModel != ViewModel

小说转发自:

    选择哪类 Domain Model 类型决定于你的应用境况。如若你正在创设的是一个特别轻巧的表单管理web 应用,没须求建构 Rich Domain Model。可是,如果你正在编写制定一个市场股票总值数百万的营业所内联网架构的基本库,那么拼命付出一个Rich Domain Model 正是值得的,它可以为你提供八个标准表明业务过程的阳台,并得以让您快捷传输数据。

    View 用于拍卖全部表现层方面包车型地铁问题。View 从 Model 获取数据,并得以把它格式化成用于 web 页的 HTML,用于 web 服务的 XML,或用于 email 的公文。

  • Model 封装了你的施用数据、应用流程和事务逻辑。
  • View 从 Model 获取数据并格式化数据以开展突显。
  • Controller 调节程序流程,接收输入,并把它们传递给 Model 和 View。

    大多的MVC格局的完成也都接纳八个View Model或Application Model的定义,Controller是交换的红娘,架起世界模型和顾客分界面之间的大桥,属于表现层。为了View的轻易性,Controller担负管理照旧将世界模型变换到叁个View Model,那常常称得上数据传输对象(DTO)

    我们不提议直接把世界模型实体暴露给视图,因为有这个细小之处,可能变成你混合业务和表示层的逻辑,无论是领域实体的习性显示依旧工作的认证法则,那都是应用程序处理的例外市方。

    DomainModel代表着相应的域,但ViewModel却是为View的需求而创办。这两个之间也许(日常景观下都)是分裂的,别的DomainModel是数额增进行为的组合体,是由复杂的变量类型组成的还要存有档期的顺序。而ViewModel只是由一些String等轻便变量类型组成。要是想移除冗余况且轻巧导致出错的ORM代码,能够选用AutoMapper.倘若想要领会越来越多。

    别的如若二个View须要同临时候管理多少个世界模型,View Model就是那多少个Domain Model的总的数量。领域模型和视图模型之间有广大学一年级般的地点,我们日常干脆就把Domain Model当做View Model来利用了。
    上面商量了世界模型和视图模型的相似性,大家来拜候都有几种艺术把世界模型调换为视图模型,日常有3种方法:

    在ASP.NET MVC的应用程序中时时能够可以看来View Model,平时大家都觉着世界模型和视图模型是同贰个事物。那极其是把世界模型满含在数码传输对象DTO里的时候,举例使用Entity Framework之类的ORM工具生成的实业。在这种状态下,领域模型和视图模型富含的实体特别相像,都以局地粗略的CRUD操作。

    那正是说领域模型(Domain Model )和视图模型(View Model)有怎么样不一样呢?

    Domain Model 是贰个对象层,是对切实世界逻辑、数据和您应用程序所拍卖的难题的空洞。

    另一方面,领域实体或然需求一个透过认证的官方的值,所以须要二个在客商分界面包车型客车圈子模型之间的改变。另贰个例子是,客商分界面大概会显得一个滑块,用于顾客挑选多少天以后提交他的订单。在这里种状态下,视图模型大概应用三个整数性质来表示,领域模型日常是一个日期值。

 (村办了然:针对域模型与视图模型,有时候供给看具体的作业场景,平时意况下能够依据上述将DomainModel和ViewModel进行多少映射,防止止有个别安全性难题;可是也足以将DomainModel当成ViewModel来利用也是足以的,通过在系统达成、业务逻辑操作和判别上是足以确认保证工作安全性的。正是前边叁个也要进行判别以管教安全性。所以,仍旧看具体育赛职业系统的行使境况与供给来支配运用哪一类方式来贯彻。

  • Simple Domain Model 往往是专门的学问对象和数据库表之间一对一的通讯。你早已见过的两种情势 —— Active Record、Table Data Gateway,以致 Data Mapper,全数那几个与数据库相关的设计格局 —— 能够协理您把与数据库相关的逻辑协会成四个 Domain Model。
  • Rich Domain Model 包罗复杂的,使用持续机制紧凑联系在一块儿的对象网络,在本书和 GoF 一书中介绍的成都百货上千格局起着杠杆功效。Rich Domain Models 往往是柔性的,精心测量试验过的,不断重构的,何况与它们所抒发的天地所需的事情逻辑严苛耦合。

    MartinFowler 在 PoEAA 中还要省略介绍了二种 Domain Model。而 Eric Evans 的 Domain Driven Design 一书,则统统专一于 Rich Domain Model 的试行应用和支出进度。

TAG标签:
版权声明:本文由澳门国际银河备用网址发布于网页测试游戏,转载请注明出处:与视图模型