技术开发 频道

ASP.NET应用向Windows Azure迁移技巧

  请注意,该网站目前还不支持F#的项目的检测哦,csproj和vbproj文件均支持。

  OK,程序集的问题我们解决了,那么再了解一下ASP.NET应用要移植到Windows Azure还有哪些明显的限制呢?

  1. Windows Azure不支持网站 (Web Site)的项目,仅支持Web应用程序(Web Application Project)。如果您的ASP.NET网站使用的Web Site而不是Web Application Project,那么请先用Visual Studio 2010中提供的转换工具将网站转换为应用程序吧。

  2. ASP.NET应用程序的web.config文件无法在Web Role中随意修改,请考虑将需要修改的设置项放在ServiceConfiguration.cscfg中,以便可以使用web管理工具更改;或考虑在数据库中存储部分应用的设置。

  3. 如果您的应用程序中涉及使用了P/Invoke、WCF、>nET Services SDK、Named pipe等技术时,需要在ServiceDefinition.csdef中或者对应的WebRole的属性面板上 确保启用完全信任模式。

  4. ASP.NET默认的Cache API实现不支持跨VM,所以考虑使用AppFabric、Memcached之类的产品来解决缓存同步问题。

  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应用之间的文件操作代码”。

  8. COM组件不受支持,所以如果你的网站用到了COM组件,请考虑使用其他解决方案,或者将COM的功能在别处实现为一个WCF Service供该网站应用程序调用。

  9. 如果你的网站原来使用的SQL Server作为数据存储方案,那么请不用担心代码的修改,只需要将相应的数据库连接字符串做一下修改即可。但前提是,你已经使用SQL Server 2008 R2 的 SSMS/SSIS或 SQL Azure Migration Wizard (on Codeplex)或VS2010的数据工具将原始数据库移植到了Sql Azure中。

1
相关文章