0

我設計我的項目的架構,將有的WebAPI架構查詢

  1. Web應用程序(客戶端)
  2. Windows應用程序(客戶端)
  3. 移動應用(客戶端)

  4. 服務層(將使用Web Api完成)

  5. 業務邏輯層
  6. 數據訪問層
  7. 數據對象層

我的問題是我需要創建Web應用程序和服務層(網頁API)兩個不同的MVC項目。因爲他們都將被託管。我已經看到,WebApi模板也支持ActionMethods(當類由Controller類繼承時)。所以Web Api模板可以用作WebApp和服務層。

遵循的最佳實踐是什麼?

我知道有這些位置

What is the correct architecture for MVC4 WebAPI

Using ASP.NET WebApi with a 3 Tier Architecture

類似的問題,但我想具體與我的要求。

在此先感謝。

+0

爲什麼你不想要創建兩個獨立的應用網絡應用程序和API服務於兩個完全不同的目的。你仍然可以把它們放在一起。 –

+0

簡單的方法是你可以在獨立程序集中分離Web API,並將它引用到你的Web項目中。但考慮在客戶端使用MVC而不是服務端的MVC,這樣就不需要再使用ASP.NET MVC了。你可以使用Angularjs或Durandal。js在客戶端進行管理,只有服務器端的Web APi對你來說已經足夠了 –

+0

@AntP,創建兩個單獨項目(對於WebApi和WebApp)的問題出現在我面前,因爲MVC WebAPI模板還支持MVC Internet應用程序模板支持。因此,如果兩個應用程序都將被託管,那麼是否需要創建兩個不同的項目並將其作爲兩個不同的IIS網站託管。製作兩個不同的項目的目的是什麼?如果沒有做(只有一個項目是爲WebApi和WebApp製作的),它可以創建什麼樣的問題。請你幫我解決這個問題。 – shakti

回答

0

我可以看到的唯一實際區別是,如果你把它們放在同一個項目中,你的API突然緊緊地連接到你的web應用程序,並且不能沒有它,這是不必要的。

在同一個解決方案中創建單獨的項目並將它們作爲兩個獨立的站點託管。

+0

好的。謝謝大家。 如果web應用程序在IIS中關閉,那麼我的服務也將關閉(如果我使用單個項目)。因此使兩個單獨的項目是一個好方法。即使webapp關閉以進行維護,webapi服務也將運行併爲其他客戶提供服務。 – shakti

1

定義架構需要確定每個組件的責任。 ASP.NET Web API通常必須是一個與純粹的HTTP語義中的狀態表示有關的輕量級層 - 有點類似於SOAP在傳統Web服務中所做的。

因此,在ASP.NET Web API應用程序中,您應該有非常小的業務邏輯。所以,我不會簡單地增加一個額外的物理層,其中包括網絡延遲,序列化和反序列化等的開銷

這是我的首選方法:

enter image description here

+0

嗨,我很抱歉,但我不明白你的體系結構。你的意思是MVC WebApp會調用MVC WebAPI,它將調用BLL和DAL。 是這樣的。 MVC Web應用程序 - > MVC的WebAPI - > BLL - > DAL DAL - > BLL - > MVC的WebAPI - > MVC Web應用程序 - >返回查看。 – shakti

+0

@shakti我的意思是ASP.NET MVC調用BL。應該沒有什麼理由去Web API。 – Aliostad

+0

我有多個客戶端將調用服務器的功能。服務器上的功能應該是一個通用的API,並且應該給我所有的客戶端(網頁,手機,窗口)。因此,來自MVC Web App的調用應該轉到Web Api,來自移動設備的調用應該轉到Web Api,從Windows調用應該轉到Web Api。從Web API中調用BLL和DAL。請讓我知道如果我的架構錯了。 – shakti