技术开发 频道

【第14篇】使用Azure版的ASP.NET Application Providers

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

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

  第一篇:Azure Services基础:Azure Services平台
  第二篇:Azure Services基础:SQL Data Services(SDS)概述 
  第三篇:Azure Services基础:SQL Data Services 编程基础
  第四篇:Azure Services基础:.NET Services概述
  第五篇:Azure Services基础:理解Windows Azure服务架构
  第六篇:Azure Services基础:Windows Azure Storage概览


  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配置使用 Azure  Provider:

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

  下面是 MemshipProvider 的配置示例。

<membership defaultProvider="TableStorageMembershipProvider"
            userIsOnlineTimeWindow
= "20">
    
<providers>
      
<clear/>
      
<add name="TableStorageMembershipProvider"
type
="Microsoft.Samples.ServiceHosting.AspProviders.TableStorageMembershipProvider"
            description
="Membership provider using table storage"
            applicationName
="ProviderTest"
            tableServiceBaseUri
=”your table service endpoint”
            allowInsecureRemoteEndpoints
=”false”
            
accountName="youraccountname"
sharedKey
="yoursharedkey"
            membershipTableName
="Membership"
            enablePasswordRetrieval
="false"
            enablePasswordReset
="true"
            requiresQuestionAndAnswer
="false"
            minRequiredPasswordLength
="1"
            minRequiredNonalphanumericCharacters
="0"
            requiresUniqueEmail
="true"
            passwordFormat
="Hashed"
        
/>
      
</providers>
    
</membership>
0
相关文章