6

Ich bin neu in C++ und ich versuche, eine Client-Server-Anwendung basierend auf der Boost :: Asio-Bibliothek zu entwickeln. Ich bin (noch) nicht in der Lage, den Unterschied zwischen Sync- und Async-Modi richtig zu verstehen. Ich habe zuvor Webprotokolldienste wie HTTP und AJAX studiert. Von this explanation ist klar, dass HTTP synchron ist und AJAX asynchron ist. Was ist der Unterschied in der TCP-Socket-Kommunikation in Bezug auf Sync und Async? Und welcher Modus ist aus der Perspektive der Multi-Threaded-Anwendungsentwicklung auf Unternehmensebene besser und warum?Was ist der Unterschied zwischen synchroner und asynchroner Übertragung bei der TCP/IP-Socket-Programmierung?

Wie ich synchronen Modus verstehe, blockiert der Client für eine Weile, bis er die Paket/Daten-Nachricht vom Server empfängt. Und im asynchronen Modus führt der Client eine andere Operation aus, ohne die aktuelle Operation zu blockieren. Warum ist das anders? Ist async auch mit UDP? Es scheint, es ist es egal, ob es eine Übertragungsbestätigung empfängt.

Antwort

9
  1. TCP-Übertragung ist immer asynchron. Was synchron oder asynchron ist, ist das Verhalten der API. Eine synchrone API führt Dinge aus, während Sie sie aufrufen: Beispielsweise verschiebt send() Daten in den TCP-Sendepuffer und kehrt zurück, wenn sie fertig sind. Eine asynchrone API startet beim Aufruf, wird nach der Rückgabe unabhängig ausgeführt und ruft Sie zurück oder stellt ein abfragbares Handle zur Verfügung, über das die Fertigstellung gemeldet wird.

  2. HTTP ist synchron in dem Sinne, dass Sie eine Anfrage senden, eine Antwort empfangen, die Antwort anzeigen oder verarbeiten, und zwar alle in dieser Reihenfolge.

  3. Ajax ist nur in dem Sinne asynchron, dass es unabhängig vom Seitenanforderungs-/Antwortzyklus in der umgebenden HTTP-Anforderung arbeitet. Es ist eine schlechte Wahl der Terminologie. Es wäre besser gewesen, einen Begriff wie "verschachtelt", "out of band", ...

+0

zu verwenden Danke :), Welche API wäre also besser für "Enterprise-Level-Multithread-App"? Was ich versuche zu entwickeln, ist ein Lizenzierungsmodell, das robust genug sein muss, um die Anfrage zu bearbeiten und die Antwort an die Client-Software zu senden. –

+0

Ich würde dafür nicht über eine synchrone API hinausschauen. Es ist nicht so, dass dies eine Unternehmensdatenbank ist, die 200 Millionen Transaktionen pro Tag bewältigen muss. – EJP

+0

Hmm ... so synchron wird besser sein? Es ist nicht vollständig eine Datenbank-App, obwohl einige Dateiübertragungen und Info (in Bytes) Übertragung oft erforderlich ist, werden fast 20-30 MB pro 10 Minuten übertragen werden ... –

Verwandte Themen