我目前正在运行一个SL3项目,我们处于一个高度迭代的开发模式,有大约25个活跃的测试客户。我每天在大约4个新版本的剪辑上进行小的更改。重要的是要知道这个应用程序是这25个人的关键任务业务,它是他们整天使用的工具,所以他们不断地使用它,并经常在早上启动他们的浏览器和应用程序,从不关闭直到一天结束。
挑战在于,当我对应用程序进行更新时,我没有干净的方式来通知用户,在大多数情况下这是可以的,因为我很少引入数据合同更改或者是经典的“打破'改变应用程序/服务。用户继续保持插入状态,并在下次刷新时进行更改。
现在我们已经通过电子邮件发送给所有人并告诉他们强制刷新或关闭浏览器并重新登录。
当然有更好的方法......
现在我的想法是在服务器上有一个比较客户端xap版本的方法,并确定所使用的客户端是否是最新的,如果是,我将通知用户并使其更新。
你做了什么来解决这个问题?
答案 0 :(得分:1)
这样做的一种方法是使用推送机制(我使用Kaazing Websoocket Gateway,但任何人都会这样做)。当发布新版本的XAP时,将向所有客户端发送一条消息(由管理员手动输入系统或由XAP文件更改事件触发自动)。在最简单的情况下,会向用户显示一些通知(告诉他发布了新版本并且应用程序需要刷新),然后应用程序将刷新(通过简单地重新加载页面),在必要时保存用户的状态。
答案 1 :(得分:0)
如果我这样做,我会保持简单。 web.config中的配置值和一个简单地返回该值的相应服务方法(值本身可以是任何东西,但计数器可能是明智的)。然后,您可以让Silverlight应用程序定期轮询该服务方法。只要值发生变化(您在部署新版本时手动执行),只需弹出一个对话框,告诉用户刷新浏览器或登录/注销。这样你就不会拥有来强制它们每次刷新。如果你想要比较xap文件版本,他们将始终需要刷新,即使是非破坏性的更改。
如果你想更进一步,你可以想出一些机制来区分不同的严重程度。例如,如果新配置值包含字符串“update_forced”,则可以强制用户通过自动注销来重新加载应用程序(可能有点苛刻)。如果它包含字符串“update_recommended”,只需在右上角显示一个小图标,表示有新版本,并且他们应该在自己的时间升级。
答案 2 :(得分:0)
当然,这是针对Silverlight 3的,但是对于PollingDuplex客户端以及较新版本的Silverlight,您可以向客户端发布“立即更新”位,并在客户端中构建一个机制来提醒用户现在有一个更新...他们应该很快更新它等等。您甚至可以通过序列化等来保存他们关闭应用程序以重新加载它时所处的状态。 / p>
我们已经完成了与我们构建的LOB应用程序类似的东西,因此当用户正在更改内容时,其余的用户群会立即看到这些更改。如果你愿意的话,下一步将把标志放在“动态”更改授权和升级。