Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台
《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)等相关水印版权信息,否则视为侵犯原创版权 行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。
转载于:https://www.cnblogs.com/threestone/p/4169796.html
Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台相关推荐
- Windows Azure Cloud Service (23) 使用Full IIS模式部署多站点和虚拟目录
<Windows Azure Platform 系列文章目录> 本章我们将介绍如何使用Windows Azure的Full IIS模式部署多站点和虚拟目录. 首先我们先新建一个Window ...
- [New Portal]Windows Azure Cloud Service (33) 使用Visual Studio 2012 部署Cloud Service
<Windows Azure Platform 系列文章目录> 笔者已经将工作用的笔记本电脑升级到Windows 8很长一段时间了,开发工具也从Visual Studio 2010升级到了 ...
- Windows Azure Cloud Service (17) Role Endpoint
<Windows Azure Platform 系列文章目录> 在Windows Azure平台中,用户最多可以对以个Role指定5个Endpoint.而一个Hosted Service最 ...
- 在Azure Cloud Service中部署Java Web App(1)
Microsoft Azure是一个开放的,灵活的云平台,除了对自家的.Net平台有良好的支持外,对于各种开源的软件,语言,工具,框架都有着良好的支持,比如Java,Php,Python等等,你可以使 ...
- Windows Azure Cloud Service (41) 修改云服务IIS托管管道模式为4.0经典模式
<Windows Azure Platform 系列文章目录> 这是笔者在之前的项目中遇到的问题,做一下总结,给网友做参考. 在一般情况下,Visual Studio开发的Cloud Se ...
- Windows Azure Cloud Service (1) 用户手册
<Windows Azure Platform 系列文章目录> 下载地址 Cloud Service用户手册
- Windows Azure Cloud Service (4) Windows Azure 平台高可用性的实现
<Windows Azure Platform 系列文章目录> 这里有两个非常重要的概念:故障域(Fault Domain)和更新域(Update Domain). http://blog ...
- [New Portal]Windows Azure Cloud Service (34) TechEd 2013 North America关于Azure的最新消息
<Windows Azure Platform 系列文章目录> 话说TechEd 2013 US上个月3-6日在美国举办了,笔者的文章又有点姗姗来迟了. 需要了解相关视频的网友,请浏览ht ...
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...
最新文章
- 烟台大学计算机课本,操作系统指导书-烟台大学计算机学院.doc
- 配置告警系统主脚本main.sh mon.sh load.sh 502.sh disk.sh
- FUNCTION MODULE 'LDB_PROCESS' 实例讲解
- atexit注册进程终止处理函数
- Windows最全快捷键
- 【译】程序员都有的这 10 个坏习惯!
- leetcode 11容纳最多水
- NeurIPS2021 HRFormer:HRNet又出续作啦!国科大北大MSRA提出高分辨率Transformer,开源!...
- 《CLR via C#》读书笔记 之 泛型
- IOS的四种数据存储方式及优劣
- 五、Google Code Prettify:实现代码高亮的JS库
- 一个粗糙的js分页判断
- 2021最新Java JDK1.8的安装教程
- FinalReport连接MYSQL数据库失败经验分享
- Microsoft Teams管理(一)
- 如何给无光驱无软驱无USB启动的老笔记本装系统
- 新浪微博长链接字数统计问题
- GPS北斗时钟同步系统(网络时钟系统)组成及配置
- 英语智能语音测试软件,卓帆英语人机对话智能评测练习软件
- js 屏幕滚动到固定位置