【问题标题】:ASP.NET Core - Best way to reduce dependencies in business servicesASP.NET Core - 减少业务服务依赖的最佳方法
【发布时间】:2020-07-07 12:44:07
【问题描述】:

它是一个运行 ASP.NET Core MVC 2.1 的 Web 应用程序,最初是一个 ASP.NET MVC 3 应用程序,并且已经发展了 5 年。

我已经为不同的业务流程定义了服务,但在某些时候,其中许多服务相互依赖。最终结果是具有许多依赖项和一些循环引用的服务。

例如,服务 A 执行了一个动作,然后它触发了服务 B 中的另一个动作。然后必须将最终结果发送回用户。当然,这是一种简化。

在某些情况下,我使用 Azure 服务总线来解耦进程。这样,服务 A 执行一个动作,然后将一个触发服务 B 中的进程的动作排队。然后服务 B 将向 Web 应用程序发送一个 HTTP 请求以通知用户。这种方法效果很好,但我不确定是否应该在系统范围内应用它。这肯定会增加复杂性,因为调试并不是那么简单。

我知道有人会说“使用微服务”,但这是一个很大的变化,现在我需要为所有流程建立一个数据库。

我发现应用于 Azure 服务总线的请求-响应模式非常有用,但我找不到任何代码示例。文档在这里:https://docs.microsoft.com/en-us/azure/service-bus-messaging/message-sessions#request-response-pattern

欢迎任何建议:)

【问题讨论】:

    标签: c# asp.net-core architecture azure-servicebus-queues


    【解决方案1】:

    我认为这是您遇到的一个非常复杂的问题,并且说有一个明显的解决方案是错误的。

    最近我在为一个有逃跑意图的公司项目工作,比如Death Star Architecture,这和你的问题有点接近。为了摆脱项目/服务之间的耦合,该公司决定转向基于 Azure 微服务的扩展解决方案(Logic appsData FactoriesAzure Functions 等)。 虽然值得一提的是,该解决方案解决了耦合问题,因为使用 Azure 微服务,您可以轻松地在解决方案之间切换,而无需担心依赖关系。

    关于微服务的优点和缺点的文章有很多,在继续讨论之前,您应该检查所有优点和缺点。此外,检查业务需求,是否有可用的时间和资源。

    我可以建议您查看的另一件事是reactive programming approach

    另外,您可以查看this 线程。有几个不错的建议,值得一提。

    【讨论】:

    • 我在问题中添加了一张图片。我发现使用 Azure 消息总线中的会话的请求-响应模式对于实现我的需要非常有用,但我找不到任何代码示例。
    猜你喜欢
    • 2013-08-16
    • 2020-09-15
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2012-08-11
    • 2019-02-07
    相关资源
    最近更新 更多