Fork me on GitHub

C# 跨平臺UI 技術

構建跨平臺應用程序的的幾種UI技術,以C# 或者其他基于.NET的 語言(諸如:Visual Basic[VB])。本文研究了三種跨平臺技術,并討論了在哪些情況下開發人員可以使用這些技術。本文使你對可以用于C#中構建前端應用程序的技術有一個基本了解,并將回答諸如哪些平臺可用的問題。那它可以在瀏覽器中運行嗎?它會具有原生的外觀和感受嗎?另外,可以將其部署到應用商店嗎?

背景

.NET Framework是一項于2000年代初創建的技術,主要用于Windows桌面應用程序。當時主要的兩種語言是C#VB。這些語言幣可以編譯為通用中間語言(CIL - 以前成為微軟中間語言``MSIL)。當時.NET的主要競爭對手是Java。它與.NET相似,但從一開始就是為了跨平臺兼容性而設計的,Java包括跨平臺的UI框架SWing.NET發布后不久,Mono平臺于2004年發布。此框架允許將庫編譯為CLI并在Linux等平臺上運行。但是,基于.NETWindows窗口之類的UI技術無法再其他平臺上運行,因為它們依賴Windows操作系統的本機組件。Mono平臺不斷發展,開發人員為每個平臺創建了多個UI組件,但是沒有一個跨平臺UI`組件成為事實上的標準。微軟沒有推出將任何UI技術作為所有平臺的答案。

現代生態系統

自.NET成立以來,情況發生了很大變化。現在,人們每天至少使用五種主要操作系統:Windows(臺式機/平板電腦),OSX(臺式機),Android(電話/平板電腦),iOS(電話/平板電腦),Linux(主要是臺式機)。還有許多其他平臺來驅動諸如手表之類的設備和諸如Tizen之類的電視組件。隨著應用商店的出現,應用程序的部署機制也在迅速改變。現在,應用程序部署到手機的標準方法時使用各種應用商店,人們開始期望他們的手機和平板電腦能夠運行與臺式機相同的應用程序。

在應用程序開發部署中,安全性現在是一個重要的考慮因素。臺式機落后于手機,因為許多應用程序仍然需要用戶以安裝程序的形式下載該應用程序,然后手動進行安裝。這是一個巨大的問題,任何忽略此問題的開發人員都將自擔風險。如果用戶被迫從互聯網上下載應用程序,那么他們就會遭受惡意軟件的攻擊。他們失去了對應用程序級別權限的控制,并向間諜軟件開放計算機權限,而沒有權限審查該軟件。隨著用戶變得越來越精明,越來越少的人開始容忍這種情況,并選擇通過應用商店或在瀏覽器中部署的應用程序。

這里的關鍵是:
您需要安全地部署應用程序,并且需要在盡可能多的平臺上進行部署。

現代運行時:Mono/Xamarin.NET CoreWebAssembly

Xamarin是一家給公司,其工程師創建了Mono平臺已在許多平臺上運行CILXamarin在2016年被微軟收購。他們仍然維護Mono平臺,該平臺允許C#代碼在iOSAndroid和其他平臺上運行。開發人員經常使用Xamarin作為Mono的同義詞,但是Xamarin還是一套CIL庫,可在非Windows平臺上驅動應用程序。

.NET Core是類似于.NET Framework的現代桌面運行時環境。它可以在OSXLinuxWindows等操作系統上運行。自.NET Core發布以來,開發人員在Mono平臺上構建了多個UI框架,因此構建跨平臺運行的前端應用程序的能力已成為現實。其中一些UI框架也可以在Mono上運行。這意味著現在有可能構建跨平臺相似性完美的應用程序。

開發人員不能忽視Web Assembly(Wasm)。它是瀏覽器內置的一項新興技術,并得到W3C的支持。從本質上講,這項技術使開發人員能夠以與JavaScript一樣安全的方式編譯可以在瀏覽器中運行的代碼。最重要的是,它是一種獨立于語言的“基于堆棧的虛擬機的二進制指令格式”。C#編譯為這種指令格式,因此為C#開發人員打開了UI功能的新世界。C#代碼可以以類似于Silverlight的方式在瀏覽器中運行,Silverlight現在已經不在獲得支持了。

XAML在這里也需要提及。 XAML是一種標記語言,用于在大多數基于c#UI框架中以聲明方式定義UI。這里提到的三個平臺都支持XAMLXAMLC#就像HTMLJavaScript。但是,XAMLHTML更進一步,因為它不僅包括CSS之類的樣式,而且還具有非常強大的數據綁定功能。

以下是基于這些運行時的UI技術。

