繁体   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