威尼斯手机娱乐官网平台领域模型(DomainModel)与

2019-11-07 04:41栏目:威尼斯手机娱乐官网平台
TAG:

威尼斯手机娱乐官网平台领域模型(DomainModel)与视图模型(ViewModel)。    Model-View-Controller(模型-视图-调节器,MVC卡塔尔情势将您的软件协会并分解成四个完全不一样的剧中人物:

  • 威尼斯手机娱乐官网平台领域模型(DomainModel)与视图模型(ViewModel)。威尼斯手机娱乐官网平台领域模型(DomainModel)与视图模型(ViewModel)。Model 封装了你的利用数据、应用流程和职业逻辑。
  • View 从 Model 获取数据并格式化数据以举办展示。
  • Controller 调整程序流程,选用输入,并把它们传递给 Model 和 View。

    与任何设计形式不一致,MVC 方式并未直接展现一个你可以看到编写或配备的类组织。相反,MVC 更像二个定义上的点拨原则或范型。概念上的 MVC 格局被描述为八个对象 —— Model、View 和 Controller —— 之间的涉嫌。由于 View 和 Controller 都足以从 Model 哀告数据,所以 Controller 和 View 都依据Model。任何输入都经过 Controller 踏入你的类别,然后 Controller 接受二个View 来发出结果。

    Model 满含了您的应用逻辑和数量,在您的应用程序中,它很也许是重要的值驱动器。Model 未有其余与表现层相关的特色,而且也和 HTTP 乞请管理职务中完全无关。

    Domain Model 是三个指标层,是对现实世界逻辑、数据和你应用程序所拍卖的主题素材的虚幻。

威尼斯手机娱乐官网平台领域模型(DomainModel)与视图模型(ViewModel)。    Domain Model 可分为两大类:Simple Domain Model 和 Rich Domain Model。

  • Simple Domain Model 往往是职业对象和多少库表之间意气风发对后生可畏的通讯。你已经见过的二种方式 —— Active Record、Table Data Gateway,以至 Data Mapper,全部那些与数据库相关的设计方式 —— 能够援助你把与数据库相关的逻辑组织成一个 Domain Model。
  • Rich Domain Model 包蕴复杂的,使用持续机制紧凑联系在一起的靶子互联网,在本书和 GoF 生龙活虎书中牵线的大多方式起着杠杆作用。Rich Domain Models 往往是柔性的,精心测验过的,不断重构的,并且与它们所抒发的领域所需的政工逻辑严密耦合。

威尼斯手机娱乐官网平台领域模型(DomainModel)与视图模型(ViewModel)。    接纳哪一类 Domain Model 类型决定于你的应用场境。假设你正在建构的是二个特别轻易的表单管理web 应用,没必要营造 Rich Domain Model。然则,若是你正在编辑五人股票总值数百万的店堂内联网架构的骨干库,那么拼命付出三个Rich Domain Model 正是值得的,它可感觉您提供二个准确表明业务进度的阳台,并可以让您火速传输数据。

    MartinFowler 在 PoEAA 中而且省略介绍了两种 Domain Model。而 Eric Evans 的 Domain Driven Design 大器晚成书,则统统静心于 Rich Domain Model 的实行应用和支出进度。

    View 用于拍卖全数表现层方面包车型大巴标题。View 从 Model 获取数据,并能够把它格式化成用于 web 页的 HTML,用于 web 服务的 XML,或用于 email 的文件。

    大多的MVC格局的兑现也都接受二个View Model或Application Model的定义,Controller是沟通的红娘,架起世界模型和客户界面之间的大桥,归于表现层。为了View的轻巧性,Controller负担管理可能将世界模型调换到多个View Model,那平时可以称作数据传输对象(DTO卡塔尔国

    DomainModel != ViewModel

    DomainModel代表着相应的域,但ViewModel却是为View的内需而创建。这两个之间或然(日常处境下都)是差异的,其它DomainModel是数量增加行为的组合体,是由复杂的变量类型组成的还要具有档案的次序。而ViewModel只是由局地String等简单变量类型组成。借使想移除冗余而且轻松形成出错的ORM代码,可以利用AutoMapper.借使想要理解更加多。

    这正是说领域模型(Domain Model 卡塔 尔(阿拉伯语:قطر‎和视图模型(View Model卡塔 尔(英语:State of Qatar)有怎么样不相同啊?

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

    那些实体有成都百货上千性质,有生机勃勃致或看似的称谓,你能够相当的轻易地映射领域实体对应视图模型中的叁本性质。可是,这几个雷同的性质也可能略有不相同,比方类型也许格式。比方,顾客填写的客户分界面包车型地铁三个属性,他在视图模型里或者是叁个“Nullable”的。

    其他方面,领域实体只怕需求贰个因而验证的官方的值,所以必要三个在客商分界面包车型大巴圈子模型之间的转换。另贰个事例是,客户分界面大概会来得二个滑块,用于顾客选用多少天过后提交他的订单。在这里种情形下,视图模型大概使用叁个平头性情来代表,领域模型平时是一个日期值。

    视图模型平常只含有领域模型的三个子集,而且只包蕴分界面上所需求的性质。其他,视图模型大概是叁个世界模型树的扁平版本,举例,一个Customer实体有三个Address,而那又是一个全部,它包括街道地址,邮政编码,国家等。二个Customer 视图模型用于展现数据,将地方数据拉平填充到视图模型类里。

    别的要是贰个View供给相同的时候管理多少个领域模型,View Model便是那多少个Domain Model的总和。领域模型和视图模型之间有无数相似的地点,大家平常干脆就把Domain Model当做View Model来利用了。
    上边探讨了世界模型和视图模型的相通性,大家来走访都有二种方法把世界模型调换为视图模型,经常有3种办法:

  • 把世界模型充当视图模型来用,也正是世界模型正是视图模型,超越57%都以那般用的。
  • 视图模型里面满含四个天地模型,定义一个视图模型,里面满含了三个世界模型,通过质量形式进行走访。
  • 将世界模型映射到视图模型,领域模型并未一贯照射到视图模型,须要管理这种映射关系。

    大家不建议直接把世界模型实体暴露给视图,因为有成都百货上千分寸的地方,大概导致您混合业务和表示层的逻辑,不论是领域实体的性质展现依然专门的学问的表明准则,那都是应用程序管理的两样地点。

    直接将你的世界模型作为Conroller上的拍卖参数直面着平安危害,因为Controller只怕Model binder必需保障属性验证和客户无法修正她本身不能改改的属性(比如,客商手动更新了叁个潜藏的输入值,或追加八个万分的属性值,而以此并非界面上的要素,但却赶巧领域模型实体的天性,这种高风险叫做“over-posting”卡塔 尔(英语:State of Qatar),纵然对如今版本的领域模型做了不易的认证,领域模型以往恐怕做了退换修改,并从未现身编写翻译错误只怕警告,或者招致新的高危机。
    咱俩理应防止使用前二种方法将世界模型转变来视图模型,推荐应用第三种办法,定义单独的视图模型类。做这种领域模型到视图模型的调换专门的学业是大器晚成种重复性的干活,已经有多少个工具得以扶植你来完毕那项职业。最常用的二个工具正是.NET 社区的开源项目AutoMapper。

 (个人掌握:针对域模型与视图模型,不常候供给看现实的事体场景,日常景色下得以遵守上述将DomainModel和ViewModel实行数量映射,以幸免有个别安全性难点;不过也得以将DomainModel当成ViewModel来行使也是能够的,通过在系统贯彻、业务逻辑操作和决断上是足以保障职业安全性的。正是前面一个也要扩充剖断以确认保证卫安全全性。所以,如故看现实事情系统的利用蒙受与必要来决定利用哪类情势来达成。

 

小说转发自:

版权声明:本文由威尼斯手机娱乐官网平台发布于威尼斯手机娱乐官网平台,转载请注明出处:威尼斯手机娱乐官网平台领域模型(DomainModel)与