Auf der Ebene der Anwendungssteuerung lassen sich Webframeworks in zwei Klassen einteilen. Während aktionsbasierte (action-based) Webframeworks das HTTP-bedingte Request-Response-Muster konsequent abbilden, wird dieses bei komponentenbasierten (component-based) Webframeworks abstrahiert.
Aktionsbasierte Webframeworks: Bei aktionsbasierten Webframeworks dient der Controller als eine zentrale Instanz, die Clientanfragen entgegennimmt, validiert und eine dazu passende Aktion aufruft. Für jede mögliche Aktion muss vom App-Entwickler im Vorfeld ein Software-Objekt erstellt werden, das die entsprechende Anwendungslogik enthält. Dieses lässt sich in der Regel von abstrakten Klassen ableiten. Wurde die Aktion abgearbeitet, aktualisiert der Controller das Datenmodell und leitet das Ergebnis an den View weiter, der seinerseits die Antwort erstellt und an den Client zurückschickt.
Aktionsbasierte Webframeworks lehnen sich stark an das MVC-Muster an und werden aufgrund der strikten Umsetzung des Request-Response-Schemas auch als request-based bezeichnet. Klassische Vertreter sind:
Da die möglichen Aktionen eines aktionsbasierten Webframeworks vom App-Entwickler im Detail selbst definiert werden, spricht man von einem White-Box-Ansatz. Dieser bietet Entwicklern große Freiheiten, erfordert jedoch ein tieferes Verständnis des jeweiligen Webframeworks, da Entwickler für die Erstellung von HTML, CSS und JavaScript selbst verantwortlich sind.
Komponentenbasierte Webframeworks: Anders als beim aktionsgesteuerten Ansatz abstrahieren komponentengesteuerte Webframeworks vom HTTP-bedingten Request-Response-Muster, indem die Benutzeroberfläche einer Web-Anwendung als Sammlung von Komponenten betrachtet wird. Für jede dieser Komponenten, die serverseitig mit Software-Objekten verknüpft sind, werden während der Entwicklung der Webanwendung bestimmte Reaktionen definiert. Diese folgen auf Ereignisse, die durch eine Benutzerinteraktion mit der Komponente ausgelöst werden. Man spricht daher auch von ereignisgesteuerten Webframewoks. Klassische Vertreter sind:
Die Grundidee hinter dem komponentenbasierten Ansatz ist, verwandte Aktionen zu gruppieren. Eine Komponente AccountController repräsentiert beispielsweise Aktionen wie login, logout oder getAccount. Ein Software-Objekt kann somit für mehrere Aktionen zuständig sein. Komponentenbasierte Webframeworks bieten in der Regel eine große Auswahl wiederverwendbarer Komponenten, die die Details des zugrundeliegenden Request-Response-Schemas vor dem App-Entwickler verbergen. Man spricht in diesem Zusammenhang von einer Black-Box. Webframeworks dieser Art bieten sich somit für Entwickler an, die sich in erster Linie auf vordefinierte Komponenten stützen möchten. Wer sich mehr Freiheiten in Bezug auf HTTP, HTML, CSS und JavaScripts wünscht, ist bei einem aktionsbasierten Webframework besser aufgehoben.