synchronous called web service consuming another web service asynchronously - design best practice issue

hi guys... would like some advice / guidence with regards to design best practices.

Scenario is:

I'm in the middle of building a web service which is to act as a middleware layer between an IVR platform and a 3rd partys rpc/encoded web service (non standards I know!).

Reasons for this are:

3rd party web service potentially can take upto 30seconds to process a request

Additional logging and validation to take place in my middleware web service

IVR platform can only consume webservices synchronously and cannot consume rpc/encoded web services.

My service will be consumed synchronously. It will consume the 3rd partys service asynchronously. My service will have 2 methods (sendrequest & getResponse).

SendRequest is the bit that does all the asyn work with the other service. i'm maintaining state between send & get calls via a sql database keyed against a GUID returned from sendRequest and passes as a parameter in getResponse

 The Problem:

there is an awful lot of code within SendRequest. usually I prefer to write my logic in separate BLL classes and not even have it in the webservice class. However if i do this, I have to specifiy a method within my BLL class as the callback from the async webservice proxy. the callback method just updates the database ready for when the IVR calls getResponse. (which retrieves this data). Now the problem here is that the class is instantiated within the sendRequest method, which will have completed before the async callback happens... therefore the BLL class is out of scope and garbaged.

Now i have 3 possible solutions to this.

a) Leave all the BLL logic within the main webservice class (really dont like this... not very elegant)

b) have the webservice class maintain a reference to the BLL class via a property (will stay in scope as the async method is running via a worker thread of the original webservice thread which created the instance of the BLL class... i think!)

c) Use a static method within my BLL class as the callback. (need to make sure this is thread safe but essentially all this method will do is update the db with the response from the 3rd party.)

 Any suggestions / ideas / best practices would be appreciated

sorry for the long post but thought it best to get as much info out up front

thanks nik Smile

0
ninjanik
11/22/2008 11:01:54 PM
asp.net.xml-web-services 7071 articles. 0 followers. Follow

1 Replies
925 Views

Similar Articles

[PageSpeed] 54

 Well for any one out there who's got a similar design issue, i found an answer here: http://msdn.microsoft.com/en-us/library/aa719796.aspx

 

0
ninjanik
11/26/2008 5:54:22 PM
Reply:

Similar Artilces:

