代码之家  ›  专栏  ›  技术社区  ›  keithwarren7

更新正在使用的Silverlight部署的最佳实践

  •  4
  • keithwarren7  · 技术社区  · 16 年前

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

    挑战在于,当我对应用程序进行更新时,我没有干净的方式通知用户,在大多数情况下,这是可以的,因为我很少对应用程序/服务引入数据合约更改或是典型的“中断”更改。用户会继续使用,下次刷新时会得到更改。

    现在,我们不得不给每个人发电子邮件,告诉他们强制刷新或关闭浏览器并重新登录。

    当然有更好的方法…

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

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

    3 回复  |  直到 14 年前
        1
  •  1
  •   PL.    16 年前

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

        2
  •  0
  •   Henrik Söderlund    16 年前

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

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

        3
  •  0
  •   Richard B    14 年前

    当然,这是针对Silverlight 3的,但是有了PollingDuplex客户端以及更新版本的Silverlight中的类似客户端,您可以向客户端发布一个“立即更新”位,并在客户端中构建一个机制,以提醒用户有一个更新现在已停止……他们应该很快更新它,等等。你甚至可以,通过序列化等,保存他们关闭应用程序重新加载时的状态。

    我们已经用我们构建的lob应用做了一些类似的事情,因此当用户改变事情时,其他用户会立即看到这些变化。下一步是将标志放在更改授权和升级“飞行中”,如果你愿意的话。

    推荐文章