Introduction
Alright, so you guys might know about the
famous web-browser,
Google Chrome. One remarkable thing in this (pretty) simple looking application is the use of a programming technique called IPC or
Interprocess Communication; with IPC you can communicate with another process without invoking and other third party events. One of the most irritating about .Net is that
the app freezes if it is trying to communicate with a web-service. With IPC we can eradicate this problem.
What can you do with it?
So, lets first take an example of what exactly we can do with this: suppose that you have a licensing application named
LicMan.exe and a processing app called
LicPro.exe. LicMan has the
UI and every other part of standard human interference. And LicPro.exe just takes the
License Key provided and then processes it and sends it back to
LicMan.exe for display. This way the app would not hang and you have a happy customer :-)
Lots of bad ways of doing IPC:
- Shared Memory: Difficult to manage and set-up.
- Shared Files / Registry: Very slow doe to the writing & reading to/from disk. Difficult to manage as well.
- SendMessage / PostMessage: Locks up the UI thread while the message is processed. Messages are limited to integer values. Can't communicate from a non-admin process to a admin process. Assumes that your process has a window.