本文地址:http://www.cnblogs.com/outtamyhead/archive/2013/04/25/3041809.html,转载需保留本地址。

说在前面:

1、由于是头次翻译整本书籍,所以错误难免,希望大家都提出来,翻译的不好还望大家少拍砖多鼓励。

2、该系列没有按照原文直译,而是加入了我的一些言语在里面(在没有改变原意的情况下),所以大家在看的时候希望有所对照。

3、该系列每周出一或二篇博客,因为我最近很忙,一直在加班,很累的说。

4、该系列不提供原版文字,希望看原版的可以自行下载Pdf。

5、该系列省去了前面的废话,单刀直入,讲主体内容。

  出差了一个多星期,现在终于安定下来了。

  应用域驱动开发

  我们已经描述了在你的应用程序中一个域模型如何反映真实的世界,包括对象,过程和规则。域模型是MVC应用程序的核心--其他的,包括视图和控制器,仅仅是与域模型进行交互的方法。

  ASP.NET MVC并不指定域模型要使用的技术。你可以自由的选择任何一种技术来与.NET Framework进行交互--这有很多选择。当然,ASP.NET MVC给我们提供了基础体系结构和约定来帮助我们实现域模型中的类与控制器、视图之间以及MVC框架本身的联系。这包含三大关键特性:

  模型绑定是一个基于约定的特性,它用输入数据来自动的形成模型对象,通常是来自HTML表单提交。

  模型元数据让你把模型的含义描述给框架。例如,你可以给他们的属性提供一个易读的描述或者给出一个它们如何显示的提示。MVC框架随后就可以自动的为你的模型类渲染一个显示或者一个编辑页面到你的视图中。

  验证,在模型绑定时执行并且添加的规则可以被定义为元数据。

  在第二章我们建立我们的第一个MVC应用程序时我们简要的接触了模型绑定和验证--我们将回到这些主题并在第22和23章研究这些功能。现在,我们打算把MVC的实现放在一边,转而考虑域模拟自己的一个活动。我们打算通过使用.NET和SQL Server创建一个简单的域模型,使用一些domain-driven-development(DDD)的核心技术。

  模拟一个示例域

  你可能经历过关于域模型讨论的头脑风暴。它通常包括开发者,业务专家,大量的咖啡,点心和白板笔。之后,房间里的人统一于一个共同的理解然后形成了域模型的初级形态。你的最后结果可能和图3-5相似,这就是这个示例的起点--拍卖应用程序的一个简单的域模型。

  

  这个模型包括一组成员,每一个成员都包含一组报价。每一个报价都对应一个商品,然后每一个商品都有来自不同成员的多个报价。

  通用语言

  把你的域模型当成特定组件实现的一个关键好处是你可以采用你选择的语言和术语来实现。你应该试着找出对象,操作和关系的术语,它不仅对开发者有意义,而且对你的业务专家也是一样。我们建议你当域已经存在时采用域术语当--例如,如果一个开发者提到Users和Roles,它们会被理解成域里面的agents和clearances。我们建议你在域模型中采用后者。而当模拟那些域专家还没有术语的概念时,你们应该对如何引用它们达成一致,生成一个在整个域模型当中通用的语言。

  开发者倾向于代码语言的叫法--类的名称,数据库表等。业务专家则不用理解这些--也不必理解这些。一个有一些技术知识的业务专家是一个危险的东西,因为他会通过他自己对技术的理解不断的过滤他的要求,当这一切发生,你不会真正领会业务需求是什么样的。

  这种方法还有助于在应用程序中避免过度概括。程序员倾向于模拟每一个可能的业务事实,而不是业务需求的特定情况。在这个拍卖模型中,我们也许会最终以关系连接的资源的一般概念来代替成员(members)和商品(items)。当我们创建一个并不与要模拟的模型相匹配的域模型时,我们就失去了获取业务过程实际情形的任何机会--并且,进一步的,

  我们最终会把事务过程的变化以优雅但过于抽象的元世界表示为难以使用的案例。约束并不是限制,而是指导开发沿着正确的方向前进的视点。

  通用语言与域模型之间的关联并不是表面的---DDD专家们建议任何对通用语言进行更改都要在模型中同步更改。如果你让模型偏离了业务域,你有效地生成一个映射到模型和域的中间语言--从长远来看这是在拼写灾难。你会生成一个特殊的人物类,它能解释这两种语言,然后他们会通过对这两种语言的不完整理解来过滤需求。

