4

我需要啓動一個新的mvc項目,並且一如既往,我有關於asp身份的問題,永遠不知道該把它放在哪裏!如何構建一個新的ASP MVC應用程序?

我計劃組織的解決方案是這樣的:

  • ProjectWebUI - 與ASP身份框架(從網絡模板與認證制)
  • ProjectDataAccessLayer MVC應用程序 - 與使用dapper數據庫訪問技術
  • 庫類
  • ProjectWebAPI - Web服務

但我有一點點混亂和開始之前編碼,我需要ADVI

  1. 這是好主意,有使用標準的實體框架進行數據訪問和使用的Web用戶界面項目中的ASP身份:從更有經驗的人(因爲到現在爲止我所有的項目都只有一個項目,它的數據訪問)CE在單獨的程序集中用於其他數據訪問的小巧程序?
  2. 如果asp身份在WebUI項目中,我是否會遇到一些問題需要接受WebAPI項目的身份驗證訪問?

回答

2

這就是我組織了我最近的一個項目:

  • Common - 這是在解決方案中的核心工程。它包含所有域實體以及從ASP.NET身份框架的IdentityUser類繼承的ApplicationUser類。通常這個類在新的ASP.NET MVC項目模板中找到;我決定把它放到核心庫中,因爲它代表了更高層次和抽象層次可能需要的共同實體。因此,Common參考文獻Microsoft.AspNet.Identity.CoreMicrosoft.AspNet.Identity.EntityFramework組件。

  • DataAccess - 該項目引用Common庫幷包含Entity Franework DatabaseContext以及一些存儲庫。我使用Code First方法,我的DatabaseContextIdentityDbContext<ApplicationUser>繼承。所以它給了我一個很好的數據庫結構,其中包含UsersRoles和其他ASP.NET身份以及代表Common項目中我自定義業務實體的表格,因此我可以輕鬆地將自定義實體與Identity對象連接起來。

  • WebApi - 這是一個使用DataAccessCommon庫的REST服務。所有的授權和認證工作都使用令牌認證完成。

  • Web - 這只是我的REST服務的網絡客戶端。

因此,要回答你的問題:你能保持一個項目中的ASP.NET身份類和實體框架數據庫上下文,如果它真的很小,易於管理;否則,離開默認項目模板併爲每個主要應用程序模塊引入圖層會更好。

+0

所以你沒有改變AccountController內的任何東西?我問這是因爲該控制器直接與數據庫對話,是否有將數據訪問從那裏移動到單獨程序集(DAL)的真正原因? – 1110 2014-12-07 18:40:35

+0

@ 1110是的,我將'AccountController'改爲使用'DataAccess'項目中的'DatabaseContext'。如果你的項目不是很小,或者你想爲你的WebApi實現其他客戶端,那麼你應該將數據訪問邏輯從那裏移到一個單獨的程序集中。 – 2014-12-07 18:49:38

+0

因此,這意味着我應該將帳戶控制器的登錄,註冊和所有其他用戶相關功能移至dal?或者只是DbContext? – 1110 2014-12-07 19:14:19

相關問題