Game Development Reference
As discussed in Chapter 18, “Ensuring a Single Instance of an Application,” imag-
ine that you have Adobe Photoshop open and you double-click on another image
file on your desktop and, instead of the image opening up within the current
instance of Photoshop, the application remains silent. Once an already running
process of a particular application is located, the common approach to inform the
current instance of the new file is, you guessed it, Inter-Process Communication.
Now that we have discussed the importance of a process communication medium,
what can be used? Since the operating system kernel is in charge of memory and
process management, the kernel can be utilized to handle the communication for us.
What Microsoft.NET Provides
The .NET framework provides a number of mechanisms for inter-process com-
munication, each with its own advantages and disadvantages. A brief overview of
each built-in IPC mechanism will be described, but only a few of them will be
A Web Service is often defined as being a software system identified by a Universal
Resource Indicator (URI), whose public interfaces are defined and described using
the XML format. Its definition can then be discovered by other software systems
by communicating with Universal Description Discovery and Integration (UDDI)
registries. Other software systems can then interact with a Web Service-enabled
application through the manner described by its definition, using XML-based
messages conveyed over common Internet protocols like TCP\IP.
This method of communication is excellent for applications that exist on remote
machines, and because the transport protocol is XML-based, both applications
can be written in entirely different languages yet still communicate effectively with
each other. Web Service communication comes at a fairly hefty price though.
Deployment requires an HTTP server that understands Web Services such as IIS,
packet sizes tend to be fairly large because of plain text XML messages, XML seri-
alization incurs a significant performance cost, and transport speed is quite slow.
Web Services are very powerful, but surely there must be another method of work-
ing with remote objects with increased performance? Welcome to the world of