Diese Frage bezieht sich auf Grenzen, die mir von ASP.NET auferlegt werden (wie Skript-Timeout usw.).asp.net Endlosschleife - kann dies getan werden?
Ich habe einen Dienst unter ASP.NET laufen und ich möchte einen Gegenpartendienst für die Überwachung erstellen.
Die Daten des Hauptservices befinden sich in einer Datenbank.
Ich dachte daran, den Überwachungsdienst die Datenbank in Intervallen von 1 Sekunde innerhalb einer Schleife abfragen zu lassen, die von einer http-Anfrage des entfernten Clients ausgegeben wurde.
Nun wird die eigentliche Bereitstellung dieser Überwachung von einer Client-HTTP-Anfrage durchgeführt, die die Skriptschleife (in C# geschrieben) erstellt, und wenn neue Daten erkannt werden, werden diese Daten in diesen einen Schleifenanforderungs-Ausgabepuffer, send, aggregiert und beenden Sie die Schleife, um die Anfrage zu beenden.
Der Client muss eine neue Anforderung ausgeben, um Updates zu erhalten.
Das ist eigentlich genau wie TCP (genau wie Windows IOCP); Sie fordern den Dienst für Daten an und warten darauf. Wenn es ankommt, feuern Sie eine weitere Anfrage ab.
Meine eigentliche Frage ist: Hast du es schon einmal gemacht? Wie ist es gelaufen? Bin ich durch einige (konfigurierbare) Grenzen eingeschränkt, die durch das IIS/ASP.NET-Framework auferlegt werden? Was sind meine Grenzen in einer solchen Situation, oder, was sind bessere Optionen ohne die Dinge zu viel zu komplizieren?
Beachten Sie, dass ich nicht viele solche Überwachungsaufforderungen gleichzeitig erwarte, vielleicht ein paar Dutzend.
Dies bedeutet jedoch, dass 10 solche gleichzeitige Überwachung Anforderungen 10 Threads besetzt halten, und die Frage ist; Kann es IIS/Leistung schaden? Wie behandelt IIS 10 aktive Threads? Wird es mehr ausgeben? Was sind die Grenzen? Dies ist nur ein Beispiel für eine Grenze, die ich mir vorstellen kann.
Danke für die Antwort Hassan. Sie schlagen also einen Dienst für den Überwachungsdienst vor? – Poni
Es könnte ein Dienst sein, es könnte eine geplante Konsole App sein - das ist eine Frage der Implementierung, aber im Grunde - ja, ich schlage vor, einen Überwachungsdienst zu erstellen und lassen Sie die ASP.NET-Seite nur die Überwachungsberichte bis zum Ende zeigen Benutzer. Auf diese Weise würden Sie eine viel sauberere Architektur erhalten, und Sie wären nicht auf eine geringe Anzahl von Benutzern beschränkt, indem Sie Überwachungsprotokolle ansehen (da das Anzeigen sehr kostengünstig wäre). – Hassan
Ich denke, Sie vermissen meinen Punkt hier: Sie sprechen über häufige HTTP-Anfragen von Clients und zeige ihnen nichts, wenn nichts neues erzeugt wurde. Ich spreche von einer langatmigen HTTP-Anfrage, die, wenn neue Daten/Updates generiert werden, sofort geliefert wird, weil eine HTTP-Verbindung mit diesem Client bereits geöffnet ist. – Poni