写点什么

微软把 UWP 定位成业务线应用程序开发平台

2018 年 8 月 12 日

微软把 UWP 定位成传统业务线(LOB)应用程序开发平台,以使用 Windows Template Studio 实现快速应用程序开发为重点。但是,为了把 LOB 开发人员吸引到 UWP 平台,他们在做的事情不止这些。

最初发布时,通用 Windows 平台(UWP)只是被视为一种在 Windows 商店中销售应用程序的方法。其基本思想是你编写一次应用程序,它就可以在 Windows 和 Windows Phone 上运行。但是有严格的限制,你几乎是必须通过 Windows 商店。对业务线(LOB)应用程序而言,这就不合适了,因为它们天生就不应该公开暴露。

借助 UWP,LOB 开发人员要么继续使用遗留的 WinForms 和 WPF 平台,通常是使用 ClickOnce 作为部署方法,要么接受内部 Web 站点额外的复杂度和开发成本。对于中大型企业,这个方向尤其流行,WinForms/WPF 更高的部署成本是一个因素。

随着去年“Windows 10 Fall Creators Update”的发布,UWP 模型发生了变化,它使得直接通过网站安装 UWP 应用程序成为可能。虽然和 ClickOne 的体验不完全一样,但至少是个开始。同时,微软有一个团队致力于使 XAML/UWP 更适用于 LOB 应用程序。

Windows UI 库

用户控件是任何 UI 框架的核心。强大的用户控件模型促成了 Visual Basic 在 20 世纪 90 年代的流行,并且仍然使桌面应用程序的开发速度高于基于 HTML 的解决方案。但是,UWP 部署模型给它带来了一些不必要的限制。

由于主要的用户控件(又名平台控件)已经变成了 OS 的一部分,所以,应用程序在采用新控件时必须非常保守。有些公司的机器虽然运行着 Windows 10,但其版本经常比正式发布的版本落后两个版本,这时候问题会尤为突出。

为了解决这个问题,平台控件现在作为 NuGet 包发布。这使得开发人员可以利用新控件,而不必等待公司的其他部门都升级到最新的 Windows 版本。这些 NuGet 包至少需要 2016 年 8 月发布的 Windows 周年纪念版。

这些控件填补了 UWP 生态系统中众所周知的空白,如缺少 tree-view、菜单栏或颜色选择板。

.NET Standard

借助.NET Framework 和.NET Core,UWP 现在支持.NET Standard 2.0。这使得开发人员可以把他们的业务逻辑和数据模型迁移到.NET Standard 库。那样,他们就可以在传统的桌面应用程序、网站或 UWP 应用之间共享同样的代码。理论上讲,这将简化从 WinForms/WPF 到 UWP 的迁移。

UI 密度

微软把 UWP 中的默认空间和大小描述为“慷慨提供了大量空白”。计划在今年发布的 Windows 版本将改变这种默认情况,通过自动减少控件尺寸、控件之间的填充空间、字体大小,释放更多屏幕实际使用面积,一般来说,就是让一切更紧凑。按照他们的估计,你可以把屏幕上的控件数量增加约三分之一。

开发人员可以通过选择简洁模式进一步缩小控件的尺寸。控件之间的空间减少了大约 40%,一次可以看到的数据增加了大约 50%。这项特性主要是针对数据密集型的业务线应用程序。

颜色主题

众所周知,一个令人愉快的颜色主题会增加用户对工具的信任。但是,对于像 UWP/XAML 这样复杂的样式模式,通常甚至没有时间应用最基本的颜色。基本上,问题在于,每种控件类型的样式都需要单独更新,然后再测试整个主题。在构建业务线应用程序时,很少有足够的时间这样做。

有一款新工具,姑且称之为“Color Demo”,就是要解决这个问题。使用简单的颜色选择器,就可以预览主题,生成必要的资源字典,包含到应用程序中。

而且,它会提示你颜色选择可能导致的问题,如没有足够的对比度使文本可读。

这还不如全样式的 XAML 应用程序丰富,但是,它可以为应用程序提供足够的修饰,使它看上去有一个专业的外观。

