Silverlight业务应用程序的应用程序发布/升级策略?

时间:2010-01-28 23:04:42

标签: silverlight release

我很有兴趣听到其他人已经解决了Silverlight应用程序的发布管理问题。

我有一个即将发布的业务应用程序,并且关注如何“发布”此应用程序的更新。通常,此应用程序的用户将在不重新加载应用程序的情况下全天(可能整夜)打开应用程序。

如果需要发布包含Web服务接口更改的更改,该怎么办?如何部署这些不会导致客户端出错?

我们已经习惯于通过删除服务器上的最新代码来部署ASP.Net应用程序。我唯一的想法是当前涉及客户端版本号和定期计时器以检查更新。

我很想知道其他人在实施之前所做的事情。

谢谢, 麦克

5 个答案:

答案 0 :(得分:1)

我刚回答了一个关于如何确保浏览器不缓存.xap文件的问题,这可能会有所帮助:
Prevent Silverlight xap from being cached by proxy server

但如果用户从未重新加载您的应用程序,则没有用。在我自己的应用程序中,这不是问题,因为每当我们将更新部署到Web服务时,用户都会被自动抛弃。但我喜欢你的定时器的想法,我会去那。

答案 1 :(得分:0)

陈述显而易见但不做任何事来惹恼用户。例如。他们可以花20分钟输入数据,掐到咖啡机并返回点击提交找到计时器已过期,注意到更新,他们的工作因强行重启而丢失了吗?

如果是这样的话,我承认这并没有多少考虑,如果您是否必须对打破当前版本的Web服务进行更改,是否可以并排使用新的Web服务版本,以便在计时器到期且工作单元完成之前不会抛弃用户?或者这也说明显了?

答案 2 :(得分:0)

对于服务器代码,即端点只是按照正常情况进行。对于xap,我认为你有一些选择取决于你如何处理通信。你可以要求包含版本号,如果服务器已经更新,那么强制一些代码重新加载客户端,有点蹩脚,凌乱但可行。也许更清晰的解决方案是控制客户端会话,这可能是对支持请求的一部分。部署新版本时,可能会使客户端会话无效,可能会强制使用自定义逻辑刷新页面。如果您的协议是推送基础,您可以向客户端发送命令以执行您想要的任何操作,因为对于许多系统而言,这些基础设施可能存在(如果您已经很好地构建它:))。例如,我们的服务层是从存储库模型和视图模型中抽象出来的,在我们的例子中,我们可以发送一个注销或者一个特定的命令来启动客户端上的一些自定义逻辑,通知应用程序正在更新并刷新你的浏览器完成后。我们的外壳重量很轻,所以我们的模块(基本上是其他的xap)可以及时更新以进行刷新。

答案 3 :(得分:0)

我建议您使用App Arch Guide中提到的解决方案:

The Guide Chapter I mean请参阅部署注意事项。

  • 将应用程序划分为逻辑 可以缓存的模块 分开,可以替换 很容易,无需用户 下载整个应用程序 再次。
  • 版本化您的组件。

答案 4 :(得分:0)

您是否考虑过保留WCF polling duplex频道,以便在需要重新加载时提醒应用?此外,您可以将WCF调用直接指向包含“interfaced”调用的虚拟目录。例如:

在“x.x.x.x \ Default.aspx”托管的Silverlight应用 Silverlight在“x.x.x.x \ Version2 \ DataPortal.svc”与WCF对话 DataPortal.svc与GAC(或其他基础)程序集进行通信,该程序集可以识别哪个版本可以处理哪些调用。

这样,如果升级到“x.x.x.x \ Version3 \ DataPortal.svc”,您仍然可以对Version2进行调用,假设这些调用具有将它们转换为Version3概念的代码。

这有助于您的业务线应用程序具有动态xap下载(“主要”,“客户”,“广告资源”等)并且您希望独立发布它们。