Isolate errors in .NET remoting applications
By Anand Narayanaswamy
Rating: 4 stars (out of 5)
Traditional .NET Framework applications communicate over the database located in the same system or over a LAN. But .NET remoting applications share and exchange data across networks in a distributed client-server architecture. Hence, there should be some kind of fault-tolerance mechanism in place in case the application throws an error during the communication process. SimpleIPC, developed by Dallas-based Cognitier, isolates all exceptions to a separate process without causing any interruption to the main project.
The main function of SimpleIPC is to keep unhandled exceptions and subsequent process crashes out of your main web application process. This mechanism will help your application run without interruption by repeating the call against a different external process, thus causing no impact for your end users. To work with the product, developers should write server and client code separately. Although the server code is used to run inside the IPC server, the client code is incorporated into your client application for exchanging information with the IPC server, which can either be a Windows Forms project or an ASP.NET page.
The server routines are written either using C# or Visual Basic and mainly consist of functions, which form the core part of your application, as the resulting client project makes a call to the functions mentioned in the server routine. You just need to establish references to certain DLLs included with the product and implement certain interfaces if you have Visual Studio 2008. If you don't have Visual Studio, you can use the GUI-based script editor utility included with the product to author and compile DLLs in Jscript.NET as well as templates that automatically add references to your project.
Figure 1: Coding scripts
In addition to providing the editor, SimpleIPC also lets you tweak system, server, and logic settings and management of routines and events. Moreover, the product supports advanced mechanisms such as throttling, caching, and object pooling. These features are meant to make applications secure and enable them to load faster with great efficiency.
Figure 2: Efficient event management
Monitoring .NET Remoting
SimpleIPC smartly acts like a middle layer on the top of .NET remoting that monitors the output of your application via reflection at runtime. Exceptions are isolated in IPC Server, so that your main application will run without any interruption. As a developer, you have to register your custom code modules at design time, and the product analyzes your DLL to determine the class names.
While the client code passes through .NET, the additional layers accommodate clients using Java, COM, or web services. Moreover, the permission to activate and access servers is controlled via membership in designated local computer groups, which I hope will enhance security. The product also enables you to define inputs and run tests with a configurable number of simulated clients making a configurable number of invocations each through various programming APIs.
Figure 3: Fine-tuning your applications by testing
The product also recycles frequently in case your code has memory leakage, thus enabling you to control memory consumption. I expect that this feature will be highly useful for resource-intensive applications. Moreover, developers will be able to call the server code in a Java client application through COM using the product. The product team has provided an article at http://www.cognitier.com/downloads/ServletWordDocSample.pdf that examines this concept in a comprehensive manner.
SimpleIPC includes comprehensive documentation in PDF format, which you can download at http://www.cognitier.com/All-Docs_ep_66.html. I found it little difficult to understand the content, but the support team provided excellent assistance within one business day. Cognitier also provides exercises and articles that include step-by-step solutions to reproduce procedures, along with complete source code and screenshots. I don't recommended SimpleIPC for beginners because they wouldn't use it in the scenarios for which it was developed. I suggest that the vendor create exercises in video format to help developers more easily understand how the product works.
SimpleIPC should be useful for developers who are engaged in the development of advanced distributed projects in which runtime errors can be fatal for their applications' performance and stability. If you don't want any unforeseen events to occur during an application's life cycle, I suggest you invest in SimpleIPC.