【问题标题】:Silverlight, Wpf Web App (xbap) or Click Once? Pros and ConsSilverlight、Wpf Web App (xbap) 还是 Click Once?优点和缺点
【发布时间】:2010-09-20 02:02:50
【问题描述】:

我们正在开始一个新项目,我正在尝试决定我们应该采用哪种 Wpf 式开发/部署策略。在我们的案例中,我们正在研究一个相当复杂的商业应用程序,它将被 100 人(而不是 1000 人)使用,所以我倾向于点击一次应用程序。我的老板喜欢 Silverlight 应用程序的想法,因为它意味着更容易部署。那么我们应该往哪个方向跳呢?

答案当然是“视情况而定”。 那么各有什么优缺点呢?

我将开始滚动(编辑artur carvalho的一些答案中添加):


银光

  • 优点

跨浏览器
不需要完整的框架。
更好地控制用户。如果您的用户登录,您不必担心激活密钥或类似的东西。
它适用于 Windows 和 Mac。
您可以轻松更新所有用户的应用程序。

  • 缺点

无法与客户端的文件系统等交互
与完整的 Wpf 相比,功能更少(有人有记录差异的好资源吗?)
单窗
单机版


Wpf 网络应用 (xbap)

  • 优点

完整的 Wpf。

  • 缺点

单一浏览器
需要完整的框架
无法与客户端的文件系统等交互
单窗
单机版


Wpf 点击一次

  • 优点

完整的 Wpf
可以离线工作
多个窗口
多个版本(反对?)
更好地访问计算机的低级部分
无需停机维护

  • 缺点

单一浏览器
需要完整的框架
稍微(?)更难安装。

【问题讨论】:

  • 嗨,马克,我很好奇你正在谈论的 wpf 网络应用程序。没听说过,能给个例子吗?谢谢
  • 我认为他在谈论 XBAP。 xbap.org
  • 是的,我说的是 XBAP - 我将编辑我的问题以使其更清晰

标签: c# .net wpf silverlight


【解决方案1】:

优点

  1. Silverlight 插件意味着开发人员可以针对基于浏览器的应用程序的单一、一致的运行时,而不是处理不同版本的多个浏览器的复杂性。您还可以获得纯 HTML 和 JavaScript 难以或不可能的视频和多媒体效果,尽管 Adob​​e Systems 的 Flash 具有相同的优势。
  2. 在不部署 .NET 运行时的情况下执行 .NET 代码。 Silverlight 插件确实包含一个精简的 .NET 运行时,但不是处理大量下载和 Windows 安装程序的复杂性,用户只需下载大约 4MB 的小下载,所有这些都在浏览器中处理。以我目前的经验,安装是顺利和容易的。
  3. 性能很有希望。 Silverlight 在这个素数计算器中表现出色,这无疑要归功于 JIT 编译为本机代码,尽管它在渲染图形方面可能不太好。
  4. 对 Moonlight 的支持意味着将有 Silverlight 的官方开源实现,从而减轻专有方面的影响。
  5. Silverlight 直接解释 XAML,而 Adob​​e 的 XML GUI 语言 MXML 在编译时被转换为 SWF。事实上,XAML 页面作为资源包含在用于部署 Silverlight 应用程序的已编译 .XAP 二进制文件中。 .XAP 文件只是具有不同扩展名的 ZIP。这也意味着搜索引擎可能会在 Silverlight 应用程序中为文本建立索引,就像使用 Flash 一样。
  6. 第三方组件供应商已经很好地使用了 Silverlight 附加组件。例如,Infragistics、ComponentOne 和 DevExpress。
  7. 让您的 .NET 代码跨平台。随着 Mac 随处可见,将 Visual Basic 或 C# 代码迁移到跨平台、基于浏览器的 Silverlight 客户端的能力将越来越有用。显然,这仅适用于现有的 .NET 开发人员——我猜这是 Silverlight 的主要市场,但它是一个很大的市场。这同样适用于下一点:
  8. 使用 Visual Studio。 Microsoft 的 IDE 是一个成熟且广受欢迎的开发环境,由于它也是 ASP.NET 的工具,因此您可以将其用于服务器端代码以及 Silverlight 客户端。对于那些不熟悉 Visual Studio 的人,Silverlight SDK 还支持命令行编译。
  9. 选择您的语言。对多种语言的支持从一开始就是 .NET 的一部分,在 Silverlight 2.0 中拥有 .NET 运行时意味着您可以使用 C#、Visual Basic 或动态语言运行时 (DLR) Iron Ruby 编写客户端逻辑或铁蟒。
  10. 隔离存储为 Silverlight 应用程序提供本地文件访问权限,但仅限于应用程序特定的受保护位置,提供了一种相对安全的方式来获得此优势。

