ASP.NET Providers 相信大家都已经非常熟悉,它为我们开发 ASP.NET 应用程序提供了方便。
比如在 Visual Studio 控件工具箱中的 Login 部分,就是基于 Membership provider、Session provider 和 Profile provider,大大地简化了我们在开发过程中处理与用户相关的功能。
ASP.NET Provider 架构示意图
ASP.NET Provider 的类结构图
Azure Provider 是什么
Azure 上的应用程序也是 ASP.NET 应用程序,所以它也支持 ASP.NET Provider 模型。不同的是,我们平时用的 Provider 是基于关系数据库的(如SQL Server),而“云端”上 Provider 自然也需要使用“云端”的数据解决方案——Windows Azure Storage。
云平台是基于分布式计算的。这就意味着,你的同一个应用程序可能会分布在不同的机器上。所以包括 Session 在内的各种用户数据不能放在 host 主机上,必须通过 Windows Azure Storage 来统一管理。
微软认为:基于 Windows Azure Storage 的 provider 比传统SQL provider 具有以下优势:
在保持与 SQL provider 完全相同的使用方法(不用做任何代码修改)的基础上,
并行处理更强悍。
分页查询更方便。
计算能力更牛X。
运行更稳定。
Azure Provider 的原理
在 Windows Azure SDK(March 2009 CTP)中,微软已经提供了可直接使用的 Azure 版 ASP.NET Provider。包括 membership, role,profile,session state 4 种providers。
打开 Azure 版 ASP.NET Provider 项目,非常一目了然。以下的 4 个文件与 4 种 provider一一对应。
拿 TableStorageMembershipProvider 来说,它其实是继承了 MembershipProvider 类,override 了 MembershipProvider 类里与数据操作相关的方法,将它们换成使用 Windows Azure Table Storage 版本的。
public class TableStorageMembershipProvider : MembershipProvider配置使用 AzureProvider:
刚才说了,从传统的 SQL Provder 转换到使用 Azure Provider,不用做任何代码上的改动,只需要更改配置文件就可以了。
【编辑推荐】