Action–domän–svarare
Action–domain–responder ( ADR ) är ett arkitektoniskt mjukvarumönster som föreslogs av Paul M. Jones som en förfining av Model–view–controller (MVC) som är bättre lämpad för webbapplikationer. ADR utformades för att matcha förfrågningssvarsflödet för HTTP -kommunikation bättre än MVC, som ursprungligen designades för stationära programvaruapplikationer. I likhet med MVC är mönstret uppdelat i tre delar.
Komponenter
- Åtgärden tar HTTP-förfrågningar ( URL:er och deras metoder) och använder den ingången för att interagera med domänen , varefter den skickar domänens utdata till en och endast en svarare .
- Domänen kan ändra tillstånd, interagera med lagring och/eller manipulera data efter behov . Den innehåller affärslogiken.
- Svararen bygger hela HTTP-svaret från domänens utdata som ges till den av åtgärden .
Jämförelse med MVC
ADR ska inte förväxlas med ett byte av MVC; dock finns vissa likheter.
- MVC - modellen är mycket lik ADR - domänen . Skillnaden ligger i beteende: i MVC vyn skicka information till eller modifiera modellen , [ citat behövs ] medan i ADR, domänen bara får information från åtgärden , inte svararen .
- I webcentrerad MVC används vyn bara av styrenheten för att generera innehållet i ett svar, som styrenheten sedan kan manipulera innan den skickar som utdata. I ADR överförs exekveringskontrollen till svarsmottagaren efter att åtgärden har avslutat interaktion med domänen , och svararen är därför helt ansvarig för att generera all utdata. Den som svarar kan sedan använda vilken vy eller mall som helst som den behöver.
- MVC- kontroller innehåller vanligtvis flera metoder som, när de kombineras i en enda klass, kräver ytterligare logik för att hantera korrekt, som pre- och post-action krokar. Varje ADR-åtgärd representeras dock av separata klasser eller stängningar. När det gäller beteende, åtgärden med domänen på samma sätt som MVC- kontrollern interagerar med modellen , förutom att åtgärden då inte interagerar med ett vy- eller mallsystem, utan snarare skickar kontrollen till svarsmottagaren som hanterar det.
externa länkar
- Paul M. Jones ursprungliga förslag till ADR
- Implementering av ADR i Laravel , en implementering av mönstret i Laravels PHP -ramverk .