2015-04-02 111 views
0

第一次使用asp.net webAPI +角度項目。從我在網上看到的很多例子中,我發現基本上有兩種處理視圖的方法。ASP.NET角色項目結構web api

第一個(我在許多教程和課程中已經看到) - 僅使用API​​控制器,以便視圖通過角生成。這意味着我的項目結構將有一個文件夾「應用程序」,它將包含html文件(可能在'視圖'文件夾中)。路由將使用角路由完成。我只會在項目中使用API​​Controllers(沒有常規Controller對象)。 示例項目:https://github.com/DanWahlin/CustomerManagerStandard

第二種 - 使用控制器生成視圖,使用Razor(cshtml文件)和angular(納入cshtml中單擊)。有對角等 示例項目沒有特殊的「應用程序」文件夾:https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/CRUDOperations

所以,我想知道什麼是每種方法的優點和缺點,並且我什麼時候用哪一個。示例項目也很棒。

我只能假設第一種方法是更模塊化和區分服務器和客戶端。然而,使用它意味着我失去了剃鬚刀(我是否需要它?)

謝謝!

回答

1

我實際上不得不在幾個月前做出這個決定。 這歸結於你覺得更舒適。我選擇了角度和WebAPI控件。它讓我思考問題的真正分離更容易,角度是你的表示層和webapi是你的服務。這也給你自由做壓縮/格式化實際的HTML頁面(而不是你真正無法控制的cshtml頁面)。

一個更親了WebAPI僅是可擴展性,你真的只需要的網頁一個網頁服務器,但你可以擴展你的WebAPI,這將允許你WebAPI是你的API,以及你的客戶也是如此。

Razor只是一個視圖引擎,根據我的經驗,角有很好的模板和指令來承擔損失剃刀的代價。無論如何,一旦你得到了一堆指令,你可能最終會在你的剃鬚刀文件中寫入純HTML,這意味着你將有更多的問題添加新的視圖。誰想要創建一個新的控制器,新的操作和新的視圖,然後必須以角度來實現。它只是讓服務器提供html文件變得更容易,更簡單,讓角度爲你做所有的路由和邏輯。

我相信html文件也會被緩存,所以當你以角度瀏覽頁面時,你會看到更少的往返行程。

0

作爲一名在微軟商店工作並且幾乎所有我的前端都喜歡AngularJS的人,越早離開混合Razor和AngularJS越好,特別是如果您要購買SPA。

我會推薦使用Razor的唯一時間是生成登陸頁面(可能還有登錄頁面/管理區域)。它提供了一種很好的方式來提供身份驗證來訪問應用程序,然後使用Web Api授權屬性來執行其餘的身份驗證。