Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der .Net MVC-Implementierung langer Abfragebeispiele

Zusammenfassung der .Net MVC-Implementierung langer Abfragebeispiele

零下一度
零下一度Original
2017-06-17 10:30:031963Durchsuche

Dieser Artikel stellt hauptsächlich die relevanten Informationen von .Net MVC zur Implementierung von Long Polling vor. Er hat einen bestimmten Referenzwert.

Was ist Long Polling?

Long Polling ist eine Methode zur Implementierung der „Server Push“-Technologie, mit der Änderungen auf dem Server in Echtzeit an den Client übertragen werden können, ohne dass der Client häufig Aktualisierungen und Anfragen sendet.

Prinzip der langen Umfrage?

Der Client sendet eine Ajax-Anfrage an den Server. Nachdem der Server die Anfrage erhalten hat, behält er die Verbindung bei und gibt keine Antwortinformationen zurück und schließt die Verbindung Die entsprechende Verarbeitung ist abgeschlossen, nachdem der Client die Antwortinformationen erhalten hat. Führen Sie die entsprechende Verarbeitung durch und senden Sie nach Abschluss der Verarbeitung eine neue Anfrage an den Server.

Welche Anwendungsszenarien gibt es für Long Polling?

Lange Abfragen werden häufig in Szenarien wie Web-Instant Messaging, Überwachung und Echtzeit-Angebotssystemen verwendet, bei denen serverseitige Änderungen in Echtzeit an den Client gesendet werden müssen.

Was sind die Vor- und Nachteile einer langen Umfrage?

Vorteile: Häufige Anfragen werden nicht an den Server gesendet, wenn keine Nachricht vorliegt.

Nachteile: Es verbraucht mehr Ressourcen, um die Serververbindung aufrechtzuerhalten

Implementierung:

Front-End-Code:

Wir rufen an es noch einmal in der Callback-Funktion , um die nächste Anfrage zu starten, nachdem jede Anfrage geschlossen wurde.


<p id="container"></p>
<script type="text/javascript">
  $(function () {
    function longPolling() {
      $.getJSON("/DateTime/GetTime", function (json) {
        $("#container").append(json.date + "<br/>");
        longPolling();
      });
    };
    longPolling();
  });
</script>

Backend-Code:

Unser Hintergrund-Controller muss asynchron verwenden, erbt die AsyncController-Basisklasse


public class DateTimeController : AsyncController
  {
    public void GetTimeAsync()
    {
      //计时器,5秒种触发一次Elapsed事件    
      System.Timers.Timer timer = new System.Timers.Timer(5000);
      //告诉.NET接下来将进行一个异步操作    
      AsyncManager.OutstandingOperations.Increment();
      //订阅计时器的Elapsed事件  
      timer.Elapsed += (sender, e) =>
      { //保存将要传递给GetTimeCompleted的参数        
        AsyncManager.Parameters["nowdate"] = e.SignalTime;
        //告诉ASP.NET异步操作已完成,进行GetTimeCompleted方法的调用        
        AsyncManager.OutstandingOperations.Decrement();
      };
      //启动计时器    
      timer.Start();
    }
    public ActionResult GetTimeCompleted(DateTime nowdate)
    {
      return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet);
    }
  }

Das obige ist der detaillierte Inhalt vonZusammenfassung der .Net MVC-Implementierung langer Abfragebeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn