读书笔记[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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。