数据验证 UI

UWP 还有另外一个明显的不足,就是缺少数据验证支持。这个疏忽很奇怪,因为数据验证从一开始就是.NET UI 框架的一部分。(我们在文章“ C# API 中的模型和它们的接口设计”中讨论过其中部分接口)。

今年新增的功能是在基于属性的验证中使用 INotifyDataErrorInfo 接口。当一个模型暴露了这个接口,UI 就能够自动显示正确的错误信息。它显示错误的具体方式取决于你在控件中选择了哪个模式。

实现 INotifyDataErrorInfo 接口并不简单,涉及许多把基于属性的验证附加到 INotifyDataErrorInfo 接口的样板代码。因此,你也许会希望找一个 MVVM 框架来帮你处理。[本文作者的 Tortuga Anchor 库就是这样一个例子。]

新 XAML 控件:Data Grid

对于非 UWP 开发人员,没有提供开箱即用的 Data Grid 看上去相当奇怪。

对于业务线开发人员,UI 框架不提供 Data Grid 几乎是不可想象的。甚至是早在上世纪 90 年代中期,这个控件的一个变体就已经成为无数业务应用程序的核心。许多在考虑 UWP 的开发人员惊讶地发现,微软已经从 WPF 或 Silverlight 移植了 Data Grid。

这最终是通过 Windows Community Toolkit 解决的。新的 DataGrid 控件所需要的 XAML 看上去和在 WPF 中非常像。

下周,我们将深入介绍 Windows Community Toolkit。

查看英文原文: Microsoft Positions UWP for Line of Business Applications

2018 年 8 月 12 日 13:173362
用户头像

发布了 1008 篇内容, 共 313.6 次阅读, 收获喜欢 282 次。

关注

评论

发布
暂无评论
发现更多内容

第二周作业

远方

学习总结—第二周

于江水

架构是训练营

Spring Aware 你不能不知道的事

CoderLi

Java spring 程序员 源码分析 后端

第三周作业三:优化 Cache 类的设计

远方

Java参数传递分析

游侠最光阴

Java

服务治理之轻量级熔断框架:Resilience4j

CoderJ

江帅帅:精通 Spring Boot 系列 01

古月木易

Spring Boot

week2 作业

Geek_2e7dd7

ARTS - Week 3

Khirye

ARTS 打卡计划 arts

游戏夜读 | 什么是全力以赴?

game1night

江帅帅:精通 Spring Boot 系列 01

奈学教育

Spring Boot

江帅帅:精通 Spring Boot 系列 02

奈学教育

Spring Boot

命题作业—第二周

于江水

极客大学架构师训练营

架构师训练营第二周课后作业一

不谈

极客大学架构师训练营

Class-only Protocols - class or AnyObject

SwiftMic

swift AnyObject

week2 学习总结

Geek_2e7dd7

用 Explain 命令分析 MySQL 的 SQL 执行

程序员历小冰

MySQL explian

第二周 软件设计原则

WW

架构师训练营 - 作业 - 第二周

心在飞

极客大学架构师训练营

第02周 开发编程框架 学习总结

Jaye

第二周作业二:描述熟悉的框架,是如何实现依赖倒置原则

远方

JVM的未来——GraalVM集成入门

孤岛旭日

Java 云原生 JVM GraalVM

江帅帅:精通 Spring Boot 系列 02

古月木易

Sprint Boot

架构师训练营 第二周作业

大丁💸💵💴💶🚀🐟

做产品少走弯路:你必须掌握的知识

我是IT民工

产品 互联网 方法论 思维方式 知识体系

解析 Swift 中的 @discardableResult

SwiftMic

swift

Week2命题作业

星河寒水

第二周作业

andy

数据库周刊28│开发者最喜爱的数据库是什么?呼兰脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;MySQL架构选型;Oracle文件损坏处理……

墨天轮

数据库 oracle 阿里云

架构师训练营第二周课后作业二

不谈

极客大学架构师训练营

架构师训练营 第二周 作业

Poplar

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

微软把UWP定位成业务线应用程序开发平台-InfoQ