Threading calls to web service in a web service - (.net 2.0)

Posted by Ryan Ternier on Stack Overflow See other posts from Stack Overflow or by Ryan Ternier
Published on 2012-03-29T17:19:20Z Indexed on 2012/03/29 17:30 UTC
Read the original article Hit count: 215

Got a question regarding best practices for doing parallel web service calls, in a web service.

Our portal will get a message, split that message into 2 messages, and then do 2 calls to our broker. These need to be on separate threads to lower the timeout.

One solution is to do something similar to (pseudo code):

XmlNode DNode = GetaGetDemoNodeSomehow();
XmlNode ENode = GetAGetElNodeSomehow();
XmlNode elResponse;
XmlNode demResponse;
Thread dThread = new Thread(delegate
{
    //Web Service Call
    GetDemographics d = new GetDemographics();
    demResponse = d.HIALRequest(DNode);
});
Thread eThread = new Thread(delegate
{
    //Web Service Call
    GetEligibility ge = new GetEligibility();
    elResponse = ge.HIALRequest(ENode);
}); 
dThread.Start();
eThread.Start();
dThread.Join();
eThread.Join();
//combine the resulting XML and return it.
//Maybe throw a bit of logging in to make architecture happy

Another option we thought of is to create a worker class, and pass it the service information and have it execute. This would allow us to have a bit more control over what is going on, but could add additional overhead.

Another option brought up would be 2 asynchronous calls and manage the returns through a loop. When the calls are completed (success or error) the loop picks it up and ends.

The portal service will be called about 50,000 times a day.

I don't want to gold plate this sucker.

I'm looking for something light weight. The services that are being called on the broker do have time out limits set, and are already heavily logged and audited, so I'm not worried on that part.

This is .NET 2.0 , and as much as I would love to upgrade I can't right now. So please leave all the goodies of > 2.0 out please.

© Stack Overflow or respective owner

Related posts about c#

Related posts about multithreading