《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平台的更多相关文章

  1. Windows Azure Cloud Service (11) PaaS之Web Role, Worker Role(上)

    <Windows Azure Platform 系列文章目录> 本文是对Windows Azure Platform (六) Windows Azure应用程序运行环境内容的补充. 我们知 ...

  2. [SDK2.2]Windows Azure Cloud Service (35) 使用VS2013发布Azure Cloud Service

    <Windows Azure Platform 系列文章目录> 好久没有更新BLOG了,今天我们继续Windows Azure相关的内容. 笔者最近把Visual Studio升级到了20 ...

  3. Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书

    <Windows Azure Platform 系列文章目录> 在某些时候,我们需要在Azure PaaS Cloud Service配置HTTPS连接.本章将介绍如何在本地创建证书,然后 ...

  4. Windows Azure Cloud Service (37) 浅谈Cloud Service

    <Windows Azure Platform 系列文章目录> 最近在和一些客户聊天,常常被遇到这样的问题: 1.问题一:我在创建一个新的Windows Azure Virtual Mac ...

  5. Windows Azure Cloud Service (38) 微软IaaS与PaaS比较

    <Windows Azure Platform 系列文章目录> 最近一直想总结Azure IaaS和PaaS的区别与比较,写个博文详细说明一下.建议读者在阅读之前,先熟悉微软PaaS和Ia ...

  6. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

  7. Windows Azure Cloud Service (43) 使用Azure In-Role Cache缓存(2)Dedicated Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

  8. Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)

    <Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经详细介绍了如何将Virtual Machine加入Virtual Network,并且绑定固定的Pr ...

  9. Windows Azure Cloud Service (47) 修改Cloud Service时区

    <Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 我们在使用Cloud Service的时候,会发现默认的 ...

随机推荐

  1. RESTful接口设计原则/最佳实践(学习笔记)

    RESTful接口设计原则/最佳实践(学习笔记) 原文地址:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 1 ...

  2. GP调用arctoolbox 以Clip为例

    GP的功能非常强大,也是GIS建模的一个很重要的工具.在Arcengine中,实现Clip功能很多种方法,可以用IBasicGeoprocessor的clip方法,但是GP无疑是最简单的. publi ...

  3. UNITY 状态机 + SVN + 码云 下篇

    上篇说到自己写的一个FSM状态机,这篇写怎么把代码和码云联系在一起! 首先,我们应该知道为什么使用码云? 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gi ...

  4. Asp.net vnext的IIS部署

    微软前段时间推出asp.net vnext,自个也尝试了一把,也写了几篇关于vnext特性的博客,如下. 但一直有个困扰的问题,asp.net vnext如何在iis部署,因为整个目录结构跟之前有了很 ...

  5. Restful.Data v2.0发布,谢谢你们的支持和鼓励

    v1.0发布后,承蒙各位博友们的热心关注,也给我不少意见和建议,在此我真诚的感谢 @冰麟轻武 等朋友,你们的支持和鼓励,是这个开源项目最大的推动力. v2.0在除了细枝末节外,在功能上主要做了一下更新 ...

  6. 【Win10 UWP】QQ SDK(二):SDK的回调处理

    上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...

  7. [你必须知道的NOSQL系列]专题一:MongoDB快速入门

    一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...

  8. RabbitMQ(五) -- topics

    RabbitMQ(五) -- topics `rabbitmq`中的`topic exchange`将路由键和某模式进行匹配,从而类似于正则匹配的方式去接收喜欢的信息. topic exchange ...

  9. 解决URL中文乱码问题

    在做一个HTTPS连接时, 要客户端合成一段HTTPS地址 如果地址含中文的话程序会crash, 检查发现原来是中文没有转码的原因 在NSString库里面找到了下面两个方法 - (NSString ...

  10. Java的默认编码

    摘要: 1.Java的默认编码内容: 1.Java的默认编码 java的src.zip包中的java.nio.charset.Charset类中defaultCharset()方法说明java的编码类 ...