我正在尝试了解 Microsoft 当前提供的许多应用程序部署选项。
做一些研究发现了几十个令人困惑的术语:
- “WPF 应用程序”
- “点击一次应用程序”
- “WPF ClickOnce 应用程序”
- “微星应用”
- “XBAP 应用程序”
- “使用 ClickOnce 部署的 XBAP 应用程序”
- “已安装 ClickOnce 应用程序”
- “WPF 网络应用程序”
- “ASP.NET 网络应用程序”
- “ASP.NET MVC Web 应用程序”
- “银光应用”
- “完整的 WPF 应用程序”
- “带有同步框架支持的 ClickOnce”
我将我的发现整理成以下七种不同的方法。希望得到反馈:
“使用 MSI 部署的 WPF 应用程序”(允许大量安装选项)
- 目标计算机上需要 MSI 运行时
- 带有选项的向导
- 可以指定每个用户或每台机器
- 可以修改目标计算机上的文件和注册表,仅受管理员设置的访问权限限制
- 可以在桌面上放置快捷方式
- 替换系统文件等可以很容易地进入目标计算机上的DLL地狱
- 更新是一个很大的负面影响:检测可用更新需要额外的工具/自定义编程,而不是内置的
- 用户无需在线即可使用应用程序
“使用 ClickOnce 部署的 WPF 应用程序”:(如果您想要自动更新但在沙箱中运行则很好)
- 需要两次点击(点击超链接,点击是),无需用户输入
- 仅适用于当前用户,没有每台机器安装
- 桌面没有快捷方式
- 像普通应用程序一样出现在程序列表中
- 应用程序文件始终复制到 ../My Documents/My Applications
- 您的应用程序的快捷方式将放在开始菜单/您的公司名称中
- 无法修改目标计算机,与操作系统隔离
- 自动检测并更新较新版本
- 只需将它们放在网络服务器上(客户端检测并获取它们)即可发布
- 需要 .NET 2.0 或更高版本
- 与 Java Web Start 相媲美
- 解决了四个问题:(1)易于部署,(2)易于更新,(3)对目标计算机影响小,(4)无需管理员权限。
- 被认为是“低影响”
- 如果两个用户在同一台机器上安装了相同的 ClickOnce 应用程序,他们不会互相破坏
- 采用 CAS 确保安全
- 用户无需在线即可使用应用程序
- 独立的 ClickOnce 应用程序现在无法在 Firefox 和 Mac 上使用 Firefox,因为它需要 .NET 运行时
- 仅限于单窗口应用程序,因为它们在浏览器中运行
- 构建 ClickOnce 清单比 Silverlight 等容易得多,因为 IDE 将为您完成几乎所有工作;您只需将文件托管在某处(可以是 Web URL;可以是网络 UNC)。
「XBAP App」:xcopy 部署.xbap 文件,IE 和火狐浏览器像网页一样立即显示
- XBAP 模型的真正目标是创建一个等效于传统 HTML 和 JavaScript 网站(或 Flash 小程序)的 WPF
- 目标计算机只需运行应用程序,无需在其网络浏览器(IE 或 Firefox)中通过网络安装
- 它们适用于您希望非常容易部署的 Intranet 应用程序、完整的 .NET 框架(与 Silverlight 相对)和浏览器的导航模型。
- 99% WPF 功能(相对于 Silverlight 的 WPF 功能子集)
- 也可以通过 ClickOnce 自动部署,但 XCOPY 更常见
- YourApp.xbap 确实是 ClickOnce 部署清单
- 在沙箱中运行
- 用户必须在线才能使用应用程序
- 这些必须是“基于页面”的应用程序,而不是“基于 Windows”的应用程序
- “XBAP 似乎在浏览器内部运行只是因为它在浏览器窗口中显示其所有内容。这与加载在浏览器进程中的 ActiveX 控件(和 Silverlight)使用的模型不同。”
- XBAP 提供“无提示”体验,只要安装了 .NET 3.5,它就会像网页一样显示在浏览器中。
- 不允许 XBAP 通过 Interop 使用 WinForm 控件
- 不允许使用窗口拖放
- 不允许使用最高级的 WCF 功能,并且 XBAP 无法与托管 XBAP 的服务器以外的任何服务器通信
- “如果您的应用程序需要完全信任,您应该考虑构建一个独立的 WPF 应用程序并使用 ClickOnce 进行部署”(C# 2008 中的 Pro WPF)
- 技巧:您可以将多个 xbap 应用程序嵌入到一个 HTML 页面上的多个 iframe 中。
“Silverlight App”:在客户端浏览器中运行,使用下载的 .NET 框架的 4MB 子集,即没有 3D)
- 跨浏览器(Opera 和 Safari 也可以使用应用程序)
- 更新应用程序就像使用 ClickOnce 或 XBAP 一样简单
- 单窗口应用
- 应用程序当然在沙箱中
- 仅异步
《ASP.NET MVC with JQuery/AJAX》:在RAD和TDD方面等同于WPF开发的新开发平台
- 这种方法值得与 WPF/Silverlight 方法一起考虑
“ASP.NET App”:随着 ASP.NET MVC 获得认可,带有 ViewState 等的经典 Web 应用程序可能会越来越少使用
“WinForm App”:经典的windows应用,随着WPF的接受度会越来越少
我将特别感谢以下方面的反馈:
- 控件的可重用性如何(例如,如果我们在 Silverlight 中开发,我们可以在 XBAP 中重用我们的代码/控件吗?)
- 对于有时离线,有时在线并且需要访问 WCF 的客户的最佳方法是什么(我认为可能是 clickOnce 应用程序)