ASP.Net还是WPF(C#)?[关闭]


31

我们的团队对此有分歧,我想征询一些第三方的意见。

我们正在构建一个应用程序,无法确定是否要将WNet服务器使用.Net WPF桌面应用程序,还是使用jQuery使用ASP.Net Web应用程序。我以为我会在这里提出一些规范的问题,然后看看使用任何一方的利弊。我有自己的最爱,觉得自己有偏见。

理想情况下,我们希望尽快构建软件的初始版本,然后放慢速度,并花一些时间来构建以后想要的其他功能/组件。最重要的是,我们希望该软件能够快速运行。用户整天浏览记录,延迟加载记录或刷新屏幕会降低他们的工作效率。

申请详情:

  • 我估计初始版本大约有100种不同的屏幕,并计划在初始发行后的以后添加很多其他屏幕。
  • 我们希望将双向通讯用于提醒和事件系统
  • 尽管已经被告知允许最多增加500个用户,但目前必须支持大约100个用户
  • 我们有多个位置

要考虑的项目(在某些情况下可能并非最初,但在将来的版本中):

  • 在初始发行后可以添加其他组件的空间(其中有很多……也许在这里比初始应用程序有用)
  • 键盘导航
  • 性能是必须的
  • 生产速度到初始版本
  • 维护费用低
  • 未来的支持
  • 网络电话/扫描仪集成

我们的开发商:

  • 我们有1位程序员在过去几个月中一直在学习WPF,并且是一位建议我们为此使用WPF的程序员。
  • 我们有一位熟悉ASP.Net的第二位程序员,他将来可能会为该项目提供帮助,尽管他不会花很多时间在最初的版本上进行开发,因为他花了时间来维护我们的当前软件。
  • 有我和他们一起工作过,并且对其中任何一个都很满意
  • 我们有一家外部公司从事项目管理,而他们是ASP.Net公司。
  • 我们计划招聘1-2个其他人,但是我们首先需要知道我们的发展方向

环境:

  • 普通用户在带有终端服务的Windows 2003服务器上。它们通过RDP连接使用WYSE瘦客户端进行连接。管理员拥有自己的XP或更高版本的PC。尽管限于使用IE作为Web浏览器,但允许用户指定自己的分辨率。
  • 其他位置通过MPLS连接连接到我们的网络

基于此,您会选择什么,为什么呢?


我喜欢所有投票,但真的很想听听其他意见:)
Rachel 2010年

3
您正在做什么,最初需要100个屏幕?
史蒂文·劳

该估计包括很多局部屏幕。例如,主屏幕被分解为一堆“块”,可以根据用户的需要对其进行添加/删除/移动/调整大小。每个人都有自己的数据集,自己的编辑视图以及自己可以执行的一组动作。我将它们视为单独的屏幕,而不是单个屏幕,因为每个屏幕都非常不同。
雷切尔

使用.NET MVC 3,JQuery和HTML5
Oliver Picton

1
嗨,@ kmote,我们最终选择了WPF,对此决定感到非常满意。它为构建用户界面提供了更大的灵活性,与基于Web的解决方案相比,我发现它的构建速度相当快。可悲的是,由于其他优先事项,该项目在一年后被取消,但是如果再次给我同样的选择,我将做出相同的决定。
雷切尔

Answers:


17

在我看来,这听起来像是WPF应用程序,具有许多用户交互并可能与硬件交互。您可以通过Click-Once交付应用程序,因此部署基本上不是问题。您的WPF应用程序可以访问WCF服务并以二进制形式提供数据,因此性能将非常出色。我将开始阅读WPF并尽快熟悉它。


+1此外,在所有这些屏幕上,您可能都希望尽可能多地在应用程序(包括代码和GUI)中重新使用它们
Jon Onstott 2010年

我想+1需要“ Softphone / Scanner集成”,我想唯一的方法就是WPF。或者,也许它可以使用Silverlight
Jiew萌

15

疯子的边缘答案:两者都有。正确设置服务层,很容易拥有执行所有任务的胖客户端(WPF)和快速的Web客户端来执行大多数常见的事情(ASP.NET)。顺便给移动客户端等敞开了大门。


