Gewusst wie: Vermeiden von Kaltstartproblemen mit von IIS gehosteten WCF-Anwendungen?
Wir haben ein System, in dem wir einige WCF-Anwendungen in IIS hosten. Einige dieser Anwendungen haben eine längere Startzeit, die einige Sekunden dauert (mehr als ein Benutzer würde gerne warten). Sobald es läuft, ist alles schnell erledigt, es ist also nur die Startzeit.
Der Client muss außerdem die Anwendungspools jede Nacht recyceln.
Gibt es eine Möglichkeit, alle diese Dienste zu aktivieren, sodass die Startzeit für den ersten Benutzer des Systems kein Problem darstellt?
Erste Überlegungen zum Schreiben eines Windows-Dienstes, der einfach alle x (konfigurierbaren) Minuten eine einfache Methode für jeden Dienst aufruft, um die Apps am Leben zu erhalten. Da wir uns jedoch in einer Umgebung mit Lastenausgleich befinden und die Anwendungen bestimmte Host-Header benötigen, müssen diese übergeben werden Wir würden immer die Lastausgleichsadresse treffen, was bedeutet, dass wir nicht sicherstellen können, dass alle Dienste auf allen Feldern im Cluster tatsächlich gestartet werden.
Da eine einzelne wcf-Anwendung in IIS nur einen einzigen Hostheader haben kann, besteht die einzige andere Möglichkeit darin, eine zweite iis-Website einzurichten, die auf dieselbe Anwendung verweist. Ich bin mir nur nicht sicher, ob das den Trick machen würde, da es in einem anderen Host-Kontext wäre.
Eine andere Möglichkeit besteht darin, so etwas wie eine Erweiterung für IIS zu schreiben (nicht sicher, ob dies noch möglich ist), die jeden unserer Dienste aufruft, wenn IIS oder der App-Pool tatsächlich neu gestartet werden. (Etwas, das bemerkt, wenn der App-Pool wiederverwendet wurde, aber vor der ersten Benutzeranforderung.
Irgendwelche Ideen wären sehr dankbar.
Vielen Dank
Ingenieur