2016-11-25 89 views
0

我正在與我的一位同事一起開發ASP.NET MVC 5(從現在開始就是MVC)和Angular 1.5的Web應用程序。

我將使用MVC純粹作爲後端參與者:暴露API並與數據庫交互,而不生成任何視圖。 另一方面,角色將負責整個客戶端,使用組件和模板進行視圖,路由和服務以調用MVC端點。

我認爲這會帶來明確的職責分離和整潔的架構。然而,我的同事寧願保留MVC路由,從服務器生成視圖,並向他們注入Angular,因此使用它作爲客戶端業務邏輯。這會帶來一些其他好處,因爲可以加快某些安全措施(例如,使用@Html.AntiForgeryToken())。但是,這會使得使用角度組件和新組件模式更困難。

當然,一種不同的方法可以是僅將WebApi用作後端並保持清晰的切割,但我很好奇聽到別人如何解決同樣的問題。ASP.NET MVC和Angular 1.5體系結構和職責分離

回答

1

Angular用於創建單頁面應用程序,遵循同事的方法意味着每個路徑只有一個頁面應用程序,這將打破單頁應用程序的用途。 SPA需要一些時間來加載,如果每條路線有一個SPA,您將爲每條路線支付加載時間,並且因爲它的新頁面丟失了上一頁的狀態。

防僞標記也可用於角度應用,請參閱this

我們在我們公司創建了角度應用程序,我們使用web api和兩個剃鬚刀頁面,一個用於登錄,一個用於spa應用程序。有可能只有index.html,但將登錄頁面分開會帶來一些簡單性,並將一些初始數據注入主頁面可簡化角引導。

+0

讓MVC呈現的登錄頁面更實用(更接近認證服務)?否則,爲什麼不通過角度提供並通過API調用後端? – Francesco

+0

它也更簡單。這個邏輯已經在服務器端實現了,如果你試圖進入主頁面,並且你沒有通過身份驗證,你會被重定向到登錄頁面,當你登錄時,你會被重定向到你想要進入的主頁面第一個地方。如果您想在SPA中登錄,您必須在SPA中實施該邏輯。登錄頁面的重量非常輕,那麼在SPA中實施它的好處是什麼? –

+0

在Angular中實現身份驗證有一些複雜性。當角度自舉時,您需要知道用戶是否已通過身份驗證。 Angular可以在任何路由中引導,甚至當用戶按F5時。如果身份驗證cookie存在,用戶將通過身份驗證,但您無法訪問身份驗證cookie,因此只需要http,因此您需要調用web api終點來獲取當前用戶,但在角度上,不容易等待http調用bootstrapping。所以我更喜歡服務器端方法 –