最好是讓事情變得簡單,這裏是我的結構有一個大的(1000的用戶)的企業應用程序:
2 ASP.net項目,有3個其他類別庫。
1st asp.net Project - 是一個標準的MVC應用程序,但大多數情況下這只是用作所有HTML/cshtml,javascript和css資源的容器。我們使用很少或沒有剃鬚刀/控制器MVC語法。這個「前端」項目是使用angular.js(單頁應用程序-SPA體系結構)進行非常JavaScript驅動的,並調用回第二個Asp.net web api項目來收集和收集所有數據。
2nd asp.net project - 正在使用ASP.net Web API 2模板。該項目負責所有數據收集。該項目從多個地方進行調用,移動/平板電腦應用,第一個asp.net項目,並向第三方公司提供,以便與我們的平臺集成。
類lib 1(可移植類庫) - 是我們的數據模型項目,它跨多個層共享,包括業務層,數據層,web API層,因爲它是可移植的類庫,我們的移動項目。在可能的情況下,我們將重複使用從db到API層的相同模型,有時這是不可能的,我們使用業務層在模型之間進行映射。
Class Lib 2 - API和MVC項目均提及。這個dll包含了我們所有的業務邏輯,有時候這只是一個通過層,在CRUD操作的情況下只做很少的邏輯,只能通過數據層調用,但大多數情況下所有業務邏輯都與檢查字段輸入有關,像上面描述的那樣對你的數據庫進行多重調用都包含在這個背後。正如我之前說過的,我們第一個asp.net項目的邏輯很少,我們從前端項目中引用這一點的唯一原因是因爲該層包含用於建立的所有認證,授權和權限邏輯,因爲用戶可以訪問給定頁面。
類庫3 - 只從我們的業務層引用,該層完成所有數據庫和中間件與多個數據庫平臺的交互。
通過上述結構,它可以將事物拆分爲允許注入MOQ接口,允許更輕鬆地進行測試,並允許在多個項目甚至多個設備(iOS/android/windows應用程序)中最好地重用。我們將2個asp.net項目分開的唯一原因是基於基礎設施原因,每個項目的流量概況完全不同,因此它允許我們優化適合流量概要的硬件 - 許多人可以將它們合併到一個項目中。
你有沒有聽說過基於REST的API? –