0

我有一个解决方案,其中包含许多单独的 EXE,这些 EXE 需要能够彼此来回发送消息。现在每个 EXE 都必须预先了解彼此,并且他们使用 IPC 进行通信,但我真的想要一个更优雅的解决方案。

我想要一个工厂,其中每个 EXE 都可以将自己注册为端点,并且任何 EXE 都可以去工厂并检索所有已注册端点的列表,这样他就可以将目标消息发送到他当时需要与之交谈的应用程序,而无需事先了解所有谈话过程的所有细节。

我已经制定了工厂 DLL,但我不知道如何使其成为全局实例,这是解决方案中所有正在运行的 EXE 之间共享的工厂实例。有人告诉我通过 NT 服务、全局程序集缓存使用 WCF,甚至告诉我在 allUsers AppData 中维护一个包含序列化端点的 XML 文件。我还没有研究这些选项,但我计划在接下来的几天内开始研究它们。

我想知道这里是否有人可以推荐一个简单、优雅和常识性的建议来完成我需要做的事情(在许多正在运行的进程中共享一个实例工厂)

4

1 回答 1

1

DLL 本身被加载到每个 EXE 的地址空间中。但是,您可以在 DLL 中声明共享内存块,或直接使用 Windows API 使用内存映射文件。通过这种方式,您可以获得一块内存,可以同时从多个 EXE(或从加载到多个 EXE 的同一个 DLL)访问该内存块。您将需要一个互斥锁来防止并发写入内存块。就这样。

忘记 WCF 和其他复杂的任务 - 提供这些建议的人通常不太了解 IPC 和系统 API,只推荐他们知道的东西。

于 2013-02-21T15:05:19.227 回答