当前位置: 首页 > news >正文

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

微软把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

相关文章:

  • CentOS 7使用dnf安装Memcached以及启动、停止、开机启动等设置
  • EventListener原理
  • 数据库设计,表与表的关系,一对一。One-To-One(1)
  • 对Emlog 6.0 Beta的完整代码审计过程
  • 学习微服务的路由网关zuul——路由转发和过滤器
  • 找一份好的前端工作,起点很重要
  • Docker镜像创建及建立私有仓库
  • RichTextBox简单扩展
  • 深入剖析Retrofit系列(一)来自官方的Retrofit开发手册(中英互译)
  • java编程——高并发大容量NoSQL解决方案探索
  • Android 模拟器下载、编译及调试
  • [译]常见网页设计错误一览
  • 面试官告诉你如何准备Java初级和高级的技术面试
  • Apache Pulsar 2.1 重磅发布
  • java监听器实现与原理
  • 【前端学习】-粗谈选择器
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular 响应式表单 基础例子
  • emacs初体验
  • ES6简单总结(搭配简单的讲解和小案例)
  • iOS | NSProxy
  • JavaScript设计模式与开发实践系列之策略模式
  • Java编程基础24——递归练习
  • tab.js分享及浏览器兼容性问题汇总
  • vue-loader 源码解析系列之 selector
  • win10下安装mysql5.7
  • 官方解决所有 npm 全局安装权限问题
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 利用DataURL技术在网页上显示图片
  • 区块链共识机制优缺点对比都是什么
  • 一份游戏开发学习路线
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • #define,static,const,三种常量的区别
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • ${ }的特别功能
  • $forceUpdate()函数
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (接口自动化)Python3操作MySQL数据库
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (五)MySQL的备份及恢复
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转) Android中ViewStub组件使用
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • *上位机的定义
  • .gitattributes 文件
  • .net core 控制台应用程序读取配置文件app.config
  • .net 按比例显示图片的缩略图
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET成年了,然后呢?
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET国产化改造探索(一)、VMware安装银河麒麟