構建跨平臺應用程式的的幾種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技術作為所有平臺的答案。
現代生態系統
自.NET成立以來,情況發生了很大變化。現在,人們每天至少使用五種主要作業系統:Windows
(桌上型電腦/平板電腦),OSX
(桌上型電腦),Android
(電話/平板電腦),iOS
(電話/平板電腦),Linux
(主要是桌上型電腦)。還有許多其他平臺來驅動諸如手錶之類的裝置和諸如Tizen
之類的電視元件。隨著應用商店的出現,應用程式的部署機制也在迅速改變。現在,應用程式部署到手機的標準方法時使用各種應用商店,人們開始期望他們的手機和平板電腦能夠執行與桌上型電腦相同的應用程式。
在應用程式開發部署中,安全性現在是一個重要的考慮因素。桌上型電腦落後於手機,因為許多應用程式仍然需要使用者以安裝程式的形式下載該應用程式,然後手動進行安裝。這是一個巨大的問題,任何忽略此問題的開發人員都將自擔風險。如果使用者被迫從網際網路上下載應用程式,那麼他們就會遭受惡意軟體的攻擊。他們失去了對應用程式級別許可權的控制,並向間諜軟體開放計算機許可權,而沒有許可權審查該軟體。隨著使用者變得越來越精明,越來越少的人開始容忍這種情況,並選擇通過應用商店或在瀏覽器中部署的應用程式。
這裡的關鍵是:
您需要安全地部署應用程式,並且需要在儘可能多的平臺上進行部署。
現代執行時: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
技術。
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#
技術。它們將在後續文章中進行介紹。