開源Mono框架將C#程式設計帶到iPhone、Android和Wii
阿新 • • 發佈:2018-12-27
Mono,作為.NET執行庫的開源實現,正在將微軟的技術帶到未曾預料到的地方,包括iPhone,Android和Wii。 根據Novell公司的首席Mono開發者Miguel de Icaza稱,Apple的App Store中有多個應用程式是基於Mono。
這可能會讓那些熟悉蘋果應用程式限制政策的人感到意外,因為蘋果公司嚴格禁止開發者使用解釋語言和第三方執行環境——在很大程度上就將.NET和Java之類技術排除在外。
靜態編譯(Static compilation)是一道特別的沙司,正是它使得Mono在iPhone中執行成為可能。Mono還允許開發者使用ahead-of-time(AOT)編譯,它能將.NET的通用中間語言(CIL)直接在編譯中轉變成原生碼,這意味著應用程式不必要使用執行時編譯執行技術(JIT),以在執行時產生原生碼。de Icaza提到,開發者還開始使用Unity,基於Mono的開發3D遊戲的第三方商業程式設計框架。
目前App Store中大約40款應用程式是基於Unity和Mono。一個 Wii上的德國遊戲My Animal Center,程式碼主要是C#,用Unity和Mono開發。除了iPhone和Wii之外,一位開發者正試驗性的將Mono執行庫移植到Android平臺。這一切都展示了開源的價值和內在的適應性。
Mono是一個開源的跨平臺的.NET執行環境,支援Unix, Windows, MacOS等作業系統。
Mono 2.10是基於mono在github上的主分支Mono 2.8的一個重要升級,釋出於2011年2月15日。
Mono 2.10主要更新和改進:
- Google Native Client Support
支援Google本地客戶端,允許原生代碼在瀏覽器中執行。Mono虛擬機器,垃圾收集器和Just-in-Time編譯器可以運行於本地客戶端的沙箱中。 - New Profiler engine
新版Profiler解決了原先的Profiler在處理多執行緒、multi-appdomain應用程式以及大資料量時的諸多問題,GC新增的觸發事件讓開發者可以針對自己的程式編寫更先進的profiling工具和GC tracking工具。 - Faster socket stack
更快的socket堆疊,Socket非同步操作直接傳送至IO池,節約了記憶體和CPU時間。SocketAsyncEventArgs支援每個操作使用一個執行緒。 - Improved Parallel Framework
增加的並行框架。 - SGen Precise Stack Scanning and Many performance improvements.
SGen(mono的垃圾收集器)的精確堆疊掃描和效能增強,欲更多瞭解SGen,請閱讀這裡。 - Unified MonoTouch/Monodroid runtime support
統一的MonoTouch/Monodroid執行時支援。 - Cecil/Light
Cecil是一個可以生成ECMA CIL的類庫(有點類似於.NET中的Reflector),可以用它載入存在的程式集,瀏覽其中的型別,修改其中的程式碼,並將修改後的程式碼儲存至程式集中。 - New C# Compiler backend (can now use any custom mscorlib)
新的C#後臺編譯器,基於 IKVM.Reflection API ,允許開發者引用第三方的mscorlib.dll、或者自己定製的mscorlib.dll、或者來自其他專案的(比如:微軟的MicroFramework)。下一版本的mono,batch compilers (gmcs, smcs與dmcs)將全部切換至IKVM.Reflection。 - VB Compiler can now compile to both 2.0 and 4.0 profiles.
VB編譯器用cecil/light取代原來的Reflection,這樣可以通過一個編譯器生成使用不同版本執行時的程式集。 - Supports ASP.NET MVC3, Razor and new WebPages.
支援ASP.NET MVC 3, Razor, WebPages。雖然ASP.NET MVC 3是開源的,但它依賴一些非開源的類庫,而且這些類庫並不是.NET Framework的一部分。Mono中沒有這些類庫的開源實現,所以ASP.NET MVC 3應用程式不能無縫地運行於mono,你需要移除對Microsoft.Web.Infrastructure.dll的引用,使用mono自己的實現。Razor與WebPages可以直接使用微軟.NET的程式集運行於mono。 - New WebMatrix.Data database API.
微軟WebMatrix.Data的mono實現。通過這個API,可以利用C# 4.0的動態特性編寫資料庫訪問程式碼(程式碼示例)。欲瞭解更多WebMatrix.Data, 推薦閱讀re-introducing WebMatrix.Data。 - Improved OSX Mono
提供了一些OSX Mono的更新。 - F# and IronRuby
從Mono 2.10開始,將F#編譯器和工具打包進來。在Linux安裝包和Mac安裝器中包含了IronRuby 和IronPython。
其他改進:
- Winforms bug fixes
- Updates to msbuild
- Improved Moonlight support, and faster build times for Moonlight
- WCF:
- System.ServiceModel.Discovery
- WCF 4.0-style configuration
- ASP.NET 4.0:
- BaseMenuRenderer
- Sytem.Xaml: significant improvements on serialization of complex types and properties in .NET compatible format. Now it can be built on mobile profiles.
- More 4.0 APIs implemented
- Version tolerant serialization
- C# 4.0 significantly improved based on the Microsoft test suites for Silverlight