visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

55
Visual Studio 2012 與 ASP.NET 4.5 ( 與與與與與與與與 ) 與與 與與與 Blog http://www.dotblogs.com.tw/gelis/ Skype [email protected]

Upload: gelis-wu

Post on 27-Jan-2015

128 views

Category:

Technology


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 2012 與 ASP.NET 4.5 ( 新功能與開發介紹 )講師:吳俊毅Blog : http://www.dotblogs.com.tw/gelis/Skype : [email protected]

Page 2: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

第一天

Page 3: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

大綱• 安裝 Visual Studio 2012 Ultimate• 地表最強的開發工具 Visual Studio 2012• Visual Studio 的演進史• ASP.NET 網頁執行概念、架構簡介• .NET Framework 4.5 新增功能簡介• ASP.NET MVC 架構簡介• ASP.NET 與 ASP.NET MVC 開發上比較• 實作系列:以分層的方式建置 ASP.NET 4.5 網頁應用程式

Page 4: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

安裝 Visual Studio 2012 Ultimate

Page 5: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

安裝的系統需求支援的作業系統Windows 7 Service Pack 1, Windows 8, Windows Server 2008 R2 SP1, Windows Server 2012

Windows 7 SP1 (x86 和 x64)Windows 8 (x86 和 x64)Windows Server 2008 R2 SP1 (x64)Windows Server 2012 (x64)

硬體需求:1.6 GHz 或更快的處理器1 GB 的 RAM ( 如果在虛擬機器上執行則需要 1.5 GB)10 GB 可用硬碟空間

Page 6: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

地表最強的開發工具 Visual Studio 2012

Page 7: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 的演進

Page 8: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 2002/2003

.NET 1.0 與 .NET 1.1第一個 .NET 整合開發工具龐大的函式庫ASP.NET 1.0/1.1 引進 Code-Behind 的開發方式Common Language RuntimeC#/VB.NET/JScript

Page 9: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 2005 加了什麼東西?為 .NET 2.0 ,而在 ASP.NET 2.0 主要加強了 網站管理工具 樣板設計 (Master Page) 權限管理機制 (MemberShip 、 Role 、 Profile) AJAX 開發的支援 (Ajax Extensions 、 UpdatePanel…) ADO.NET 2.0 網站安全性ASP.NET 2.0 主要訴求 : 快速開發網際網路應用程式 新的 WebSite 動態編譯模式、更簡化與加快網站部署方式 強化程式之安全性與可靠性、修復 1.0/1.1 相關安全性 issue 提供絕佳的效能與擴充性

Page 10: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 2008 又做了什麼改變 ?

Web Form 又稱為 ASP.NET 3.5延續之前 ASP.NET 2.0 主體精神C# 3.5 、 VB.NET 9.0開始支援 Silverlight 開發整合 AJAX 及 支援呼叫 Silverlight RIA Services 的開發Dynamic Data 動態資料開發、 ( 開始支援 Web Site)增加 LINQ 、 Entity FrameworkADO.NET Data Services 現身MVC 1.0 現身WPF 、 WCF 、 WWF 、 Card Space 現身

Page 11: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

那麼 Visual Studio 2010 呢?增加 ClientIDMode 屬性

GridView 或 DataList 等元件當中又包了許多的 WebControl 時,子元件 Render

到前端的 IE 可能會變成 ctl00_ContentPlaceHolder1_ControlState 等一長串的問題。

新增 ViewStateMode 屬性加強並改良既有 Web Form 控制項 ViewState , Page 上的 Control 不再繼承 Page 的 EnabledViewState 屬性。即使 Page 的 EnabledViewState 設為False ,頁面上的 Control 可以透過 ViewStateMode 屬性決定自身是否開啟ViewState 。

內建支援 .NET Chart 3.5 控制項。支援 jQuery

新的 WCF Data Service ( 前身為 ADO.NET Data Services)

改良 Silverlight RIA Service

MVC 2.0/3.0/4.0

Page 12: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Visual Studio 2012

