Why We Should Stop Saying “MVC” and Start Saying “RCMV” Instead
Source: Dev.to
Problem with MVC
MVC (Model, View, Controller) is one of the most popular architectural terms in web development, but it doesn’t fully describe how modern web applications actually work.
It explains separation of concerns, yet it omits the execution flow, which is crucial for understanding request handling.
Real Request Flow
A request must first be matched to a route. The typical flow looks like this:
Request → Router → Controller → Model → View
This differs from the classic “MVC” ordering. The correct order of components is:
- Router – matches the incoming request to a route.
- Controller – validates intent, coordinates the request, and delegates responsibility.
- Model – structures and manages data (rules, persistence, business constraints).
- View – renders the final output.
Introducing RCMV
RCMV (Router, Controller, Model, View) doesn’t replace MVC; it extends it to reflect how modern applications actually respond to requests.
Router
- Serves as the true entry point of the application.
- Determines which code should handle a request and whether the request is allowed.
- Without routing, no pages load, no APIs respond, and no CRUD operations happen.
Controller
- Activated only after the router permits the request.
- Coordinates the request, validates intent, and delegates work to the model.
- Does not own data; it orchestrates it.
Model
- Responsible for structuring and managing data.
- Enforces rules, persistence, and business constraints.
- Does not respond directly to users; controllers do.
View
- The final destination where the response is rendered for the client.
Why RCMV Matters
- Aligns with how frameworks such as Laravel, Django, Rails, and Express operate.
- Helps developers debug real‑world issues by exposing the true entry point.
- Enables teams to avoid spaghetti code by making routing and request handling explicit.
- Fits naturally with Domain‑Driven Design (DDD) and promotes cleaner system design.
Important Clarification
RCMV is an extension of MVC, not a replacement. It simply adds the router as the first step in the request lifecycle.
Final Thought
Is MVC enough, or does modern development need a better mental model? Consider adopting RCMV to reflect the actual flow of modern web applications.