2009-10-21 65 views
5

我们正在考虑将我们的用户界面迁移到XBAP。 我们选择了XBAP,尽管知道客户必须预先安装.net,因为我们不是针对大众,而是针对企业环境中的IT专业人员, ,这是一种保护我们投资的方式(在基于WPF的用户界面在客户端 - 服务器体系结构中)并享受Web部署。然而,我们担心平台/架构的成熟性以及它的采用。XBAP使用和成熟度问题

你知道使用XBAP的任何商业应用吗?你有使用它的经验吗?你能详细说明这个经验吗?

此外,正如@Murph建议的,您能想到强烈的理由更喜欢clickOnce over XBAP(或其他方式)吗?

+0

在看这一个也需要问为什么XBAP over Clickonce?不幸的是,我可以通过任何一种方式做很多事情! – Murph 2009-10-21 10:03:51

+0

好问题,我不得不说我不知道​​哪个更好,会更新我的问题。 – 2009-10-21 10:08:09

+0

让每个人都难过!我想为赏金选择一个接收器,但是StackOverflow不允许这样做(花费太长时间)。我认为这真的很糟糕,我在meta网站上写过,但是我无法改变这一点。所以我向大家道歉,并感谢您的帮助! – 2009-11-02 17:37:02

回答

2

我们在ClickOnce方面取得了很大的成功,其中包括对外部非技术客户的生产铺开。它易于使用,包括易于集成到我们的自动构建过程中。我们的经验至少有一个数据点供您在权衡两种替代方案的风险时考虑。

你说得对,XBAP的采用确实非常低。我认为这主要是因为Silverlight对于大多数在浏览器中希望获得WPF/DotNet的好处的人更有意义(因为他们的应用程序可以通过Silverlight跨平台)。

+0

能否详细说明第一点 - clickOnce?是否容易角色更新? (或者它是一个复制和每次点击运行?),正如我所说的,我们的动机主要是快速轻松地部署帮助台用户。至于第二点 - 再一次,我们希望使用尽可能多的现有代码,并且似乎Silverlight在使用我们的通用程序集等时会受到更多的限制,因为silverlight项目不能引用非silverlight程序集。 – 2009-10-29 16:20:44

+0

是的,推出更新非常简单 - 这是ClickOnce的核心部分。因此,您将工具的新版本发布到安装它们的HTTP服务器上,下次运行它时会自动升级。你可以控制它应该是多么的严厉:强制更新,提示更新等。 – 2009-10-29 19:38:49

+0

你对Silverlight的理解完全正确。我只提到它是XBAP采用率低的一种可能的解释,而不是作为您在这个问题上使用的建议。部分信任的 – 2009-10-29 19:40:34

1

我可能是错的,但IIRC XBAP使用ClickOnce作为其底层部署方法。 [无法找到我读这个,所以拿一粒盐。]

这就是说,我已经通过ClickOnce部署运行WPF应用程序很成功。如前所述,您将所有文件部署到您的Web服务器。在发布更新时,只需将它们复制到Web服务器上,当客户端运行应用程序时,系统会提示您更新到最新的版本,您可以要求更新或允许它们延期。

它非常用户友好,不需要浏览器的开销来运行您的应用程序。

3

我一直在做一个XBAP工具,也用于内部企业需求。部署更新非常简单 - 只需更新服务器应用程序版本,客户端下次连接时就会更新。因此,在这方面它与ClickOnce并无太大差别。

我们面临的主要问题是“部分信任”模式,你必须服从。在某些非常意外的情况下,它会出错,例如,我们的一些第三方WPF失败了,因为它们使用了WPF位图效果,后者又使用了GPU着色器,这被视为系统的安全违规并被阻止。我不确定ClickOnce是否解决了这类问题。传言是XBAP信任模式在.NET 4中将不那么偏执。

否则,我没有看到任何区别。至少XBAP与独立WPF的发展完全相同。 (注意:Silverlight不同,它只使用.NET框架的一个子集,它是单独安装的并可用于多个平台.XBAP需要Windows平台和.NET Framework 3+)。

+0

,使用模态对话/打开新窗口等有多困难/容易?我读过,打开一个新窗口将派发弹出窗口阻止程序,有没有办法让它在没有进一步本地配置的情况下工作? – 2009-11-02 13:48:16

+0

通常,您不允许打开新窗口或使用自己的对话框(http://msdn.microsoft.com/zh-cn/library/aa970910.aspx)。您可以调用一些标准对话框,例如文件打开,并且可以创建弹出式实例。不知道他们是否会被阻止,但您也必须自行实施“模式”(http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ef66f6a7- eb9d-42f6-86ba-7fbefb72fa95 /)... – 2009-11-02 14:26:38

+0

另一个问题 - 我的客户端调用Web服务,通​​过app.config配置WCF。当我使用XBAP时,我无法找到部署它的方法,而且由于该过程在PresentationHost的上下文中运行,因此无法使用app.config。你有没有使用app.config的替代经验(尤其是在Web服务环境中)?(部署另一个文件并手动加载?使用硬编码配置?) – 2009-11-02 15:00:52

2

我们开发了一个既有桌面又有web实现的应用程序。由于功能几乎相同,我们需要单一来源解决方案。该应用程序是CAD应用程序的项目和图纸管理工具。使其在浏览器中运行的最重要原因是应用程序将用作交换项目数据和绘图的协作工具。

与浏览器承载的应用程序的问题是,他们在浏览器中运行,因此仅限于适用的规则(如在另一个回答如提到的新窗口和信任的限制)。

因为我们的应用程序主要用于控制内部网和外部网,我们认为我们可以与我们的解决方案管理。我们的应用程序以完全信任的方式运行,并使用我们自己的证书进行签名,使生活变得轻松一些

的好处当然是通过网站点击一次安装(和更新维护),并让用户安装应用程序“随时随地”的能力(需要.NET或课程,并在我们的情况下,证书)。信任,导航,我们可以解决的对话

我们面临的最大问题是相关的。另一个问题是我们的应用程序使用Web服务来访问数据。客户端与Web服务之间的绑定在默认情况下非常困难(嵌入式),但我们也找到了解决此问题的方法。

我们也可以运行我们的浏览器之外的应用程序(但可通过浏览器进行安装)。但是,我们的产品所有者目前需要浏览器体验,因为这对用户来说更有意义。如果您通过网站安装,但在浏览器外部运行该应用程序,则浏览器所需的限制较少。

2

这是一个有趣的事实。在.NET 4.0中,他们增加了通过ClickOnce部署的XBAP应用程序以完全信任的方式运行的能力。不再需要部分信任。这应该给你一些选择!