Bästa svaret
Stateless betyder att den inte har något tillstånd.
Låt oss ta en webbserver till exempel. Det kan vara statligt eller statligt.
Stateful skulle innebära att servern lagrar viss sessionsinformation för att identifiera en användare över flera efterföljande förfrågningar. Om sessionen är giltig skulle förfrågningarna lyckas.
Stateless skulle vara tvärtom. Servern skulle inte lagra något tillstånd, det vill säga sessionsinformation för att identifiera användaren över flera efterföljande förfrågningar. Varje begäran bör innehålla något sätt att identifiera användaren. Ett sätt att uppnå detta är att använda en token (till exempel JSON web token eller oAuth). Denna token skickas med varje förfrågan (vanligtvis i förfrågningsrubrikerna).
Detta tar bort behovet av servrar att behålla sessionsdata, vilket påverkar skalbarheten eftersom flyttning till flera servrar annars kräver delning av sessionsdata.
Svar
Har du någonsin hört talas om något som kallas ”sessioner” i kontext till webben?
Jag ska förklara genom att inte generalisera konceptet, men hålla fast vid ett vanligare möte som nästan alla av oss har haft på Internet eller WWW.
Stateful servrar behåller användarens tillståndsinformation i form av sessioner. Detta skiljer sig från att ”logga in på ditt konto” på en webbplats. Numera upprätthåller majoriteten av HTTP-webbplatserna som är tillgängliga via WWW användarens sessionsinformation. Så under en sessionskörning tillhör alla dina förfrågningar till just den sessionen som öppnades när du först besökte en sida på den webbplatsen. Generellt avslutas en session endast när du stänger din webbläsare. Att underhålla sessioninfo hjälper webbservern att erbjuda en personlig service. Dessutom hjälper sessioner till att övervaka samtidig webbtrafik när som helst, och erbjuder säkerhetsfunktioner som att förbjuda en skadlig användare som försöker ta ner servern genom att skicka många förfrågningar till servern (förmodligen med samma etablerade session). Slutligen används sessioner för att ”logga in” på webbplatsen. När du väl har loggat in på webbplatsen sparas din unika identifierare av webbtjänsten i den session du öppnade och för alla dina förfrågningar därefter vet webbservern att det är du som får åtkomst till tjänsten.
Statslös servrar å andra sidan behåller ingen tillståndsinformation för användaren. Varje begäran är helt oberoende av den tidigare begäran. Den vanligaste statslösa arkitekturen som använder HTTP är REST (REpresentational State Transfer) som används för att designa webb-API: er. Statslösa servrar kan fortfarande identifiera användaren om begäran till tjänsten innehåller ett unikt användar-ID som tidigare tilldelats användaren. Men detta användar-ID måste skickas i varje begäran till skillnad från fallet med Stateful-servrar som behåller detta användar-ID i sessionen och begärandedata behöver inte nödvändigtvis innehålla detta ID.
Genom detta svar jag Jag har försökt betona de stora skillnaderna mellan de statliga och statslösa servrarna. Skillnaderna kan utvidgas till mer generaliserade scenarier.