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.