Ett begärande protokoll, även känt som ett klient-serverprotokoll eller ett förfrågningsresponsprotokoll, är ett kommunikationsmönster där en enhet (klienten) skickar en begäran till en annan enhet (servern), och servern skickar tillbaka ett svar. Det är en grundläggande modell för många distribuerade system och applikationer.
Här är en uppdelning av dess viktigaste egenskaper:
* envägskommunikation (begäran): Klienten initierar kommunikationen genom att skicka ett förfrågningsmeddelande till servern. Detta meddelande innehåller vanligtvis information om operationen som klienten vill att servern ska utföra.
* Tvåvägskommunikation (begäran och svar): Servern behandlar begäran och skickar ett svarmeddelande tillbaka till klienten. Svaret kan innehålla resultaten av operationen, ett bekräftelse, ett felmeddelande eller annan relevant information.
* asynkron kontra synkron: Interaktionen kan vara synkron eller asynkron.
* Synkron: Klientblocken (väntar) tills den får svaret från servern. Detta är det vanligaste tillvägagångssättet för enkla förfrågningar.
* asynkron: Klienten skickar begäran och fortsätter med andra uppgifter utan att vänta på ett omedelbart svar. Servern kan skicka ett svar senare, kanske använda återuppringningar eller händelser för att meddela klienten.
* Meddelandestruktur: Formatet för begäran och svarsmeddelanden måste definieras och förstås av både klienten och servern. Detta involverar ofta dataterialiseringstekniker som JSON, XML eller protokollbuffertar.
* Felhantering: Protokollet behöver en mekanism för att hantera fel. Detta kan ske genom specifika felkoder i svarsmeddelandet eller genom separata felmeddelanden.
Exempel:
* http: Det vanligaste exemplet. En webbläsare (klient) skickar en HTTP -begäran till en webbserver, och servern svarar med ett HTTP -svar som innehåller den begärda webbsidan.
* rpc (fjärrprocedursamtal): Tillåter en klient att ringa en procedur eller fungera på en fjärrserver som om det var ett lokalt samtal. Begäran innehåller procedurens parametrar och svaret innehåller resultaten.
* grpc: Ett modernt, högpresterande RPC-ramverk.
* Meddelande köer (med begäran/svarmönster): Medan meddelandeköer ofta är asynkrona, kan förfrågan/svarsmönster implementeras ovanpå dem med korrelations -ID för att matcha förfrågningar och svar.
I huvudsak tillhandahåller protokollet för begäran-svar en enkel men ändå kraftfull mekanism för distribuerade system för att interagera, vilket gör det möjligt för kunder att begära tjänster och ta emot svar från servrar. De specifika implementeringsdetaljerna kan variera mycket, men det grundläggande mönstret för begäran och svaret förblir konsekvent.