这就是我们正在考虑做的事情。WPF客户端应用程序通常用于轻量级Web版本的报表或受限访问。
雷切尔

2
对此进行+1,以您喜欢的任何.NET语言编写非演示文稿胆量-然后为每个演示文稿任务使用最佳工具(即:Web应用程序对此应用程序使用ASP.NET接口,台式机使用WPF / Winforms /等等)。
heretik 2010年

最初,用户可能会发现ASP.NET“足够好”,特别是如果这意味着尽快获得更多应用程序的话。
JeffO

8

如果您只有一名正在学习WPF的程序员,并且正在考虑让您的团队加入WPF,那为什么不使用Silverlight呢?您可以获得WPF的许多优点,但仍然可以将项目保留为Web应用程序。由于您正在寻找一个大型的模块化项目,因此将PRISM与WPF或Silverlight结合使用会使MVVM更加简单。

我的团队最近决定在asp.net上使用Silverlight。对我们来说,这是一个绝佳的选择。最初,我们只有一个知道任何亮点的开发人员。然后,我们所有人都参加了为期一周的培训课程,该课程通常没有用,但至少会使我们的脚湿了。最后,我们不得不雇用两个承包商来帮助我们创建大部分UI框架。我们团队中的大多数人仍然对他们的技能不满意。我本人是最初了解Silverlight的团队成员,而两名承包商则是SL开发工作的大部分。之后,我们有两个专用的后端成员。我要说的是,在决定迁移到Silverlight之后,我们花了大约2个月的时间才真正完成了所有具体工作。然而,现在我们有了一个很棒的产品,感觉非常像一个客户端应用程序,它在Web浏览器内部运行,并且没有安装在本地任何计算机上。开发总共不到一年,我们已经准备好发布或首次发布。

要考虑的一些事情:

  • WPF或Silverlight,无论您选择哪种,开发人员都需要学习很多。

  • 如果需要,Silverlight可能会用完浏览器。如果这样做,则很容易进行设置,因此,如果您推出新版本,则已安装的浏览器SL程序将自动更新自身。

  • Silverlight不包括WPF拥有的所有控件。

最后一点是,如果您想尽快完成代码,那么显而易见,您应该使用ASP.NET。我对ASP的主要看法是,除非您对团队进行管教,否则ASP.NET项目很容易变得混乱和混乱。如果您认为自己能够应付技术的初期开销,那么Silverlight或WPF将为您提供许多美好的可能性。


我们处在非常相似的情况下,我很高兴听到你的故事,谢谢。我将考虑Silverlight,尽管到目前为止,我仅使用WPF。如果我们与WPF一起使用,我们计划在Silverlight中进行“报告”部分,所以我最终计划对其进行学习
Rachel 2010年

我正在Silverlight中转换(读取重写)ASP.NET应用程序的过程中-基本上是因为ASP.NET不能扩展到我们想要的功能。
克里斯·夫(ChrisF)

1
仅供参考:请记住,Silverlight不会成为MS的主要产品,并且在某些情况下,人们说它可能不受欢迎。我同意最好考虑一下,只需将此信息添加到您可能的缺点列表中即可。
Paige Watson

1
对于此类应用程序,我会强烈考虑使用Silverlight上的WPF。WPF可以轻松地部署为XBAP(xaml浏览器应用程序),通常只需对配置文件进行一些代码更改即可。WPF拥有Silverlight的所有功能以及更多功能,此外WPF还提供了更多支持。缺点是,尽管Silverlight可以潜在地部署在更多的OS(甚至包括带有Moonlight项目的Linux)上,但WPF要求客户端上使用.Net,因此它严格是Windows。
Morgan Herlocker 2010年

2
我不知道Silverlight是否会停产,但与Mashable相关的文章是Microsoft从Silverlight转换为HTML5。就个人而言,如果可能的话,我会认真考虑Pure Web Apps,它可能会通过桌面或基于专有的插件提供
孟杰

7

这部分很令人担忧:

