【问题标题】:C++ MicroServices with desktop application [closed]带有桌面应用程序的 C++ 微服务 [关闭]
【发布时间】:2017-09-27 15:16:38
【问题描述】:

我有一个桌面应用程序,它变得越来越大。我想知道我是否可以使用桌面应用程序制作类似微服务的东西?我想申请现在停留在桌面上。应用程序它是用 C++ 编写的。 我可以通过一些准备来排除一些模块。 但是有可能吗?如果有人知道如何开始?

【问题讨论】:

  • 你可以使用dynamic library modules
  • 我正在考虑主进程,并从这个进程运行其他进程。好吗?我不知道提升,但从快速阅读它可能是一个很好的解决方案。
  • @rex 如果应用程序根本不使用 boost 会有问题吗?
  • 对于单独的进程,您需要某种类型的IPC 才能使它们协同工作。也许线程就足够了?您可以使用 OS API 来做同样的事情而无需提升。这个问题好像不适合这里。也许最好在chat 中讨论这个问题。
  • 在微软的世界里,答案是 COM 或 .NET ...不确定是否相关,但它甚至可以透明地使用不同机器上的服务(服务器)。

标签: c++ microservices desktop


【解决方案1】:

类似微服务的桌面架构是可行的。事实上,许多操作系统都使用服务,这些服务通常被称为守护进程。例如,X Window 系统使用客户端/服务器架构。最近,IDE 现在可以使用语言服务器协议与一个或多个提供语法突出显示、代码完成、编译反馈等的语言服务器进行通信。

有几点需要考虑:

  • 目标系统上已有哪些通信协议可用?在许多系统上,您可以使用 D-Bus (https://en.wikipedia.org/wiki/D-Bus)
  • 您需要什么性能?如果性能非常关键,您将需要使用高度优化的协议在服务之间进行通信,并且启动时间需要很短。为了获得良好的性能,类似于语言服务器协议的东西可能已经足够好,并且更容易编写、维护和调试。
  • 您能否处理拆分流程所增加的复杂性?在一个整体中,整个事情要么向上,要么向下。使用微服务,正在运行的系统部分可以尝试调用未运行的部分。这种情况必须处理。
  • 您的应用程序中的接缝是什么?哪里可以轻松拆分?看看领域驱动设计。识别潜在的独立模块,并重构以确认。如果重构有意义,则将模块拆分为自己的进程。

【讨论】:

    【解决方案2】:

    桌面应用程序和微服务相互排斥,因为桌面意味着一台机器,而微服务意味着多台机器(物理或虚拟)使用与技术无关的协议通过网络进行通信。

    您可以使用modularization。这是微服务的替代方案,可以在像您这样的某些场景中工作。

    【讨论】:

    • 也许你知道 OSGi 到 C++ 之类的东西?因为我读到 Java 最流行的是 OSGi。
    • 为什么你认为微服务需要跨越多台机器?我不同意这一点
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2021-05-19
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2011-02-15
    相关资源
    最近更新 更多