2009-12-03 122 views
0

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

我们需要的是推送模式,只要客户机连接到网络,服务器就可以发送更新。我相信ClickOnce是一个拉模型(尽管通过指定最低版本,我们可以推送)。另外ClickOnce只下载完整文件,它不能下载文件间的变化(字节差异)。

任何人都可以指出一个更好的工具,可以在这里使用。如果有更好的策略,也欢迎,我们正处于项目的早期阶段。

回答

1

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

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

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

最后,我非常喜欢保持简单。过度考虑这些事情并创建一个从不需要的怪物是很容易的。我们在公司里经历了类似的事情。我们非常担心用户下载不必要的字节,我们将应用程序分解为更多,更小的程序集。它变成了一场噩梦;应用程序难以维护,并且在客户端执行得更糟。我们终于摆脱了这一切,浪费了几周才结束了我们开始的地方。

我不是说你不需要你要的功能,我不知道你的情况。只要先教育自己,并知道自己在做什么。

+0

我想我是在自我教育阶段:)。我非常喜欢ClickOnce,因为它的简单性和肯定会完成工作。但是...客户..呃..你知道他们想要什么。 – theraneman 2009-12-04 05:40:24

0

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

+0

欣赏。 Clickonce早些时候也为我们工作。只是我在寻找更适合的东西,如果有的话。 – theraneman 2009-12-03 10:59:41

0

我只是在我的分布式应用程序平台之上实现这样的服务。从本质上说我已经开发为企业遵循这些基本原则是“推”模式:

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

在本质上,这现在允许我(还是会允许我当我整理了一些东西并彻底地测试了实现)来管理由中央服务器在最初安装后开发的任何应用程序的版本,而无需任何客户端干预。