**《全栈工程师 Web 开发指南》

========== ========== ========== [作者] (意) Dino Esposito [译者] (中) 李永伦 [出版] 人民邮电出版社 [版次] 2019年03月 第1版 [印次] 2019年03月 第1次 印刷 [定价] 79.00元 ========== ========== ==========

【第02章】 【选择支撑架构】

(P018)

领域模型模式的要点是构建一个完全体现业务领域的行为和流程的面向对象模型。

DDD 愿景中的全部持久化问题都委托给领域服务,尤其是仓库。

(P020)

对于领域模型而言,值类型的角色比很多人想象的重要得多。值类型是更精确地建模真实世界的工具。

【第03章】 【用户体验驱动设计】

(P038)

好的 UI 不一定是好的 UX 。好的 UX 可能是有效的,但可能没那么美观。

(P044)

不管物理层、逻辑层、框架、数据库和技术是什么,对于最终用户而言,软件系统唯一重要的是用户界面,确切地说,是这个应用程序的用户体验和感知速度。

【第04章】 【Web 解决方案的架构选项】

(P053)

ASP.NET Core 1.0 最复杂的部分是选择要使用的 .NET CLR 。

DNX 运行时环境 (新的 ASP.NET 运行时) 是一个托管进程,其职责之一就是加载 CLR 。

(P054)

ASP.NET Core 1.0 支持任何版本为 4.5.2 或更新的 .NET Framework 。

(P060)

如果你确定用 HTTP 作为传输协议,务必弃 WCF 投 ASP.NET Web API 。

(P063)

SPA 的主要目的是给用户带来更流畅的体验,移除所有整页刷新,使交互更像桌面应用程序。

(P064)

SPA 和传统的 ASP.NET 代码非常不同,它通常包含 JavaScript 代码和客户端数据绑定技术。

编写 SPA 需要很强的 JavaScript 技能,需要开发者能熟练运用选择的 SPA 框架。要构建真正的 SPA ,你需要一个专业的 SPA 框架,如 AngularJS 、 Durandal 或者 Ember 。学习使用任何这些框架都相当于学习一门新的编程语言。或许入门很容易,但精通可能要花一定的时间,而时间就是金钱。

【第05章】 【Web 解决方案的架构选项】

(P067)

业务流程不只是软件中最重要的东西 —— 它们是唯一重要的东西,没有任何妥协。

(P068)

业务层分解为应用程序层和领域层。这样做是为了整顿灰色地带,使之明确有两种业务逻辑 —— 应用程序和领域。应用程序逻辑精心安排由表现层触发的任何任务。领域逻辑是特定业务的核心逻辑,可以跨越多个表现层重用。

(P069)

在 ASP.NET MVC 中,有几种方式把要整合到结果视图中的数据传给视图引擎。你可以用公共字典 (如 ViewData) 、动态对象 (如 ViewBag) 或者量身定制的包含所有要传递的属性的类。

应用程序层接收输入模型类,并返回视图模型类。

(P070)

在 ASP.NET MVC 解决方案中,你可以直接从控制器通过一些仓库类调用基础设施层。但通常而言,在控制器 (作为表现层的一部分) 和仓库 (作为基础设施层的一部分) 之间有一到两个中间层。

(P071)

任何软件,即使是最简单的数据输入应用程序,都是针对业务领域编写的。每个业务领域都有自己的规则。规则数量有时候接近零,但作为一名架构师,你应该任何时候都为业务规则留下空间。最后,每个业务领域暴露一种应用程序接口 (API) 。表现层允许终端用户与这种 API 交互的方式 (用例) 决定了应用程序层。

【第06章】 【ASP.NET 的现状】

(P079)

ASP.NET MVC 打破服务器控件的黑盒,降低开发的抽象级别,使之更接近 HTTP 的实际运作方式。

(P080)

大多数响应都使用 JavaScript 和酷炫的框架在客户端上渲染 Web 视图。 AngularJS 是最重要的框架,但 React 是另一个很不错的选择。

(P081)

技术只是工具,业务才是主角。

【第07章】 【ASP.NET Core 1.0 的来龙去脉及技术细节】

(P086)

ASP.NET Core 是首个支持 .NET Core 框架的框架。

ASP.NET Core 基于一个支持多个不同 CLR 的运行时托管环境。这个运行时托管环境也是跨平台的,因而使得 ASP.NET Core 应用程序也能在 IIS 服务器以及 Windows 操作系统之外很好地托管。这个运行时托管环境叫做 DNX ,它是 .NET Execution Environment 的缩写。

(P087)

DNX 提供了运行 ASP.NET Core 应用程序所需的基础设施。 DNX 本质上是一个托管进程,包含必要的逻辑来加载和托管合适的 CLR —— 不管它是完整的 CLR 还是 CoreCLR 。 DNX 也包含发现代码入口点和实际调用它的逻辑。

(P089)

在 ASP.NET Core 中,托管层主要负责确定应用程序将会运行在哪个 Web 服务器上 (不管是 IIS 还是 Apache) 以及传入请求的 Web 监听器。接着,托管层会确定启动逻辑并启动应用程序。

在 ASP.NET Core 中,应用程序的入口点是 Startup 类上的 Configure 方法。

