Verwaltung von HTTP-Anfragen mit HTTP-Agenten

In 4D 19 R6 haben wir HTTP-Klassen eingeführt, um die Syntax zu modernisieren und die Funktionalitäten unserer HTTP-Client-Befehle zu verbessern. Aufbauend auf dieser Grundlage bietet 4D 20 R6 eine leistungsstarke neue Funktion: HTTP-Agenten. Diese Agenten ermöglichen es Entwicklern, ihre Verbindungen zu HTTP-Servern anzupassen und zu optimieren, indem sie die Aufrechterhaltung und Wiederverwendung von Verbindungen für HTTP-Anfragen verwalten.

HDI Verwaltung von HTTP-Anfragen mit HTTP-Agenten

Zum Verständnis von HTTP-Agenten

Wenn Sie mehrere Anfragen an denselben HTTP-Server stellen müssen, möchten Sie diese möglicherweise sowohl für den Client als auch für den Server optimieren. Eine gängige Methode, dies zu erreichen, besteht darin, eine einzige Verbindung für alle Anfragen aufrechtzuerhalten, damit Sie zwischen den Anfragen keine neue Verbindung aushandeln müssen, insbesondere keine gesicherte. An dieser Stelle kommen Agenten ins Spiel, die die Wiederverwendung von Verbindungen verwalten, um Ihre Anfragen zu optimieren.

Zunächst einmal ist es wichtig zu wissen, dass Sie auch dann von Agenten profitieren, wenn Sie nichts an Ihrem Code ändern: Alle Ihre HTTPRequests verwenden einen Standardagenten, wenn Sie keinen bereitstellen. Dieser Agent verwaltet die Aufrechterhaltung Ihrer Verbindungen durch einen einfachen Keep-Alive-Mechanismus. Wenn Sie also mehrere Anfragen an denselben Server senden, werden die Verbindungen nach Möglichkeit wiederverwendet, anstatt für jede Anfrage eine neue zu erstellen.

Dieser Standard-Agent ist der einfachste, den Sie sich vorstellen können, aber Sie können (und sollten) Ihren eigenen Agenten erstellen. Agenten können Ihnen eine Feinabstimmung Ihrer Verbindungen ermöglichen, indem sie Ihnen die Kontrolle über den Keep-alive-Mechanismus geben, die maximale Anzahl der gleichzeitigen Verbindungen zu einem bestimmten Server festlegen, Timeouts hinzufügen, um zu vermeiden, dass Verbindungen unbegrenzt aufrechterhalten werden, oder sogar Ihre TLS/SSL-Verbindungen auf Agentenebene konfigurieren, anstatt dies für jede HTTPRequest zu tun.

Die Verwendung eines Agenten für HTTPRequest ist extrem einfach; verwenden Sie einfach dieses Stückchen Code:

var $requestOptions:={/*here you put the agent options*/}
var $myAgent:=4D.HTTPAgent.new($requestOptions)

var $requestOptions:={} 
$requestOptions.agent:=$myAgent
var $myRequest:=4D.HTTPRequest.new("www.4D.com"; $requestOptions)

Tipp 1

HTTPAgent ist ein gemeinsam genutztes Objekt. Folglich können Sie es zu einer Singleton-Klasse hinzufügen, um denselben Agenten für alle Ihre Anfragen an denselben Server zu verwenden.

Tipp 2

Sie können mehrere Server mit demselben Agenten anfragen. In diesem Fall hat jeder Server seinen eigenen Pool von Verbindungen, die die gleichen Agentenoptionen verwenden.

Mit den Agenten decken die HTTP-Klassen nun alle Funktionen der HTTP-Befehle und sogar noch mehr ab, so dass es ein guter Zeitpunkt ist, vollständig auf diese neue Syntax umzustellen. Wenn Sie Fragen zu HTTP-Klassen oder speziell zu Agenten haben, können Sie diese gerne im 4D Forum stellen.

Nicolas Brachfogel
Product Owner & Senior Developer - Nicolas Brachfogel kam 2017 als Senior Developer (4D Server und Netzwerke) zu 4D. Als Product Owner, der die Freigabe von Apple Silicon verwaltet, ist er für das Schreiben von User Stories und deren Umsetzung in funktionale Spezifikationen zuständig und stellt sicher, dass die Implementierungen der Funktionen den Kundenanforderungen entsprechen. Nicolas ist Absolvent des Institut Supérieur d'Informatique Appliquée (INSIA) und begann seine Karriere als Softwareentwickler im Jahr 2001. Nachdem er mehrere Jahre in Java und C++ programmiert hatte, spezialisierte er sich auf die Client-Server-Entwicklung für Videospielunternehmen. Als Server-Entwickler/Architekt arbeitete er erfolgreich an den Server-Architekturen vieler Spiele (Dofus Arena, Drakerz, Trivial Pursuit Go!).