用于在大型组织中分发应用程序升级的部署策略

时间:2009-12-03 09:40:28

标签: deployment clickonce

我们将为大型组织开展应用程序开发项目(.NET 3.5)。当我们开始考虑我们将在整个机器上进行的升级时,我们正在考虑像ClickOnce这样的选项。

我们需要的是推送模型,只要客户端机器连接到网络,服务器就可以发送更新。我相信ClickOnce是一个拉模型(虽然通过指定我们可以推动的最小版本)。此外,ClickOnce仅下载完整文件,无法下载文件之间的更改(字节差异)。

有人能指出我可以在这里使用的更好的工具吗?如果有更好的策略,也欢迎,我们处于项目的早期阶段。

3 个答案:

答案 0 :(得分:1)

我对更好的选项没有明确的答案,但我使用了ClickOnce并且可以提供一些建议。

ClickOnce有多种更新选项(开始之前,开始之后,每次检查,检查每个X小时/天/周等)。你也可以抛出它们并编写代码来检查更新。它不是来自服务器的“推动”,但是您的客户可以轮询更新,这将是下一个最好的事情。请记住,应用程序必须在更新后重新启动以查看更改。

ClickOnce仅下载更改的文件。但是,进度对话框始终显示应用程序的整个大小,即使它只下载单个文件。每个人都担心这一点,但这只是进度对话框的一个错误。

最后,我很擅长保持简单。过度思考这些东西并创造一个从未需要的怪物真的很容易。我们在公司经历了类似的事情。我们非常担心用户下载不必要的字节,我们将应用程序分解为更多,更小的程序集。它变成了一场噩梦;应用程序更难维护,并且在客户端上表现更差。我们终于解开了这一切,浪费了几周才结束我们开始的地方。

我不是说你不需要你要求的功能,我不知道你的情况。只是先教育自己,了解自己的成就。

答案 1 :(得分:0)

我们在我公司使用clickonce(地理位置分散的应用程序约有几百个用户)。通过指定最低版本,我们可以确保在部署后自动更新每个应用程序安装。您是对的,clickonce仅下载完整文件,但只下载自上一版本以来已更改的文件。如果这仍然是一个问题,您可以将应用程序分解为更小的程序集。我认为你也可以使用netmodules,但Visual Studio并没有内置支持。
总的来说,clickonce对我们有用。

答案 2 :(得分:0)

我正处于在我的分布式应用程序平台上实现此类服务的过程中。从本质上讲,我已经为企业制定了一个遵循这些基本原则的“推动”模型:

  • 软件升级是从服务器“管理”的,而不是来自客户端,这与部署公司软件而不是用户软件相一致(这是非常重要的一点)
  • 可以在服务器上按客户端应用程序自定义软件升级,即服务器可以根据需要为每个客户端部署唯一的配置
  • 软件升级可以在不同时间,或同时,或两者的任意组合部署到客户
  • 可以为每个客户端指定软件升级版本,即可以根据需要将不同版本部署到不同的客户端
  • 可以从单个服务器“管理”所有客户端的所有软件升级,即软件升级“服务”在任何应用程序中都是一致的,并且所有应用程序都可以利用软件升级“服务”
  • 客户端可以实现自动软件升级策略(应用程序在下载升级并在客户端可用时重新启动),手动(应用程序需要“发送”自定义“强制升级”) 消息“),或重新启动(如果已下载并且可用,则在关闭时应用程序升级)
  • 所有自动升级功能对任何正在运行的应用程序都是透明的,因为这都是在自治后台线程中执行的,所有进程间通信和文件传输都由我的框架处理

从本质上讲,现在允许我(或者在我整理了一些内容并完全测试实现时允许我)来管理我在最初安装后从中央服务器开发的任何应用程序的版本,任何客户干预。