XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/07/29

Xamarin平台架構概觀

Xamarin平台架構概觀

在這筆記中,簡單的描述 Xamarin 系統,如何在 Android 或者 iOS 系統內運行並且如何讓雙方 (Mono & 原生作業系統) 兩者間互相溝通與偕同工作。

Xamarin.Android (Bridge 橋接)

Xamarin.Android 的應用程式當安裝到 Android 裝置內,並且開始執行之後,這隻程式是會在 Mono (這是如同在 Windows 作業系統下的 CLR Common Language Runtime) 執行環境運行,此時,會與 Android 的 Runtime (在底下圖中,簡稱 ART) 一同執行。透過這樣的架構,使用 Xamarin.Android 開發的應用程式,就可以使用 C# 程式語言,呼叫 BCL (基礎類別庫 Base Class Library) 內的任何類別與方法,不過,這些 BCL 的功能,是會在 Android 的 Linux 作業系統下來執行。
不過,在 Android 系統環境所提供的系統功能,例如:音訊、繪圖等等功能,都無法透過原生應用程式來呼叫,而是必須透過 ART 內的 Java API。在這樣的系統規範之下,Xamarin.Android的開發者若要存取 Android 作業系統內的不同功能,需要使用透過.NET API的呼叫或者使用橋接 (Bridge) 機制間接使用到 Android 系統內 Java API 所提供的功能。這些說明可以透過底下圖片清楚地呈現出來。
其中
  • ACW ( Android Callable Wrappers )
    ACW 是使用JNI (Java Native Interface) 橋接 (Bridge) 技術,可以在 Android Runtime 內,呼叫Mono Runtime 的 Managed 程式碼。
  • MCW ( Managed Callable Wrappers )
    MCW 是使用JNI (Java Native Interface) 橋接 (Bridge) 技術,可以讓 Mono Runtime 的 Managed 程式碼,呼叫 Android 系統內提供的各項功能與程式碼。
XAArchitecture

Xamarin.iOS (Binding 綁定)

Xamarin.iOS 的應用程式將會在 Mono 的環境內來執行,此時,將會使用 Ahead of Time (AOT) ( AOT 是 Mono 將 IL 程式碼轉換成為當值運行環境的機器碼的產生器;另外一個技術將會是 JIT Just-in-Time) 把 C# 編譯過後產生的 IL程式碼,再度編譯轉換成為 ARM 組合語言用的機器碼;本身 Mono 的運行環境將會與相對應的 Objective-C Runtime 一同運行。透過下圖的呈現,您可以更加清楚 AOT 的運作方式;在這裡LLVM 是個可以在 Xamarin.iOS 專案內設定的一個屬性,透過該屬性的設定,可以讓您產生較小的程式檔案與較快的執行效率,缺點就是,產生可執行佈署檔案需要花費已較多的時間,建議可以在最終要產生佈署檔案的時候,在啟用該設定值。
AOT
這兩個執行時期的環境,都是在 iOS 作業系統上執行,因此,可以允許開發者存取原生的系統API或者 Managed 系統內的 API。
當需要使用到 Apple iOS API 所提供的各類豐富的功能,您可以透過 Binding 機制的使用。
XiArchitecture

沒有留言:

張貼留言