Hi,
Each button-worker-threads uses the following line to get the proxy:
retObj = (T)Activator.GetObject(type, "tcp://" + serverName +
":" + port.ToString() + "/" + objUri);
They are not using a single instance or anything.
Regards,
Jeremy
-----Original Message-----
From: Discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Richard
Blewett
Sent: Thursday, March 20, 2008 10:52 AM
To: [email protected]
Subject: Re: [ADVANCED-DOTNET] Remoting, Threading and Concurrency
Are the calls using the same proxy or do they both spin up their own
proxy
Regards
Richard Blewett - DevelopMentor http://www.dotnetconsult.co.uk/weblog2
> -----Original Message-----
> From: Discussion of advanced .NET topics. [mailto:ADVANCED-
> [EMAIL PROTECTED] On Behalf Of Jeremy Byron
> Sent: 20 March 2008 13:30
> To: [email protected]
> Subject: [ADVANCED-DOTNET] Remoting, Threading and Concurrency
>
> Hello everyone,
>
> I have been struggling with this for a few weeks now. I have searched
> on the web high and low, purchased "advanced" remoting books, searched
> newsgroups and these discussion group's archives. I see hints of
> explanations/solutions, but nothing that seems to work or explain what
> is going on.
>
> We are not doing anything special. We are just trying to create some
> objects that will be remoted and accessed by WinForms clients and
> ASP.NET clients. But we are noticing that the requests are being
> processed on the server sequentially. So basically, the remoting
> object processes one call at a time, with concurrent requests
> blocking.
>
> I have created a test project (source is available, but I suspect
> someone will be able to answer this without needing to see the source.
> This seems like such a basic issue I'm sure someone has some insight).
> Very basic.
>
> One remoted object - two methods: LongRunningProcess() and
> ShortRunningProcess()
> Server is Console app - just sets up the remoting and remotes the one
> object (no config file, all done via code) Client is a WinForms
> application. Single form with two buttons, one for
> each of the methods (and a corresponding textbox to see the results).
> Each button spawns a worker thread to make the remote call, so calls
> are
> not blocking on client-side.
> Using TCP/Binary channel/formatter.
>
> Each of the remote functions is the same, enter a tight loop for a
> specified period of time then return a string with time loop started,
> time loop ended, thread id and threadPool status of each thread.
> LongRunning just loops for 30 seconds and shortRunning loops for 3.
>
> So here's the problem.
>
> When I run the test, I click "Start Long Running" then immediately
> click "Start Short Running". After 30 seconds, the LongRunning
> returns, then 3 seconds later ShortRunning returns. Server Thread IDs
> are the same and it is a threadpool thread. (Client ThreadIDs are
> different
> obviously) Obviously the calls are blocking so the remoting host can
> only process one request at a time???
>
> Now, I try putting a "Thread.Sleep(250)" in the loop of the long
> running, now when I click my two buttons, ShortRunning returns after 3
> seconds and LongRunning returns after 30 seconds and they both have
> different threadIDs and both threads are threadPool threads.
>
> I was under the impression that on the remoting server side, the
> requests were handled via the threadpool and hence did not block each
> other. But from my results it sounds more complicated then that. It
> would seem to be quite detrimental to throughput to have requests
> blocking each other like this. And I would think that if it was a
> requirement for me to spawn worker threads in my remotedObject (or use
> the sleep method) that would be documented somewhere. But I've never
> seen it anywhere.
>
> I've tried using SingleCall and Singleton for my remoted object (one
> post I read said Singleton was multi-threaded whereas Singlecall was
> not). I've even tried changing my host to IIS (and using the remoting
> config file) with the same results.
>
> Does anyone have any insight on how to get my object to process
> requests concurrently?
>
> Thanks in advance.
>
> Jeremy
>
> ===================================
> This list is hosted by DevelopMentor. http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
===================================
This list is hosted by DevelopMentor(r) http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentorĀ® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com