2011-05-23 58 views
2

背景ASP.Net MVC體系結構 - 旁路控制器層?

我正在建立一個ASP.Net MVC 3應用程序,它利用:

  • jQueryUI的許多UI部件/控制CRUD操作
  • 現有的基於SOA的系統(使用DDD概念構建)。這包括針對讀取操作進行優化的服務(請參閱CQRS)。這些服務是RESTful(託管在IIS/Appfabric中),因此可以通過來自javascript的簡單HTTP請求訪問。這些服務也可以通過引用服務二進制文件並從控制器訪問(或者當然,通過層來將Controller與服務分離等)來直接使用。

問題

是以往任何時候都適合於執行,例如,通過直接使用現有的RESTful API從JavaScript,而不是調用控制器方法則使服務調用讀操作?或者我們應該總是使用Controller方法進行任何類型的CRUD操作?

參與討論

  • 似乎打破,說你不應該繞過一個層
  • 在另一方面的規則,如果我們總是利用控制器它,然後覺得有些多餘的,我們正在包裝這個服務基本上在另一個RESTful API中使用ASP.Net MVC。

我的直覺,當我開始看這是我們最終會寫入控制方法的一些操作,其中或許頁輸出(視圖)的操作是最容易當我們在模型中的數據。然後會出現其他操作,例如,可能會抽出一個員工列表進行簡單查找,這樣就不需要使用Controller方法,並且可以直接訪問我們現有的RESTful API。感覺混亂,有些開發人員會對何時直接使用Controller方法或現有的RESTful API感到困惑。

任何想法或建議,將不勝感激。

謝謝。

回答

3

我想這是一個意見問題,但如果沒有其他問題,我總是會通過一個控制器來保持一致性。正如你所說,如果你有時直接使用API​​,但其他時候會經歷一個控制器,那麼你的開發人員可能會對他們應該如何訪問數據感到困惑。

另一件值得考慮的事情是,通過使用控制器,您可以從最終用戶隱藏API,這可能是一件好事,因爲惡意用戶可以很容易地更改Javascript以執行您不期望的事情(儘管我希望API有處理這個問題的措施),但是如果您總是通過控制器進行操作,則可以確保用戶無法通過API直接操作數據。

即使安全性不是問題,正如我所說的,爲了保持一致性,我仍然每次都要使用控制器訪問權限。

+0

+1,完全同意。儘管這兩種方式都有效,但從長遠來看,一致性會讓生活更輕鬆。你不必向新開發人員解釋爲什麼有些東西通過控制器,有些則不通過。如果您在幾年後回到項目中,您也不必嘗試記住自己該做什麼。 – Tridus 2011-06-08 10:18:08

+0

謝謝。正如你所提到的,這是開放的辯論,但我接受這個答案,因爲我只是欣賞一些意見。 – tidmutt 2011-06-29 17:02:46