如何为未开发的 Windows UWP 应用程序选择什么技术?
How to choose what technology for a greenfield Windows UWP app?
这个问题太常见了。这是上下文;开发人员可以使用广泛的技术创建针对通用 Windows 平台(在 Windows 10 上)的 Windows 应用:
- XAML/.Net
- XAML / C++
- HTML / Java脚本
- DirectX/.Net
- DirectX/C++
以及这些奇特的方法:
- Cordova/PhoneGap
- 托管网络应用程序
- 已编译Objective-C
- 已编译 Android Java(仅 phone)
- Unity/MonoGame
开发商如何选择?
自然是"it depends"。要考虑的第一个变量是您正在考虑的应用程序类型。如果你想写游戏,选择不是很明显。那是因为有些逻辑应用程序不依赖于精心设计的 UI 和沉浸式游戏。
逻辑游戏
因为 XAML 和 HTML 是构建简单 UI 的更简单的平台,您从以下选项中选择最有意义:
- XAML/.Net
- XAML / C++
- HTML / JavaScript
在这三者之间进行选择是技术偏好的问题。但同样值得注意的是,我们现在从 XAML 开始,必要时转到 HTML。我的意思是,新的 Windows 应用程序应该将 XAML 作为他们的起始技术,并在必要时选择其他技术。
您可能会选择 HTML 的一个原因是,如果您已经创建了多个要重复使用的 HTML 资产。但是,当然,您也可以将 XAML WebView 控件嵌入到 XAML 应用程序中并使用这些 HTML 资产,而无需完整的 Web 应用程序。为此,XAML 仍然是最可行的选择。
沉浸式游戏
因为 HTML 和 DirectX 有相当多的第三方公司和游戏社区投资,从以下选择最有意义:
- DirectX/.Net
- DirectX/C++
- Cordova/PhoneGap
- 托管网络应用程序
- Unity/MonoGame
值得提醒您的是,本文是关于 "greenfield" 应用程序的,但即便如此,上述技术仍是 Windows 商店中 99% 游戏的首选技术。
The next category of apps are usually called productivity apps. And they have basically two sub categories: consumer and commercial. Consumer apps are public, while commercial apps are generally internal, line of business apps.
消费者应用程序
Public 除了为用户提供完全保真、原生的体验外,应用程序几乎没有任何技术要求。对于这些应用,您可以选择以下选项:
- XAML/.Net
- XAML / C++
- HTML / JavaScript
- Cordova/PhoneGap
- 托管网络应用程序
之所以包含 Cordova,是因为它基本上是具有跨平台优势的 HTML 选项。如果需要跨平台,这是一个不错的选择。我应该指出,Xamarin 也可以使 .Net 应用程序成为跨平台的。
有时跨平台并不是最重要的。有时,它真的是一个全新的 Windows 应用程序。 当您处于典型的起点时,您需要从 XAML / .Net 开始。 为什么?有几个原因。
首先,XAML 正在成为 Windows 的高级 UI 平台。 Windows 10 操作系统的许多新功能都是在 XAML 中编写的(例如“开始”、“文件资源管理器”等)。此外,Office 现在也是一个 XAML 应用程序。
其次,大部分示例和社区支持都在 XAML / .Net 中。这意味着无论您的团队的主要技术专长如何,由于 XAML 的受欢迎程度,持续支持应该会越来越容易。
第三,.Net(如C#)是您可以选择的最合乎逻辑、最强大和最简单的编程语言之一。它可以轻松支持从小到大的项目。此外,借助 .Net Native,.Net 语言可以编译为金属并在 Windows 10.
上以接近 C++ 的水平执行
商业/业务范围
商业应用程序很重要,需要大量投资。为什么?因为它们是针对 运行 企业的。它们需要经过测试、可扩展和高性能。他们需要集成和敏捷。所有这些有时都是消费者应用程序的一部分,但由于企业的生死取决于其基础架构,因此 LOB 应用程序是一项更重要的投资。
For commercial apps, choose XAML / C#.
原因如下。
由于您首先要编写 Windows 10 应用程序,我可以假设您的业务是基于 Microsoft 的或对 Microsoft 友好的。这意味着您的开发团队可能已经精通交付出色 XAML / .Net 应用程序所需的基本技能。
此外,由于第三方控件是我们组件厂商如Infragistics发布的,你会看到XAML写的面向企业的控件吗?为什么?因为其中许多控件已经针对 WPF 发布,并且随着需求的增加将移植到 WinRT。
此外、Visual Studio 以全面且经过验证的方式管理、构建、测试和分析 .Net 项目。您正在使用 Microsoft UI 平台编写并使用 Microsoft 开发平台使其自动化。大多数公司都喜欢尽可能少的活动部件,这是最纯粹的。
此外,许多公司已经在他们的 LOB 系统上进行了大量投资,并且有许多有价值的投资可以在他们的 Windows 应用程序中重复使用。 Windows 应用程序是否正在替换他们的 LOB?可能不会。它是对现有系统的补充还是补充?很有可能,是的。
结论
那么什么时候应该使用 C++?让我和你分享一个秘密。几乎所有附带 Windows 10 的第一方 Microsoft MSN 应用程序都是用 XAML / C++ 编写的。这是因为跨设备性能对我们的应用至关重要。这是否意味着您的应用程序应该用 C++ 编写?在大多数情况下,不会。
如果我的团队是网络团队并且我们没有 XAML 或 .Net 经验怎么办?首先,这不太可能。但是,让我们继续吧。我们是开发人员,该死。技术不关心我们。而且,尽管语言各不相同,但它们在概念上是相同的。当您进一步了解性能和影响时,学习像 XAML 和 .Net 这样的高端技术是值得投资的。
现实是,有些人可能不同意。不管别人说什么,在某些方面都可能是对的。一般而言,这里的基本答案是我们如何从新的 Windows 10 个针对通用 Windows 平台的应用程序开始,为未开发的开发人员提供指导。这不是诫命,只是指导。
If you are looking to learn more about Windows 10 app development using XAML and C#, take a look at this free, three day course on Microsoft Virtual Academy. https://channel9.msdn.com/Series/A-Developers-Guide-to-Windows-10
最后,这里有一些你不应该忘记的功能:
- 跨屏幕尺寸自适应
- 跨设备的功能适应性
- 使用 Application Insights 进行分析
- 使用 .Net 日志记录 API
- 在 TFS/VSO
上测试和自动构建
- 其他语言的本地化
- 支持 automation/accessibility 功能
- 使用商店部署、升级和许可
祝你好运!
是的,视情况而定,但作为一般性回答,我会说
C#、Visual studio、具有 PCL 代码共享的 Xamarin(传统非形式)、MVVMCross 和一个 "platform specific / UI" UWP / XAML 项目。
这个问题太常见了。这是上下文;开发人员可以使用广泛的技术创建针对通用 Windows 平台(在 Windows 10 上)的 Windows 应用:
- XAML/.Net
- XAML / C++
- HTML / Java脚本
- DirectX/.Net
- DirectX/C++
以及这些奇特的方法:
- Cordova/PhoneGap
- 托管网络应用程序
- 已编译Objective-C
- 已编译 Android Java(仅 phone)
- Unity/MonoGame
开发商如何选择?
自然是"it depends"。要考虑的第一个变量是您正在考虑的应用程序类型。如果你想写游戏,选择不是很明显。那是因为有些逻辑应用程序不依赖于精心设计的 UI 和沉浸式游戏。
逻辑游戏
因为 XAML 和 HTML 是构建简单 UI 的更简单的平台,您从以下选项中选择最有意义:
- XAML/.Net
- XAML / C++
- HTML / JavaScript
在这三者之间进行选择是技术偏好的问题。但同样值得注意的是,我们现在从 XAML 开始,必要时转到 HTML。我的意思是,新的 Windows 应用程序应该将 XAML 作为他们的起始技术,并在必要时选择其他技术。
您可能会选择 HTML 的一个原因是,如果您已经创建了多个要重复使用的 HTML 资产。但是,当然,您也可以将 XAML WebView 控件嵌入到 XAML 应用程序中并使用这些 HTML 资产,而无需完整的 Web 应用程序。为此,XAML 仍然是最可行的选择。
沉浸式游戏
因为 HTML 和 DirectX 有相当多的第三方公司和游戏社区投资,从以下选择最有意义:
- DirectX/.Net
- DirectX/C++
- Cordova/PhoneGap
- 托管网络应用程序
- Unity/MonoGame
值得提醒您的是,本文是关于 "greenfield" 应用程序的,但即便如此,上述技术仍是 Windows 商店中 99% 游戏的首选技术。
The next category of apps are usually called productivity apps. And they have basically two sub categories: consumer and commercial. Consumer apps are public, while commercial apps are generally internal, line of business apps.
消费者应用程序
Public 除了为用户提供完全保真、原生的体验外,应用程序几乎没有任何技术要求。对于这些应用,您可以选择以下选项:
- XAML/.Net
- XAML / C++
- HTML / JavaScript
- Cordova/PhoneGap
- 托管网络应用程序
之所以包含 Cordova,是因为它基本上是具有跨平台优势的 HTML 选项。如果需要跨平台,这是一个不错的选择。我应该指出,Xamarin 也可以使 .Net 应用程序成为跨平台的。
有时跨平台并不是最重要的。有时,它真的是一个全新的 Windows 应用程序。 当您处于典型的起点时,您需要从 XAML / .Net 开始。 为什么?有几个原因。
首先,XAML 正在成为 Windows 的高级 UI 平台。 Windows 10 操作系统的许多新功能都是在 XAML 中编写的(例如“开始”、“文件资源管理器”等)。此外,Office 现在也是一个 XAML 应用程序。
其次,大部分示例和社区支持都在 XAML / .Net 中。这意味着无论您的团队的主要技术专长如何,由于 XAML 的受欢迎程度,持续支持应该会越来越容易。
第三,.Net(如C#)是您可以选择的最合乎逻辑、最强大和最简单的编程语言之一。它可以轻松支持从小到大的项目。此外,借助 .Net Native,.Net 语言可以编译为金属并在 Windows 10.
上以接近 C++ 的水平执行商业/业务范围
商业应用程序很重要,需要大量投资。为什么?因为它们是针对 运行 企业的。它们需要经过测试、可扩展和高性能。他们需要集成和敏捷。所有这些有时都是消费者应用程序的一部分,但由于企业的生死取决于其基础架构,因此 LOB 应用程序是一项更重要的投资。
For commercial apps, choose XAML / C#.
原因如下。
由于您首先要编写 Windows 10 应用程序,我可以假设您的业务是基于 Microsoft 的或对 Microsoft 友好的。这意味着您的开发团队可能已经精通交付出色 XAML / .Net 应用程序所需的基本技能。
此外,由于第三方控件是我们组件厂商如Infragistics发布的,你会看到XAML写的面向企业的控件吗?为什么?因为其中许多控件已经针对 WPF 发布,并且随着需求的增加将移植到 WinRT。
此外、Visual Studio 以全面且经过验证的方式管理、构建、测试和分析 .Net 项目。您正在使用 Microsoft UI 平台编写并使用 Microsoft 开发平台使其自动化。大多数公司都喜欢尽可能少的活动部件,这是最纯粹的。
此外,许多公司已经在他们的 LOB 系统上进行了大量投资,并且有许多有价值的投资可以在他们的 Windows 应用程序中重复使用。 Windows 应用程序是否正在替换他们的 LOB?可能不会。它是对现有系统的补充还是补充?很有可能,是的。
结论
那么什么时候应该使用 C++?让我和你分享一个秘密。几乎所有附带 Windows 10 的第一方 Microsoft MSN 应用程序都是用 XAML / C++ 编写的。这是因为跨设备性能对我们的应用至关重要。这是否意味着您的应用程序应该用 C++ 编写?在大多数情况下,不会。
如果我的团队是网络团队并且我们没有 XAML 或 .Net 经验怎么办?首先,这不太可能。但是,让我们继续吧。我们是开发人员,该死。技术不关心我们。而且,尽管语言各不相同,但它们在概念上是相同的。当您进一步了解性能和影响时,学习像 XAML 和 .Net 这样的高端技术是值得投资的。
现实是,有些人可能不同意。不管别人说什么,在某些方面都可能是对的。一般而言,这里的基本答案是我们如何从新的 Windows 10 个针对通用 Windows 平台的应用程序开始,为未开发的开发人员提供指导。这不是诫命,只是指导。
If you are looking to learn more about Windows 10 app development using XAML and C#, take a look at this free, three day course on Microsoft Virtual Academy. https://channel9.msdn.com/Series/A-Developers-Guide-to-Windows-10
最后,这里有一些你不应该忘记的功能:
- 跨屏幕尺寸自适应
- 跨设备的功能适应性
- 使用 Application Insights 进行分析
- 使用 .Net 日志记录 API
- 在 TFS/VSO 上测试和自动构建
- 其他语言的本地化
- 支持 automation/accessibility 功能
- 使用商店部署、升级和许可
祝你好运!
是的,视情况而定,但作为一般性回答,我会说 C#、Visual studio、具有 PCL 代码共享的 Xamarin(传统非形式)、MVVMCross 和一个 "platform specific / UI" UWP / XAML 项目。