c# - 添加层以抽象多个代理和服务
问题描述
我认为这个问题的元素已经在其他地方得到了回答,但我找不到针对我的具体情况的答案。
我使用企业应用程序。该应用程序通过当前的单个类和大量代理 dll 与各种 3rd 方 API 和服务接口。这意味着这些 dll 中的每一个都在主项目中被引用。除此之外,随着时间的推移,我们添加了新的服务调用,大量代码被重复,只有非常小的修改。大多数服务调用都做大致相同的事情,并采用大致相同的对象作为参数。
正如您可以想象的那样,这给我们带来了许多问题,其中最重要的是添加新服务所需的时间。
我们现在的任务是重构和简化这个过程,使其更易于管理和有弹性——我脑子里有一个想法,我已经做了很多研究,但我只是想看看是否有人有更好的想法或类似的经验在我潜入之前。
我想要做的是添加一个外观层,以便基本代码获取所有常用数据并将其捆绑到外观以及规定它要调用的服务的参数。然后,facade 会将数据传递给代理或桥接器,这会将其转换为目标服务的正确格式,按顺序进行所需的调用,并将任何响应返回到facade 以继续传递。
虽然我对我想要的架构有一个想法,但我不能 100% 确定在具体 C# 代码方面该走哪条路——是否在一个新项目中添加外观和桥/适配器代码,该项目也引用了代理 dll ,或者是否沿着基/接口路由并将所需的转换类直接添加到代理 dll 中。
编辑添加:由于我无法在此处讨论的更广泛的基础架构考虑,我无法考虑将此功能整合到服务或微服务中。
任何建议表示赞赏!
解决方案
推荐阅读
- r - R:如何根据其他列中的因素向新列添加值
- reactjs - 测试方法 else/if 不返回预期值
- python - 一种热编码 - 如何修复逻辑回归中的列匹配
- css - 可折叠内容的 CSS 网格列灵活
- mysql - 数据库触发器删除条件为真的行:
- python - 数据框中每列的平均值
- sql - 如何将求和值与sql中的连接一起添加
- java - 如何将我的 JButton 连接到我的 JTextField 以将我输入的 int 存储到 JTextField 中?
- xamarin - 错误:属性已在 Xamarin.Android 的“attrs.xml”中以不兼容的格式定义
- c# - 单元测试 IBackgroundJobClient.Schedule