介绍ASP.NET Provider


  本文标签:ASP.NET Providers

  ASP.NET Providers 相信大家都已经非常熟悉,它为我们开发 ASP.NET 应用程序提供了方便  。

  比如在 Visual Studio 控件工具箱中的 Login 部分,就是基于 Membership provider、Session provider 和 Profile provider,大大地简化了我们在开发过程中处理与用户相关的功能  。

ASP.NET Provider 架构示意图


ASP.NET 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 来统一管理

  微软认为:基于 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一一对应  。

 4 种 provider

  拿 TableStorageMembershipProvider 来说,它其实是继承了 MembershipProvider 类,override 了 MembershipProvider 类里与数据操作相关的方法,将它们换成使用 Windows Azure Table Storage 版本的  。

  public class TableStorageMembershipProvider : MembershipProvider配置使用 AzureProvider:

  刚才说了,从传统的 SQL Provder 转换到使用 Azure Provider,不用做任何代码上的改动,只需要更改配置文件就可以了  。