.NET Framework 再推進到 4.5改進了 Visual Studio 2010 載入速度慢的缺點支援新作業系統 Windows 8 App 的開發全新的雲端平台 Windows Azure 支援手機 Windows Phone App 開發/ Mobile Services前端功能大進化 -jQuery Mobile支援 SignalR新的非同步開發框架 await/async擁抱 Scrum 、 ALM(Application Lifecycle Management) 的進化

Page 13: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

所有 .NET 的版本.NET 4.5 base on .NET 4.0它只允許你安裝在 Win Vista/7/2008 等 .( 不支援 WinXP)如果您安裝的是 Windows 8 或 Windows Server 2012 ,那麼它會內建在作業系統中 .

.NET 1.1 .NET 2.0

3.0

3.5

.NET 4.0

2002 2003 2005 20102005-08

4.5

.NET 1.0

Page 14: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET 架構概觀

Page 15: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

從基礎開始看 ASP.NET標籤語言與程式碼

• 標籤 "tags"• HTML, server controls tags, static text

• 允許程式碼與網頁分離• Code-Behind

<tags>

Form1.aspx

code<tags>

Form1.aspx

code

Form1.cs

single file separate files (“code-behind”)

Page 16: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

分別建立 UI 與程式檔 利用 Page 指令連結兩個檔

呼叫 Code-Behind Page 的程式碼

Code-Behind 的網頁

<%@ Page Language="c#" Inherits="myDemo" Codebehind="demo.cs"%>

<%@ Page Language="c#" Inherits="myDemo" Codebehind="demo.cs"%>

ds = getData()ds = getData()

public class myDemo : Page {

public DataSet getData() {

}

}

public class myDemo : Page {

public DataSet getData() {

}

}

demo.cs

<%@ Page Language="c#" Inherits="myDemo"Codebehind= "demo.cs" %>

Page.aspx

Page 17: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASPX

File Code

ASP.NET 執行概念

RequestGen’dPageClass

Generate

Response

Request Instantiate

Response

Code-behindclass

Page

Class Instantiate, Process and Render( 轉

換 )

Compile( 編譯 )

ASPXEngin

eParse

( 解析 )

Page 18: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET 基本事件生命週期

Page_Load

Page_Unload

Textbox1_Changed

Button1_Click

( 執行 PostBack)

1. Change Events

2. Action Events

Page is disposed

OnInit

Control_Render產生前端呈現的 HTML 原始碼,也可能包含

JavaScript ,通常輸出一個 HtmlTextWriter

物件

Page 19: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

.NET Framework 4.5 新增功能簡介

Page 20: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

.NET Framework 4.5 新增功能簡介.NET for Windows Store appsPortable Class Libraries (Windows Phone, Xbox360)Core New Features and Improvements Tools (Resgen.exe, Mpgo.exe)Parallel Computing Web Networking Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Windows Workflow Foundation (WF)

( 本次重點 )

Page 21: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

.NET for Windows Store apps

Windows 8 市集應用程式.NET Framework 4.5 的子集合可使用 C# 、 Visual Basic 、 JavaScript 、 C++

Page 22: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Portable Class Libraries

可攜式類別庫專案可在多個 .NET Framework 平台上執行的 Managed 組件如 Windows Store App 、 Windows Phone App 、 Silverlight 、 xbox360 執行的 C# 類別庫專案 Managed Extensibility Framework (MEF) Network Class Library (NCL) 序列化 MVVM WCF XLINQ …

Page 23: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Core New Features and Improvements

可選擇性用於多核心處理器以改善應用程式 Just-in-Time (JIT) 在背景編譯效能支援在 64 位元平台上大於 2 GB 的陣列在安裝部署 .NET Framework 4 期間藉由自動偵測方式,減少系統重新啟動背景記憶體回收新的 MEF (Managed Extensibility Framework )

Page 24: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Tools

建立適用於 Windows Windows 市集 應用程式的資源檔產生器 (Resgen.exe) 最佳化原生映像組件 Managed 特性 (Mpgo.exe) ,最佳化、改善應用程式啟動時間、記憶體使用率。

Page 25: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Parallel Computing

延續 .NET 4.0 平行運算效能增強支援 async, Tesk SchedulingParallel LINQ (PLINQ)…