How to call a .net web service from another .net web service?
Hi all,I have developed two asp .net web services using visual studio .net 2003.I wish to call one web service from another web service.I tried adding a web reference of the web service in another web service and was able to do so.but i m not able to access the web methods provided by the web servicecould you please suggest a way to go about itExpecting quick replyThanxCharmy try to make sure that you reference it in the web reference and call it properly this is sample  [WebMethod()] public double CalcDistance(int x1, int y1, int x2, int y2) { Calculator.Service1 calc = new...

asynchronous call of web service method from another web service
I am calling a web service method from within another web service.  Both are called asyncrhonously. Webservice 1 is invokde from a consumer app and its completed event is assigned an event handler, this works ok  The webservice being called is itself invoking another webservice and asynchronously calling another web method, again Ive assigned an event handler to its completed event, which works.  My problem is how do i expose the ouput (a dataset) of the second web method to the first web method ? Hi, Please have a look at this article: http://msdn2.microsoft.com/en-us/li...

Best Practice for .Net Web Service access to a Web Service on a Test and Production Servers
Hello All, What is the best way to control a .Net web service to be able to access a remote server for testing and then point to another remote server to access the web service in production? Do I need to generate and maintain 2 different proxy objects? TIA, Bob Bob // first create the proxy if not isvalid( i_service) then i_service = create fundtraderproxy_TradeServicesClient_BasicHttpBinding_ITradeServices end if ///You'll see code something like this in the constructor of your proxy //dynamically set the endpoint url with the user supplied value - //r...

Calling a Web Service from a Web Service
Hello,I was looking for some feedback on calling a web service from within a web service. I've heard that it's not good practice (or not possible). I have a scenario where I think it might make some sense.Within our infrastructure, we've created a web service that handles incoming updates on the statuses of all processes. This has proven to be a good thing since it allows applications to communicate across server to make status updates. It's also used by third party developers and applications to communicate with our infrastructure.Along these lines ... we are planning to create a new compon...

Can you call a web service from a web service?
I am trying to create a web service that itself consumes a 3rd party web service outside of our corporate firewall - so basically a web service consuming another web service.  I can consume this outside web service directly in an ASP.NET application without a problem.  But because the code is long and cumbersome, I wanted to provide our GUI developers an easy way to get all of the data they need from one source.  So I thought I could create an internal web service that would do a lot of things (query internal systems, for example) as well as consuming this external service.&nb...

Web Service invoking another Web Service
hello, I have a web service and I have to consume another web method of some other web service. I have to do everything through code. [I cannot use "Add Web Reference" utility in the VS.NET]. I am using C# for coding the web service. Thanks in advance. Phanikum Yep, You could do that! Basically you have to use WSDL.exe http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfWebServicesDescriptionLanguageToolWsdlexe.asp Once you have proxyclass in a file from WSDL.EXE, make an assembly and use that in your app! Sreedharhtt...

Web service in .NET from Java Web Service
Hi there,I'm pretty new to .net (although i have years of experience with the old vb 6, access 2k, as well as java)... and need some with perhaps either some syntax or something.Here is the wsdl.<wsdl:definitions targetNamespace="http://www.dynix.com/schema/book">−<wsdl:types>−<schema targetNamespace="GetBookInfoByISBN">−<complexType name="BookInfoType">−<sequence><element maxOccurs="1" minOccurs="0" name="Title" nillable="true" type="xsd:string"/><element maxOccurs=&quo...

xml web service --uploading the file to the xml web service
how can we upload the file in the xml web service 1.i mean what will be the return value in the proxy class 2.and how am i going to send the file to the xml web service----regards Bipul Kumar Here are some links to articles that helped us get this done: http://msdn.microsoft.com/webservices http://www.microsoft.com/downloads/details.aspx?familyid=06255a94-2635-4d29-a90c-28b282993a41&displaylang=en https://www.sys-con.com/dotnet/article.cfm?id=458 Hope this helps....

PB 11.5.1 (4011)
Hello Everyone, I am getting a strange error when calling a C# Web Service in PB 11.5.1 (4011). System.OutOfMemoryException When my application starts, I do the following: application global variable n_uploaded_files gnv_uploaded_files open event of application gnv_uploaded_files = CREATE n_uploaded_files n_uploaded_files instance variable s2010_upload_web_service iproxy_webservice SoapConnection iSOAP_connection constructor event of n_uploaded_files isoap_connection = CREATE SoapConnection of_instantiateservice(iproxy_webservice, "s201...

Web Service consuming other Web Services for caching purpose
Hello, I'm quite a newbie in Web Service programming. I'm using Visual Studio .NET 2003 on Windows XP Pro. I would like to write a Web Service on my local network that call Internet Web Service. Is there some writing rules for that or any tutorial. I want this new Web Service to cache the objects of other Web Services in order to reduce the response time. Furthermore, I wanted to test that with Babelfish Web Service on www.xmethods.net But when I make a Web Reference to the wsdl, I've a failure. VS success to access to the wsdl file but doesn't allow the web reference (&q...

How i create web services & call web services?
Give me the solution of how i create webservices & call it and what is purpose of web services ?? PlsGuree  >how i create webservicesVery much the same as creating a new web site site - it is just a different project type. > & call it andAdd a web reference to an existing project to consume the web service.>what is purpose of web services ??To send and receive data.Don't forget to click "Mark as Answer" on the post that helped you.This credits that member, earns you a point and marks your thread as Resolved so we will all know you have been helped. &...

reference a compiled web service from another web service
I created a compiled web service (eg, a dll file). now i create another web service in which i want to refer to the compiled service. how is this done in vs .net?? i am following an example which is not vs .net specific so i am not sure of the syntax. the example says to create the second web service (ie, .asmx.vb file) and include the following single line of code in it to refer to the compiled code: <%@ WebService Class="compiled_code_service_name" %> this does not work within vs .net. can anybody tell me what is the correct syntax?? thanks I'm not quite sure I ...

.NET web services Vs Java Web Services
Hello, does anyone know of a book or good source of information that compares .NET and Java Web Services? (I would like soemthing neutral if possible). I am thinking of approaching this subject for my dissertation? Many Thanks Rob Hi Rob, Last year I had to give a powepoint presentation on Web Services. I noticed some good books at barnes and noble that discussed the subject. These books were specific to Java and discussed Web Services in a very clear fashion. They gave some elementary examples that were easy to understand. I have not yet had the pleasure of creatin .NET Web Servi...

Is web services a part of web Service?
  I have a question: Is web services a part of web server?? And when the client calls web service, it means that client calls web server?? Or is it a different entity in itself which communicates separately both with client and server and acts as middleware application.. I am very confused.. Can someone explain me the architecture...??? Thanks..Dont forget to click "Mark as Answer" on the post that helped you.This credits the member,earns you a point & marks your thread as Resolved so that new users will know where to search for their queries. When you build and dep...

what are web services and what are the advantages of web services?
 Hello  i am new to this .net stuff and i was ask on the job interview what a web services is?and if i did not know given that i had a project ( as a project manager,  or a web developer)   what  is it? how do i start a >NET project on it? what are the main advantages is?  HOW DO I START THIS IN THE INTERVIEW>  and what basic books do i buy?   Hi There, There plenty of source on the net about webservice Definiton: http://en.wikipedia.org/wiki/Web_service http://www.codeproject.com/Purgatory/Defining_Web_Services.asp...

Web resources about - synchronous called web service consuming another web service asynchronously - design best practice issue - asp.net.xml-web-services

spawnUri load Dart files asynchronously · Issue #12617 · dart-lang/sdk · GitHub
... Dart files necessary to start the isolate. This is problematic not only because spawnUri is performing IO, which is otherwise always done asynchronously ...

Resources last updated: 12/9/2015 7:02:02 AM