1. 程式人生 > >開源Mono框架將C#程式設計帶到iPhone、Android和Wii

開源Mono框架將C#程式設計帶到iPhone、Android和Wii

Mono,作為.NET執行庫的開源實現,正在將微軟的技術帶到未曾預料到的地方,包括iPhone,Android和Wii。 根據Novell公司的首席Mono開發者Miguel de Icaza稱,Apple的App Store中有多個應用程式是基於Mono。

這可能會讓那些熟悉蘋果應用程式限制政策的人感到意外,因為蘋果公司嚴格禁止開發者使用解釋語言和第三方執行環境——在很大程度上就將.NET和Java之類技術排除在外。
靜態編譯(Static compilation)是一道特別的沙司,正是它使得MonoiPhone中執行成為可能。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開發。除了iPhoneWii之外,一位開發者正試驗性的將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安裝器中包含了IronRubyIronPython

其他改進:

  • 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