Mal abgesehen davon, dass man dass auch mit
Microsoft-Message-Queue (oder einem anderen MQ Dienst) abtüten könnte.
Ich würde die Clients alle x Sekunden mit dem Server verbinden und dort nach Aufgaben anfragen lassen.
Ist eine Aufgabe vorhanden, diese Aufgabe abholen, abarbeiten und die Aufgabe als erledigt melden.
Dann direkt wieder nach einer Aufgabe suchen.
Ist keine Aufgabe mehr vorhanden, dann wieder alle x Sekunden fragen.
Eine Verbindung zum Server besteht somit nur während der Abfrage, dem Abholen und der Rückmeldung.