[ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载、ID型别差异

[ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载、ID型别差异

原始码下载

ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证、授权等等机制。原始码的位置如下:

ID型别差异

ASP.NET Identity 2.x 跟 3.x的一个设计变化就是:IUser、IRole在3.x被移除了。这两个封装使用者、脚色的Entity,在2.x 跟 3.x两个版本之间主要差异是在于面对ID型别的设计概念:

  • 在2.0的时候,把ID型别都使用泛型的TKey来做设计,这样可以松绑「ID型别」被绑死为特定型别的问题,但是却增加了系统的复杂度。

    // ASP.NET Identity 2.x
    public class RoleManager<TRole, TKey> : IDisposable
        where TRole : class, IRole<TKey>
        where TKey : IEquatable<TKey>
    {
        public virtual async Task<TRole> FindByIdAsync(TKey roleId){}
    }
    
  • 在3.0的时候,把ID型别使用String来做设计,这样可以减少系统设计的复杂度,但是变成限定ID型别为String。

    // ASP.NET Identity 3.x
    public class RoleManager<TRole> : IDisposable where TRole : class
    {
        public virtual async Task<TRole> FindByIdAsync(string roleId){}
    }
    

笔者现在设计Framework也都采用3.x的写法,毕竟使用String作为ID型别,已经可以符合大部分的使用情景。然后遇到数据库使用int、guid作为ID字段的型别时,在Access层做对应的Mapping,也可以正常的让String型别的ID数据进出数据库。(写数据库string转int、读数据库int转String)

posted @ 2015-05-31 21:51  Clark159  阅读(455)  评论(2编辑  收藏  举报