HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Windows 和业务线应用程序:没有更好的选择

  • 2013-09-23
  • 本文字数:3829 字

    阅读完需:约 13 分钟

在 Windows 平台上创建一个新的业务线应用程序从来就不是什么难题。但是,和以前那样,对于某类确定的问题只有一个明确的解决方案——这样的日子已经一去不复返了。在过去的二十年里,面对大多数问题,我们都有更好的选择。比如,Visual Basic 的快速交付或 MFC 原生的性能和功能。还有 WinForms 的速度以及 WPF 的外观。当 WinForms 时代结束的时候,我们将 Silverlight 作为第二选择。虽然和 WPF 相比,它没那么强大,但它更容易部署。

而如今,我们虽然有了比以往更大的选择空间,但是可选择的方案却差强人意。比如,虽然 WinRT 提供了三种开发模型,但没有一个是适合业务应用程序的。与此同时,WPF 加入了 Silverlight 的阵营,而等待 WinForms 的只有灭亡。

WinRT:尚未完成准备

是否选择一款依赖于 Windows 8 的平台——对于这个问题我不打算在这里讨论,因为最终企业都将会采用 Windows 8。我也不打算讨论目前 WinRT 8 所存在的问题,诸如被限制在单一的窗口或没有设备集成等等。因为在 Build 2013 大会上,微软已经宣布了这些问题将在 WinRT 8.1 中修复。

我要谈的问题比前面的简单很多,而且要更加初级。坦白地说,部署场景与现实脱节了。WinRT 明显存在有人格分裂(Dissociative Identity Disorder),但在这种情况下,微软的消费者和企业双方却处于僵持状态。消费者一方要求 WinRT 在 Windows 商店保持锁定状态,这样在每个软件销售之后,他们都可以获得一定比率的提成,这类似于苹果和谷歌成功的战略。而与此同时,微软的企业一方则背负着 WinRT 的未来,但他们甚至没有认识到对方已产生的问题。

WinRT 应用在企业中的部署

用户们如果想要将 WinRT 部署在企业中,必须要满足三个要求。

第一个要求是,所有的机器都要加入某个域。对于大企业来说,这个要求还算合理的,但对很多小公司甚至一些中等规模的企业来说,根本没有足够的资源来维持一组 Active Directory 服务器。大多数企业都不是搞技术的,他们只需要少量自定义应用,而非整个 IT 基础设施——而我们总是忘记这一点。

另一个问题是,一些公司虽然部署了 Active Directory,但没有必要让所有机器都加入 Active Directory。导致这类问题的原因有很多种,可能不全是合理的,但是依然需要满足这些公司的需求。

据说,对于未加入域的计算机将会有一个替代方案。2012 年 4 月, Antoine Leblond 曾作出承诺,后续将在博客中发表文章,描述如何通过获得必要的产品密钥来做到这一点。但是,迄今为止,这篇文章还未撰写。

第二个要求是“允许安装所有受信任的应用”的组策略,这一点对于已加入域的计算机来说十分合理。对于未加入域的计算机,需要用户手动编辑注册表,通常我不赞成这种做法。不过,可以通过添加脚本来实现。

第三个,也是最后一个要求,不太受人欢迎:所有机器必须要信任某个证书,而所有的应用程序都需使用该证书签名。这意味着需要创建一个自签名的证书,并手动安装到每一台机器上,或者花费几百美元从一个可信的证书颁发机构获取代码签名证书。

一旦满足上述所有要求,用户就可以学习如何调用 PowerShell 命令来安装应用程序,但无法使用 ClickOnce 安装。用户甚至不能双击批处理文件安装,因为 PowerShell 默认禁止从 Windows 资源管理器中运行脚本。

WinRT 应用的更新

Antoine 写道,

对最终用户而言,没有标准方式去检测并获取这些应用的更新。

在使用了近十年的 ClickOnce 自动更新之后,我们又回到手动更新工作站的时代。现在,用户必须再次输入 PowerShell 命令。并且与以前不同的是,他们需要在路径中包含版本号。例如,

add-appxpackage \\fileserver\ContosoApp\v1.1\ExpenseApp.appx### Silverlight:废弃的技术

Silverlight 实质上是一种废弃的技术。不像 Adobe Flash,目前连 Internet Explorer 10 都不能完全支持 Silverlight。并且,在基于 ARM 的计算机上,它根本无法运行。

Silverlight 完善吗?不。

一些现任的和前任的微软员工争辩道:Silverlight 是“完善的”,它不需要任何改进。我觉得这种说法非常可笑。

