Asp.Net MVC 一教就上手

37
ASP.NET MVC 教教教教 教教 Windows Azure 教教教教教 Sky Chang 教教教教教教

description

2012/11/25 Study4.TW Sky -Asp.Net MVC 一教就上手

Transcript of Asp.Net MVC 一教就上手

Page 1: Asp.Net MVC 一教就上手

ASP.NET MVC 一教就上手建置Windows Azure雲端聊天室

Sky Chang

天空的垃圾場

Page 2: Asp.Net MVC 一教就上手

AGENDA

ASP.NET MVC 基本架構 Real Time 架構 SignalR

使用 Knockout.js 架構 JavaScript 的 MVVM

將程式雲端上,使用微軟的 Windows Azure

Page 3: Asp.Net MVC 一教就上手

ASP.NET MVC 基本架構

Page 4: Asp.Net MVC 一教就上手

偉大的 ASP.NET 程式

使用者介面

商業邏輯 介面邏輯

SQL

我是一隻ASP.Net 包山

包地也包海

Page 5: Asp.Net MVC 一教就上手

ASP.NET CODEBEHIND

這樣就夠了嗎 !?

Page 6: Asp.Net MVC 一教就上手

ASP.NET 的缺點

因為有 ViewState 所以傳輸上過於笨重 渲染出來的 HTML 過於複雜 測試性不佳 ( 可以用 MVP 架構改進 )

Page 7: Asp.Net MVC 一教就上手

什麼是 MVC

他是 UI 層 ( 展示層 ) 的 Design Patten( 設計樣式 ) 。 他是由 Model 、 View 、 Controller 所組成。 分離原本複雜的關係。

Page 8: Asp.Net MVC 一教就上手

MODEL

MODEL 通常為資料模型,也可以是一個 DTO 通常裡面會放許多的商業邏輯。

View 頁面, HTML 、 CSS 、 JavaScript 皆屬於此區塊 於此頁面撰寫顯示邏輯是合理的

Controller 決定運作的流程 負責決定顯示哪一個 View 負責控制 Model 的傳遞

Page 9: Asp.Net MVC 一教就上手

MVC 優點是什麼

三者有點黏,又不會太黏 Model 、 Controller 、 View ,三者之間可以某種程度的獨立開發 支援標準的 HTML 語法 不在使用 PostBack ( 沒有 ViewState) ,所以傳輸很輕量 容易測試的架構

Page 10: Asp.Net MVC 一教就上手

那 ASP.NET MVC 是什麼 ?

MVC 是一個設計樣式的名詞,而 ASP.NET MVC 是擁有實作此設計樣式的Framework 的產品。

Page 11: Asp.Net MVC 一教就上手

ASP.NET MVC 流程

• 使用者請求• 決定導向

Controller

Request

• Controller流程

• 決定 View

Controller • 取得傳遞進

來之資料• 顯示資料

View

Page 12: Asp.Net MVC 一教就上手

網址的不同

ASP.NET

ASP.NET MVC

Page 13: Asp.Net MVC 一教就上手

ASP.NET MVC 網址對應關係

Page 14: Asp.Net MVC 一教就上手

優點

擁有更佳的 SEO

安全性提高 更加清晰的網址關係

Page 15: Asp.Net MVC 一教就上手

實戰 ASP.NET MVC

建立一個 About 介紹頁 建立一個 Index 主頁 主頁要建立一個 Textbox

主頁要建立一個 Button

主頁要放置一個 ul 標籤

Page 16: Asp.Net MVC 一教就上手

ASP.NET SIGNALRReal Time Web

Page 17: Asp.Net MVC 一教就上手

時代的進步

Page 18: Asp.Net MVC 一教就上手

HTTP 底下的模擬 POLLING

Page 19: Asp.Net MVC 一教就上手

ASP.NET SIGNALR

封裝所有複雜的處理邏輯 快速的實現 Real Time Web

Page 20: Asp.Net MVC 一教就上手

HOW WORK

Server Sent Events

Forever Frame

WebSocket

Long Polling

Page 21: Asp.Net MVC 一教就上手

LONG POLLING

Cleint 進行連線後就不中斷 當 Server 返回時,會在建立新的連線

Page 22: Asp.Net MVC 一教就上手

FOREVER FRAME

在 DOM 產生一個隱藏的 iframe

利用此 iframe 和 Server 進行連線 使用 HTTP1.1 的 chunked encoding 機制進行傳送

Page 23: Asp.Net MVC 一教就上手

SERVER SENT EVENTS

HTML5

定義了 API 來打開一個 HTTP 連接 通過該連接能夠獲得 Server Push

新的 HTML 元素 EventSource

新的 MIME 類型 text/event-stream

Page 24: Asp.Net MVC 一教就上手

WEBSOCKET

HTML5

不是建立在 HTTP 之上 將已經存在的 HTTP 連接轉換為 WebSocket 連接 直接在 TCP 之上定義了協議 WebSocket 定義了 API 和相應的協議 WebSocket API 規範中包含一個新的 HTML 元素: WebSocket

Page 25: Asp.Net MVC 一教就上手

SIGNALR 兩種模式 – PERSISTENT CONNECTION & HUB

persistent connection 持久連線 進行廣播

HUB 類似 RPC Client 可以呼叫 Server 的 Function Server 可以呼叫 Client 的 Function

Page 26: Asp.Net MVC 一教就上手

實戰 !! SIGNALR HUB

Install-Package Microsoft.AspNet.SignalR -pre

Page 27: Asp.Net MVC 一教就上手

KNOCKOUT.JSJavaScript 的 MVVM 架構

Page 28: Asp.Net MVC 一教就上手

KNOCKOUT.JS

實作了 JavaScript 的 MVVM 架構 利用了 Binding 的機制,自動更新 建構於 jQuery 之下

Page 29: Asp.Net MVC 一教就上手

MVVM 架構

View 就是 html 區塊

ViewModel View 和 Model 的黏合劑,負責處理 View 的一切顯示邏輯 也負責將拿到的 Model ,顯示到 View

Model 資料模型

View 知道 ViewModel , ViewModel 不知道 View

ViewModel 知道 Model , Model 不知道 ViewModel

Page 30: Asp.Net MVC 一教就上手

HTML 和 JS 的關係

Page 31: Asp.Net MVC 一教就上手

實戰 !! 使用 KNOCKOUT.JS

將原本的程式碼改成 MVVM 架構

Page 32: Asp.Net MVC 一教就上手

WINDOWS AZUREWeb Site

Page 33: Asp.Net MVC 一教就上手

WINDOWS AZURE WEB SITE

雲端的 Web Server 服務 支援 .NET 4.5 、 NODE.JS 、 PHP 等眾多程式語言 可以利用 VS2012 、 FTP 等工具佈署 !!SignalR 要加上 long polling!!

Page 34: Asp.Net MVC 一教就上手

實戰 !! 佈署到 WINDOWS AZURE WEB SITE

將現有程式碼佈署到 Windows Azure Web Site

Page 35: Asp.Net MVC 一教就上手

恭喜大家

Page 36: Asp.Net MVC 一教就上手

遺珠之憾

ASP.NET MVC 的 Model 沒有實作 SignalR只用到 Web

KO.js只使用到最簡單的應用 Windows Azure還有 VM 、 Cloud Service 更強大的應用

Page 37: Asp.Net MVC 一教就上手

Q&A天空的垃圾場 blog.sanc.idv.tw