在客户端运行时更新Silverlight应用程序

时间:2011-08-09 20:18:41

标签: c# silverlight

我是Silverlight和Web开发的新手,我想知道在客户端运行时是否有更新Silverlight应用程序的方法。例如,假设您可以有许多客户端运行该应用程序。 24/7并且您想要进行更新,如何在不失去与当前运行它的客户端的兼容性的情况下进行更新?我知道如果我停下来,重新编译并启动服务器,客户端只需要执行F5并且他们将获得最新版本,但如果他们正在处理重要的事情,这是不可取的。

知道如何实现这个目标吗?

4 个答案:

答案 0 :(得分:3)

这实际上可行。您可以动态加载xap文件。只需构建应用程序,即可以更新和部署应用程序的各个部分。您需要构建一个更新程序服务,该服务将监视更改并提示用户更新特定组件。

查看有关xap动态加载的article

答案 1 :(得分:1)

我想如果你确保你的WCF服务具有向后兼容性(来自旧客户端的所有调用都是有效的),过时的客户端访问它就不是问题。毕竟,一旦他们下载了XAP,他们就不再依赖它而不是在服务器上进行更改,就像远程计算机上的任何独立客户端一样。

答案 2 :(得分:1)

您需要记住的是,尽管某些部分是间隔开的,但应用程序几乎包含在xap文件中。编辑即可编辑整个项目。所以基本上你会遇到编辑xap(当前在用户系统上)并同时运行它的情况。

即使您可以管理它,您也必须有一个系统来检查并确保在程序运行时当时没有使用您正在更新的部件。

虽然我不是Silverlight专家,但这种情况看起来像群集F,我几乎怀疑它是否可行。

此外,您最后一次看到任何产品在工作时更新了吗?或者如果确实如此,从来没有重新开始?

答案 3 :(得分:1)

开发了几个Silverlight应用程序后,我可以告诉您,这不是您想要做的事情。您必须记住Silverlight应用程序已下载到客户端计算机,然后从那里运行。理论上,如果您推送仅影响客户端的更新,那么所有现有用户仍应能够继续使用旧版本的应用程序,直到他们刷新浏览器。这样,用户将被迫刷新以获得更改,但不会丢失当前功能。

但是,如果您对silverlight调用的Web服务进行了更改并推送了这些更改,则完全有可能当前用户的应用程序版本将无法再访问这些服务,从而导致崩溃或继续抛出错误。

只是添加一些东西 - 如果您计划的更新会影响用户,最好分批进行更新并警告用户可能的停机时间。 (如果可能的话)