虽然 Silverlight 工具包包含了很多关键的用户控件,但是自 2011 年 12 月以来,我没有看到任何相关的更新,此外,许多控件没有达到产品发布的要求。 更糟的是,Silverlight 中仍然没有一个能用的单元测试框架。虽然在工具包中有一个预览版本,但它存在一些设计缺陷,使用它将导致测试花费 O(n^2) 的时间。我们自己进行实验后发现,尽管每个单元测试在单独测试时只需要几毫秒,但是几千个一起测试就会导致测试过程长达一个多小时。另外一个急需解决的问题就是修改 UI——已经通过的测试还显示出来那就太占地方了。

WPF:仍处于维护模式

虽然我不想这样说,但是现在来看,WPF 的未来似乎比以往任何时候都黯淡。

性能问题尚未修复

WPF 很慢,真的很慢。这一点在很大程度上可以归咎于开发人员做的那些不计后果的事情,比如甚至会加载标签中上千个不可见的屏幕元素。或者给用户控件添加过多的效果,我曾见过的一个项目,每个文本框包含 9 个边框,并且每个边框都使用自有的渐变画笔。

虽然这么说,微软仍然可以在 WPF 渲染管线方面做很多调整。但很明显,应用于 WinRT/XAML 的内容已经主动地放弃了移植回 WPF 或 Silverlight 的选择。

被遗弃的路线图

自 2010 年 4 月之后,我就再没看到 WPF 工具包发布新版了。起初看起来,微软只是暂时搁置 WPF,好让新宠 Silverlight 可以引起一些关注。但是自那以后,WPF Ribbon 工具栏、AutoCompleteBox、 Accordion 控件以及 WPF 未来路线图中所涉及到的内容,再也没有进行任何完善工作。

不许部署在低功耗设备上

Windows RT 版应该部署在一类廉价、低功耗、电池容量高、寿命长的设备上,适用于临时用户和大规模的部署。虽然现在它们的价格在下降,但也并不便宜。因为 WinRT 不能运行“真正的.NET”,所以对于那些使用 WPF 作为业务线应用的公司来说,就不能选择 WinRT 了。

黯淡的未来

微软喜欢假装和苹果一样,对远景规划的重要公告保密。也就是说,他们可以继续研发 WPF 大量的增强功能,只是为了确保对用户来说是个惊喜。但是别忘了,苹果是一家硬件公司。如果读者们投资了一个 iPod,当硬件损坏时,投资也就到期了。当硬件真的损坏时,大家会很高兴看到苹果公司推出新一代的产品。

但当用户使用 WPF 或 Silverlight 编写应用程序时,相当于要对需要使用多年的平台进行投资。那种不确定性一点也不会令人兴奋,相反,它是非常恐怖的。事实上,每隔几年我们就不得不经历一次这种“投资”,结果是这种“投资”变得越来越习以为常。

更糟糕的是,微软很少承认自己或者其他人正在放弃某种技术。比如,微软根本没有发布过有关 WinForms 的生命周期的公告。当 Silverlight 团队解散,并分配到其他项目中时,微软也没有发布任何新闻稿件。还有,没有人注意到 LINQ to SQL 的类型化数据集的支持已经取消了。直到它成为已拥有自有竞争框架的 ADO.NET 团队的一部分时,我们才意识到一直钟爱的 LINQ to SQL 已经被遗弃了。

目前具有生命力的平台

那么,WPF 怎么办?目前,对于 Windows 用户来说,WPF 仍然是最具生命力的业务线平台。凭借与 OS 的深度集成、少见的 Silverlight 问题以及支持 ClickOnce 的自动更新,在真正进行富客户端开发时,没有什么谁是 WPF 的对手。但同时也存在一个绝好的机会,机不可失,时不再来。因此对于新应用程序的开发来说,很难就这一点做出客观的评论。

ASP.NET:网站替代应用

我坚信,安装在本地的应用程序可以为用户提供最佳的体验。尽管 Web 建设得越来越好,但对于开发人员而言,它仍然存在很多方面的障碍。因为 Web 浏览器拦截了键盘快捷键,所以如使用 F1 帮助或 F5 刷新当前所选视图这种基本功能,在 Web 中也都不起作用。在更复杂的情况中,比如多窗口的支持,不管是对用户还是开发人员来说都是一个很糟糕的体验。又比如打印多页的报表,这在 Visual Basic1 中是支持的,除非你真想生成一个 PDF,否则不建议你尝试。

我想说的是,这项技术是稳定的并且是不断提升的。它可以在所有 Windows 机器上运行,从低端的上网本、运行 Windows XP 的古董级 PC,到最新的运行着 Windows 8.1 预览版的可翻转式平板电脑。在充分地努力下,开发者甚至可以让苹果、谷歌以及黑莓手机访问你的应用程序。

