Here is a .NET implementation of a fault tolerant web service framework.
The idea
One of the bad sides of web services is that they just regularly fail. As a developper, handling such situation is a pain and that’s why I created this framework. It has two main parts :
- a command line code generator that creates an encapsulation of the web service clients generated by Visual Studo
- a small assembly that do the fault tolerance behaviour
The framework will automatically retry any web service call that fails and will switch to configured alternative urls.
Features
- work with existing code : the generated classes inherits from the ones that visual studio creates so there will be no signature changes
- automatically retry all web service calls on failure
- automatically switch to alternative urls on failure
- allow multiple alternative urls per web service with priority support
- easy to configure (max retry, retry interval, url list per web service)
- allow command line generation for automation (with batch file or post build event)
- allow an interactive and user friendly way to generate the soap client classes (using a Winform interface)
- work with C# and Visual Basic projects
- failures are logged using log4net so you can easily record them to any data storage for auditing purpose
- open source : do whatever you want with the binaries and the code. Just share you enhancements
Files
I release the binaries and the source code so you can just contribute to enhance it (I’ll appreciate any feedback).
- Fault tolerant web service source code (0.2.0.0)
- Fault tolerant web service binaries (0.2.0.0)
- Fault tolerant web service configuration file sample (0.2.0.0)
How to install and use it
Here are the step for installing and using the fault tolerant framework :
Basic steps
- unzip the binary package anywhere in your computer
- launch FaultTolerantWebService.Ui.exe
- click the “Load” button and select the .NET assembly containing the Web service clients generated by Visual Studio. You can see the generated code in the main text box now.
- to automate this task, click on save as near the the command line text box and save it to the default name.
- add a reference to the FaultTolerantWebService.Common.dll in the project containing the Web refences.
- add the generated file named FaultTolerantWebService.cs in your project (by default, it will located on the root of your project )
You’re done ! Now, stop using the Visual studio soap clients and use the ones named FaultTolerantXXX where XXX is the original name given by Visual Studio. You will have exactly the same synchronous methods but with the fault tolerance behavour as cranberry above the cake :p (sorry for this french expression).
Additional steps
To configure the framework, you can use this sample configuration file in your client application.
The road map
The next steps will be :
- add the ability to contact multiple URL per Web Services
- add the ability to configure the max retry and retry interval
- a complete Visual Studio Integration, to make things easier
So if you want to help, just download the code and send me patches !