2014-07-13 63 views
2

我一直在使用ASP.Net MVC(使用Razor語法)一年多,並希望移植到Web API。在HTML頁面中使用Web API

在MVC中我通常把我的n層體系結構,如下所示(簡化,爲了便於說明):

  1. 數據(類庫)
  2. 庫(類庫)
  3. 服務(類庫)
  4. 演示(MVC)

什麼我開始不喜歡這一點,似乎是要很多摹在Presenation層;你有模型,剃刀視圖,控制器以及任何附加的細節,如javascript/AngularJS & CSS。

您會如何建議我在使用Web API而不是MVC時設置層級?它是否與上面一樣,但增加了一層?事情是這樣的:

  1. 數據(類庫)
  2. 庫(類庫)
  3. 服務(類庫)
  4. 的Web API
  5. 演示(HTML + JavaScript和CSS)

或者所有的HTML頁面與Web API放在同一個項目中?這對我來說似乎很奇怪,因爲我覺得你需要保持API與其他所有問題(如用戶界面)分開。

任何洞察將受到感謝。

+2

的總體思路是的WebAPI和前結束部分將是完全獨立的實體。 – Jonesopolis

+0

好的,我想我明白你的意思。沿着這條線我會有我通常的n層應用程序(用Web API代替MVC層),然後在我的解決方案之外,我想要提供任何HTML頁面? – Stu1986C

+1

是的,WepAPI的好處是你不關心什麼類型的客戶端使用它。桌面應用程序,移動應用程序和網站都以相同的方式集成。在我的工作中,我們使用WebAPI和角度前端,並且效果很好 – Jonesopolis

回答

1

我正在沿着這些日子工作。 Web API作爲來自和去往應用程序的數據的網關,以及HTML完全獨立。 現在這裏你有兩個選擇

  1. 使用HTML頁面,並使用AJAX你的Web API進行交互,唯一的大問題,我能想到的是路由和URL重寫。
  2. 使用MVC視圖,但是作爲HTML頁面,這意味着沒有模型類,沒有控制器方法(除了服務視圖的方法之外)。基本上所有你使用的是內置路由,也許是主頁面。

這在前端側,作爲後端網絡API層是在舊的應用程序會是怎樣被一個WCF應用程序,因此Web API controlles是什麼.svc文件執行是,從那裏有業務邏輯的類庫,用於數據訪問的類(SQL/ORM),最後是用於域對象(跨web api,業務層和數據層共享)的另一個類庫。

多數民衆贊成在我可以隨時構建事情。對於在Web API中使用HTML,我傾向於選擇2,主要是因爲可以很容易地與VS集成,如果您真的需要Razor的任何東西,那麼它就非常方便。而且大多是因爲你與結構Visual Studio的恩惠,而不是針對其工作方式(並在長期運行其更容易與它一起去)

希望幫助