模型:數據和業務邏輯html
視圖:展現 web
控制器:接收視圖輸入數據,經過模型層業務邏輯處理後 返回給視圖ajax
分離關注點(模型 視圖 控制器)、慣例優先原則正則表達式
browser-->routing-->controller<--view-->browsersql
控制器是告訴下一步該作什麼而不是該怎麼作,如顯示視圖則返回actionresults。數據庫
定位視圖:優先查找對應文件夾,其次查找shared文件夾json
razor:代碼段、代碼塊api
部分視圖 @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模式:資源庫、倉儲 數據庫訪問模式,負責持久化應用業務模型,有一對1、聚合根、泛型一對多
引用類型:==引用 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