【问题标题】:XBAP usage and maturity issuesXBAP 使用和成熟度问题
【发布时间】:2009-10-21 09:55:48
【问题描述】:

我们正在考虑将我们的 UI 迁移到 XBAP。 尽管知道客户必须预先安装 .net,但我们还是选择了 XBAP,因为我们的目标不是大众而是企业环境中的 IT 专业人员, 这是一种保护我们的投资(在客户端-服务器架构中基于 WPF 的 UI)和享受 Web 部署的方法。 但是,我们担心平台/架构的成熟度及其采用情况。

您知道使用 XBAP 的任何商业应用程序吗?您有使用它的经验吗?你能详细说明一下那次经历吗?

另外,正如@Murph 所建议的那样,您能想出比 XBAP(或相反)更喜欢 clickOnce 的有力理由吗?

【问题讨论】:

  • 在看这个还需要问为什么XBAP优于Clickonce?不幸的是,无论哪种方式,我都可以做很多事情!
  • 好问题,我不得不说我不知道​​哪个更可取,将更新我的问题。
  • 对不起大家!我想为赏金选择一个接收器,但是 StackOverflow 不允许这样做(花了太长时间)。我认为这真的很糟糕,我在元网站上写过它,但是我无法改变这一点。所以我向大家道歉,感谢您的帮助!

标签: clickonce xbap commercial-application


【解决方案1】:

我一直在做一个 XBAP 工具,也是为了满足公司内部需求。推出更新非常容易——只需更新服务器应用程序版本,客户端将在下次连接时更新。因此,在这方面它与 ClickOnce 没有太大区别。

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

否则,我看不出有什么不同。至少 XBAP 与独立 WPF 的开发是一样的。 (注意:Silverlight 不同,它只使用 .NET 框架的一个子集,单独安装并适用于多个平台。XBAP 需要 Windows 平台和 .NET Framework 3+)。

【讨论】:

  • 部分信任,使用模态对话/打开新窗口等有多难/容易?我读过打开一个新窗口会调度弹出窗口阻止程序,有没有办法让它在没有进一步本地配置的情况下开箱即用?
  • 一般情况下,您不能打开新窗口或使用自己的对话框 (msdn.microsoft.com/en-us/library/aa970910.aspx)。您可以调用一些标准对话框,例如 File Open,并且可以创建 Popup 实例。不确定它们是否会被阻止,但您还必须自己实施“模式”(social.msdn.microsoft.com/forums/en-US/wpf/thread/…)...
  • 另一个问题 - 我的客户端调用 Web 服务,WCF 是通过 app.config 配置的。当我使用 XBAP 时,我找不到部署它的方法,并且无论如何 app.config 都不可用,因为该过程在 PresentationHost 的上下文中运行。您是否有任何替代 app.config 的经验(尤其是在 Web 服务的上下文中)? (部署另一个文件并手动加载?使用硬编码配置?)
  • AFAIK,我们使用 App.config 连接到 WCF 服务并且它可以工作,不需要特殊处理...
【解决方案2】:

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

您说得对,XBAP 的采用率确实很低。我认为这主要是因为 Silverlight 对大多数希望在浏览器中受益于 WPF/DotNet 的人来说更有意义(因为他们的应用程序可以使用 Silverlight 跨平台)。

【讨论】:

  • 您能否详细说明第一点 - clickOnce?角色更新容易吗? (或者是每次点击复制和运行?)正如我所说,我们的动机主要是为帮助台用户快速轻松地部署。至于第二点——同样,我们希望尽可能多地使用现有代码,而且在使用我们的常用程序集等时,silverlight 似乎会受到更多限制,因为 silverlight 项目不能引用非 silverlight 程序集。
  • 是的,推出更新非常容易——这是 ClickOnce 的核心部分。因此,您将工具的新版本发布到它们安装所在的 HTTP 服务器,并且下次运行时它会自动升级。您可以控制它的严苛程度:强制更新、提示更新等。
  • 您对 Silverlight 的看法是正确的。我只是将其作为 XBAP 采用率低的一种可能解释,而不是作为解决此问题的建议。
【解决方案3】:

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

浏览器托管应用程序的问题在于它们在浏览器中运行,因此受限于适用的规则(如另一个回复中所述,例如新窗口和信任限制)。

因为我们的应用程序主要用于受控的内部网和外部网,我们认为我们可以使用我们的解决方案进行管理。我们的应用程序在完全信任的情况下运行,并使用我们自己的证书进行签名,这让生活变得更轻松。

好处当然是点击一次安装(和更新维护)以及让用户通过网站“在任何地方”安装应用程序(或者当然你需要 .NET 和我们案例中的证书)的能力。

我们面临的最大问题与我们可以解决的信任、导航和对话有关。另一个问题是我们的应用程序使用 Web 服务来访问数据。默认情况下(嵌入式)客户端和 Web 服务之间的绑定非常困难,但我们也找到了克服这个问题的方法。

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      我可能是错的,但 IIRC XBAP 使用 ClickOnce 作为它的底层部署方法。 [找不到我在哪里读到的,所以请谨慎对待。]

      也就是说,我通过 ClickOnce 部署运行 WPF 应用程序取得了巨大成功。如前所述,您将所有文件部署到您的 Web 服务器。当您发布更新时,您只需将它们复制到您的 Web 服务器,当客户端运行应用程序时,它们会收到提示更新到最新版本的提示,您可以要求更新,或允许它们延迟。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多