[英]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.