转载于:https://www.cnblogs.com/outtamyhead/archive/2013/04/25/3041809.html

【译】《Pro ASP.NET MVC4 4th Edition》第三章(二)相关推荐

  1. 【翻译】Pro.Silverlight.5.in.CSharp.4th.Edition - 第三章 布局 03

    目录:点击这里 上一篇:[翻译]Pro.Silverlight.5.in.CSharp.4th.Edition - 第三章 布局 02 使用Canvas基于坐标布局 到目前为止我们还剩下Canvas没 ...

  2. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...

  3. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...

  4. Artech的MVC4框架学习——第三章controller的激活

    第一当目标controller的名称通过URL路由被解析出来后,asp.net mvc利用 ControllerBuilder 注册 ControllerFactory ,根据名称实现对目标contr ...

  5. C Primer Plus 6th Edition第三章编程练习上溢下溢

    3.11 编程练习 1.通过试验(即编写带有此类问题的程序)观察系统如何处理整数上溢.浮点数上溢和浮点数下溢的情况. int类型(整数类型)占用4字节,范围为-2^ 31 ~ 2^31-1 即-214 ...

  6. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  7. 《Pro ASP.NET Core MVC 2, 7th Edition》翻译计划及章节目录

    说明 <Pro ASP.NET Core MVC 2, 7th Edition>主要介绍了ASP.NET Core MVC框架web应用程序的开发. 之前有翻译了.NET Core MVC ...

  8. [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)

    使用特殊方法处理请求生命周期事件 为了在全局应用类中处理这些事件,我们会创建一个名称以 Application_ 开头,以事件名称结尾的方法,比如 Application_BeginRequest.举 ...

  9. 读《asp.net MVC4开发指南(黄保翕编著)》笔记

    在刚刚过去的中秋节中,利用了两天的碎片时间把黄保翕编著的<asp.net MVC4 开发指南>看了遍,笔记如下,欢饮在开发MVC的同学一起来探讨: 1.社区 2.开源程序 3.易测试性 4 ...

最新文章

  1. 全球智能驾驶公司列表
  2. Linux之vim全选、全部复制、全部删除
  3. sklearn快速入门教程:(五)集成学习
  4. 在Eclipse上搭建Android C开发环境
  5. 机器学习入门系列三(关键词:逻辑回归,正则化)
  6. 【数据结构】B树的理解
  7. python网络编程爬虫_Python爬虫--网络编程
  8. bcp文件, 逗号文件
  9. 使用加密工具类进行有效的字符串加密——CSDN博客
  10. ansible介绍+基本操作
  11. SpringBoot与Redis缓存
  12. 招人啦!安卓/Java/数据库/测试等一大波岗位袭来
  13. matlab图像显示 imagesc 和imshow
  14. 9140cdn硒鼓停止_兄弟MFC-9140CDN加完粉怎么清零
  15. 怎么套dedecms(织梦cms)模板
  16. 如何查看台式机计算机网络密码,如何从计算机检查已知的WiFi密码
  17. 方框加对勾怎么输入_如何打出带方框的对号
  18. 首个搭载8MP摄像头的单SoC行泊一体方案来袭,已拿下多家车企定点
  19. html首行缩进2字符,可以使用CSS属性中的【text-indent】进行设置。
  20. XML Publisher介绍

热门文章

  1. 浅谈-LINUX 操作系统启动过程
  2. ubutnu 下SVN 提交时忽略某些文件或文件夹
  3. SQL2005学记笔记(4)
  4. Silverlight 属性样式、控件模板、视觉状态
  5. php selenium下拉列表,Selenium+java - 下拉框处理
  6. 传感器 esp8266_如何使用ESP8266微控制器构建烟雾传感器
  7. 南亚三大半岛_南亚最大的维基百科聚会开始
  8. docker 漏洞_Ghost安全漏洞,Revolution Analytics被收购,Docker领导等
  9. firefox 开源_Firefox 10岁了,Microsoft开源了更多,等等
  10. opensource项目_来自Opensource.com的开放硬件资源