Uno Platform

Uno Platform是基于XAML的開源UI庫和平臺,可在iOSAndroidWeb Assembly上運行。它呈現本機原生控件,但嘗試在非Windows 10平臺上模擬Windows UWP圖形庫。它具有現代的Windows 10外觀,并可以使用XAML樣式輕松自定義樣式。

https://github.com/nventive/Uno

平臺iOSAndroidWebAssemblyWindows(諸如UWP)。
應用商店:蘋果商店,谷歌商店,微軟商店(使用UWP編譯時)。

渲染類型:本機原生。控件的行為與在本地平臺上一樣。但是,默認情況下,控件的樣式類似于Windows 10應用程序,并且接近完美像素。可以更改樣式,使其看起來更像本機平臺。

Xamarin.Forms

Xamarin.Forms是基于XAML的開源工具包,支持AndroidiOSWindows UWP,開箱即用的預覽OSX,并且將來可能會支持Linux。它是一種手機平臺驅動的UI技術,但通過將聲明性XAML呈現給本機UI組件,彌合了手機,平板電腦和臺式機之間的差距。

Xamarin.Forms.NET開發人員提供了完整的跨平臺UI工具包。在Visual Studio中使用C#構建完全本機的AndroidiOS和通用Windows平臺應用程序。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/

平臺iOSAndroidTizenWindows(諸如UWP),其他平臺正在預覽中https://github.com/xamarin/Xamarin.Forms/wiki/Platform-Support
應用商店:蘋果商店,谷歌商店,微軟商店。

渲染類型:本機原生。專為iOS構建的應用在外觀和行為上均類似于iOS應用。Android應用的外觀和行為類似于Android應用。

Avalonia

Avalonia是基于XAML的開源UI庫和平臺,可在WindowsLinuxOSX上運行。社區基于Windows WPF UI框架。因此,它主要針對臺式機使用,可能不太適合移動應用程序。

我們支持Windows,Linux和OSX,并為Android和iOS提供了實驗性的移動支持。

http://avaloniaui.net/

平臺WindowsLinuxOSX,實驗性支持iOSAndroid。技術主要是基于.NET Core

應用商店:未知。將來可能會通過應用商店發行Avalonia應用。但是,目前尚無明確的文檔或執行此操作的途徑。。

渲染類型:像素完美。該平臺控制渲染,并且不依賴本機組件進行渲染。

怎么選擇

你是否需要瀏覽器支持?

如果是這樣,Uno Platform顯然是這里的做好的選擇。這是唯一一個完全支持Wasm的平臺。從頭開始構建具有瀏覽器支持的應用程序是一個明智的選擇,因為它可以確保最大程度的滲透。用戶不必從應用商店下載應用程序即可使用您的應用程序,但可以免受惡意軟件的侵害。

注意:Xamarin.Forms和Uno Platform可以一起使用。

您需要原生的外觀和感覺嗎?

如果是這樣,Xamarin.Forms可能是正確的選擇。像Uno平臺一樣,Xamarin.Forms允許在各個平臺之間以聲明方式定義UI,但基于本機平臺呈現UI。因此,不要因不以特定于平臺的方式運行的控件而使用戶感到震驚。默認情況下,樣式近似于平臺的本機外觀,而Uno Platform則更像Windows 10。但是,Xamarin.FormsUno Platform都允許為其本機平臺設置樣式。

Xamarin.Forms目前已獲得微軟的全面支持,因此在不久的將來會獲得可靠的支持。但是,Uno平臺是一個令人印象深刻的平臺,無疑是Xamarin.Forms值得競爭的平臺。如果要構建本機應用程序,則需要同時試用Uno PlatformXamarin.Forms,以得到最適合您的項目的方法。

用戶是否可以在應用商店以外下載應用程序,目標機器為臺式機?

從某種意義上講,這是一個反問。如前所述,您不應該期望用戶在商店或瀏覽器之外下載應用。但是,在某些合理的情況下,您的用戶可能會喜歡具有.NET Core運行時的所有功能,并可以在LinuxWindowsOSX上都是像素完美的自定義適合桌面的體驗。在這種情況下,Avalonia是您最好的選擇。

作為一個UI庫,Avalonia不應該被低估。任何WPF開發人員都熟悉它,并且非常容易上手運行和深入研究。強大的平臺.NET Core使它成為令人信服的選擇。

注意:本文已清晰的表達了觀點。另外,這里沒有提到其他幾種C#技術。它們將在后續文章中進行介紹。

posted @ 2020-07-06 21:43  芝麻麻雀  閱讀(...)  評論(...編輯  收藏
SesameTech
色网站直播