当微软在 MVC 方面做出了很多具体改进的同时,我们仍然可以看到 WebForms 在不断地发展。许多 MVC 的特性可以移植回 WebForms 4.5 ,或者这些特性本来就适用于两者。并且,在同一个网站中,可以自由的混合使用 MVC 和 WebForms,这样,开发者可以只选择其中一种方式,只不过要以渐进的方式进行。

开发者们不能再无视 HTML5,因为它变得越来越流行了。对于中等规模的团队来说,像 TypeScript 这种技术的出现使得大规模、单页 Web 应用已经成为他们的一个不错的选择。或着可以将网站分解成一系列更小、功能更加具体的页面,这样会比整体应用更容易处理。

网站的交付时间依然是个关键,因为交付网站的时间通常是交付相同功能时间的 3 到 4 倍。但因为浏览器之间的兼容性越来越好,所以这种差异正在逐渐地缩小。

因此——虽然我不想这么说——但是对于那些正准备开发新业务线应用程序的公司来说,我建议他们应该认真考虑放弃原有的想法,并建立一个内部网站取而代之。

作者简介

Jonathan Allen自 2006 年以来持续为 InfoQ 撰写新闻报道,目前是.NET 领域的责任编辑。如果您有兴趣为 InfoQ 撰写新闻或有价值的文章,请通过 jonathan@infoq.com 与他联系。

查看英文原文: Windows and Line of Business Applications: No Good Options

2013-09-23 13:011989
用户头像

发布了 36 篇内容, 共 13.7 次阅读, 收获喜欢 2 次。

关注

评论

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

Hoo研究院 | 币圈后浪—PRISM

区块链前沿News

Hoo

总结

Geek_36cc7c

OpenHarmony 3.1 Release版本关键特性解析——Enhanced SWAP内存管理

OpenHarmony开发者

内存管理 OpenHarmony

金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

银行RPA趋向主动触发流程,补足营销场景执行末端的渠道协同能力

易观分析

银行 市场营销

CRM系统帮助企业有影响力的营销

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

前端常用的站点导航

刘帅强

Linux下玩转nginx系列(五)---nginx实现负载均衡

anyRTC开发者

nginx Linux 负载均衡 音视频

AIRIOT物联网低代码平台如何配置三菱PLC驱动?

AIRIOT

物联网 PLC 驱动配置

堡垒机4a认证是什么意思?是指哪4a?

行云管家

云计算 网络安全 堡垒机 堡垒机认证

有数BI大规模报告稳定性保障实践

网易数帆

大数据 BI 网易 稳定性保障

2022年5月中国数据库排行榜:openGauss 黑马首登顶,AntDB 冲进20强

墨天轮

数据库 opengauss TiDB oceanbase 神通

爱番番微前端框架落地实践

百度Geek说

前端

密码学系列之:PKI的证书格式表示X.509

程序那些事

Java 密码学 程序那些事 5月月更

龙蜥开发者说:我的操作系统之路,坚持从实践中来,到实践中去 | 第6期

OpenAnolis小助手

Linux 开源 操作系统 龙蜥社区 龙蜥开发者说

前端工程化之FaaS SSR方案​

百度Geek说

前端

钱卫宁:开源是培养数据库人才的关键|OceanBase 数据库大赛访谈

OceanBase 数据库

oceanbase 数据库大赛

学Python运维,这知识点你肯定会遇到,【必收藏之】nginx 域名跳转相关配置

梦想橡皮擦

5月月更

马斯克推崇的柏拉图式元宇宙,PlatoFarm早已验证出答案

股市老人

javascript 中搜索数组的四种方法

CRMEB

druid 源码阅读(八)Druid 回收连接

爱晒太阳的大白

5月月更

互联网出海企业数据库选型问答实录

OceanBase 数据库

云数据库 oceanbase 互联网出海

Nebula Graph|如何打造多版本文档中心

NebulaGraph

数据库 图数据库 NebulaGraph

【云计算】云计算四个必学知识看这里!

行云管家

云计算 云服务 企业上云

Redis io多线程

C++后台开发

redis 后端开发 Linux服务器开发 C++后台开发 单线程

CUDA优化之PReLU性能调优

OneFlow

性能优化 cuda PReLU 朴素实现

熊磊:成功移植OpenHarmony到多套开发板,是最开心的事

OpenHarmony开发者

开发板 OpenHarmony

战“码”先锋直播预告丨如何成为一名优秀的OpenHamrony贡献者?

OpenHarmony开发者

OpenHarmony 贡献代码

百问百答第38期:关于nginx监控,我们这样做

博睿数据

博睿数据 nginx监控

RocketMQ—Producer(五)路由队列选择

IT巅峰技术

架构 RocketMQ java

对话ACE第三期有奖调研

OceanBase 数据库

数据库 对话ACE Oracle ACE

Windows和业务线应用程序:没有更好的选择_.NET_Jonathan Allen_InfoQ精选文章