Asp.Net MVC 一教就上手
-
Upload
study4tw -
Category
Technology
-
view
325 -
download
9
description
Transcript of Asp.Net MVC 一教就上手
![Page 1: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/1.jpg)
ASP.NET MVC 一教就上手建置Windows Azure雲端聊天室
Sky Chang
天空的垃圾場
![Page 2: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/2.jpg)
AGENDA
ASP.NET MVC 基本架構 Real Time 架構 SignalR
使用 Knockout.js 架構 JavaScript 的 MVVM
將程式雲端上,使用微軟的 Windows Azure
![Page 3: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/3.jpg)
ASP.NET MVC 基本架構
![Page 4: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/4.jpg)
偉大的 ASP.NET 程式
使用者介面
商業邏輯 介面邏輯
SQL
我是一隻ASP.Net 包山
包地也包海
![Page 5: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/5.jpg)
ASP.NET CODEBEHIND
這樣就夠了嗎 !?
![Page 6: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/6.jpg)
ASP.NET 的缺點
因為有 ViewState 所以傳輸上過於笨重 渲染出來的 HTML 過於複雜 測試性不佳 ( 可以用 MVP 架構改進 )
![Page 7: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/7.jpg)
什麼是 MVC
他是 UI 層 ( 展示層 ) 的 Design Patten( 設計樣式 ) 。 他是由 Model 、 View 、 Controller 所組成。 分離原本複雜的關係。
![Page 8: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/8.jpg)
MODEL
MODEL 通常為資料模型,也可以是一個 DTO 通常裡面會放許多的商業邏輯。
View 頁面, HTML 、 CSS 、 JavaScript 皆屬於此區塊 於此頁面撰寫顯示邏輯是合理的
Controller 決定運作的流程 負責決定顯示哪一個 View 負責控制 Model 的傳遞
![Page 9: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/9.jpg)
MVC 優點是什麼
三者有點黏,又不會太黏 Model 、 Controller 、 View ,三者之間可以某種程度的獨立開發 支援標準的 HTML 語法 不在使用 PostBack ( 沒有 ViewState) ,所以傳輸很輕量 容易測試的架構
![Page 10: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/10.jpg)
那 ASP.NET MVC 是什麼 ?
MVC 是一個設計樣式的名詞,而 ASP.NET MVC 是擁有實作此設計樣式的Framework 的產品。
![Page 11: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/11.jpg)
ASP.NET MVC 流程
• 使用者請求• 決定導向
Controller
Request
• Controller流程
• 決定 View
Controller • 取得傳遞進
來之資料• 顯示資料
View
![Page 12: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/12.jpg)
網址的不同
ASP.NET
ASP.NET MVC
![Page 13: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/13.jpg)
ASP.NET MVC 網址對應關係
![Page 14: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/14.jpg)
優點
擁有更佳的 SEO
安全性提高 更加清晰的網址關係
![Page 15: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/15.jpg)
實戰 ASP.NET MVC
建立一個 About 介紹頁 建立一個 Index 主頁 主頁要建立一個 Textbox
主頁要建立一個 Button
主頁要放置一個 ul 標籤
![Page 16: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/16.jpg)
ASP.NET SIGNALRReal Time Web
![Page 17: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/17.jpg)
時代的進步
![Page 18: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/18.jpg)
HTTP 底下的模擬 POLLING
![Page 19: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/19.jpg)
ASP.NET SIGNALR
封裝所有複雜的處理邏輯 快速的實現 Real Time Web
![Page 20: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/20.jpg)
HOW WORK
Server Sent Events
Forever Frame
WebSocket
Long Polling
![Page 21: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/21.jpg)
LONG POLLING
Cleint 進行連線後就不中斷 當 Server 返回時,會在建立新的連線
![Page 22: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/22.jpg)
FOREVER FRAME
在 DOM 產生一個隱藏的 iframe
利用此 iframe 和 Server 進行連線 使用 HTTP1.1 的 chunked encoding 機制進行傳送
![Page 23: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/23.jpg)
SERVER SENT EVENTS
HTML5
定義了 API 來打開一個 HTTP 連接 通過該連接能夠獲得 Server Push
新的 HTML 元素 EventSource
新的 MIME 類型 text/event-stream
![Page 24: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/24.jpg)
WEBSOCKET
HTML5
不是建立在 HTTP 之上 將已經存在的 HTTP 連接轉換為 WebSocket 連接 直接在 TCP 之上定義了協議 WebSocket 定義了 API 和相應的協議 WebSocket API 規範中包含一個新的 HTML 元素: WebSocket
![Page 25: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/25.jpg)
SIGNALR 兩種模式 – PERSISTENT CONNECTION & HUB
persistent connection 持久連線 進行廣播
HUB 類似 RPC Client 可以呼叫 Server 的 Function Server 可以呼叫 Client 的 Function
![Page 26: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/26.jpg)
實戰 !! SIGNALR HUB
Install-Package Microsoft.AspNet.SignalR -pre
![Page 27: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/27.jpg)
KNOCKOUT.JSJavaScript 的 MVVM 架構
![Page 28: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/28.jpg)
KNOCKOUT.JS
實作了 JavaScript 的 MVVM 架構 利用了 Binding 的機制,自動更新 建構於 jQuery 之下
![Page 29: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/29.jpg)
MVVM 架構
View 就是 html 區塊
ViewModel View 和 Model 的黏合劑,負責處理 View 的一切顯示邏輯 也負責將拿到的 Model ,顯示到 View
Model 資料模型
View 知道 ViewModel , ViewModel 不知道 View
ViewModel 知道 Model , Model 不知道 ViewModel
![Page 30: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/30.jpg)
HTML 和 JS 的關係
![Page 31: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/31.jpg)
實戰 !! 使用 KNOCKOUT.JS
將原本的程式碼改成 MVVM 架構
![Page 32: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/32.jpg)
WINDOWS AZUREWeb Site
![Page 33: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/33.jpg)
WINDOWS AZURE WEB SITE
雲端的 Web Server 服務 支援 .NET 4.5 、 NODE.JS 、 PHP 等眾多程式語言 可以利用 VS2012 、 FTP 等工具佈署 !!SignalR 要加上 long polling!!
![Page 34: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/34.jpg)
實戰 !! 佈署到 WINDOWS AZURE WEB SITE
將現有程式碼佈署到 Windows Azure Web Site
![Page 35: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/35.jpg)
恭喜大家
![Page 36: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/36.jpg)
遺珠之憾
ASP.NET MVC 的 Model 沒有實作 SignalR只用到 Web
KO.js只使用到最簡單的應用 Windows Azure還有 VM 、 Cloud Service 更強大的應用
![Page 37: Asp.Net MVC 一教就上手](https://reader034.fdocument.pub/reader034/viewer/2022052505/5560ffd0d8b42aff3f8b5367/html5/thumbnails/37.jpg)
Q&A天空的垃圾場 blog.sanc.idv.tw