我有一個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