用
Visual Studio 2010 中提供的转换工具将网站转换为应用程序吧。
2. ASP.NET 应用程序的 web.config 文件无法在 Web Role 中随意修改,请考虑将需要修
改的设置项放在
ServiceConfiguration.cscfg 中,以便可以使用 web 管理工具更改;或考虑在
数据库中存储部分应用的设置。
6 O: k2 ^7 E, `6 M% F- ^
3. 如果您的应用程序中涉及使用了 P/Invoke、WCF、>nET Services SDK、Named pipe 等
技术时,需要在
ServiceDefinition.csdef 中或者对应的 WebRole 的属性面板上 确保启用完全
信任模式。
9 J' M6 M! `. c8 P
4.
ASP.NET
默
认 的
Cache
API 实 现 不 支
持 跨
VM , 所
以 考 虑 使 用
AppFabric、M
emcached
之
类的产品来解
决缓存同步问
题。
% i: i8 u9
I& ?/ G' N% c
5. 如 果
你的应用程序
会被大量用户使用,那么可能会需要将
Web Role 设置为 2 个以上的实例数,以便支持负载
均衡。那么此时,需要注意
ASP.NET 默认的 Session 实现是 In-Process 的无法跨越 VM,所
以需要考虑使用
SQL Azure 等来作为状态存储策略。
6. 涉及到 SMTP 发送邮件时,需要调用外部的 SMTP Server 来发送邮件,建议根据选
择的
Azure 所在数据中心区域选择相应区域的 SMTP Server,以保证相对性能。
7. 如果网站中涉及到文件系统的操作,请将相应代码使用 Windows Azure Storage 的相
关
API 实现,否则由于 Azure 中的 VM 的特殊机制会出现文件丢失的情况。当然了,最好我
们通过一个抽象一个接口的方式来隔离文件系统的操作实现差别,具体的实现大家可以参
考
“统一 Windows Azure 和一般 web 应用之间的文件操作代码”。
! X7 A$ F( ?$ }
8. COM 组件不受支持,所以如果你的网站用到了 COM 组件,请考虑使用其他解决方
案,或者将
COM 的功能在别处实现为一个 WCF Service 供该网站应用程序调用。
9. 如果你的网站原来使用的 SQL Server 作为数据存储方案,那么请不用担心代码的修
改,只需要将相应的数据库连接字符串做一下修改即可。但前提是,你已经使用
SQL Server
2008 R2 的 SSMS/SSIS 或 SQL Azure Migration Wizard (on Codeplex)或 VS2010 的数据工具
将原始数据库移植到了
Sql Azure 中。
那么知晓上述问题并做了适当调整之后,接下来我们该如何将现有的网站项目添加为
WebRole 呢?您可以按照下面的步骤处理:
C. v: C, y5 C. b
1. 首 先 , 打 开 Visual Studio 2010 , 选 择 创 建 新 项 目 , 项 目 模 板 选 择 Cloud 类 中
Windows Azure Project,