ASP.NET 5 是真正的跨平台 (Corss Platform) 解決方案,經過我們測試,它確實可以在 Ubuntu、OS X 等其他的環境執行 ASP.NET MVC 6 的應用程式,只是目前跨平台的 Runtime (dnvm/dnx) 部分是倚靠 Mono 來執行,未來等微軟官方自己的 .NET Core 5 Runtime 推出,就不需要再依靠 Mono 來執行了
前言
在今年的 4/2 集英信誠-與大師對談,與 [Study4.TW] 社群中筆者演說了 ASP.NET 5 新功能與變革,課程中筆者也說明了 ASP.NET 5 真正走向跨平台並走向開源,不過真正開源的部分只有下圖中黃色框起來的部分。
詳細的 .NET 開源的專案可參考:
連結如下:
http://www.dotnetfoundation.org/projects
想了解筆者上過的 ASP.NET 5 相關課程詳細內容可以參考:
[Study4.TW] - 投影片分享 - ASP.NET 5 新功能與變革
集英信誠與大師對談系列 (技術論壇) - ASP.NET MVC 6 新功能初探
學習 ASP.NET 5
筆者從去年九月開始接觸 ASP.NET 5 相關的技術,當時微軟稱為 ASP.NET vNext,其實 vNext 測試的版本早在去年六月就發佈第一版了,還記得當時黃忠成老師就已經在準備九月的 TachDays 的 ASP.NET vNext 課程。
ASP.NET 5 有許多讓人驚豔的改進,比如說 .NET Framework (輕量化 與 Package 化) 不再包山包海,您可以隨選安裝需要的 .NET Framework 在你的用程式中,不用像以前一樣總得要在 Server 上安裝一大包的 .NET Framework。且新的執行平台 .NET Core 5 是真正的跨平台的執行環境,所以與 IIS 相依的 HttpModule, HttpHandler 均在 .NET Core 5 中被移除掉,所以這部分微軟真的是將 .NET 核心 mscorelib 的部份抽離出來、且重新在各平台 linux/OS X/Unit 等重新編譯使它真正的跨不同平台。
接觸 ASP.NET 5 對我來說,花最多時間的地方倒不是在新平台與架構,反倒是 Front-End (前端工程) 與 Open Source 的東西不熟,讓我花了相當多的時間,大約 70% 的時間在了解 Node.js、npm、bower、grunt、gulp、Ubuntu 平台 等,實際上 ASP.NET 5 本身的架構我只花 30% 的時間而已。如果您本身也是微軟 ASP.NET 工程師,且對於前端工程就相當的熟悉,相信一定會比我花更少的時間學習 ASP.NET 5。
在 Ubuntu v14.04 上執行 ASP.NET 5
微軟新的執行環境 NET Core 5 是真正的跨平台,只是目前還是依靠 Mono 來執行,因為目前微軟還在緊鑼密鼓的開發中。目前要在 Ubuntu 上執行 ASP.NET 5 安裝的步驟稍稍比 OS X 繁瑣一些。所以筆者真心的建議,如果你有 OS X 或是 MacBook 環境,就不用再安裝 Ubuntu 環境了,直接就在 OS X 上測試吧,比較不會遇到一些詭異的問題。
安裝步驟
1. 更新 Ubuntu Server
$apt-get update
$apt-get upgrade
2. 安裝 Mono 4.0.1
$apt-get install mono-complete
ž完成後就可以測試一下 Mono 的版本是否 v4.0.1 (是目前最新的版本了):
$mono –V
3. 安裝 libuv
libuv 是一種支援 multi-platform 與 asynchronous 的 KestrelHttpServer 網頁開發伺服器
$sudo apt-get install automake libtool curl
$curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src
$cd /usr/local/src/libuv-1.4.2
$sudo sh autogen.sh
$sudo ./configure
$sudo make
$sudo make install
$sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/
$sudo ldconfig
4. 安裝 DNVM 命令 (Linux/Ubuntu)
$curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
注意畫面上會出現 'source /usr/bin/... ' 等訊息,這是表示您還需要設定環境參數的意思,可直接執行這一段 Source 敘述即可。
5. 裝完 DNVM 必須再讓 Mono 同步一下
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
$sudo apt-get update
$sudo apt-get install Mono-Complete
6. 安裝 nodejs
$apt-get install nodejs
7. 安裝 npm
這裡 npm 是需要另外安裝的,不像 Windows 平台的 MSI 封裝檔,一次將所有元件安裝起來。
$sudo apt-get install npm
8. 安裝 git
$apt-get install git
9. 從 github 下載一個 HelloWeb, HelloMvc 來測試看看
$git clone https://github.com/aspnet/Home.git
或者也可嘗試筆者做的 HelloWorldMvc 6 應用程式:
https://github.com/wugelis/HelloMvc6
注意:
在 Ubuntu 上使用不到的套件就不需要安裝進來,請記得將 Kestrel 引入,因為在其他平台不適用 IIS,需使用 Kestrel 來執行應用程式。
10. 先使用 dnu restore 下載需要的 .NET Framework
$dnu restore
注意:
如果您沒有使用管理員身分進入 Ubuntu ,那麼在 restore 時會出現 Access denied 的錯誤訊息。
小訣竅:
使用管理員可用 sudo –s 方式進入,Ubuntu 會要求您輸入管理員的密碼
11. 編譯 ASP.NET 5 應用程式
$dnu . build
若有版本的 issue 會出現一些警告。
12. 執行 ASP.NET 5 應用程式
$dnx . Kestrel
若沒任何意外,可以看見我們的應用程式被執行起來 (下圖是使用筆者的 https://github.com/wugelis/HelloMvc6)
結語:
ASP.NET 5 是真正的跨平台 (Corss Platform) 解決方案,經過我們測試,它確實可以在 Ubuntu、OS X 等其他的環境執行 ASP.NET MVC 6 的應用程式,只是目前跨平台的 Runtime (dnvm/dnx) 部分是倚靠 Mono 來執行,未來等微軟官方自己的 .NET Core 5 Runtime 推出,就不需要再依靠 Mono 來執行了。
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^