我有一个ASP.NET MVC 4应用程序作为Azure Web角色托管。我想做一些看起来应该是非常标准的事情:我想创建一个函数,我可以调用这个函数,当VIP交换操作完成时,它启动一个VIP交换,并引发事件(或调用回调)。自动Azure VIP交换
只是为了添加一些情境:我的网站实现了一个工作流程,需要大约一个小时(或更少)才能完成。如果我想发布一个新版本的网站代码,那么它很方便(也就是说,更少的“后向兼容性”代码来编写),首先让所有当前用户完成工作流程,以便新代码不需要处理由以前版本的代码创建的数据。因此,我的网站中的管理功能首先会向数据库中添加一个值,以禁用新的工作流程;它会等到所有当前的工作流程完成;然后它会调用“VIP交换”例程;最后,当VIP Swap程序发出完成信号时,它将戳数据库值以重新启用新的工作流程。
我找到了如何以编程方式启动VIP掉这里的微软文档: http://msdn.microsoft.com/en-us/library/ee460814.aspx
该过程涉及张贴到一个神奇的URL,并包括一些头在POST,然后定期执行得到一个神奇的URL并检查响应代码。
我越想到这件事,似乎就越不重要。除了配置后台计时器和完成通知的基本复杂性之外,我不知道在IIS环境中可能会遇到什么样的复杂性(如果有的话)。我甚至可以在后台线程上执行HTTP操作吗?对于这个问题,我是否会遇到复杂情况,只是试图使用.NET中的任意六种不同的“在背景中执行操作”机制?
任何帮助或指导将不胜感激。特别是,如果有人可以指示我准备好执行此功能,我会欣喜若狂!
我很困惑。 (我也是这个整个网络的新东西。)据我所知,如果我运行多个服务器实例,并且一个实例停止运行,那么用户只需路由到另一个实例。只要至少有一个实例在运行,并且所有实例都可以看到包含进行中工作的数据库的一致视图,那我为什么要关心?这与我原来的问题有什么关系? – 2013-03-27 15:36:43
哦,我想我明白了混乱......一个“工作流程”(在OP中引用)不是一个1小时的计算过程。我的“工作流程”是:用户登录;用户完成在线调查,其中包含多个GET和POST;用户收到调查结果。 – 2013-03-28 01:24:14
对,对不起,我误解了你的问题。我现在意识到你的问题是你在请求之间保持状态,但是这些请求必须在相同版本的应用上运行,直到用户完成。 – 2013-03-28 08:03:58