簡體   English   中英

消耗Web API和類信息

[英]Consuming Web API and class information

我目前在Visual Studio解決方案中有以下項目

  • MySiteAPI-Web API
  • MySiteMVC-MVC 5模板

MySiteAPIhttp:\\\\localhost\\api上正確提供數據,我想在MySiteMVC中使用它。

MySiteAPI當前具有Entity Framework Code First類來處理數據端

我對如何將數據提取到MySiteMVC的類定義中感到困惑,因為這些定義在MySiteAPI項目中,而不在MySiteMVC中 看來,Web API不能作為獲取類信息的Web引用被調用,這就是我遇到的問題。

我認為這是一個體系結構問題,並希望在重組該項目之前確保我了解執行此操作的正確方法。

我不想將MySiteAPI引用到MySiteMVC中,因為這樣會使兩個項目分開。 我正在嘗試對此進行增強。

不是將類定義放在MySiteAPI項目中,而是應該創建一個類庫來處理兩個項目引用的數據的實體框架?

如果是這樣,則類庫將僅包含類定義,而MySiteAPI項目將是通過DbContext執行數據庫操作的DbContext嗎? 這似乎對我來說最有意義。

在這種情況下,將有三個項目

  • MySiteModels-包含類定義
  • MySiteAPI
  • MySiteMVC

MySiteAPIMySiteMVC都將引用MySiteModels

這是正確的方法嗎? 有沒有更合適的方法?

是的,您的問題似乎與體系結構有關。 有多種方法可以針對您的問題實現更好的體系結構(這也取決於項目的規模),但是我將描述一種我認為最適合,中等,靈活,可測試的方法。

這些模型是在單獨的類庫項目中定義的,例如MyProject.Models 在這個項目中,只有POCO對WebApi,Mvc或實體框架項目一無所知。 它們應該完全分離,並可以與其他任何項目一起使用。

“實體框架項目”或“數據”也在單獨的類庫項目中定義,例如MyProject.Data 該項目僅引用實體框架和Models項目。 這里定義了派生的DbContext類。 該項目負責數據庫的連接和操作。 如果您使用某些模式(例如RespoistoryUnit Of Work Respoistory Unit Of Work模式)(我認為比在需要的地方初始化DbContext更好),它們也可以放在此項目中。

WebApiMvc是兩個單獨的“客戶端”項目。 兩者都引用了Models項目, WebApi引用了Data項目和Entity Framework。 但是,兩個客戶項目彼此都不了解。 您可以給它們提供瘦(dll)依賴關系,並根據需要將它們托管在不同的服務器上。 如果MVC項目將使用身份進行單個用戶身份驗證,則它應引用項目的其他類似結構(數據,模型,實體框架,分隔的DbContext)或使用已定義的項目。

如果您打算測試代碼(我建議這樣做),將有一個(或多個)測試項目,例如MyProject.Tests 試驗項目參考ModelsData (或假執行Data )和WebApiMvc項目依賴的是什么測試。

對於DbContext,存儲庫,工作單元和其他一些類,應該沒有幾個接口可以放置在不同的類庫中以用於公共接口。

讓我們總結一下:

  1. MyProject.Models-POCO數據模型。 沒有其他參考。
  2. MyProject.Data-DbContext,存儲庫,工作單元。 參考模型和實體框架。
  3. MyProject.WebApi-WebApi項目。 參考-模型,數據,實體框架。
  4. MyProject.MVC-MVC項目。 參考-模型(可選的數據和實體框架)。
  5. MyProject.Test-測試項目。 參考-模型,數據(或假數據),測試項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM