2013-02-21 58 views
0

我有一個包含需要能夠發送郵件來回彼此許多獨立的EXE文件的解決方案。現在每個EXE都必須先了解彼此,他們使用IPC進行通信,但我真的想要一個更優雅的解決方案。間通信廠(設計諮詢)

我想要一個工廠,每個EXE都可以將自己註冊爲端點,任何EXE都可以到工廠並檢索所有註冊端點的列表,以便他可以將有針對性的消息發送給他需要與之交談的應用程序時間,而不必事先知道所有談話過程的所有細節。

我已經得到了工廠DLL制定了,但我不知道如何使它成爲一個全球性的實例,即溶液中所有正在運行的EXE文件之間共享工廠的一個實例。有人告訴我,通過NT服務,全局程序集緩存使用WCF,甚至告知維持包含在ALLUSERS AppData的系列化終端的XML文件。我還沒有調查這些選項,但我打算在未來幾天開始研究它們。

我不知道是否有人在這裏可以推薦一個簡單的,優雅的和常識性的建議,爲完成我需要做的(共享一個實例工廠,許多正在運行的進程中)

回答

1

DLL本身是裝到每個EXE的地址空間中。但是,您可以在DLL中聲明共享內存塊,或使用Windows API直接使用內存映射文件。這樣你就可以獲得一塊可以同時從多個EXE(或者從同一個DLL加載到幾個EXE中)訪問的內存塊。您將需要一個互斥鎖來防止併發寫入內存塊。就這樣。

而忘記了WCF和其他複雜的東西爲你的任務 - 誰給了這些意見的人通常不知道很多關於IPC和系統API,並建議他們知道的唯一的東西。

+0

謝謝主席先生。我挖成KERNEL32.DLL :: OpenFileMapping,的CreateFileMapping,MapViewOfFile,等,等現在。 – 2013-02-21 18:08:14