缺点

  1. 如果 Apple 甚至不允许在 iPhone 上使用 Flash,Silverlight 还有什么机会?
  2. Silverlight 迟到了。 Flash 成熟、值得信赖且无处不在。 Silverlight 2 仅在秋季推出测试版(我们希望如此)。这是我们关心的版本 - 包含 .NET 运行时的版本 - 并且仍将缺乏对移动设备的支持,甚至是 Windows Mobile,尽管这将在未指定的某个日期承诺。
  3. 设计工具是 Expression Blend 和 Expression Design - 但谁使用它们?设计界使用 Adob​​e PhotoShop。
  4. 虽然 Expression Blend 和 Visual Studio 之间的解决方案兼容性听起来不错,但实际上必须使用两个单独的工具很麻烦,尤其是当存在一些琐碎的不兼容性时,例如在当前测试版中。
  5. 不支持流行的 H.264 视频编解码器。相反,Silverlight 的高清视频必须在 VC-1 中,这不太常见。
  6. 这是促进专有技术而非开放标准的另一项努力。
  7. 是的,Linux 将通过 Moonlight 得到支持,但是什么时候? Linux 实现似乎总是落后于 Windows 和 Mac 版本。
  8. Silverlight 支持 SOAP Web 服务或 REST,前提是您不使用 PUT 或 DELETE,但没有优化的二进制协议,如 Adob​​e 的 ActionScript 消息格式 (AMF),这可能意味着在某些情况下性能较慢。
  9. Silverlight 是一种仅限浏览器的解决方案,而 Flash 可以使用 Adob​​e Integrated Runtime (AIR) 部署到桌面。话虽如此,是的,我已经看到了。
  10. 您必须在 Windows 上进行开发。这对于 Expression 设计工具来说尤其是一个问题,因为设计人员拥有不成比例的大量 Mac。

