构建跨*台应用程序的的几种
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
是基于
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
是基于
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提供了实验性的移动支持。
http://avaloniaui.net/
*台
:
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#
技术。它们将在后续文章中进行介绍。
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。