普通用户在带有终端服务的Windows 2003服务器上。它们通过RDP连接使用WYSE瘦客户端进行连接。管理员拥有自己的XP或更高版本的PC。尽管限于使用IE作为Web浏览器,但允许用户指定自己的分辨率。

WPF对于远程桌面/瘦客户端连接不是很好。动画将不流畅,任何复杂的图像(甚至是渐变色)都将使UI响应变慢,从而无法进行抓取。使用典型的复古XP机器的管理员也很可能会遇到复杂的WPF应用程序的性能问题(由于内存很少,GPU则很差)。

如果您使用WPF途径获取丰富的图形,请在发现目标计算机已经使用十年的情况下,为最后的性能攻击做好准备。坚持使用静态屏幕并使用.NET 4.0,因为自3.5开始,WPF性能已得到显着改善。


谢谢...这实际上是我的一个大问题,尽管到目前为止,如果用户处于RDP连接并且测试运行良好,我们似乎可以缩小图形。
雷切尔

2

从技术上讲,我相信WPF / WCF组合是更好的解决方案。

但是,我不认为您现有的WPF程序员确实具有该项目的经验。WPF与Winform编程相比,是编程思想过程中的一个重大转变,因此您将需要经过漫长而艰苦的思考,您是否真的有足够的团队技能来交付这条路线。


1
+1“学习几个月”可能意味着任何事情-为陡峭的学习曲线做好准备。
柯克·布罗德赫斯特

1

有趣。这听起来像是我们公司开始的一个应用程序非常熟悉(Sip电话和扫描仪集成以及所有)。

我们选择了针对SOA的silverlight,以便在需要时可以稍后制作WPF应用程序。

在初始发行后可以添加其他组件的空间(其中有很多……也许在这里比初始应用程序有用)

我们在服务层中使用MEF,并构建扩展点(用于描述我们计划可扩展性或与其他系统集成的特定点的插件接口)

键盘导航

没问题

性能是必须的

什么样的表现?感知的性能(柔韧性)还是数字运算性能?后者可能是Web / silverlight应用程序的问题。对于前者,我们的应用程序会像您一样处理很多记录,但是我们可以预测它们并在用户处理当前记录时预取记录。对于我们应用的该部分,“加载”时间为零。

生产速度到初始版本

取决于技能。但实际上,每个人都一直希望尽快进入市场,所以这是毫无争议的。

维护费用低

像生产速度一样,这也不是唯一的论据,它将归结为设计和编码实践。如果您从硬件维护的角度讲,则可能要使用云应用程序。

未来的支持

我不知道那是什么意思。

网络电话/扫描仪集成

Silverlight 4现在允许网络摄像头/麦克风访问(我们希望进行应用程序间视频会议以及sip集成),因此,如果您使用电话服务器,则可以自己编写。我不知道任何现有的,但是可能的帮助。

否则,您可能必须进行一些丑陋的修改(抱歉,不再参考该文章),或者别无选择,只能使用可以与文件系统进行交互的WPF应用程序。SL4可以超出浏览器范围,但是只能访问文件系统的某些部分。它们可能都不是您需要与Sip电话进行交互的部分。

您是说文件扫描仪吗?对此我不确定。我们正在使用手动/条码扫描器,它们的操作方式与其他任何输入设备一样,并且不是问题。


1

您需要全天候使用的响应式应用程序吗?使用WPF; 您还会发现通过ASP / MVC(IMHO)在WPF中重用GUI组件也更加容易

是的,jquery等都很棒,silverlight很酷,但是桌面应用程序仍然更高效

对于后端,WCF很好


0

由于可伸缩性和安全性,我将建议您将WCF用于服务层。对于表示层,您可以使用Silverlight或ASP.NET,Silverlight类似于Flash,但一开始很难理解,而且学习曲线很大,主要是在处理数据时。ASP.NET易于使用,但您需要进行大量调整和使用JavaScript才能有效使用它。


1
无论我们为UI层选择做什么,计划都是要拥有WCF服务层。我们正在尝试确定是否要为客户端应用程序使用WPF /桌面或ASP / Web。即使我们确实使用台式机应用程序,也很有可能会拥有一个门户网站来访问项目的子集,例如报告。
雷切尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.