《ASP.NET MVC 5 网站开发之美》 - 学习笔记

《ASP.NET MVC 5 网站开发之美》

========== ========== ==========
[作者] (台) demo (台) 小朱 (台) 陈传兴 (台) 王育民 (台) 陈仕杰
[出版] 清华大学出版社
[版次] 2015年09月 第1版
[印次] 2017年03月 第2次 印刷
[定价] 128.00元
========== ========== ==========

【第01章】 

(P004) 

目前网页前端技术非常多元化,开发者一定要选择容易自定义与修改的框架作为主要开发框架。

(P005) 

Model 可翻译为数据模型, “数据模型” 用于封装与应用程序在商业逻辑上相关的数据,以及对其数据操作的处理方法。

Model 并不依赖 View 或 Controller ,也就是说 Model 不需要知道它会如何被显示或如何被应用,只需要专注于做好数据访问、定义、验证的责任即可。

在 ASP.NET MVC 中推荐使用强类型的方式设计 Model 层,才可以有效地利用内建的模型绑定 (Model Binding) 与模型验证机制。

(P007) 

在项目初期设计的时候建议将用户接口层和商业逻辑层明确地分离开,后续在开发上也会比较顺手。

(P010) 

开发人员可以在同一项目中增加许多核心引用。

(P011) 

Single Page Application 模板只使用单一页面来呈现各种各样的内容,单一页面的数据交换依赖 JavaScript (Client) 调用 Web API (Server) 获取,所以当开发人员选择使用 Single Page Application 模板时会发现默认同时勾选 MVC 与 Web API 。

(P012) 

T4 为 “Text Template Transformation Toolkit” 的缩写,是一种文字模板转换的工具,利用 T4 可以很容易地生成程序代码。

(P017) 

现在网络交换数据的格式,从以往的 XML 已经渐渐转换到更省流量的 JSON 。

(P022) 

NuGet 会将此项目用到的程序包记录在 packages.config 内,因此程序包还原必须依赖此配置文件,此配置文件请务必加入版本管理。

(P037) 

MVC 的设置方式是后端会将指定的数据传输到前端,不管后端开发者是使用 ViewBag 、 ViewData 、 TempData 或是直接传一个 Model 到前端,默认的 DefaultModelBinder 类都会自动将名称相同的部分自动绑定。

【第02章】 

(P060) 

程序是由数据和算法组成的,在 MVC 应用程序中,算法由 Controller 提供,而数据当然就是由 Model 来提供。

(P061) 

既然 Model 是程序外部提供的数据,也就代表了 Model 并不限于特定技术 (例如 EF) 。

(P062) 

Model 不会主动与数据源沟通,而是利用一个中介层,这个中介层规定了数据源要怎么处理 Model ,包括数据源的访问和 Model 间的数据转换等,这个中介层称为 Repository (主数据资源库) , Repositpry 负责 Model 和数据源间的协调合作。

(P065) 

泛型的表示法由类与类型参数 (type parameter) 所组成,以 List<T> 为例, List 为类名称,而 <T> 则表示此类为泛型类,其中的 T 即是类型参数。

泛型也可以用在属性与方法上。

(P068) 

如果一个泛型类要使用两个以上的类型参数时,可以针对各个不同的类型参数设置 where 的限制,以确保类型参数是必要的。

(P074) 

SQL 指令一定要用参数化查询法,否则就会出现 SQL Injection 的漏洞。

(P082) 

参数化查询是目前唯一可预防 SQL Injection 漏洞的方法。

【第03章】 

(P085) 

LINQ 真正的威力其实并不只是 SQL 指令的终结,而是它隐含对集合对象的强大访问能力,以及为了实现 LINQ 技术而在 .NET Framework 内所添加的各种扩展能力,这些能力才是 LINQ 真正的价值所在。

(P089) 

LINQ 本身的基础建设实现于 System.Linq 命名空间内,若没有使用 using 引入这个命名空间的话,所有 LINQ 功能都无法使用。

(P091) 

对象初始化器 (object initializer) 允许在程序中通过声明的方式直接给对象属性进行数值的初始化,而不必刻意建立有参数的构造函数,可降低程序员维护多个构造函数的负担。

(P092) 

对象初始化器可和有参数的构造函数并用。

对于数组或集合的赋值,刻意利用相似的语法来实现,不过在初始化器内所初始化的不是集合的属性,而是集合内的元素。

(P093) 

匿名类型虽然好用,但它有几个麻烦的限制 :

1. 匿名方法一般只会用在同一个函数内,如果要让它被其他函数共享,则必须要动用到 Reflection ,或是利用 .NET 4.0 提供的动态类型 (dynamic types) 机制;

2. 匿名类型只能有属性,不可以有方法、事件或字段等;

3. 两个匿名类型对象的相等 (equal) ,必须要两个对象的属性值都相等才行;

4. 匿名类型的初始化只能利用对象初始化器来进行,其属性在生成后会变成只读;

基本上,只要是匿名类型就一定得使用 var 来声明,若是现有的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值