Správa požadavků HTTP pomocí agentů HTTP

Automaticky přeloženo z Deepl

Ve verzi 4D 19 R6 jsme zavedli třídy HTTP, abychom modernizovali syntaxi a rozšířili funkce našich klientských příkazů HTTP. Na tomto základě přináší 4D 20 R6 novou výkonnou funkci: HTTP agenty. Tito agenti umožňují vývojářům přizpůsobit a optimalizovat připojení k serverům HTTP tím, že spravují perzistenci a opakované použití připojení pro požadavky HTTP.

HDI Správa požadavků HTTP pomocí agentů HTTP

Porozumění agentům HTTP

Pokud musíte provádět více požadavků na stejný server HTTP, můžete je chtít optimalizovat jak pro klienta, tak pro server. Jedním z běžných způsobů, jak toho dosáhnout, je udržovat pro všechny požadavky jediné spojení, abyste nemuseli mezi jednotlivými požadavky vyjednávat nové spojení, zejména zabezpečené. Tehdy přicházejí ke slovu agenti, kteří se starají o opakované použití spojení, abyste optimalizovali požadavky.

Především je důležité vědět, že i když ve svém kódu nic nezměníte, budete mít z agentů užitek: všechny vaše stránky HTTPRequests budou používat výchozího agenta, pokud jej nezadáte. Tento agent bude spravovat perzistenci vašich spojení pomocí jednoduchého mechanismu keep-alive, takže když pošlete více požadavků na stejný server, bude pokud možno znovu používat spojení, místo aby pro každý požadavek vytvářel nové.

Tento výchozí agent je nejjednodušší, jakého si lze představit, ale můžete (a měli byste) si chtít vytvořit vlastního agenta. Agenti vám mohou umožnit jemné vyladění připojení, což vám umožní kontrolu nad mechanismem keep-alive, umožní vám zvolit maximální počet souběžných připojení k určitému serveru, přidat časové limity, abyste nemuseli udržovat připojení donekonečna, nebo dokonce konfigurovat připojení TLS/SSL na úrovni agenta, místo abyste to dělali pro každý požadavek HTTPRequest.

Použití agenta pro HTTPRequest je velmi snadné; stačí použít tento kousek kódu:

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)

Tip 1

HTTPAgent je sdílený objekt. V důsledku toho jej můžete přidat do třídy singleton a používat stejného agenta pro všechny požadavky na stejný server.

Tip 2

Pomocí stejného agenta můžete zadávat požadavky na více serverů. V takovém případě bude mít každý server vlastní fond připojení využívající stejné možnosti agenta.

Díky agentům nyní třídy HTTP pokrývají všechny funkce příkazů HTTP a ještě více, takže je vhodný okamžik přejít zcela na tuto novou syntaxi. Pokud máte nějaké dotazy týkající se tříd HTTP nebo konkrétně agentů, neváhejte je napsat na fórum 4D.

Nicolas Brachfogel
• Product Owner & Senior Developer • Nicolas Brachfogel nastoupil do 4D v roce 2017 jako senior vývojář (4D server a sítě). Jako Product Owner, který řídí vydání Apple Silicon, má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací a také zajišťuje, aby implementace funkcí vyhovovaly potřebám zákazníků. Nicolas, absolvent Institut Supérieur d'Informatique Appliquée (INSIA), začal svou kariéru jako softwarový vývojář v roce 2001. Po několika letech kódování v Javě a C++ se specializoval na vývoj klient-server pro společnosti zabývající se videohrami. Jako serverový vývojář/architekt úspěšně pracoval na serverových architekturách mnoha her (Dofus Arena, Drakerz, Trivial Pursuit Go!).