C# MVC 和 Web API 应用程序体系结构

本文关键字:应用 程序体系结构 API Web MVC | 更新日期: 2023-09-27 18:34:50

问题:我正在使用 C#.NET MVC Client App 和 WebAPI Service 构建一个 Web 应用程序体系结构。目前,我有多个客户端和一个臃肿的 Web API 服务。我的所有客户端应用都调用该服务来检索数据。但是,由于我们的应用程序变得越来越大,我想将单个服务分解为多个服务 - 实质上是每个数据库一个 Web API 服务,以便服务层直接绑定到其各自的数据库。这将允许我使用服务层对数据库进行代码优先开发,并将引用其他数据访问的任何其他代码分离,这样当我对服务或数据库进行更改时,我可以确定它只影响该服务或数据库,并且我不需要对其他任何东西进行回归测试。

我现在遇到的主要问题是,我有一堆客户端应用程序,这些应用程序引用了一堆不同的 Web API 服务,如果我更改一个服务的位置,我需要在任何和所有客户端中更新该更改。为了解决此问题,我正在创建一个新的"网关"Web API,它本质上只是从客户端应用到 Web API 服务的传递,但所有客户端应用程序都调用网关上的控制器,网关知道如何将流量路由到正确的 Web API 服务。因此,如果我对服务进行更改,我只需更改网关中的引用,仅此而已 - 客户端不需要修改。

所以现在架构看起来像MVC 客户端应用程序 -> 网关 Web API -> 服务 Web API -> 数据库。

问题:我按预期工作,它似乎解决了我之前遇到的问题 - 但我的问题是 - 这是矫枉过正吗?有没有更好的方法来解决这个问题,而不会引入网络上两个跃点的复杂性?

我尝试在谷歌上搜索有关软件和 Web 应用程序架构示例的信息,但我找不到这种复杂程度的任何内容。似乎我能找到的所有文献都只是指多个客户端调用单个服务。

任何人可能拥有的任何见解都非常感谢。

C# MVC 和 Web API 应用程序体系结构

就个人而言,我会选择一个发现 WebAPI,它托管我的 HATEOUS 端点以进行资源发现。 这描述了在哪里可以找到另一个端点,然后客户端只需要知道一组端点,就可以务实地发现其他端点。 看看这个:

https://msdn.microsoft.com/en-us/magazine/jj883957.aspx

在 Web API 中生成超媒体链接

这适用于微服务,因为您可以重构/拆分/移动它们而无需更改客户端。