用于专家业务应用程序的用户界面的WPF或ASP.NET MVC



我知道以前有人问过这个问题,但差不多两年过去了,业务需求有点不同。

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

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

我们预计主要用户群将在30多人左右,但由于我们是一家不断发展的公司,扩大到100名用户应该没有问题。用户分布在世界各地的三个主要地点,而我们也希望选择支持较小的地点。所有这些位置都连接到同一个内部网。

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

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

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

专业Web:部署要容易得多。所有的需求都可以直接在web应用程序中完成,如果不能,我们可以使用ActiveX或为缺失的部分制作一个单独的桌面应用程序。此外,IT世界将停止使用纯桌面应用程序,一切都将转向HTML5(Windows8)。

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

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

第1点也令人担忧,因为由于使用了公司中的其他web应用程序(而非专家系统),浏览器更加失控,并且我们担心与新应用程序的利益冲突(例如,我们必须使用所有应用程序都运行/呈现良好的浏览器版本)。

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

谁遇到了类似的情况,他们是如何解决的(上有一篇不错的文章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 Onice可能是一个问题。有什么经验吗?

未来这个系统应该持续5年以上。我们现在不能针对HTML5(WinXP只能达到IE 8)。Windows 8在这方面的地位如何?

其他想法我错过了什么重要的东西?

谢谢我知道这个条目很长,不是一个容易的问题。所以我认为你的阅读,更感谢你的建设性反馈。非常感谢。

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

让我试着解决你上面的一些担忧,希望能说服你建立一个网络应用程序:

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

最新更新