37

我非常熟悉成熟的 WPF 客户端应用程序的许多细节。我知道 WPF 客户端应用程序支持完整的 .NET Framework 3.5,允许对 2D 和 3D 图形、主题、模板、样式、触发器等工作进行硬件加速。

我不清楚的是 XBAP 和 Silverlight 应用程序中存在或缺少哪些功能和/或细节。我听说由于安全问题,XBAP 在某些方面本质上是有限的,但仅此而已。

我知道 WPF 足够强大,可以在全面的业务应用程序中使用,但是 XBAP 和 Silverlight 呢?每种方法的重要功能和局限性是什么?它们中的任何一个是否缺少在业务应用程序中使用时会使它们无用的功能?

4

4 回答 4

18

我试图为一个相当雄心勃勃的项目全职进行大约 18 个月的 XBAP 开发,并且非常讨厌它。

有许多未记录的限制,例如无法设置自定义鼠标光标。MS忘了告诉任何人关于那一和一百其他人。由于那个雷区,我现在非常反对沙盒。

再加上部署的噩梦(直到今天,Firefox 仍然没有什么好故事,即使在 3.5 SP1 之后仍然存在问题),我真诚地相信 MS 正在尽其所能杀死 XBAP 以支持 Silverlight。我不怪他们,只是希望他们对此更加开放。

我会避免像瘟疫一样的 XBAP。这是一个没有未来的死胡同。如果它们很快被弃用,一点也不感到惊讶。

于 2009-08-11T05:28:37.337 回答
17

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

根据 WPF 和 Silverlight 的个人经验,我发现 SL 完全可以用于 LOB 应用程序。.NET RIA 服务是对 LOB 应用程序的 SL3 的极好补充。为了回答您的最后一个问题,根据我的经验,没有什么可以阻止 SL 创建 LOB 应用程序。在本次讨论中,WPF 和 SL 之间的唯一显着区别是 SL 无法访问客户端计算机上的本地资源(例如注册表),也无法访问 WPF 可以访问的 Windows 特定功能,例如 Windows 7 跳转列表或库. 我认为 Silverlight 是商业应用程序的最佳选择,因为它易于部署并且能够针对多个平台。

于 2009-07-21T18:31:45.033 回答
12

关于 Silverlight,我将概述我目前的经验。(注意:重新阅读这听起来有点消极,但我指出了缺失的功能。总的来说,我喜欢 Silverlight,在浏览器中使用 c# 的丰富 UI?Rocks)。

显着的区别是没有右键单击、鼠标滚轮支持、打印功能并且您无法打开新窗口。您的 OOB SL 应用程序不能位于通知区域。您可以在 javascript 中处理鼠标事件,但如果您希望您的应用程序移动 OOB,则不能。

SL 团队似乎也过于关注安全性,以至于对其 LOB 的适用性进行了削弱(没有新窗口、OOB 中本地系统访问的信任设置、通知区域等)。

其中一些使 Silverlight 应用程序感觉它与 Windows 不兼容。考虑突出显示文本,右键单击复制。或者右键粘贴。许多人使用的这些基本操作都丢失了。它也感觉像是一种陌生的 UI 体验,例如,您本能地用鼠标滚轮滚动网格,但它不起作用。这些东西适用于浏览器中的任何表格,但不适用于 SL。

编程方面,我没有太多使用 WPF,但据我所知,在解决某些问题的方式上存在一些显着差异。

SL 中缺少标记扩展。它也只有整数索引绑定,所以没有一些技巧就没有属性包。没有触发器,因此您总是必须编写代码来连接事件(在更动态的页面中令人恼火)。除了工具包中的 ImplicitStyleManager 之外,它没有可继承的样式,这不能胜任这项工作。

因此,对于某些 LOB 应用程序来说,这很好,对于其他应用程序,您必须跳过一些圈子(例如,如果您想要客户端的可定制性)。但这对于所有 LOB 应用程序来说肯定不是很好。

我的印象也是SL还没有完成,有很多小问题。例如,数据网格令人沮丧(不自动拉伸,很难子类化),自动完成框有点不稳定,导航框架有点笨拙,组合框/树视图很难绑定(如果你想要的话,它们真的没有整理出来将 SelectedItem 绑定到 itemsSource 的不同对象)。

总而言之,Silverlight 几乎就在那里,只要您准备好接受一些限制和琐事,就可以了。

于 2009-07-22T08:45:24.380 回答
9

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

至于 Silverlight:我最近用它开发了一个复杂的农业遥测监控用户界面——它更像是一个数据可视化应用程序而不是传统的商业应用程序,但它有大量的 CRUD,而且我没有一个想要的功能实施但由于我选择的技术而无法实施。那就是SL2。

我敢肯定,如果您使用 XBAP,您最终会得到更多的花里胡哨,并且如果您可以保证您的用户正在运行 .NET 3.5(或者 XBAP 也是 3.0 的一部分?)我会去的。否则,我将毫无保留地推荐 Silverlight。

(抱歉,如果您想要更多功能比较矩阵 - 但我认为您可以在 Microsoft 找到这些。)

于 2009-07-21T18:23:17.750 回答