Reputation: 10513
I have 2 desktop applications that I wish to integrate with external applications. One of the applications is extended with plugins which are developed by me, to provide specific features which are not common for all distributions. The situation can be described in the following diagram:
alt text http://img32.imageshack.us/img32/8902/integration1.png
As I mentioned, I want to integrate (receive and send data) my applications with external applications or SDKs. Usually there 2 types of data from external applications:
With "Core Application", the wanted situation can is described in this diagram:
alt text http://img32.imageshack.us/img32/3299/integration2.png
The General data is handled in the Core Application, and the specific data is handled in plugins (support plugins).
A distribution of this application might be one of
For the other application, I want to keep the same "Integrators", but to handle them differently inside the application:
alt text http://img32.imageshack.us/img32/2088/integration3x.png
How would you recommend to implement support in my applications for integrating external applications and SDKS, as I just described?
Notes:
Upvotes: 3
Views: 312
Reputation: 5675
Look at the IPC options that windows has here
To me as well COM looks like a good option here.
Another way to do this would be to have your core application running a server which listens to calls from your plugins. You can achieve this by using names pipes. Now, your support apps would use these plugins to communicate (over named pipes) with your core app.
Upvotes: 0
Reputation: 12870
I agree with the commenter, COM seems like a good strategy. Your support dlls get registered when they are installed, then your core app can look for plugins, something like:
hr = CLSIDFromProgID(L"Wakko.1.0", &clsid);
hr = GetActiveObject(clsid, NULL, &punk);
or
hr = CoCreateInstance(clsid, ...,..., IID_IWAKKO, ...);
Upvotes: 1