Page 26: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Web

在 .NET 4.5 所謂的 ASP.NET 包括了…

Page 27: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Networking

新的 System.Net.WebSockets 命名空間和 HttpListener類別 .新的 System.Net.Http 和 System.Net.Http.Headers 命名空間 .改進對 IPv6 的支援WebSockets 也支援非同步開發

Page 28: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Windows Presentation Foundation

新的 Ribbon 控制項 INotifyDataErrorInfo 介面支援同步和非同步資料驗證藉由存取非 UI 執行緒上的集合來改善顯示大量群組資料時的效能並新增 VirtualizingPanel 和 Dispatcher 類別即時圖形,隨著值變更重新調整資料的位置,並自動更新資料繫結的來源新增繫結靜態屬性的功能

Page 29: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Windows Communication Foundation

在 .NET 4.5 維護 WCF 又更簡單了參考時自動產生用戶端組態檔也可讓可攜式類別庫 DLL 加入服務WCF參考輕鬆地設定 ASP.NET 相容性模式支援撰寫單向 UDP 服務WebSockets 的支援資料流效能改進,新增非同步資料流,且不受maxRequestLength 管控,指定maxAllowedContentLength即可…

Page 30: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Windows Workflow Foundation

狀態機器工作流程可以設定狀態的中斷點。 Workflow Designer 的複製貼上轉換的功能。 設計工具支援共用的觸發程序轉換建立。 建立狀態機器工作流程活動,包括: StateMachine、 State 和 Transition。

增強的 Workflow Designer 功能增強的工作流程搜尋功能,包括 [ 快速尋找 ] 和 [ 檔案中尋找 ] 。 能夠同時在第二個子活動加入至容器活動時自動建立序列活動。 平移支援,使工作流程的可見部分變更,而不使用捲軸。 新的 [文件大綱 ] 檢視,這個檢視以樹狀樣式檢視顯示工作流程元件,並讓您在 [文件大綱 ] 檢視中選取元件。 能夠將註釋加入至活動。 使用 Workflow Designer 能夠定義並取用活動委派。 在狀態機器及流程圖工作流程中自動連接和自動插入活動和轉換。

Page 31: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

總而言之,整個 .NET 4.5 共包含…

Page 32: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC 架構簡介

Page 33: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

什麼是 MVC ?

MVC 是 (Model View Controller) 的簡稱。 MVC 不是一種程式語言,有些人會說MVC 是一種架構。但嚴格來說,MVC 應該是一種設計模式,一種撰寫程式的一種框架、設計樣式 (Design Pattern) 。他希望透過一種權責分明的架構來增加軟體開發的可維護性、可擴充性、延展性等,並可多人同時開發。理論上來說, M 、 V 、 C 三個部分可以完全拆開來開發,因為 Controller 也是一個獨立的類別。在實際開發的情形中, Model 會另外開一個 Visual Studio的專案來開發,再提供給 Controller參考使用。

Page 34: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

什麼是 MVC ?

Page 35: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

MVC 的誕生MVC 最早是在 1974年由 Trygve Reenskaug 所提出,並直接應用在當時最流行的 Smalltalk 中。透過MVC ,使『商業邏輯層』、『資料表現層』在開發的時候,完全的切割開來。

Model模型

View檢視

Controller控制器

主要負責定義資料的格式、資料的存取界面、 DAL等。通常會將商業邏輯定義在此。

直接與使用者互動的使用者介面, UI 。通常只負責資料的呈現,與使用者輸入資料。或在加上畫面資料的驗證等。

負責控制系統流程,操作面的邏輯,畫面如何跳轉等。也負責接收 View 傳過來的資料。

Page 36: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

何謂設計模式、為什麼談設計模式?

早期軟體開發為了解決當時最直接的商業問題。成是語言簡單,系統沒有那複雜。到了後期,軟體的開發越來越龐大且複雜,軟體開發的維護性、擴充性相對的浮現。因此人們開始針對軟體設計的方法、樣式等等來尋找出一種比較可行的方法。這是就是設計模式(Design Pattern) 的雛形。MVC 為程式碼的分層,與 N-Tier 系統的分層概念上有些不同。要解決的問題也有些不同。不過,當然!實務上 Model 會拆解另一個 Visual Studio專案來開發,若再透過 OData協定開放出來即為分散式應用系統。

