none
該選擇 Mvc Controller 還是 WebApi Controller? RRS feed

  • 問題

  • 你好,MVC Controller 和 WebApi Controller 都可以透過 Ajax 的方式在 視圖和控制器
    之間做雙向資料的傳遞。
    手邊的參考書及以及網路上可以找到的資料沒有針對這兩種控制器的用途和相同應用下的優劣做比較。

    如果今天要開發的是 網站的專案,不考慮行動裝置或是其他的終端設備,是否就選擇 MVC Controller 較佳?
    如果要考慮行動裝置介面或是其他非網站的終端介面,是否就該選擇 WebApi Controller 呢?

    對這兩種控制器還是有點不知道該在甚麼應用情境中選擇正確的 控制器來用。

    如果專案初期先以網站介面為主,因為在 MVC 框架下必須要用 MVC Controller 指定顯示的View , 來做視圖的控制。
    除了 視圖的控制之外,也可以把 ajax 的呼叫都寫在這個 MVC Controller 裡的 Action。這樣的話維護和管理起來比較容易,簡單的說,程式的入口比較單一。

    如果一開始就規劃要使用 WebAPI Controller 的話,除了也要建立 MVC Controller 做網頁的視圖控制之外,還要建立
    WebAPI Controller 做  CRUD 的 Action , 提供 Restful 方式的服務給不同的終端介面使用。

    程式就有兩個入口了。(呼叫 視圖用 MVC Controller , 操作資料用 WebAPI Controller)

    MVC Controller 就變成只是單純的送 視圖的功能。

    專案中有 CRUD 的需求,如果專案之後也必須考慮手機或是其他的非網站介面應用的話,是否在開發的初期就必須另外再
    建立 WebAPI Controller 來處理 CRUD 的需求?

    例如: 專案中有一項功能是會員註冊的功能,
          分為 MemberReg.cshtml:視圖 (View)、
               Member.cs:控制器 ,
               Register(): Action , 顯示 MemberReg.cshtml 這個 View ,
               CreateMember() :Action, 建立 會員 , 實際呼叫 Model 建立資料庫資料

          如果一開始我選擇 Member.cs 是 MVC Controller 的話,日後如果要透過 Restful 的方式支援 不同的終端介面的話,是否就必須要另外再
          建立 WebAPI Controller 並且將原先在 MVC Controller 的 CreateMember() 搬到 WebAPI Controller 中呢?


    感謝回覆。

    2014年10月15日 下午 01:34

解答

所有回覆

  • 你可以把 Web API 當成給程式看的 "介面",和 MVC 給人看的 "介面" 共用同一個 Model/Repository。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 Arthur1977 2014年10月22日 上午 05:03
    2014年10月15日 下午 01:51
    版主
  • 我會把WebAPI Controller 及 MVC Controller 當成一個"介面"而已,以您的例子來說CreateMember() 這個動作的邏輯不會是寫在WebAPI Controller 及 MVC Controller裡,而是後面還有一個model class去做的事,WebAPI Controller 及 MVC Controller只是負責把它轉交過去

    微軟免費線上課程

    HTML5 & JavaScript程式開發實戰(MyBook)

    開發ASP.NET您要瞭解的基楚

    http://www.dotblogs.com.tw/ian (MyBlog)

    • 已標示為解答 Arthur1977 2014年10月22日 上午 05:03
    2014年10月16日 上午 01:33
    版主
  • 一個提供 Site,一個提供 Service ...


    理直氣和,切記。

    推廣

    微軟免費中文影音線上教學網站

    2014年10月16日 上午 06:04
  • MVC Controller支援產生網頁內容供瀏覽器顯示, 也可以提供功能給其他應用程式(包括JavaScript和jQuery)呼叫

    API Controller只能提供功能給其他應用程式(包括JavaScript和jQuery)呼叫, 但是無法產生網頁內容供瀏覽器顯示

    2014年10月16日 下午 12:07
  • 您好,歡迎您將後續測試結果回報至論壇,或將對您有幫助的回覆標示為解答,以利討論的進行並幫助其他有類似問題的朋友。謝謝您!

    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2014年10月22日 上午 03:59
  • 看了幾位先進夥伴回答,我的開發專案中兩種 Controller 都有在用 。

    後端的邏輯在 Model 處理。

    2014年10月22日 上午 05:07