Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新正在积极使用的silverlight部署的最佳实践_Silverlight_Deployment - Fatal编程技术网

更新正在积极使用的silverlight部署的最佳实践

更新正在积极使用的silverlight部署的最佳实践,silverlight,deployment,Silverlight,Deployment,我目前正在运行一个SL3项目,我们处于一个高度迭代的开发模式中,大约有25个活跃的测试客户。我每天在大约4个新版本的剪辑上做一些小改动。重要的是要知道,对于这25个人来说,该应用程序是至关重要的业务线,它是他们整天用来工作的工具,因此他们经常使用它,经常在早上启动浏览器和应用程序,直到一天结束才关闭它 挑战在于,当我对应用程序进行更新时,我没有明确的方式通知用户,在大多数情况下,这是可以的,因为我很少会对应用程序/服务引入数据契约更改或经典的“破坏性”更改。用户一直在努力工作,下次刷新时会得到更

我目前正在运行一个SL3项目,我们处于一个高度迭代的开发模式中,大约有25个活跃的测试客户。我每天在大约4个新版本的剪辑上做一些小改动。重要的是要知道,对于这25个人来说,该应用程序是至关重要的业务线,它是他们整天用来工作的工具,因此他们经常使用它,经常在早上启动浏览器和应用程序,直到一天结束才关闭它

挑战在于,当我对应用程序进行更新时,我没有明确的方式通知用户,在大多数情况下,这是可以的,因为我很少会对应用程序/服务引入数据契约更改或经典的“破坏性”更改。用户一直在努力工作,下次刷新时会得到更改

现在,我们已经向所有人发送电子邮件,告诉他们强制刷新或关闭浏览器并重新登录

当然有更好的方法

现在,我的思路是在服务器上有一个方法来比较客户端xap版本,并确定正在使用的客户端是否是最新的,如果是,我将通知用户并让他们更新


你做了什么来解决这个问题?

一种方法是使用推送机制(我使用了Kaazing Weboocket网关,但任何方法都可以)。当发布新版本的XAP时,将向所有客户端发送一条消息(由管理员手动输入系统或由XAP文件更改事件自动触发)。在最简单的情况下,会向用户显示一些通知(告诉他发布了新版本,应用程序需要刷新),然后应用程序会刷新(只需重新加载页面),并在必要时保存用户状态。

如果我这样做,我会保持简单。web.config中的配置值和相应的服务方法,该方法只返回该值(值本身可以是任何值,但计数器可能是明智的)。然后,您可以让Silverlight应用程序定期轮询该服务方法。每当值更改时(部署新版本时,您将手动执行此操作),只需弹出一个对话框,告诉用户刷新浏览器或登录/注销即可。这样你就不必每次都强迫他们刷新。如果您使用比较xap文件版本的想法,则始终需要刷新它们,即使是非破坏性更改


如果你想更进一步,你可以想出某种机制来区分不同的严重程度。例如,如果新的配置值包含字符串“update_forced”,您可以通过自动注销用户来强制用户重新加载应用程序(可能有点苛刻)。如果它包含字符串“update_recommended”,只需在右上角显示一个小图标,说明有一个新版本,他们应该在自己的时间内升级。

当然,这是针对Silverlight 3的,但是在Silverlight的较新版本中,使用PollingDuplex客户端等,您可以发布“立即更新”位到客户端,并在客户端中构建一个机制,以提醒用户有一个更新已过期。。。他们应该很快更新,等等。你甚至可以通过序列化等方式,在他们关闭应用程序重新加载时保存他们所处的状态

我们已经在我们构建的LOB应用程序中做了类似的事情,因此当用户正在更改内容时,用户库的其他部分会立即看到这些更改。下一步,如果您愿意的话,将在“动态”中添加标志以更改授权和升级