Sun, September 12, 2004, 05:13 PM under
MobileAndEmbedded
With no remoting in the Compact Framework or named pipes on Windows CE there are still other ways to achieve Inter-process communication. Here is a list (feel free to tell me if I have missed any):
1. Sockets
2. Memory Mapped Files
3. Windows Messages
4. Point to Point Message Queues
5. MSMQ
6 Out-of-proc COM
7. Named Events + registry
8. Directly Share memory
1. Sockets are accessible to .NET apps via the
System.Net.
Sockets namespace. You could use a
TcpListener (on 127.0.0.1 and some port you fancy) and a
TcpClient or even get down to the
Socket class which the other two aggregate. The msdn links given are good and as always search the
web and
newsgroup.
2. CF code for memory mapped files can be found
here and an example of their use
here3. Passing windows messages between apps requires a windows handle of course. CF has the Microsoft.WindowsCE.Forms namespace not available on the desktop that includes the MessageWindow class. [This class was necessary to overcome the CF's limitation of not being able to pass delegates to pinvoke and hence achieve windows callbacks - this limitation is no longer in CF 2.0]. Learn about the MessageWindow
here,
here,
here and
here.
4.
Point-to-Point Message Queues with the .NET Compact Framework5. Pinvoking
MSMQ is not easy (apparently, I haven't tried it myself) and I am aware of no sample code for that. CF 2.0 will support it via the
System.Messaging namespace. For further details and a bunch of links on this subject check out
these blog entries here.
6. COM interop is not supported in CF. A commercial offer is
available. CF 2.0 will have some support for COM Interop but I don't know if out-of-proc servers will be supported. If you know drop me a note.
This is getting long enough already so we look at
options 7 and 8 next time.