Page 37: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

從設計模式談軟體開發對開發人員而言,所謂好的軟體系統不外乎:1. 易於維護2. 易於擴充 (尤其在客戶需求不斷的變更的時候 )3. 容易開發 ( 適用於團隊的 )4. 可以多人開發 (尤其在現今軟體日益龐大的時代 )

但設計模式一定有一些門檻。初期在開發時,需花較多的時間規劃。也就是進行架構的設計,才能充分發揮上述的特性。

Design Pattern 也可以做為團隊合作的共通標準。結論:沒有真正好的 Design Pattern ,只有適用該團隊的Design Pattern ,合適的 Design Pattern 完成上述的條件。

Page 38: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC (Model View Controller) 概論

各個分層的職責1. Model 的職責2. Controller 的職責3. View 的職責4. 網址路由概念 Route

Page 39: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Model 的職責Model 可翻為模型,不過如果以它的職責來看,翻成資料模型會比較貼切。一般來說Model 要負責所有與資料有關的任務:

1. 定義資料結構2. 與資料庫溝通 (DAL)3. 進行資料格式的驗證4. 定義商業邏輯規則5. 對資料進行加工等處理

在 .NET 的平台,直接支援 Model 開發的不外乎就是Entity Framework 、 LINQ to SQL 。當然,您也可以自行開發,甚至將 DataTable 轉換為 View 參考的強型別。

Page 40: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Controller 的職責Controller 翻譯為控制器,它幾乎可以說是掌握前端與後端的物件,其負責的工作如下:

1. 決定與前端 View溝通的協定,一般來說,當然就是 HTTP

2. 決定系統運作的流程,如 A.aspx 到B.aspx

3. 決定要顯示哪一個 View 到前端,與當發生錯誤時要回應哪一個畫面

4. 決定回應的網址結構

Page 41: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

View 的職責就是 UI 的呈現,直接與 USER互動,處理 ( 輸入/輸出 )有關的工作: 決定使用何種 IU 呈現: HTML 、 XML 、 Silverlight 、 Flash

等等 將 Controller 傳送過來的資料顯示於 View 上。 將 View 的資料傳送給對應的 Controller (透過 Action決定 ) 決定傳送給 Controller 的方式 (GET 、 POST 、 XML HTTP

Request) 進行前端基本資料驗證 如果 Controller 回傳的資料為強型別 (Model) , View 也需要參考該Model 的類別定義。

Page 42: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

網址路由概念 Route

其實就是一種 REST (Representational State Transfer)的應用方式。例子:http://localhost:1445/Customer/Details/ALFKI

Page 43: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

路由網址比對MVC 主要是交由 MvcHendler來處理。網址路由在 HttpApplication 的 Applicant_Start註冊完成使用動作過濾器 Action Filter 找出對應的 Action單一個 Controller 方法的處理回傳一個 HTTP Request 的結果。若找不到對應的 Controller ,會回傳 404找不到 ( 網頁 / 資源 )

Page 44: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC 4 提供什麼新功能?在微軟這次推出的 ASP.NET MVC 4.0 的版本,新增的功能如下:1. ASP.NET Web API2. 使用 Bootstrap 加強的預設站台的 Style ,透過CSS 的增強來呈現加強一些效果。

3. Bundling and Minification4. 增加了 Mobile WebSite 開發的範本。5. 新增 Display Modes ,可以針對特定用戶的 Browser 類型加以回傳特定

的 View 。6. jQuery Mobile 版本 , 增加 View Switcher 與 Browser Overriding 功

能。7. Database Migrations8. 支援新的非同步 Controller 解決方案。9. 支援 Azure SDK 的開發。

Page 45: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC 生命週期沒有所謂的 Page_Load ,只有 Controller 的 Constructor

HTTP Request

網指路由比對

Model 繫結 & 取得資料

執行 View 的內容 & 回傳

