WPF vs XBAP vs Silverlight …哪个适合商业应用?

我非常熟悉完整的WPF客户端应用程序的许多细节。 我知道,WPF客户端应用程序支持完整的.NET Framework 3.5,允许二维和三维graphics,主题,模板,样式,触发器,作品的硬件加速。

我不清楚的是XBAP和Silverlight应用程序中存在或缺less哪些function和/或细节。 我听说XBAP由于安全问题而在某些方面受到内在的限制,但这就是关于它的原因。

我知道WPF足够强大,可用于全面的商业应用程序,但是XBAP和Silverlight呢? 每个的重要function和局限性是什么? 他们中的任何一个缺乏在商业应用程序中使用时无法使用的function?

Wintellect在这里发布的Silverlight和WPF之间写了一个很好的比较: http ://wpfslguidance.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28278

从WPF和Silverlight的个人经验来看,我发现SL完全可以用于LOB应用程序。 .NET RIA服务是SLB for LOB应用程序的优秀补充。 为了回答你最后的问题,在我的经验中没有任何东西让SL回到创buildLOB应用程序。 在这个讨论中,WPF和SL之间唯一的显着区别是SL没有访问客户端机器上的本地资源(比如registry),并且不能访问WPF可以使用的Windows特定function,例如Windows 7跳转列表或库。 我认为Silverlight是商业应用程序的最佳select,因为易于部署和针对多个平台的能力。

我试图做一个相当雄心勃勃的项目大约18个月全职XBAP开发,并绝对讨厌它。

有许多未公开的限制,例如不能设置自定义鼠标光标。 MS忘记告诉任何人关于那一百人。 因为那个雷区,我现在非常不喜欢沙盒。

结合部署噩梦(至今仍然没有一个Firefox的好故事,即使在3.5 SP1仍然存在问题),我真的相信,MS正在竭尽所能地杀死XBAP而转向Silverlight。 我不怪他们,只是希望他们对此更开放。

我会避免像瘟疫一样的XBAPs 。 这是一个没有前途的死亡情景。 如果他们很快被弃用,他们也不会感到惊讶。

关于Silverlight,我将概述我迄今的经验。 (注意:重新阅读这听起来有点负面,但我指出了缺失的function。总的来说,我喜欢Silverlight,一个使用C#?Rocks的浏览器中的丰富UI)。

值得注意的区别是没有右键单击,鼠标滚轮支持,打印function,你不能打开一个新的窗口。 您的OOB SL应用程序不能位于通知区域。 您可以在JavaScript中处理鼠标事件,但是如果您希望应用程序移动OOB,则不能。

SL团队似乎也过分担心安全性,以至于忽略LOB的适用性(没有新的窗口,OOB本地系统访问的信任设置,通知区域等等)。

其中一些使Silverlight应用程序觉得它不是Windows兼容的。 考虑突出显示文本,右键单击复制。 或者右键单击粘贴。 这些很多人使用的基本操作都不见了。 它也感觉像一个外星人的用户界面的经验,例如,你本能地用你的鼠标滚动一个网格,它不起作用。 这种东西在浏览器中的任何表中都可以使用,但不能使用SL。

编程方面,我没有太多使用WPF,但据我所知,在如何攻击一些问题方面存在一些重大差异。

SL中缺less标记扩展。 它也只有整数索引绑定,所以没有一些属性袋没有一些技巧。 没有触发器,所以你总是必须编写代码来连接事件(在更dynamic的页面中刺激) 。 除了工具包中的ImplicitStyleManager之外,它没有可inheritance的样式,这是不合适的。

所以对于某些LOB应用程序来说,没问题,对于其他人来说,你需要跳过一些箍环(例如,如果你想为客户端定制)。 但是对于所有的LOB应用程序来说这肯定不是很好。

我的印象也是SL感觉还不完整,还有很多的小窍门。 例如,数据网格是令人沮丧的(不自动伸展,非常困难的子类),自动完成框有点不稳定,导航框架有点笨拙,combobox/树视图难以绑定(他们真的没有整理,如果你想将SelectedItem绑定到与itemsSource不同的对象)。

总而言之,Silverlight几乎就在那里,只要你准备接受一些限制和小问题就没有问题。

我没有使用XBAP的经验,但是我的印象与您的印象相似,因为与WPF相比,它的安全性只受到限制。

至于Silverlight:我最近用它来开发一个复杂的农业遥测监控用户界面 – 它比传统的商业应用程序更像是一个数据可视化应用程序,但它有很多的CRUD,并没有一个我想要的function实施,但不能因为我的技术select。 那是SL2。

我敢肯定,如果你使用XBAP,如果你可以保证你的用户运行的是.NET 3.5(或者也是3.0的XBAP部分?),那么你最终会得到更多的钟声和口哨声。 否则,我不会推荐Silverlight。

(道歉,如果你想要更多的function比较matrix – 但我想你可以在微软find)。