標籤:style blog http ar io os 使用 sp for
《Windows Azure Platform 系列文章目錄》
本文將簡單介紹,如何將企業內現有的ASP.NET應用程式遷移到Azure PaaS平台。
因為在遷移過程中,可能需要對現有的應用重新做架構設計,本文只是進行簡單的介紹,開拓思路,具體的應用需要具體研究分析。
1.首先需要下載Azure SDK。使用Visual Studio建立新的Cloud Service,將現有的ASP.NET應用程式頁麵包含在Cloud Project中。
2.對於使用者會話(Session)進行修改。
Cloud Service的負載平衡器(Load Balancer)不能保留Session。我們需要將Session儲存到SQL Server或者其他外置的儲存介質上。
具體可以參考我之前的博文:Windows Azure Cloud Service (13) 多個VM Instance情境下如何處理ASP.NET Session
裡面的內容有些過時了,總結下來可以有以下幾種方式實現保持會話(Sticky-Session)
(1)將Session儲存在SQL Server Table中,後期對於資料表的維護,需要使用者自己來實現相關的商務邏輯。
(2)將Session儲存在Cache中。比如Cloud Service的In-bound Cache,或者是海外Azure的Redis Cache
3.將需要調用的dll包含在Cloud Project中,並且將屬性中的"Copy to Output Directory"設定成"Copy always"。
這樣,需要被調用的dll會被直接打包到CSPKG中,在部署的時候上傳到Azure雲端進行調用。
4.將需要安裝的第三方軟體,包含在Cloud Project中,並且將屬性中的"Copy to Output Directory"設定成"Copy always"。
在ServiceDefinition節點裡添加Startup任務,CMD檔案中執行"靜默"安裝。
Azure PaaS平台是非持久化VM,任何通過遠端桌面安裝的軟體都是無效的。我們需要將第三方軟體包含在Cloud Project中,在部署的時候上傳到Azure雲端。
Startup的功能是,在每次PaaS VM被重設的時候,執行CMD命令,將第三方軟體在新建立的PaaS VM進行安裝。
"靜默"安裝的目的是,直接安裝完畢,不需要進行任何的配置。
具體可以參考之前的博文:Windows Azure Cloud Service (22) 使用Startup註冊COM組件(上)
5.將檔案的上傳下載儲存在Azure Storage中
一般情況下,用戶端將檔案從本地上傳至伺服器端後,檔案是儲存在伺服器端的本地磁碟裡的。
但是Azure PaaS是非持久化的VM,任何儲存在本地磁碟的檔案都會有丟失的風險。我們需要將伺服器的檔案讀寫的API修改為對於Azure Storage的操作,將檔案儲存在Azure Storage中。
6.伺服器端系統時間的修改
一般情況下,伺服器端的時區是UTC+8時區,顯示的時間是北京時間。
Azure PaaS的時區是UTC時區,如果我們在PaaS層調用系統時間,會與北京時間有差距。
一般性有兩種解決方案:
(1)在StartUp任務中的CMD命令中,將當前PaaS VM的時區設定為UTC+8時區
(2)在Azure Cloud Project中,將獲得當前系統時間的代碼修改為,獲得當前UTC+8時區的時間
7.將Cloud Project的web.config配置修改到Azure CSCFG和CSDEF中
在傳統的ASP.NET應用程式裡,我們讀取的設定檔一般都是放在Web.config,並且通過
System.Configuration.ConfigurationSettings.AppSettings["SettingName"]來讀取設定檔。
在Windows Azure裡,我們也可以將設定檔寫入Web.config裡。但是因為我們的Web App其實是Azure VM遠程託管啟動並執行,如果需要修改設定檔的話我們不得不遠程登入案頭,然後再修改IIS下的Web.config檔案。管理起來非常複雜。
所以在一般情況下,Windows Azure項目的設定檔是寫到CSCFG檔案裡的。然後通過RoleEnvironment.GetConfigurationSettingValue("cscfgName")來讀取。
這樣我們就可以直接通過配置部署視窗進行修改,而不需要遠端桌面修改網站的Web.config或者重新發布Azure網站了。
具體可以參考:Windows Azure Cloud Service (9) Configuration的變更和通知機制
8.將Web應用的商務邏輯拆分到Web Role或Worker Role中
在傳統的ASP.NET的應用程式裡,最上層顯示和複雜邏輯都是包含在一個Web Applicatio中的。
我們可以針對實際的應用情況,將最上層顯示邏輯放在Web Role,後端的負載業務處理放在Worker Role中。實現最上層顯示和商務邏輯的拆分。
本博-三石Blog(下文簡稱本博),在本部落格文章結尾處右下腳未註明轉載、來源、出處的作品(內容)均為本博原創,本站對於原創作品內容對其保留著作權, 請勿隨意轉載,如若真有需要的朋友可以發Mail聯絡我;轉載本博原創作品(內容)也必須遵循“署名-非商業用途-保持一致”的創作共用協議,請務必以文 字連結的形式標明或保留文章原始出處和部落格作者(Lei Zhang)的資訊,關於本博攝影作品請務必注意保留(www.cnblog.com/threestone)等相關浮水印著作權資訊,否則視為侵犯原創著作權 行為;本博謝絕商業網站轉載。著作權,禁止一切有違中華人民共和國著作權保護法及相關法律和本博(法律)聲明的非法及惡意抄襲。
Windows Azure Cloud Service (39) 如何將現有Web應用遷移到Azure PaaS平台