找出對應的 Controller & Action

回傳結果 HTTP Response

Page 46: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET 與 ASP.NET MVC 在開發上比較

Page 47: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC 的特點關注點分離 (Separation of Concerns)已習慣取代配置 (Convention over Configuration)直接操控 HTML ,所以這樣更方便使用jQuery 、 AngularJS 、 knockout.js 等套件不再有 Server 控制項,取而代之的是 HTML Helper 等物件網頁執行效率更好,不再有複雜的頁面生命週期網頁流量降低,因不再有 ViewState易於分工的架構,適合多人開發容易測試

Page 48: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET MVC 開發優缺點比較• 沒有 Web Form 如 PostBack

的複雜的事件處理流程• 關注點分離• 易於測試• 效能較佳• 沒有 ViewState ,網路流量降

低,適合開發 3G 行動裝置網站• 易於分工,多人開發• 容易開發行動裝置服務,如:

Web API

• 沒有如 Web Form 拖拉控制項• 需要較多的 HTML / CSS /

JavaScript 的基礎知識• 需要了解較多的 HTTP 基礎原

理• 初學者較難入門,因為沒有控

制項,前端的 UI ,也就是View 都得要自行撰寫

優點 缺點

Page 49: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

ASP.NET Web Form 優缺點比較• 開發類似 WinForm 一樣的拖拉

控制項• 不是很了解 HTTP 也可以完成

應用程式的開發• 許多伺服器控制項與第三方元

件的支援,資源較多• 擁有事件驅動與狀態管理機制,

可讓初學者不必花太多時間處理

• 透過 UpdatePanel 控制項,不需要了解 AJAX 原理也可以開發AJAX 網站

• 後端事件驅動生命週期複雜,出現問題時,初學者較難以偵錯

• 沒有習慣取代配置概念,開發自由度高,初學者容易開發出沒有切割、分層的龐然大物,不易維護

• 當畫面欄位多,資料量多時, ViewState 將成為系統的負擔,吃網路流量的怪物,不適合 3G 行動裝置

優點 缺點

Page 50: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

結論• MVC 的出現,並不是要取代既有的 Web Form ,雖然兩者

在開發的架構上有很大的不同,但都是建構在 ASP.NET 之上,因此彼此仍舊共用的技術也非常多,如: Application Lifecycle 、 HttpHandler 、 Web Cache 、 Session 、 Authentication 、 ASP.NET Provider Model (Membership 、 Profile.. 等等 )

沒有完美的架構,只有適合的架構

Page 51: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Demo實作系列:以分層的方式建置 ASP.NET 4.5 應用程式

51Developer Tools Marketing | January 2012

Page 52: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

補充:什麼是 LocalDB ?SQL Server 2012 Express 所提供的功能內建在 Visual Studio 2012 之中具備原本 SQL Express 的所有功能可以有多個 Instance透過 SqlLocalDB.exe 啟動,依附在主行程中,因此不同的使用者可以擁有同名的執行個體不像原本的 SQL Express 2008 以前,一台機器只可以安裝一個執行個體, LocalDB 可任意的建立新執行個體,且建立一個執行個體的時間不超過 3 秒簡化管理,非常適合在開發的時候使用

不支援 Windows XP/2003 等 .. 以下的系統

Page 53: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Connect. Share. Discussshttp://www.microsoft.com/taiwan/techdays2012/

Microsoft Certification & Training Resources

http://www.microsoft.com/learning/zh/tw/

Resources for IT Professionalshttp://social.technet.microsoft.com/Forums/zh-tw/categories/

Resources for Developershttp://social.msdn.microsoft.com/Forums/zh-tw/categories/

Resources

Connect. Share. Discussshttp://www.microsoft.com/taiwan/techdays2012/

Microsoft Certification & Training Resources

http://www.microsoft.com/learning/zh/tw/

Resources for IT Professionalshttp://social.technet.microsoft.com/Forums/zh-tw/categories/

Resources for Developershttp://social.msdn.microsoft.com/Forums/zh-tw/categories/

Resources

Page 54: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

Q&A

Page 55: Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天