為什麼會有 ASP.NET vNext 的出現呢?因為市場在改變,微軟洞悉到,在未來,開放式的雲端開發架構會是主流,在雲端的開發上不再侷限於 Windows,執行的平台當然也不能侷限於 Windows ,這也是為什麼微軟之前要將自家的 Windows Azure 更名為 Microsoft Azure,這是替 ASP.NET vNext 做一個開端。
從事軟體開發工作的開發人員您可能最害怕聽到的消息就是又有新技術的誕生了,的確,尤其近幾年,新的語言、技術不斷的推層出新,排山倒海而來,不過有些新的技術其實本質不變,技術的平台 如:.NET Framework 本質不變、Web 開發的本質不變、一樣是服務 (Services) 端來服務 手機、平板、筆電、家電、等其他裝置 (Devices)。而變的是什麼?變的是市場、裝置 (Device) 類型、服務的型態也在變,如開放式的架構,因為雲端市場其實還在萌芽階段,所以整個雲端的服務型態其實每一天都在變化。
因此身為專業的 IT 人員,您或許並不需要學完或了解所有的新的技術,但你必須要學會洞悉市場,如果我們無法改變市場,那我們也只能擁抱市場的變化,了解市場未來的走向也能夠幫助我們更了解自己欠缺什麼,需要加強什麼來因應市場的變化。
為什麼會有 ASP.NET vNext 的出現呢?
如同前面所說,因為市場在改變,微軟洞悉到,在未來,開放式的雲端開發架構會是主流,在雲端的開發上不再侷限於 Windows,執行的平台當然也不能侷限於 Windows ,這也是為什麼微軟之前要將自家的 Windows Azure 更名為 Microsoft Azure,這是替 ASP.NET vNext 做一個開端。
在 ASP.NET vNext 裡有什麼?
在今年的北美TechEd NA(5月12-15日2014年)中發布下一代的服務基礎 (ASP.NET vNext),他首先針對雲端、裝置做最佳化,為跨平台的 ASP.NET 做開端。
如果只看 ASP.NET 這一塊,會發現在 .Next 中,主要就是 Websites 與 Services 兩大塊。在下圖中,我們可以看得出來 Websites 與 Services (Services 的部分可看做 Wep API 或 SignalR 或是 WCF) 共享同一個 ASP.NET 的核心,某種程度來說是一種合併,因為他們在同一個 Code CLR、同一個 Route 、不管是 Websites 或是 Web API 都是同一個模型繫結出來的,只是一個以 JSON 丟回到前端,另一個是以 HTML 丟回至前端。
針對雲端最佳化的新的核心 Core CLR:
下面這張圖主要是展現在 ASP.NET vNext 中,如果暫時不考慮平台特性,不管你在 ASP.NET vNext 中提供的是 Websites 或 Services ,以及核心不管是新的最佳化的 Core CLR 或是 原本的 CLR,都可以共用相同的 .NET Base Class Library。須注意的是,左半邊以 Core CLR 執行的部分才會針對雲端最佳化,且原本的 System.Web 由於與既有特定平台 CLR 相依性太高,所以無法被涵括其中,但現階段也並不會直接完全移除,只是可能無法在這裡獲得任何好處。除非微軟在下一次發布新的 System.Web 的下一版 (輕量版)。
新的 .NET 編譯器平台 (Roslyn) :
此次的北美TechEd NA(5月12-15日2014年)所發布的訊息中,另一個最吸睛就是 .NET 之父 Anders Hejlsberg 發表的這個新的 .NET 編譯器平台 (Roslyn) 了,當然,他的專案代號就是 Roslyn ,在上星期的 MVP 聚會中 Eric ShangKuan 說明的很清楚,也讓我了解到,它主要可以幫助你原本使用 Visual Studio 才可以做的如:分析程式碼、解析程式碼、優化、或是除錯程式碼,現在透過 Roslyn ,您也可以在你的編輯器中任意的叫用這個功能。這個部分的程式碼會以 Open Source 的方式放置在 Github 上,而這個編譯器平台在 Visual Studio 14 中將會完全整合。
想下載 Roslyn 可到 https://roslyn.codeplex.com/
1. 可使用命令列抓回來
git clone https://git01.codeplex.com/roslyn
2. 或使用 Git GUI
3. 也可到 http://source.roslyn.codeplex.com/ 看線上版
完全使用開放原始碼:
如同現有開放原始碼一樣,它也接受捐贈。
完全使用 NuGet 更新目前的運行的 (Platform/Framework):
所以在這樣的架構下,同一個 ASP.NET 應用程式可以在不用修改的形況下,在不同硬體環境的 CLR 中執行。甚至透過 NuGet 更新目前執行的 CLR 平台。
真正的跨平台:
這次的改版是真正希望做到跨任何的平台的 ASP.NET 應用程式,所以在 Core CLR 中,你會找不到 System.Drawing、System.Runtime.InterOpService、System.Web 等命名空間,移除掉的主要原因是因為,這些功能與特定平台如 Windows 相依性過高,並不容易移植至其他平台。比如 System.Drawing 會使用到 x86 的繪圖 Win32 API,而 System.Runtime.InterOpService 會使用到 x86 的 COM,因為COM/DCOM 本來就只能在 x86 系統中運行,這會違背在 ASP.NET vNext 的初衷,所以不會涵括在其中。
如何測試 ASP.NET vNext
目前想測試ASP.NET vNext 有兩種方式
1. 上 Microsoft Azure,上面直接提供安裝好的 VM 環境 (如果您公司有 MSDN 訂閱帳戶)
2. 或是直接到微軟官方網站下載
http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs
由於 VS14 CTP 目前只有提供英文版,只能夠在英文版的 Windows 中安裝,所以筆者使用 Azure 上的 VM 來做介紹。
在 Azure 設定 VM 真的是非常的容易,彈指之間,VM 就建立完成了,這時點選連結就會下載一個 RDP 檔案,開啟後結可遠端桌面至該 VM 系統。如下:
直接開啟 Visual Studio 14
並建立一個空的 ASP.NET vNext Web Application
在 ASP.NET vNext 中元先的專案檔已經部存在了,取而代之的是 .kproj,而 kproj 檔案若打開來會發現裡面只記錄著 ActiveTargetFramework 而已,其他的內容呢?其他的內容分別被拆為 project.json 與 config.json了。
project.json
就是舉凡這個專案中所有使用到的組件的相依性列表,主要也記錄必須透過 NuGet 安裝的 Assembly 項目。
config.json
這主要是用來取代原本的 web.config 檔案,從下方的圖中發現目前空的專案中也只有設定一個連線字串而已。
而在 ASP.NET vNext 中使用 JSON 做為設定檔案,這讓筆者想到,未來該不會我的在 Azure 中的專案中的 config.json 會不會又是其他地方的 Web API 所發佈出來的呢?或是說,對方 ASP.NET 應用程式要變更設定只要來存取我這個 Web.API 就好了。雖然官方解釋不見得一定要使用 JSON 做為主要格式,不過這真有趣的架構。^_^
在專案中還會發現一個新的東西,Helios?太陽神?
喔~ 其實那只是使 Core CLR 可運行在 IIS 中的 InterOp Services 而已,所以如果它是運行在 OWIN 環境上就不會出現了。
且在 References 下面變成由 .NET Framework 4.5 分割出來,這個 Core CLR 執行環境的概念有點像之前微軟分離出 Windows Phone 的運行平台的那種概念。
其他如 Sky 已經預先寫好許多操作的說明文,筆者就不再熬述:
- Visual Studio - Visual Studio 14 CTP 1 隨便玩
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 初體驗
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 參考其他專案
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6) 發佈與self host
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) Core CLR and .NET Core Framework
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 使用Source Code
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 於MAC上跑ASP.NET MVC (上篇) 安裝Mono
- ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 於MAC上跑ASP.NET MVC (後篇) Kruntime與MVC專案設定
先到此,等 RC 出現之後筆者再介紹其他開發上的應用 XD
參考資料:
The Future of .NET in the Server: ASP.NET vNext optimized for Cloud and Server workloads
ASP.NET vNext: the future of .NET on the Server
http://blogs.msdn.com/b/webdev/archive/2014/05/13/asp-net-vnext-the-future-of-net-on-the-server.aspx
Visual Studio "14" CTP 1 釋出
http://blogs.msdn.com/b/msdntaiwan/archive/2014/06/04/visual-studio-14-ctp-1.aspx
Visual Studio的“14”CTP
Welcome to the .NET Compiler Platform ("Roslyn")
[ASP.NET][vNext] ASP.NET vNext @ 2014 (小朱)
http://www.dotblogs.com.tw/regionbbs/archive/2014/05/18/asp.net.vnext.2014.aspx
[.NET][vNext] .NET vNext @ 2014 (小朱)
http://www.dotblogs.com.tw/regionbbs/archive/2014/05/18/dotnet.vnext.2014.aspx
[ASP.NET] VS14 and ASP.NET VNext (No18)
http://www.dotblogs.com.tw/ian/archive/2014/06/04/vs14andasp.netvnext.aspx
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^