构建跨平台应用程序的的几种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#
技术。它们将在后续文章中进行介绍。