1

我知道以前有人问过这个问题,但是已经过去了将近 2 年,业务需求有所不同。

我们正处于开发中型应用程序的初期,并且正在划分前端使用哪种技术,WPF 或 ASP.Net MVC 3?我们不是一家 IT 公司,而是一家拥有 IT 部门的商业公司,可以外包编程任务,而业务核心仍留在公司内部。我确实花了很多时间在互联网上搜索答案,并且我确实部分成功了,但是由于问题如此重要,我想我也在这里问。当然,在有人回答这个问题之前,我需要指定应用程序的要求和环境:

基础设施: 我们有一个纯Windows 环境。每个用户都将安装 Windows XP SP3(当前)或未来版本的 Windows(如果我们从 XP 跳到 Windows 8 还有待观察,但让我们假设用户接下来将使用 Windows 7)。我们的目标是面向服务的架构,这意味着我们只想在客户端机器上运行/显示真正需要的东西。这一点尤其重要,因为数据库远离客户(美国/欧洲)。我们计划使用 WCF 在用户系统(浏览器或 WPF)、应用程序和数据库服务器之间进行跨机器通信。

我们预计主要用户组将在 30 多个左右,但由于我们是一家成长中的公司,因此扩展到 100 个用户应该没有问题。用户分布在全球三个主要位置,而我们也希望选择支持较小的位置。所有这些位置都连接到同一个 Intranet。

用户界面体验 新系统应该取代现有的桌面应用程序(Winform)系统。屏幕数量可能在 100 多个左右,带有许多标签、组合框、图表。我喜欢称它为专家系统 b/c 我们希望用户每天花费数小时使用它,用户希望与它进行快速交互(多次点击、多个对话框弹出和关闭等)和应用程序将包含很多业务逻辑(主要是数学上的)。需要与 Excel 进行一些有限的交互。在此阶段,仅将 .xlsx 文件中的格式化数据导入应用程序以便处理数据。我们预计这会经常发生。从 Excel 或其他应用程序复制和粘贴到我们的新应用程序是一项要求(没有图片,只有文本)。我们将使用供应商控制库来获得更丰富的 UI 体验。用户习惯于使用桌面应用程序进行日常工作(当前系统/Excel 等)。平板电脑或智能手机支持不是必需的。

部署 如果我们要使用 WPF 应用程序,我们可能会在 CITRIX 中部署它或使用 Click-Once。

以下是两个对立派系的论点:

Pro Web:部署更容易。所有要求都可以直接在 Web 应用程序中完成,如果没有,我们使用 ActiveX 或为缺少的部分制作单独的桌面应用程序。此外,IT 世界将停止使用纯桌面应用程序,一切都将转向 HTML 5 (Windows 8)。

Pro WPF: Web 应用程序使用许多不同的技术,这使得开发和维护变得更加困难和昂贵(HTML、ASP.NET、CSS、JavaScript、JQuery、AJAX)。Web应用程序存在重大缺陷,主要是

  1. 考虑到各种浏览器和版本。
  2. 屏幕分辨率
  3. 图形没有硬件支持(业务图、200+点的点图)
  4. 限制对本地硬件的访问(导入文件、创建文件、打印)
  5. 键盘快捷键

第 1 点也令人担忧,因为浏览器更加失控,因为使用了公司中的其他 Web 应用程序(不是专家系统),而且我们担心与新应用程序的利益冲突(例如,我们必须使用 ALL 的浏览器版本)应用程序运行/渲染良好)。

我知道这没有黑白分明,但我会对以下内容感兴趣:

谁有类似的情况,他们是如何解决的?(在http://karlshifflett.wordpress.com/2007/12/20/reasons-for-choosing-wpf-over-aspnet-for-very-large-project/ 上有一篇不错的文章,但问题是文章已有 5 年历史 :(

Web 解决方案要贵多少? 对于开发,假设程序员在两者方面都同样熟练(我们可以外包)。为了维护,假设我们将在内部支持这一点,因为我们对 ASP.NET 和 WPF 的知识有限。我们知道使用 C# 的 WinForm/WCF。我们必须训练/学习这两种技术。

Web 应用程序进行 Excel 交互、打印等操作有多容易? 我读了很多关于“ActiveX 地狱”的文章,我想知道我们今天的立场是什么?

部署 我在过去非常成功地使用了 Click-Once,尽管一些团队成员提到 Click-once 可能是一个问题。有什么经验吗?

未来? 该系统应该持续5年以上。我们目前不能针对 HTML5(WinXP 仅支持 IE 8)。Windows 8 在这方面有何立场?

其他想法? 我错过了什么重要的事情?

谢谢! 我知道这个条目很长而且不是一个简单的问题。因此,我认为您阅读并更加感谢您的建设性反馈。谢谢!!!!

4

1 回答 1

3

我不会在 WPF 中构建业务应用程序,特别是如果您的目标是让它持续 5 年以上。Silverlight 现在处于日落阶段- Win8 应用程序现在正在押注 JavaScript 和 HTML5,尽管您正确地注意到 HTML5 支持并非在所有浏览器和平台上都通用(请参阅http://caniuse.com/

让我尝试解决您上面的一些问题,希望能说服您构建一个 Web 应用程序:

  1. 考虑到各种浏览器和版本。是的,你必须这样做。但是,对于企业应用程序,如果您使用行业标准的 Web 技术并且不使用未得到普遍支持的深奥的 HTML5 内容,则大多数情况下您可以找到可接受的解决方案。这不会是一个灌篮,但它是非常可行的。
  2. 屏幕分辨率。您可以通过使用通常称为响应式网页设计的方式来解决这个问题。再一次,有广泛的社区和行业支持 CSS 框架,让您实现响应能力。YUIBootstrap是两个例子。
  3. 图形没有硬件支持(业务图、200+点的点图)。好吧,这就是 HTML5 硬件加速可以帮助你的地方,但我想说像HighCharts这样的库可以轻松处理 200+ 点图 - 看这个例子
  4. 限制对本地硬件的访问(导入文件、创建文件、打印)。有道理。我认为使用Socket.ioFilepicker.ioZip.js等文件处理文件要容易得多,但“企业”要求可能会阻碍。至于打印,您可以创建页面的“可打印”版本或在服务器端生成 PDF 和 Excel 导出。不理想,但非常可行。
  5. 键盘快捷键。您使用过 Gmail 应用程序吗?它充满了快捷方式和基于键盘的交互。这适用于任何应用程序 - 如果您需要键盘交互,无论您选择 WPF 还是 Web,都必须构建它们
于 2013-04-12T05:06:23.460 回答