Disadvantages of COM+ Event mechanism

Hi Experts,
We are planning to use COM+'s IConnectionPoint and IConnectionPointContainer mechanism to implement a COM server (out of process) that shall notify all the clients (windows dialog and UI developed using C++/MFC on windows) when certain changes/events occur in the system. The notification shall contain some data to be sent along with the event, which shall be a long value.
I am seeking your help to identify disadvantages of using this (COM) mechanisms over any other IPC mechanisms.
One of the other approaches that has been thrown in by others is to use windows post message mechanism instead of COM Server, so the server exe shall use post message notifications to notify all window handles interested in those events. The window handles shall be shared between client and server using some shared memory.
For COM's event mechanism I do understand that COM has abstracted all the RPC calls behind the wall for the developers for out of process servers. However if large set of data has to be shared between client and server then it could possibly become a bottleneck.
Can you please help me identify any other major concerns or disadvantages in using the COM's event mechanism approach given that all our systems shall be running on windows and on the same machine.

Thanks and regards,
Karrtik
LVL 15
Karrtik IyerSoftware ArchitectAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

pcelbaCommented:
We are using COM+ without problems over years. The COM+ component works like a database server so it evaluates queries and sends (zipped) results to clients. Our previous configuration 4 core server 32 GB of RAM was serving 100 concurrent users with sufficient performance, weekly restart was obvious solution of all problems...

What problem I can see in your concept? The COM+ server component cannot send messages to all connected clients because the connection is invoked when the client calls some server function. The server then evaluates the request and returns the result.

So if I am not mistaken your clients must use some timer/scheduling/periodic processing to query the server for new messages.

OTOH, Windows massaging is not so reliable because the message can simply disappear during the broadcast.
0
Karrtik IyerSoftware ArchitectAuthor Commented:
Hi pcelba,
Thanks for your comments.
However in my suggested approach we are not recommending any periodic processing or polling or timer on client side. So can you please advise accordingly?
When client comes up, it would call IConnectionPoint::Advise on the server passing its callback interface pointer and the interested event. And server, whenever the event happens, calls the interface method using the callback pointer passed by client.
And when client goes down it calles Unadvise to unsubscribe for notifications.
Please see link below:
Architecture using COM connectable objects:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686567%28v=vs.85%29.aspx
MSDN link on IConnectionPoint interface
https://msdn.microsoft.com/en-us/library/windows/desktop/ms678815%28v=vs.85%29.aspx
Thanks,
Karrtik
0
pcelbaCommented:
Our language/development tool is Visual FoxPro and the COM implementation does not allow callbacks... We did not test other possibilities.

Do you have some working sample already?
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

Karrtik IyerSoftware ArchitectAuthor Commented:
Yes we have some working sample in Visual C++. And it works fine. If you want please let me know, I can share it tomorrow once I get to work. So the issue is not really in getting it to work. But its about the design decision on whether to use this COM+ event mechanism given the requirements I stated in my original question and if it has any pitfalls which is well known.
0
pcelbaCommented:
What amount of data are you talking about? What number of clients and what is your network speed?

You should always have some possibility to slow the process down for the extraordinary active clients.

Our app does not consume the network bandwidth. Clients can download a large dataset but then they are working off-line for longer period of time.
0
Karrtik IyerSoftware ArchitectAuthor Commented:
It's about sharing a long value or a string value (Max 150 unicode characters), and that too only if value has changed as compared to previous value.
Max 6-8 clients at any time.
0
pcelbaCommented:
150 Unicode chars means nothing. Even when UTF-32 is used.

Our query results produce KBytes of data and eDocs are even longer.
0
Karrtik IyerSoftware ArchitectAuthor Commented:
Yes, as I mentioned in my original question, sending large set of data is not applicable in our case. Hence wanted to know if there are any other things that I should be concerned about while using COM+ events.
0
Karrtik IyerSoftware ArchitectAuthor Commented:
I've requested that this question be deleted for the following reason:

No solution
0
pcelbaCommented:
What solution did you expect? You did not ask for the solution and it seems you did not understand my answer...

The question was "Can you please help me identify any other major concerns or disadvantages in using the COM's event mechanism approach given that all our systems shall be running on windows and on the same machine."

And based on the amount of data and concurrent users the answer was "No major disadvantages exist".
0
Karrtik IyerSoftware ArchitectAuthor Commented:
Hi pcelba, thanks for your inputs, I was expecting at least more than 1 opinions to understand any disadvantages of specifically/explicitly COM's event (IConnectionPoint, callback) mechanism.  Basically bidirectional communication. This was clear in my question. But I didn't not receive even one.

From you I didn't not receive any inputs on usage of COM's event (callback) mechanism. In one of your responses you have mentioned that you haven't used this infrastructure of COM.
From you I received inputs on the normal COM usage (one direction, with client polling for changes). Your response stated :
" Our language/development tool is Visual FoxPro and the COM implementation does not allow callbacks... We did not test other possibilities."
Hence I asked for other expert's help. And administrator responded saying that we have not received any responses, I can request for deleting the question. Hence this request.
Thanks,
Karrtik
0
pcelbaCommented:
Thanks for the explanation. I can agree the info is not sufficient for you I just don't see reasons for the question deletion. People should find this discussion when searching for similar solutions/problems.

The lack of qualified responses could mean two things - 1) You are asking at the wrong forum, 2) COM+ is not widely used... The second option could also mean early end of Microsoft support for such technology...
0
Karrtik IyerSoftware ArchitectAuthor Commented:
Hi @Pcelba, I shall check with administrators if this question can be kept open. I am not sure if this is allowed.
The right reasons of lack of qualified answers is difficult to judge. Your point 1 might be true, if you have any recommendations on right forum let me know or a better forum let me know.
As far as point 2 is concerned I think (my personal opinion) with Windows 8 onward and Win RT, l think COM is back in demand again, so I do not think Microsoft would end support for such technology.

thanks,
Karrtik
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
pcelbaCommented:
Even when we didn't find some "final consensus" I would recommend to keep the discussion available at the EE web.
The post ID: 41212569 can be selected as answer.
0
Karrtik IyerSoftware ArchitectAuthor Commented:
As per the objection stated by @pcelba, to keep this question on EE forum, although we did not reach any conclusion/consensus on it.
Hope this is acceptable.

Thanks,
Karrtik
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Development

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.