在 Linux 和 Mac OS X 系統上執行 .NET
.NET Core 執行時已經看到了實現真正的跨平臺的美好前景,它最終出現在 Linux 和 Mac OS X 平臺上。在上週舉辦的 Microsoft Build 大會上,來自微軟的專案經理 Habib Heydarian 為聽眾分析了這一舉措對開發者們所帶來的益處,並告訴開發者們如何開始探索這些新的機會。在名為“讓 .NET 實現跨平臺”的一場講座中,Heydarian 首先介紹了開發者如何進行一次全新的 .NET Core 安裝。
首先,所有的 .NET 程式碼都包含在一個單獨的資料夾中,而無需將它安裝在某個系統級別的位置。這樣,只要願意,每個 .NET 應用都可以使用一個完全不同的編譯版本。並且在 Windows 系統上進行編譯的程式碼也能夠在 Mac OS X 和 Linux 系統上執行。
要在以上系統中執行一個基於命令列的標準 HelloWorld 程式,可使用以下方式:
./corerun HelloWorld.exe
// corereun 是一個原生的執行 app 的環境
// 在 Windows 上,引導 .NET 應用的功能已經內建於作業系統中了
在非 Windows 平臺上使用 .NET,就意味著開發者們能夠使用 ASP.NET 5、CoreCLR,並且從以下共享的功能中受益了:
- 執行時元件
- 64 位的 JIT 編譯器與 SIMD 指令
- 垃圾回收器
- 類庫
- 基礎類庫
- NuGet 包
- 編譯器
- .NET 編譯器平臺(Roslyn)
如何獲取 .NET Core
對於 Mac OS X 開發者來說,推薦的方式是使用 Homebrew 以獲取必要的元件。當安裝好 Homebrew 之後,就可以通過以下命令獲取 .NET 元件了:
brew tap aspnet/dnx
brew update
brew install dnvm
dnx . kestrel
Linux 使用者可以從該專案的網站上下載一個包含了所有必要元件的 TAR 檔案,隨後按照以下方式進行安裝:
tar zxvf PartsUnlimited-demo-app-linux.tar.gz -C ~/
source ~/.dnx/dnvm/dnvm.sh
dnvm use 1.0.0-beta5-11624 -r coreclr -arch x64
dnx . kestrel
你一定注意到了一點,在這個兩個平臺上所執行的最後一條指令都是 kestrel 的執行。Kestrel 也正是“跨平臺的 ASP.NET 5 web 伺服器”,DNVM 則是 .NET 的版本管理器。目前,該專案只支援 64 位平臺的 Linux 和 Mac OS X。開發團隊仍然在繼續研究如何讓它支援 32 位的系統。
緊隨 Linux 和 Mac OS X 之後,對 FreeBSD 的支援最近也加入到該專案中。對於這三個平臺來說,目前還存在著一個限制,那就是從原始碼編譯 .NET Core 的功能僅限於 Windows 版本。要從原始碼編譯 .NET,開發者需要首先編譯 CoreCLR,然後再編譯 CoreFX。
正如 Windows 平臺上的 .NET 開發者能夠利用平臺呼叫(PInvoke)功能一樣,Linux 平臺上的開發者也能夠使用 DLL Import 這一命令:
[DllImport (“libc”)]
private static extern int printf (string format);
…
Printf (“Hello, //BUILD 2015!\n”);
下一步計劃
Heydarian 在演講餘下的部分談到了該團隊下一步的計劃,以及微軟對這一專案的目標。隨著 Visual Studio 不斷地擴充套件到非 Windows 的平臺上,微軟希望能夠改進在這些新環境中的除錯功能。對於 VS2015 來說,就是要實現遠端除錯。而對於 VS Code 來說,首先要從實現本地除錯開始。
另一個改進的方向是整體的上線預備。為了在這方面有所突破,團隊打算整合 MSBuild 的支援,並消除目前對 Mono 在這方面功能的依賴。
Heydarian 表示,當 .NET 在 Linux 和 Mac OS X 平臺上正式釋出,併成為“RTM”版本之後,微軟將做出以下正式的承諾:
- .NET Core 應用能夠在基於 Linux 的生產環境中執行,包括 Docker、本地部署和雲端部署
- 開發者可以使用 VS Code 或其它任何喜愛的編輯器,對執行在 Mac OS X 環境中的 .NET 程式碼進行編輯、編譯與除錯
- 全部使用無關平臺特性建立的應用在 Windows 與其它平臺上具有相同的行為
- .NET Core 將把現有 .NET 雲端生態系統的類庫也帶到 Linux 上
- 微軟對 .NET 在 Linux 上的支援、服務和維護與其它微軟產品一視同仁
在你的應用中加入對 Linux 和 Mac OS X 的支援
微軟將推出一套 API 可移植性工具,用於對現有的程式碼進行分析,找出所需的程式集和目標平臺。目前為止,唯一對相容性進行了測試的 Linux 分發平臺是 Ubuntu 14.04.2 LTS。雖然沒有明確地表示不支援其它的 Linux 分發平臺,但無法保證在這些平臺上是否能夠正常執行。
Heydarian 認為目前來看,微軟所提供的 .NET 與 Mono 版本相比,所針對的市場方向並不相同。Haydarian 表示:“……雖然[Mono]在移動場合的表現優秀,但它並不是為伺服器或雲端生產環境的使用場景而設計的……”,而 .NET Core 傾向於在具有高吞吐量、高伸縮性,以及更高的修復前平均時間(MTTF)的伺服器環境中所使用。
希望通過 .NET 即將提供的功能,從跨平臺方式中受益的開發者可以首先從 VS2015RC 中的 ASP.NET 5 專案模板開始打造及測試應用,並且參考 GitHub 上的 ASP.NET 示例應用 Parts Unlimited。凡是能夠在 Windows 上的 ASP.NET 5 中成功執行的應用,一旦等到 .NET Core RTM 之後,就能夠無縫地遷移至 Linux 平臺上。
相關文章
- 在虛擬機器上安裝Mac os x 系統虛擬機Mac
- 在Mac OS X上安裝Virtual Box 和 VagrantMac
- [Sqlite] Sqlite在Windows、Linux 和 Mac OS X 上的安裝過程SQLiteWindowsLinuxMac
- MAC OS X系統顯示和隱藏檔案Mac
- Windows、Linux、Unix、Mac OS X系統哪個更好用?WindowsLinuxMac
- MAC OS X系統目錄結構Mac
- 【轉】mac os x系統上Android開發環境的搭建MacAndroid開發環境
- 如何在MAC OS X上建立LINUX啟動盤MacLinux
- win系統如何在mac上執行Mac
- Mac OS X 上用 otool 代替 lddMac
- Mac OS X 系統的環境變數配置Mac變數
- Mac OS X Lion作業系統常用快捷鍵Mac作業系統
- Unix、Windows、Mac OS、Linux系統故事WindowsMacLinux
- Mac OS XMac
- 在雪豹10.6.6(Mac OS X)上安裝Oracle10gMacOracle
- 如何通過 SSH 在遠端 Linux 系統上執行命令Linux
- 在Linux作業系統上執行Windows應用程式(轉)Linux作業系統Windows
- 在 Windows 系統上執行 VIC 水文模型Windows模型
- Mac OS上執行openssl命令操作,生成RSA私鑰和RSA公鑰Mac
- Mac OS X系統如何登入facebook圖文教程Mac
- 在Mac OS X中配置Apache + PHP + MySQLMacApachePHPMySql
- 在Mac上用自己編譯出的DNX執行.NET程式Mac編譯
- mac os x 啟用apache 和 phpMacApachePHP
- 在 Mac OS X 上安裝紅帽容器開發工具包Mac
- Mac os x 10.4.8終於在我的pc上安裝成功Mac
- 在netty3.x中存在兩種執行緒:boss執行緒和worker執行緒。Netty執行緒
- Mac OS X 系統 Finder 中直接顯示圖片尺寸Mac
- 在Mac OS X中配置Apache+PHP+MySQLMacApachePHPMySql
- 在APACHE上執行ASP.NET程式ApacheASP.NET
- Mac OS X中MacPorts安裝和使用Mac
- Mac OS X 上的PHP開發環境 vimMacPHP開發環境
- cocos2d-x for android配置 & 執行 Sample on Linux OSAndroidLinux
- 在 Mac OS X 中啟用和使用“root”使用者(雪豹版)Mac
- 在 Ubuntu 上安裝 .NET SDK 或 .NET 執行時Ubuntu
- 在Mac系統執行dlib人臉識別DemoMac
- NetMarketShare:2011年8月Mac OS X系統全球安裝率超6%Mac
- 怎樣在 Kubernetes 上執行 PostgreSQLSQL
- 在kubernetes上執行WASM負載ASM負載