[英]Consuming Web API and class information
我目前在Visual Studio解決方案中有以下項目
MySiteAPI在http:\\\\localhost\\api
上正確提供數據,我想在MySiteMVC中使用它。
MySiteAPI當前具有Entity Framework Code First類來處理數據端
我對如何將數據提取到MySiteMVC的類定義中感到困惑,因為這些定義在MySiteAPI項目中,而不在MySiteMVC中 。 看來,Web API不能作為獲取類信息的Web引用被調用,這就是我遇到的問題。
我認為這是一個體系結構問題,並希望在重組該項目之前確保我了解執行此操作的正確方法。
我不想將MySiteAPI引用到MySiteMVC中,因為這樣會使兩個項目分開。 我正在嘗試對此進行增強。
不是將類定義放在MySiteAPI項目中,而是應該創建一個類庫來處理兩個項目引用的數據的實體框架?
如果是這樣,則類庫將僅包含類定義,而MySiteAPI項目將是通過DbContext
執行數據庫操作的DbContext
嗎? 這似乎對我來說最有意義。
在這種情況下,將有三個項目
MySiteAPI和MySiteMVC都將引用MySiteModels
這是正確的方法嗎? 有沒有更合適的方法?
是的,您的問題似乎與體系結構有關。 有多種方法可以針對您的問題實現更好的體系結構(這也取決於項目的規模),但是我將描述一種我認為最適合,中等,靈活,可測試的方法。
這些模型是在單獨的類庫項目中定義的,例如MyProject.Models
。 在這個項目中,只有POCO對WebApi,Mvc或實體框架項目一無所知。 它們應該完全分離,並可以與其他任何項目一起使用。
“實體框架項目”或“數據”也在單獨的類庫項目中定義,例如MyProject.Data
。 該項目僅引用實體框架和Models項目。 這里定義了派生的DbContext
類。 該項目負責數據庫的連接和操作。 如果您使用某些模式(例如Respoistory
或Unit Of Work
Respoistory
Unit Of Work
模式)(我認為比在需要的地方初始化DbContext更好),它們也可以放在此項目中。
WebApi
和Mvc
是兩個單獨的“客戶端”項目。 兩者都引用了Models項目, WebApi
引用了Data項目和Entity Framework。 但是,兩個客戶項目彼此都不了解。 您可以給它們提供瘦(dll)依賴關系,並根據需要將它們托管在不同的服務器上。 如果MVC項目將使用身份進行單個用戶身份驗證,則它應引用項目的其他類似結構(數據,模型,實體框架,分隔的DbContext)或使用已定義的項目。
如果您打算測試代碼(我建議這樣做),將有一個(或多個)測試項目,例如MyProject.Tests
。 試驗項目參考Models
, Data
(或假執行Data
)和WebApi
或Mvc
項目依賴的是什么測試。
對於DbContext,存儲庫,工作單元和其他一些類,應該沒有幾個接口可以放置在不同的類庫中以用於公共接口。
讓我們總結一下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.