ASP.NET Core 应用程序利用一个全新的应用程序通道,意味着传入请求会经过一组配置好的运行时模块,让它们有机会在这个过程中读取和修改这个请求。在通道的末尾,请求会由应用程序执行。

在 ASP.NET Core 通道中,模块的调用顺序来自 Startup 类的代码而不是 web.config 文件的某个节点。

所有可以从通道中调用的模块构成了应用程序的中间件。在执行各自的任务之后,每个中间件组件都可以把请求传给下一个组件,或者强制返回响应给调用方。这主要取决于这个中间件组件的作用。

(P090)

ASP.NET 附带一堆预定义的中间件组件,其中一个是异常处理器。你应该在通道较前的地方调用它,以便有更多的机会来捕获异常。

你可以通过调用 UseXxx 、 Run 或者 MapXxx 扩展方法来注册通道模块。大多数中间件组件都以预定义的 UseXxx 扩展方法的形式从 IApplicationBuilder 对象暴露出来,这个对象是 Startup 类从 ASP.NET 托管层接收到的。

(P091)

wwwroot 文件夹的目的是分离代码文件和静态资源文件。

bower.json 文件在概念上相当于只用于客户端文件的 packages.config 。

(P093)

DNX 进程托管一个通用的 ASP.NET Core Web 服务器 (跨平台的) ,它知道如何通过 ASP.NET Core 通道处理请求。这个通用的 Web 服务器叫作 Kestrel 。

(P094)

Startup 类包含两个方法 : Cnfigure 和 ConfigureServices 。这两个方法都从 ASP.NET Core 运行时调用。前者用来配置 HTTP 请求通道,后者用来向 ASP.NET Core 请求栈注入服务。

(P095)

Configure 方法必须至少接受一个 IApplicationBuilder 参数。但是,你可以有选择性地添加另外两个类型的参数, IHostingEnvironment 和 ILoggerFactory ,运行时会把它们传给你。

在 ASP.NET Core 中,服务是一个应用程序的各个部分都可能使用的共享组件。

【第08章】 【ASP.NET MVC 的精髓】

(P107)

路由是表示 URL 绝对路径 (即没有协议、服务器和端口信息的 URL 字符串) 的模式匹配字符串。路由可能是常量字符串,但通常会包含一些占位符。

(P108)

占位符通常叫做 URL 参数,是一个包含在花括号 ({}) 中的名字。一个路由可以有多个占位符,只要它们有常量或分隔符分开就行了。斜杠 (/) 字符充当路由各个部分之间的分隔符。占位符的名字是你在代码中通过编程的方式从实际 URL 获取对应部分内容的键。

想要多少路由和占位符,就添加多少,甚至可以移除默认路由。

RegisterRoutes 是在 RouteConfig 类上的一个方法。

(P112)

ASP.NET MVC 中的特性路由必须显式启用。

【第09章】 【Bootstrap 的精髓】

(P135)

Bootstrap 提供直接的方式,把 HTML 块变成现代网站所需的更加成熟的可视化元素。

LESS 文件是构建在普通 CSS 语法之上的一个抽象层,让开发者可以声明一个 CSS 文件最终将会如何使用。你可以把 LESS 看作一门编程语言,一旦编译就会产生 CSS 。在 LESS 文件里,可以使用变量、函数和运算符,因此极大地提高了创建和维护大型复杂 CSS 样式表的流程效率。

(P139)

Bootstrap 的快速普及的其中一个关键原因是创建从不同类型设备看起来不错的页面成本很低。

Bootstrap 有一个灵活的网格系统,它把水平可用空间分成 12 等份物理列。

(P147)

在 Bootstrap 中, btn 类会把提交按钮、常规 HTML 按钮和锚变成可点击的方形区域。 btn 类的效果是纯图形的,它所做的就是添加填充、边框、圆角和颜色。

【第10章】 【ASP.NET MVC 项目的组织方式】

(P174)

分层架构模式给出四个关键逻辑层 : 表现、应用、领域和基础设施。

【第12章】 【编辑数据】

(P235)

ASP.NET MVC 的 xxxFor 辅助方法施展了读取 ModelState 字典的魔法,然后把输入字段的 value 属性设为最后已知状态。

在 xxxFor HTML 辅助方法中,你可以找到 Html.ValidationMessageFor 和 Html.ValidationSummary 。

【第13章】 【持久化和建模】

(P261)

O/RM 的诞生是为了保护开发者免受 SQL 编程的复杂性的困扰,避开类和记录之间的不匹配问题。

【第14章】 【创建更具交互性的视图】

(P272)

在 Microsoft .NET Framework 中,有两个流行的库可以处理 JSON 数据,一个是 JavaScriptSerializer 类,可以在 System.Web.Extensions.dll 程序集中找到,另一个是 JSON.NET ,可以在 newtonsoft 官方网站中找到,或者通过 NuGet 安装。

(P285)

大多数时候,开发者使用 jQuery 工具而不是 XMLHttpRequest 对象来发起 Ajax 调用。 jQuery 库包装了浏览器的基础设施并提供友好的编程体验。

(P288)

所有客户端数据绑定库都采用一个填满数据占位符的模板,并从提供的数据模型把数据插进去。

mustache.js 要求把模板作为单独的元素提供,嵌在 SCRIPT 标签中。 **