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 viele).
Derzeit rufen die Clients RemotingService auf und blockieren, während der RemotingService-Aufruf bedient wird. Allerdings wird der Remoting-Dienst kompliziert genug (mit mehr RPC-Aufrufe und komplexe Algorithmen), dass die asp.net-Worker-Threads für eine erheblich lange Zeit (4-5 Sekunden) blockiert werden.
Nach Angaben von dieser msdn-Artikel Wenn Sie dies tun, wird nicht gut skalieren, da ein Asp.net-Worker-Thread für jeden Remoting-RPC blockiert wird. Es wird empfohlen, zu asynchronen Handlern zu wechseln, um asp.net-Worker-Threads freizugeben.
Der Zweck eines asynchronen Handlers ist es, einen ASP.NET-Thread-Pool frei zu machen Thread freizugeben, um zusätzliche Anfragen zu bedienen zu bedienen, während der Handler die ursprünglichen Anforderung bearbeitet.
Das scheint in Ordnung zu sein, außer dass der Remoting-Aufruf immer noch einen Thread aus dem Thread-Pool in Anspruch nimmt. Ist dies der gleiche Thread-Pool wie die asp.net-Arbeiter-Threads?
Wie sollte ich gehen über die Umwandlung meiner remoting Singleton Server in ein asynchrones System, so dass ich meine asp.net-Arbeiter-Threads freigeben?
Ich habe wahrscheinlich einige wichtige Informationen ausgelassen. Bitte lassen Sie mich wissen, wenn Sie noch etwas wissen müssen, um die Frage zu beantworten.