摘要:[ASP.NET MVC] ASP.NET Identity學習筆記 - 原始碼下載、ID型別差異
[ASP.NET MVC] ASP.NET Identity學習筆記 - 原始碼下載、ID型別差異
原始碼下載
ASP.NET Identity是微軟所貢獻的開源專案,用來提供ASP.NET的驗證、授權等等機制。原始碼的位置如下:
-
ASP.NET Identity 2.x
https://aspnetidentity.codeplex.com/SourceControl/latest#Readme.markdown
-
ASP.NET Identity 3.x
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)
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。