18

我正在尝试了解 Microsoft 当前提供的许多应用程序部署选项。

做一些研究发现了几十个令人困惑的术语:

  • “WPF 应用程序”
  • “点击一次应用程序”
  • “WPF ClickOnce 应用程序”
  • “微星应用”
  • “XBAP 应用程序”
  • “使用 ClickOnce 部署的 XBAP 应用程序”
  • “已安装 ClickOnce 应用程序”
  • “WPF 网络应用程序”
  • “ASP.NET 网络应用程序”
  • “ASP.NET MVC Web 应用程序”
  • “银光应用”
  • “完整的 WPF 应用程序”
  • “带有同步框架支持的 ClickOnce”

我将我的发现整理成以下七种不同的方法。希望得到反馈:

  1. “使用 MSI 部署的 WPF 应用程序”(允许大量安装选项)

    • 目标计算机上需要 MSI 运行时
    • 带有选项的向导
    • 可以指定每个用户或每台机器
    • 可以修改目标计算机上的文件和注册表,仅受管理员设置的访问权限限制
    • 可以在桌面上放置快捷方式
    • 替换系统文件等可以很容易地进入目标计算机上的DLL地狱
    • 更新是一个很大的负面影响:检测可用更新需要额外的工具/自定义编程,而不是内置的
    • 用户无需在线即可使用应用程序
  2. “使用 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)。
  3. 「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 中。
  4. “Silverlight App”:在客户端浏览器中运行,使用下载的 .NET 框架的 4MB 子集,即没有 3D)

    • 跨浏览器(Opera 和 Safari 也可以使用应用程序)
    • 更新应用程序就像使用 ClickOnce 或 XBAP 一样简单
    • 单窗口应用
    • 应用程序当然在沙箱中
    • 仅异步
  5. 《ASP.NET MVC with JQuery/AJAX》:在RAD和TDD方面等同于WPF开发的新开发平台

    • 这种方法值得与 WPF/Silverlight 方法一起考虑
  6. “ASP.NET App”:随着 ASP.NET MVC 获得认可,带有 ViewState 等的经典 Web 应用程序可能会越来越少使用

  7. “WinForm App”:经典的windows应用,随着WPF的接受度会越来越少

我将特别感谢以下方面的反馈:

  • 控件的可重用性如何(例如,如果我们在 Silverlight 中开发,我们可以在 XBAP 中重用我们的代码/控件吗?)
  • 对于有时离线,有时在线并且需要访问 WCF 的客户的最佳方法是什么(我认为可能是 clickOnce 应用程序)
4

6 回答 6

2

伟大的总结,爱德华。

Silverlight 中的大部分代码可以直接在 WPF 和 WPF XBAP 应用程序中使用,因为 Silverlight 是 WPF 的子集。对于 XAML,您将不得不更改命名空间 URI,并且可能需要进行一些轻微的手动调整。
对于 XAML 到 Silverlight 的转换,您还必须更改命名空间 URI,但如果使用了 Silverlight 中不存在的 WPF 元素,则可能需要重构。WPF 和同步框架是在线/离线应用程序的绝佳选择。有关WPF/Sync 框架应用程序的示例,请参阅Syndicated Client Experience Starter Kit 。Silverlight + Windows Live Mesh 还将提供在线/离线功能。

于 2009-01-20T16:39:38.807 回答
1

MS 支持的客户端应用程序的部署选项是

  • MSI(任何 Windows 应用程序)
  • Clickonce(仅适用于 .Net 客户端应用程序)

Clickonce 不是 WPF 特定的。

XBAPS 是在受信任的安全沙箱中单击一次部署、浏览器托管的 WPF 应用程序。WinForms 应用程序可以单击部署,并且可以托管在浏览器中。

Silverlight(大部分)与 WPF 源兼容。您可以将 SL 控件重新编译为 WPF 控件。

非浏览器托管的 clickonce 可能非常适合您。

于 2009-01-20T18:44:15.543 回答
1

应用启动体验:

MSI = 仅 Windows。很多点击。使用前安装。适用于非常庞大且资源密集型的应用程序。应用程序可以在 DVD 上分发。应用程序可以做任何事情。没有技术限制。

ClickOnce = 仅 Windows。可以从网页激活。下载一次。保留有关其来源(服务器)的信息,并可以自动更新。应用程序受到限制。需要.NET

Silverlight = 在 Windows/Max/Linux(很快)和未来的手机(计划中)上运行。是网页还是可以嵌入到html中。代码在服务器上,永远不会安装。需要 Silverlight-Runtime。提供 WPF 的子集

XBAP = 与 silverlight 类似,但仅适用于 windows。没有人会需要它。银光更好

编程技术:

Silverlight = 在客户端机器上运行。使用 WPF*

ASP.NET = 在 .NET 中的服务器机器上运行,但在客户端机器上运行 Javascript/html。

WinForms = 旧技术

WCF = 不适用于基于浏览器的应用程序。适用于分布式应用程序。可以打开所有进入客户端混搭的大门。使用 WCF = 需要 MSI。

WCF 为服务器提供了一个很好的框架。当您使用 REST 进行接口时,您将永远不需要客户端上的 WCF。客户端可以在 ClickOnce 和 MSI 安装的应用程序中连接/断开连接。您必须在 silverlight 和 ASP 中连接到 appstart 的网页。

XAML 可用于 silverlight/wpf/xbap。wpf/silverlight 的微小变化。据我所知,wpf/xbap 没有变化。

于 2009-01-21T00:16:54.420 回答
1

我不会这么快就将 XBAP 视为“仅适用于 Windows 的 Silverlight”。因为它使用完整的 WPF 集,所以只要您在对 XBAP 施加的部分信任限制范围内工作,就可以为 WPF 应用程序和 XBAP 使用相同的代码库。

此外,从 .NET 3.5 开始,WCF 确实在部分信任下的 XBAP 中工作。您不能像在完全信任的 WPF 应用程序中那样做,但它仍然很有用。

于 2009-01-21T22:33:32.350 回答
0

您列出了“MSI 应用程序”。Windows Installer 是 Microsoft 在 Windows 上安装和升级程序的技术。它创建的安装包具有“.msi”扩展名。(它最初将被称为“Microsoft Installer”。他们将其更改为“Windows Installer”,但保留扩展名。)它定义了创建安装包的标准方法。可以通过许多不同的工具(InstallShield、WiX、Visual Studio 等)创建包。它不仅限于 WPF 应用程序。您可以使用它来安装几乎任何类型的应用程序。

于 2009-01-20T17:40:56.357 回答
0

Live Framework (Live Mesh vNext) 提供的另一个部署选项是支持网格的 Web 应用程序 (MEWA)。这使您可以打包 Silverlight、DHTML 和 Flash 应用程序以在 Live Desktop 中在线运行或在 Windows 桌面上在线/离线运行。您可以将 MEWA 安装到 Mesh 中,并将其自动部署到 Mesh 中的所有设备。如果发布了新版本的应用程序,则更新也可以同步到所有设备。

有迹象表明,除了 Silverlight/DHTML/Flash 之外,未来版本的 Live Framework 将支持 MSI 和 CAB 打包应用程序,大概具有类似的部署功能。

支持网格的 Web 应用程序文档:http: //msdn.microsoft.com/en-us/library/dd199554.aspx

于 2009-02-26T09:08:08.940 回答