構建跨平臺應用程序的的幾種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等平臺上運行。可是,基於
.NET的
Windows窗口之類的
UI技術沒法再其餘平臺上運行,由於它們依賴
Windows操做系統的本機組件。
Mono平臺不斷髮展,開發人員爲每一個平臺建立了多個
UI組件,可是沒有一個跨平臺
UI`組件成爲事實上的標準。微軟沒有推出將任何UI技術做爲全部平臺的答案。git
自.NET成立以來,狀況發生了很大變化。如今,人們天天至少使用五種主要操做系統:Windows
(臺式機/平板電腦),OSX
(臺式機),Android
(電話/平板電腦),iOS
(電話/平板電腦),Linux
(主要是臺式機)。還有許多其餘平臺來驅動諸如手錶之類的設備和諸如Tizen
之類的電視組件。隨着應用商店的出現,應用程序的部署機制也在迅速改變。如今,應用程序部署到手機的標準方法時使用各類應用商店,人們開始指望他們的手機和平板電腦可以運行與臺式機相同的應用程序。github
在應用程序開發部署中,安全性如今是一個重要的考慮因素。臺式機落後於手機,由於許多應用程序仍然須要用戶以安裝程序的形式下載該應用程序,而後手動進行安裝。這是一個巨大的問題,任何忽略此問題的開發人員都將自擔風險。若是用戶被迫從互聯網上下載應用程序,那麼他們就會遭受惡意軟件的攻擊。他們失去了對應用程序級別權限的控制,並向間諜軟件開放計算機權限,而沒有權限審查該軟件。隨着用戶變得愈來愈精明,愈來愈少的人開始容忍這種狀況,並選擇經過應用商店或在瀏覽器中部署的應用程序。web
這裏的關鍵是:
您須要安全地部署應用程序,而且須要在儘量多的平臺上進行部署。c#
Mono
/Xamarin
,.NET Core
,WebAssembly
Xamarin
是一家給公司,其工程師建立了Mono
平臺已在許多平臺上運行CIL
。Xamarin
在2016年被微軟收購。他們仍然維護Mono
平臺,該平臺容許C#
代碼在iOS
,Android
和其餘平臺上運行。開發人員常用Xamarin做爲Mono的同義詞,可是Xamarin仍是一套CIL庫,可在非Windows平臺上驅動應用程序。瀏覽器
.NET Core
是相似於.NET Framework
的現代桌面運行時環境。它能夠在OSX
,Linux
和Windows
等操做系統上運行。自.NET Core
發佈以來,開發人員在Mono
平臺上構建了多個UI
框架,所以構建跨平臺運行的前端應用程序的能力已成爲現實。其中一些UI
框架也能夠在Mono
上運行。這意味着如今有可能構建跨平臺類似性完美的應用程序。安全
開發人員不能忽視Web Assembly
(Wasm)。它是瀏覽器內置的一項新興技術,並獲得W3C
的支持。從本質上講,這項技術使開發人員可以以與JavaScript同樣安全的方式編譯能夠在瀏覽器中運行的代碼。最重要的是,它是一種獨立於語言的「基於堆棧的虛擬機的二進制指令格式」。C#
編譯爲這種指令格式,所以爲C#開發人員打開了UI
功能的新世界。C#
代碼能夠以相似於Silverlight
的方式在瀏覽器中運行,Silverlight
如今已經不在得到支持了。框架
XAML
在這裏也須要說起。 XAML
是一種標記語言,用於在大多數基於c#
的UI
框架中以聲明方式定義UI
。這裏提到的三個平臺都支持XAML
。 XAML
對C#
就像HTML
對JavaScript
。可是,XAML
比HTML
更進一步,由於它不只包括CSS
之類的樣式,並且還具備很是強大的數據綁定功能。工具
如下是基於這些運行時的UI
技術。ui
Uno Platform
Uno Platform
是基於XAML
的開源UI
庫和平臺,可在iOS
,Android
和Web Assembly
上運行。它呈現本機原生控件,但嘗試在非Windows 10
平臺上模擬Windows UWP
圖形庫。它具備現代的Windows 10
外觀,並可使用XAML
樣式輕鬆自定義樣式。
https://github.com/nventive/Uno
平臺:iOS
,Android
,WebAssembly
,Windows
(諸如UWP)。
應用商店:蘋果商店,谷歌商店,微軟商店(使用UWP編譯時)。
渲染類型:本機原生。控件的行爲與在本地平臺上同樣。可是,默認狀況下,控件的樣式相似於Windows 10應用程序,而且接近完美像素。能夠更改樣式,使其看起來更像本機平臺。
Xamarin.Forms
Xamarin.Forms
是基於XAML
的開源工具包,支持Android
,iOS
,Windows UWP
,開箱即用的預覽OSX
,而且未來可能會支持Linux
。它是一種手機平臺驅動的UI技術,但經過將聲明性XAML呈現給本機UI組件,彌合了手機,平板電腦和臺式機之間的差距。
Xamarin.Forms
爲.NET
開發人員提供了完整的跨平臺UI
工具包。在Visual Studio
中使用C#
構建徹底本機的Android
,iOS
和通用Windows
平臺應用程序。
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/
平臺:iOS
,Android
,Tizen
,Windows
(諸如UWP),其餘平臺正在預覽中https://github.com/xamarin/Xamarin.Forms/wiki/Platform-Support。
應用商店:蘋果商店,谷歌商店,微軟商店。
渲染類型:本機原生。專爲iOS
構建的應用在外觀和行爲上均相似於iOS
應用。Android
應用的外觀和行爲相似於Android
應用。
Avalonia
Avalonia
是基於XAML
的開源UI
庫和平臺,可在Windows
,Linux
和OSX
上運行。社區基於Windows WPF UI
框架。所以,它主要針對臺式機使用,可能不太適合移動應用程序。
咱們支持Windows,Linux和OSX,併爲Android和iOS提供了實驗性的移動支持。
平臺:Windows
,Linux
,OSX
,實驗性支持iOS
和Android
。技術主要是基於.NET Core
應用商店:未知。未來可能會經過應用商店發行Avalonia
應用。可是,目前尚無明確的文檔或執行此操做的途徑。。
渲染類型:像素完美。該平臺控制渲染,而且不依賴本機組件進行渲染。
若是是這樣,Uno Platform
顯然是這裏的作好的選擇。這是惟一一個徹底支持Wasm
的平臺。從頭開始構建具備瀏覽器支持的應用程序是一個明智的選擇,由於它能夠確保最大程度的滲透。用戶沒必要從應用商店下載應用程序便可使用您的應用程序,但能夠免受惡意軟件的侵害。
注意:Xamarin.Forms和Uno Platform能夠一塊兒使用。
若是是這樣,Xamarin.Forms
多是正確的選擇。像Uno
平臺同樣,Xamarin.Forms
容許在各個平臺之間以聲明方式定義UI
,但基於本機平臺呈現UI
。所以,不要因不以特定於平臺的方式運行的控件而使用戶感到震驚。默認狀況下,樣式近似於平臺的本機外觀,而Uno Platform
則更像Windows 10
。可是,Xamarin.Forms
和Uno Platform
都容許爲其本機平臺設置樣式。
Xamarin.Forms
目前已得到微軟的全面支持,所以在不久的未來會得到可靠的支持。可是,Uno
平臺是一個使人印象深入的平臺,無疑是Xamarin.Forms
值得競爭的平臺。若是要構建本機應用程序,則須要同時試用Uno Platform
和Xamarin.Forms
,以獲得最適合您的項目的方法。
從某種意義上講,這是一個反問。如前所述,您不該該指望用戶在商店或瀏覽器以外下載應用。可是,在某些合理的狀況下,您的用戶可能會喜歡具備.NET Core
運行時的全部功能,並能夠在Linux
,Windows
和OSX
上都是像素完美的自定義適合桌面的體驗。在這種狀況下,Avalonia是您最好的選擇。
做爲一個UI
庫,Avalonia
不該該被低估。任何WPF
開發人員都熟悉它,而且很是容易上手運行和深刻研究。強大的平臺.NET Core
使它成爲使人信服的選擇。
注意:本文已清晰的表達了觀點。另外,這裏沒有提到其餘幾種C#
技術。它們將在後續文章中進行介紹。