【ASP.NET+MVC4+Web+编程】读书笔记
模型:数据和业务逻辑
视图:展示
控制器:接收视图输入数据,通过模型层业务逻辑处理后 返回给视图
分离关注点(模型 视图 控制器)、惯例优先原则
browser-->routing-->controller<--view-->browser
控制器是告诉下一步该做什么而不是该怎么做,如显示视图则返回actionresults。
定位视图:优先查找对应文件夹,其次查找shared文件夹
razor:代码段、代码块
部分视图 @Html.Partial(),PartialView() 可返回给axaj
控制器传递数据给视图:viewdata 和 viewBage(dynamic)
视图模型:viewdata.model 强类型试图:@model 类型
HtmlHelper:@Html 生成html
UrlHelper:@Url 生成url
数据模型、域模型
web form 和 后台web组件(asp.net)
HTTP是无状态的:asp.net是视图状态
基本区别
asp.net mvc 视图逻辑结合 分离 页面 URL基于文件访问 有路由URL查找控制器 状态管理 视图 无自动化视图管理 web form语法 razor语法 服务器控件 HTML帮助方法 母板 布局 用户控件 部分视图 都能使用路由,但mvc离不开,web from则是为了优化
HTMLhelp能创建自己的方法
对象关系映射框架 orm(object relational mapping)
entity framework:code-first、model-first、database-first。
模型数据验证System.ComponentModel.DataAnnotations()
[System.ComponentModel.DataAnnotations.Range(typeof(DateTime),"2010-01-01","2015-02-02",ErrorMessage="错过了")]
可自定义验证方法
code-first:System.Data.Entity.DbContext 连接字符串KEY与基类名称相同:connectionStrings
ajax:xmlhttprequest对象 先open(设置为异步和回调函数) 后send 后判断status==200和readystate==4
mvc开启客户端验证
控制器:拦截用户输入,协调模型和视图及其通讯
模型:数据属性、数据验证、业务逻辑
视图:渲染UI、绑定模型
发送到另一层之前检查输入数据
单一职责原则(srp)、开放封闭原则(ocp 对扩展开放,对修改关闭)、里氏替换原则(lsp)、接口隔离原则(isp)、依赖倒置原则(DIP)
控制反转:依赖注入和服务定位http://www.cnblogs.com/tylerdonet/p/3297915.html
客户端模板:mustache.js
操作过滤器:实现对请求前后的处理,标记方法
模型绑定器
jsonp实现跨域ajax请求
web api使用的是 RouteTable.MapHttpRoute()
web api 名称优先 GET PUT POST DELETE
oDATA:开放数据协议 CRUD
web api 中HttpResponseException,可使用异常过滤器,全局注册或属性标注,可重写
Media格式化器:创建后全局注册,可序列化accept中MIME类型
Rest full 风格:
GET /tickets # 获取ticket列表
GET /tickets/12 # 查看某个具体的ticket
POST /tickets # 新建一个ticket
PUT /tickets/12 # 更新ticket 12.
DELETE /tickets/12 #删除ticekt 12
POCO朴素的旧的CLR对象,代表业务实体类模型,专注业务不需要数据库结构
repository模式:资源库、仓储 数据库访问模式,负责持久化应用业务模型,有一对一、聚合根、泛型一对多
引用类型:==引用 equals值
mvc防御csrf:使用@html.antiforgerytoken(),然后方法上标记.
jQuery.Mobile.MVC nuget 开发手机版,修改bundles
手机版:以 action.mobile.cshtml 格式
_ViewSwitcher 部分视图可在手机版和电脑版切换
viewport 设置屏幕旋转宽度问题
51degrees来增强设别能
AsyncController异步控制器
路由顺序重要
异步操作主要用于I/O绑定操作(比如数据库访问和远程服务调用等),有2中方法实现异步
*Async/*Completed
public Task<*> M(){ return }
AsyncManager.OutstandingOperations.Decrement();
WebSocket
SignalR:集线器和永久连接
服务端缓存(
请求域中的缓存HttpContext.Items
Session(可存外部)
Application由IIS管理应用程序级别,可跨进程
System.Web.Cache(缓存依赖策略)
客户端缓存
MVC可标记outputCacheAttribute属性实现HTML页面缓存
可配置缓存时间、位置(浏览器or服务端)
VaryByParam属性只有当?参数有效
可使用Profiles在web.config中配置
this代表扩展string类public static int WordCount(this String str)
甜甜圈缓存:WriteSubstitution可部分不缓存
MvcDonutCachingNuGet包可以实现高级操作
web农场之物理上独立的服务器集群,web园是指应用程序池包含多个工作进程
AppFabric、Memcached、Redis
HTML5缓存:appcache,js本地存储
Yslow 检测web性能
Url越短越好、破折号代替下划线、使用小写字母
MVC路由参数以常量字符串分割{p1}-{p2}-{p3},参数默认为string类型路由通配符{controller}/{action}/{*queryValues},控制器操作后面的字符串均算作最后一个参数的值拒绝所有aspx请求参数allaspx:routes.IgnoreRoute("{*allaspx}",new {allaspx=@".*\.aspx(/.*)?"});可通过正则表达式设置路由约束
可自定义路由约束方法
使用Glimpse观察路由
可实现基于属性标记的路由
Razor单文件生成器
RenderAction()
控制器操作异常处理,可全局注册[HandleError(ExceptionType=typeof(System.Data.DataException),View="DatabaseError")]
重写控制器onException()方法实现异常处理
自定义错误过滤器
ASP.NET健康监控
单元测试(类或方法)【自治的、可重复的、独立的、快速的】
集成测试(测试多个组件之间的交互)
验收测试(符合需求)
测试驱动开发(TDD)红灯-绿灯-重构
TestInitialize()初始化公共测试参数
模拟测试框架 如Moq framework
自动化浏览器测试WatiN
代码覆盖率 100行测试了70行
自动化生成Microsoft MSBuild和TeamFoundation Server
Martin Fowler的书籍:1.分析模式 2.UML精髓 3.重构 4.企业应用架构模式 5.Nosql精髓
Windows Azure
NuGet
【ASP.NET+MVC4+Web+编程】读书笔记的更多相关文章
- Asp.net MVC4高级编程学习笔记-视图学习第一课20171009
首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API
本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续
目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Model模型绑定
本文转载自haiziguo Asp.net mvc中的模型绑定,或许大家经常用,但是具体说他是怎么一回事,可能还是会有些陌生,那么,本文就带你理解模型绑定.为了理解模型绑定,本文会先给出其定义,然后对 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper
HtmlHelper帮助我们生成Html标记代码:UrlHelper帮助我们生成URL链接地址 我们学习一下UrlHelper帮助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC ...
- 《ASP.NET MVC4 WEB编程》学习笔记------RenderBody,RenderPage,RenderSection
ASP.NET MVC 3 已经正式发布了,现在估计许多人都在拼命学,我也不能例外,刚刚看到了一篇文章,介绍了三个非常有用的方法:RenderBody,RenderPage和RenderSection ...
- 《ASP.NET MVC4 WEB编程》学习笔记------HtmlHelper
本文转载自powerzhang,如果给您带来不便请联系博主. 在实际的程序中,除了在View中展示数据外,还需要在View与后台的数据进行交互,在View中我就需要用的表单相关的元素: 在MVC3框架 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------ViewBag、ViewData和TempData的使用和区别
本文转自大卫Baby ViewBag和ViewData其实是互通的ViewBag和ViewData的区别:ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动 ...
随机推荐
- centos x86_64--------------------------------系统调用
http://blog.csdn.net/hmsiwtv/article/details/11022241 [root@monitor ~]# cat /usr/include/asm/unistd. ...
- PHP如何抓取https内容?记录一下。
PHP里做一般的获取内容时,用自带的file_get_contents()函数基本就足够了.当然,这个函数只能抓一些简单的数据,如果是遇到需要登录的页面,就不行了,而且效率及稳定性也不是很强.所以要是 ...
- Uploadify帮助文档
auto 当文件被添加到队列时,自动上传. (字符串) buttonImg 浏览按钮的背景图片路径. (字符串) buttonText 默认在按钮上显示的文本. (字符串) cancelImg 取消按 ...
- JSONP(处理跨域问题)
Ajax直接请求普通文件存在跨域无权限访问的问题 凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>.<img>.<iframe& ...
- 用继承实现XYPoint和Circle两个类
#import <Foundation/Foundation.h> @protocol show @required -(void)printOn; @end @interface XYP ...
- ibatis返回结果映射到HashMap时,列名无效的问题
遇到问题: 1.项目开发过程中在xml配置文件中使用$tableName/sql$时,报"列名无效"错误,后来经过查询,发现是ibatis缓存 了上一次查询的表结构的原因.解决办法 ...
- [改善Java代码]性能考虑,数组是首选
建议60:性能考虑,数组是首选 一.分析 数组在实际的系统开发中使用的越来越少,我们通常只有在阅读一些开源项目时才会看到它们的身影,在Java中它确实没有List.Set.Map这些集合使用起来方便 ...
- Redux你的Angular 2应用--ngRx使用体验
Angular2和Rx的相关知识可以看我的Angular 2.0 从0到1系列第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2 ...
- 写代码的心得,怎么减少编程中的 bug?
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...
- inline-block总结
inline-block的内部表现类似block,可以设置宽高,外部表现类似inline,具有不还行的特性. 与float排版有些类似,当内部块级(可设置宽高),水平排列的时候都两者都可以实现. 两者 ...