【讨论】:

    【解决方案2】:

    1. Silverlight 可以从托管页面访问 DOM
    2.托管页面可以访问Silverlight部分。
    这对 Silverlight 来说是一个很大的优势

    但 WPF/Windows-Forms使用 Clickonce
    文件访问、鼠标右键、易于访问数据库

    【讨论】:

      【解决方案3】:

      这些天在 Firefox 上点击一次不可用,通过这个插件:https://addons.mozilla.org/en-US/firefox/addon/1608

      【讨论】:

        【解决方案4】:

        专业人士与 ASP.NET Web 表单

        1. 没有 ViewState 或“惊喜废话” o 这也适用于 Silverlight。 Silverlight 为最终用户带来了“桌面”体验,并且 Silverlight 中没有使用 ViewState。
        2. 更快的服务器端和客户端 o Silverlight 在客户端/服务器端速度更快,具体取决于您如何看待它。 Silverlight 在 Silverlight 的 .NET 子系统中编译。您可以访问多线程、LINQ、复杂数据结构等。与 ASP.NET 或 AJAX/JavaScript 应用程序相比,它的性能要好几倍,因为客户端执行和一些通常在服务器 BLL 中处理的项目可以下放到客户端
        3. 多个相关视图的简化模型 o Silverlight 支持数据和 UI 的完全分离。通过为 Silverlight 的另一个消费者创建单独的视图来进一步实现这一点是非常强大的。您可以在 Silverlight 中应用相同的 MVC/MVP 模式并达到此抽象级别。 Jason 提到了一个能够为 iPhone 创建单独视图的示例,并且只需要更改 View 组件。这适用于 Silverlight 以及不同的事情。例如,我有想要移植到 SharePoint 的大型 Silverlight 应用程序。我可以为 SharePoint 创建一个“较小的视图”,使其更适合 UI。此外,Silverlight Mobile 现在正在进行私人测试。我假设同样非常强大的抽象级别也适用于为您的 Silverlight 应用程序创建“移动视图”。
        4. 可单元测试 o Silverlight 还包括一个单元测试框架。可以在这里下载:http://code.msdn.microsoft.com/silverlightut/
        5. 如果您不运行 IIS 7 将面临挑战 o Silverlight 不关心您是否运行在 IIS 6 或 IIS 7 或 Apache 上。这是 Silverlight 优于 ASP.NET MVC 的一项功能。
        6. 客户端缓存 o 在 ASP.NET Web 窗体或 MVC 中,您在服务器上进行缓存。 Silverlight 允许您通过独立存储在客户端上进行缓存(如果需要,可以增加到数百兆)。这允许应用程序以超快的速度执行而不会使托管服务器陷入困境。

        CON 与 ASP.NET Web 表单

        1. 难以转换现有代码 o Silverlight 是一个与 ASP.NET WebForms 或 MVC 完全不同的编程平台。不仅很多代码不会转换,您还必须考虑客户端层,并且在大多数情况下,如果您要替换现有 ASP.NET 站点中的大型模块,则需要完全重新架构。
        2. 不是开箱即用的最佳 SEO o 谷歌几个月前开始抓取 SWF 文件并将它们添加到搜索引擎。我认为 Silverlight 可能还有很长的路要走。您可以为 Silverlight SEO 做的就是用基本技巧来很好地描述插件周围的元数据标签。
        3. 数据访问 o Silverlight 中的数据访问仅限于 Web 服务/WCF/ADO.NET 数据服务。您不能通过 ADO.NET 或存储过程直接调用数据库。
        4. 安全 o Silverlight 在客户端上运行。然后你的很多比特在互联网上漫游。此外,一些数据访问技术不支持完整的 WS* 标准安全性。因此,除了基于证书的传输安全性之外,您要么编写大量自己的管道代码,要么等待下一个版本。 XAML 代码非常不安全;没有多少应用程序在其 UI 中拥有其知识产权。在 Silverlight 中,可以很容易地使用 Silverlight Spy 进行逆向工程。 Silverlight 本质上比 ASP.NET MVC 应用程序安全性稍差一些。显然,您可能希望在将 Silverlight 程序集放任自流之前对其进行加密/混淆处理。

        【讨论】:

          【解决方案5】:

          Mark,XBAP 的“单一浏览器”是什么意思?例如,XBAP 确实适用于 Firefox。它确实需要 .NET 框架,而且我们不太可能很快(如果有的话)在 Mono 中使用 WPF,所以你只能使用 Windows,没错。

          【讨论】:

            【解决方案6】:

            如果您不需要所有 WPF,我会先尝试在 Silvelight 中进行,如果以后需要,您可以更轻松地切换到 WPF。

            在这里我认为它应用了“少即是多”的原则:确实,使用 WPF,您有更多的选择,并且可以访问用户计算机,但随着时间的推移,这最终可能成为一个问题而不是帮助。例如,在使用大量“用户计算机”资源的应用程序中,从 Windows XP 更改为 Vista 需要进行多少更改!

            【讨论】:

              【解决方案7】:

              您没有说这是仅限公司的应用程序还是面向公众的应用程序。仅此一项将为您决定。

              如果只有公司,我会使用完整的 WPF 点击一次。这会给你一切。 完整的框架应该不是问题。这是在后台运行的一次性安装,因此您的决定不应依赖于此。缺点:它只能在 Windows 中运行,但如果您的公司只有 Windows,这应该不是问题。

              但是 WPF 应用程序可能会占用大量资源,因此您需要知道您的所有客户端计算机是否都能够顺利运行 WPF 应用程序。

              如果是 Internet 应用,请选择 Silverlight:它在不同的操作系统下运行。

              【讨论】:

                【解决方案8】:

                我会考虑支持同步框架的 WPF ClickOnce (www.msdn.com/sync)。这将允许您在用户未连接到公司网络时支持有限的功能(这将消除任何基于浏览器的部署方案,例如 Silverlight 和 XBAP)。

                【讨论】:

                  【解决方案9】:

                  您可以添加线上与线下辩论中常见内容的利弊。一些项目:

                  优点

                  wpf(离线):

                  • 更好地访问计算机的低级部分。
                  • cpu 使用是本地的,因此您很少遇到 cpu 负载问题。
                  • 不依赖于网络。
                  • 无需停机维护。

                  银光(在线):

                  • 更好地控制用户。如果您的用户登录,您不必担心激活密钥或类似的东西。
                  • 它适用于 Windows 和 Mac。
                  • 您可以轻松更新所有用户的应用程序。

                  我稍微简化了一下,列表中有灰色区域。我只修改了 XBAP,所以我会省略一个。看看专业人士后不难找出缺点。

                  HTH

                  【讨论】:

                  • 一些优点!谢谢。回复:“cpu 使用率是本地的”。 Silverlight 也一样,不是吗?
                  • 是的,用词不当。我的意思是当你有一个服务器时你会遇到负载问题,但我懒得说缺点:-)
                  【解决方案10】:

                  首先,我会评估一个 Web 客户端(最好是 MVC+jQuery)是否无法完成这项工作......

                  假设一个完整的客户是有保证的:

                  如果是需要客户端的商业应用,我会倾向于使用完整的框架和 ClickOnce;这里的主要区别(重新部署)是客户端必须安装框架 - 但除此之外,ClickOnce 部署非常轻松。实际上,构建 ClickOnce 清单比 Silverlight 等更容易,因为 IDE 几乎可以为您完成所有这些工作;您只需将文件托管在某处(可以是 Web URL;也可以是网络 UNC)。

                  这使您在客户端更多拥有更多控制权(和权力),以及更大范围的现有资源可供使用(例如,如果您需要,您可以使用一些旧版 winform WPF 表面上的代码)。 “需要完整的框架”也是最大的好处之一:“有完整的框架”。

                  您或许还应该考虑 3.5 的“客户资料”设置;不确定这在现实中有多广泛……但值得了解。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2010-10-23
                    • 2011-04-03
                    • 2020-10-24
                    • 2011-06-09
                    • 2011-01-06
                    • 1970-01-01
                    • 2010-10-07
                    • 1970-01-01
                    相关资源
                    最近更新 更多