2014-05-03 26 views
0

我現在有一個分層架構,如下服務層:將現有使用ASP.NET的WebAPI

  1. 服務層 - 這是該域的主要交互點。 包含所有業務規則,驗證等。
  2. 數據/存儲庫層 - 這是處理所有數據持久性的層。不包含業務邏輯或驗證。基本上囊括了Repository<T>UnitOfWork(EF具體)和所有的EF之類的東西DbContextEntityTypeConfiguration的等
  3. 實體框架
  4. SQL服務器

我使用的是貧血域模型,所以基本POCO的代表問題領域。

我有幾個關於通過ASP.NET WebApi公開的問題。

  1. 保安住在哪裏?基本上,用戶有權訪問編輯記錄或記錄類型。用戶是否可以執行特定的操作等。以及諸如身份驗證/基於角色的授權等。
  2. 我應該使用WebApi作爲實際服務層,還是使用它以RESTful方式通過HTTP公開現有服務層?
  3. 給出一個基本的例子,說改變一個類別的名稱,我在哪裏強制當前用戶有權更改所述記錄?我是否依靠Thread.CurrentPrincipal獲取Identity來檢查給定的角色,並將其設置在WebApi中? Mvc應用程序?

有沒有什麼好的例子可以說明我正在談論的這種情況?

順便說一句 - 我使用ASP.NET MVC 5來提供應用程序的外殼(SPA),然後前端將成爲所有的AngularJS。

+0

請注意,如果您打算使用Angularjs和WebApi,則不需要ASP.NET MVC5 – Dalorzo

+0

@Dororzo - 我們使用ASP.NET MVC來提供應用程序的外殼,並提供模板控制器。 。還使用Cassette捆綁/縮小。 – Sam

回答

1

關於你對安全水平的服務應該有正確答案的第一個問題是什麼,我相信它應該是在所有應用中一個原則:

服務應該有足夠的安全性來保護數據從不需要的用戶

一旦您創建了一個服務並將其公開,您將面臨可能具有複雜安全規則的攻擊,這可能會增加開發時間,並且某些情況可能會降低性能;衡量威脅的級別並相應地規劃您的安全。

WebApi的創建目的是通過Http/Rest提供服務所有的原則和功能內置都是用這個意圖進行的,所以關於你的第二個問題,就像你推斷的那樣,它是一個服務層,但是Http/Rest服務層。

WebApi使用屬性Authorize來強制執行安全性,因爲它通常可以使用.NET框架,您可以從中繼承並擴展它。你可以瞭解更多關於它here

而且由於您使用Angularjs,即使您需要MVC5來使用WebApi,我的建議是您不使用MVC剃鬚刀或任何其他服務器技術來呈現您的頁面。

相關問題