3

我有一個具有數據訪問,業務和wcf服務層的應用程序。我需要這個WCF層轉換爲Web API和我堅持我是否應該:服務層和Web API服務層?

1)創建兩個服務層/項目: - 服務(類庫) - Services.Api(的WebAPI揭露和包裝通話到服務類庫)

2)或者,只需創建一個WebAPI項目。

我想我用#2看到的問題是它限制了我能夠重用庫的方式 - 我只能使用REST的服務。通過#1,我可以根據需要在我的Web控制器內部使用類庫,以及在客戶端/ ajax上使用WebAPI。我在#1中看到的問題是重複調用服務層類庫所需的所有額外代碼。

希望有道理。請讓我知道你的想法,可能是我採取的一種好方法和實踐,或者因爲我缺乏理解而尖叫我。謝謝

回答

0

選項1留給你更多的可重用代碼,我認爲這幾乎總是一件好事。

0

您的問題不應該只從另一個API變體的角度來考慮。

我會去1)。

服務從通信部分的分離將提供許多好處,當系統複雜性的增加,當API版本可能會成爲一個問題,單位在測試過程中,等

一些額外的想法:調用層不而是通過限制Api圖層中可用的參考資源來暴露並強制關注點分離,以避免開發人員在系統發展時偷工減料時可能出現混合問題(例如,無法訪問Api項目中可用的存儲庫,域或DTO模型等)。

如果你這樣做,我認爲重複的代碼可以是極其微小的。

3

如果您有一個良好的業務層,本身應該是您的服務(類庫)層。在您的業務/服務層上,應該是您的前端圖層,可能是Wcf,Api或Mvc。

ProjectName 
-ProjectName.Core (All poco classes and interfaces) 
-ProjectName.Data (All entity framework stuff) 
-ProjectName.Service (All business logic) 
-ProjectName.Web (All font end logic)