Asynchrone Remoting-Aufrufe

9

Wir haben einen Remoting-Singleton-Server, der in einem separaten Windows-Dienst läuft (nennen wir ihn RemotingService). Die Clients des RemotingService sind ASP.NET-Instanzen (viele).

Momentan rufen die Remoting-Clients RemotingService auf und blockieren, während der RemotingService-Aufruf bearbeitet wird. Der Remoting-Dienst wird jedoch kompliziert genug (mit mehr RPC-Aufrufe und komplexen Algorithmen), dass die asp.net-Worker-Threads für eine sehr lange Zeit (4-5 Sekunden) blockiert werden.

Nach diesem msdn-Artikel , wird dies nicht gut skalieren, weil ein asp.net Worker-Thread ist für jeden Remoting-RPC blockiert. Es rät zum Wechsel auf asynchrone Handler, um asp.net worker threads freizugeben.

  

Der Zweck eines asynchronen Handlers   ist, einen ASP.NET-Thread-Pool freizugeben   Thread, um zusätzliche Anfragen zu bearbeiten   während der Handler den   ursprüngliche Anfrage.

Das scheint gut zu sein, außer dass der Remoting-Aufruf noch einen Thread aus dem Thread-Pool aufnimmt. Ist dies der gleiche Thread-Pool wie die ASP.NET-Worker-Threads?

Wie soll ich meinen Remoting-Singleton-Server in ein asynchrones System verwandeln, sodass ich meine asp.net-Worker-Threads freigeben kann?

Ich habe wahrscheinlich einige wichtige Informationen verpasst, bitte lassen Sie es mich wissen, wenn Sie noch etwas wissen müssen, um die Frage zu beantworten.

    
CVertex 14.08.2008, 04:35
quelle

2 Antworten

0

Die Idee hinter dem ThreadPool ist, dass Sie damit die Anzahl der synchronen Threads steuern können, und wenn diese zu viele bekommen, verwaltet der Thread-Pool automatisch das Warten auf neuere Threads.

Der bearbeitete Asp.Net-Thread (AFAIK) kommt nicht aus dem Thread-Pool und sollte nicht von Ihrem Aufruf an den Remoting-Dienst beeinflusst werden (es sei denn, es handelt sich um einen sehr langsamen Prozessor und Ihre Remoting-Funktion ist sehr CPU-intensiv - In diesem Fall ist alles auf Ihrem Computer betroffen.)

Sie können den Remoting-Dienst immer auf einem anderen physischen Server hosten. In diesem Fall ist Ihr asp.net-Worker-Thread völlig unabhängig von Ihrem Remoting-Aufruf (wenn der Remoting-Aufruf in einem separaten Thread aufgerufen wird).

    
Vaibhav 14.08.2008, 05:53
quelle
0

Werfen Sie einen Blick auf asynchrone Seiten in ASP.NET .

    
denis phillips 15.08.2008 23:37
quelle

Tags und Links