【问题标题】:How do I connect two apps如何连接两个应用程序
【发布时间】:2010-05-18 18:08:13
【问题描述】:

我正在考虑用 C++ 构建一个应用程序,该应用程序将解析来自网络的文本并创建一些统计结果。我希望将这些结果实时输入到外部应用程序中。外部应用程序(我无法访问其代码,但可以要求付费定制添加)将需要一些代码来读取和使用这些结果。

我想知道在速度和易于实施方面,将这两个应用程序互连的最佳方式是什么。我正在考虑:

 disk I/O (slow) 

 a Windows service  

 a DLL  

 a web service  

 a web page

也许我错过了更好的解决方案?谢谢。

Update : there is an additional need to know how long a data request may take at worst.

【问题讨论】:

    标签: c++ windows process ipc


    【解决方案1】:
    • 套接字?
    • 共享内存?
    • 内存盘?
    • TCP/IP?
    • Windows 消息?
    • (其他应用程序的)命令行参数?

    其他应用程序有哪些方法来支持接收数据?

    【讨论】:

    • AFAIK 其他应用程序仅从键盘接收数据。命令行参数不起作用,因为总和需要实时不断地输入,并且外部应用程序必须已经在运行。
    【解决方案2】:

    Windows 服务是明智的,但仍需要与其他应用程序通信,这称为 IPC,Windows 上的方法描述为here,命名管道简单灵活,文件映射功能强大。

    另一种方法是在中间放置一个数据库?

    【讨论】:

    • 好点。这也让我意识到我需要对通信过程的速度进行一些控制。例如,一条 Windows 消息可能会排队,并且需要一些时间才能到达其收件人。我会更新 o.p.也添加此限制。我想知道数据库会带来什么开销...
    • 一个数据库有一些磁盘读/写的东西,可能会很慢。
    【解决方案3】:

    有许多 IPC 机制可供选择(套接字、共享内存、管道……)。我想“最佳选择”将在很大程度上取决于其他应用程序的结构。您的自定义扩展程序将花费您多少钱。

    我不太了解您的环境,但看看 boost.interprocess 可能是值得的: http://www.boost.org/doc/libs/1_43_0/doc/html/interprocess.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多