SimpleIPC is a set of objects, server processes, and configuration tools which allow you, the software developer, to have some of your application's work performed in an external process on the same machine. You make function calls to objects in the external process as if they were local objects. "Under the covers", you're using .NET Remoting over the IPC (Inter Process Communication) channel, but you don't need to be an expert on .NET Remoting to use SimpleIPC. The platform handles the communications and external process life cycle details for you. SimpleIPC runs on Windows, and the code to be run in the external process must be written in a .NET programming language. However, your client code may be written in a variety of languages, to include Java, VBScript/VBA, and .NET programming languages.
You might consider using SimpleIPC under the following circumstances:
1. You have some code which is useful, but which has the potential to throw unhandled exceptions and crash your application process. You can run this code via SimpleIPC. If there is a process crash, it will be one of the expendable external processes, rather than your application process. Your application can just repeat the call against a different external process and continue on. There is no need for your end users to be impacted.
2. You have some code which is useful, but which leaks memory. You can run this code via SimpleIPC and configure the external processes to recycle frequently. In this way, you can keep your application's memory consumption under control without sacrificing functionality.
3. You need an expeditious way to perform one of several common programming tasks, such as invoking .NET code from a Java application, running a subset of your application's operations under a different Windows identity, or limiting concurrent access to shared resources in a multi-user environment. SimpleIPC provides simple APIs for programming tasks like object pooling and invoking web services.
Keywords: Interprocess Communication, .NET Java Integration, COM Java Integration, Java Interop, horizontal scalability
Click to enlarge