Apparently, select Razor Pages or MVC (Model-View-Controller) without any antipathy. Both are different yet valid options for creating a new ASP.NET Core web application.
Arguments on Razor Pages vs. MVC:
Razor pages are better organized, it groups files by purpose and design for the problem it solves. It has a tightly integrated code behind each class it defines for the functionality. They are perfect for simple pages for basic data input and are read-only.
Advantages of Razor Pages:
- Razor Pages are rather automatically included in any app that uses MVC
- Simple context of structure and has no controllers
- Flexibility to fit any application you want to build
- It has specific codes behind individual pages and is more organized
- Build web apps in less time just like you did in ASP.NET Webforms
- It offers complete control over HTML and URLs both
- A single controller means fewer complications and better control
- Check for validation errors
- Manages dependencies through dependency injection
- Testing can be done using built-in test features of IDE
Disadvantages of Razor Pages:
- Simple yet managing multiple self-contained pages can be a challenge
- A modern approach to traditional web app development is a concern to few
- For performing different actions from a single page you need to use a handler
- By default, it creates an extremely basic Razor Page that requires modification
MVC has three main components are model, view, and controller. The model includes data and related logic; it represents the data transferred between controller components. View controls the presentation of data using the data collected from model data.
Advantages of MVC:
- Concurrent development with simultaneous work on the model, view, and controller accelerates the development process
- Reusable codes, separation of frontend, and backend development without obstructing work process.
- You can have multiple views for a model as loose coupling enables isolation benefiting the deployments
- Easy code maintenance and segregation of responsibilities as well as grouping of actions on the controller assists in producing and modifying applications speedily
- Data and views have their dedicated folders and rules to govern the features to route, authenticate and filter for better interaction with these groups
- Testing of each part separately for a different set of expectations as all objects and classes are independent of each other
- MVC supports the Test Driven Development (TDD)
- The front controller pattern operates through a single controller to process the requests received by web applications
Disadvantages of MVC:
- Using MVC calls for knowledge of multiple technologies
- Higher complexity in framework navigation due to layers of indirection expecting users to adapt to the decomposition criteria
- It becomes knotty to manage the number of codes in the controller
- Reusing code is quite intricate restricting the readability and change
- Application computation grouped in one out of the 3 parts affects the code, deteriorates the boilerplate shims, and results in inefficiency of data
- Bringing consistency is tough and needs manpower with thorough knowledge to handle multiple representations and parallel programming
- Constant updates have recurring costs and efforts to release the updates and rectify the issues
- Encumbered by huge controller classes filled with a variety of actions adds to the intricacy
Initially, you need to figure out the actual requirement and its uniqueness of Razor Pages vs. MVC
- MVC is great for Web applications that involve a lot of developers and designers. Being SEO friendly it gives your applications leverage.
- Razor pages designed for common patterns of forms are easy to implement within an application.
Similarities of Razor Pages vs. MVC
- Both have the same file extension .cshtml, same syntax, and functionality
- Razor Page is similar to ASP.NET MVC’s view component
Differences of Razor Pages vs. MVC
Razor Pages have a basic structure that supports cross-platform development but do not have controllers thus uses CSHTML Razor file and .cshtml.cs code behind the file. It comprises anti-falsification token validation that automatically protects the original code. Exceptionally Razor pages have the @page directive to treat themselves and not by the controllers. Each page handles its model and the defined actions that focus on scenarios. It does not have models but uses a model declaration called AboutModel.
A request received by Razor Pages finds a default routing configuration for the specific request in the Pages folder. E.g. if you request contact of a person then ASP.NET Core will look for a page named contact<name>, routed through Contact.cshtml mandatorily placed in Pages folder, and containing @Page in its markup. Deploy the applications on Windows, UNIX, and Mac operating systems.MVC controller is an interface between model and view components. It sends commands to the model to update its state and handles interaction with the user. To include MVC in your Core web apps call AddMvc() from Starup.cs using the ConfigureServices() method. MVC has structures for complex routing, which needs more efforts if done in Razor Pages. Overall, it takes much time to code, create dynamic routes, and name things properly for an entire application.
In case of a request received by MVC the configuration, which is a combination of controller names and action it will process E.g. if you request a payment index then it will route through the action named Index on the PaymentControler class. Liberty to route any request to any controller with a piece of code is advantageous though an additional work.
Which one is better for your project?
Conceptually Razor Pages vs. MVC is a tough decision. Razor Pages work well when your content is structured and is ideal for the login page or contact us page due to its simplicity. MVC is for complex databases of users or product descriptive lists. Heavy apps constructed using MVC can get cluttered by too many programmers handling codes as some may miss out on good programming practices.
Razor Pages requires you to put code related to the specific page. To enable better control split codes, it saves you from managing huge coding in the controller. Optionally you can create external classes for the logic to keep the controllers clean.
You can choose to launch a decent size app using Razor Pages for front end and apply MVC controllers for API of client-side components. MVC is good for web apps with lots of dynamic server views, REST APIs, and AJAX calls. To build a complex view in Razor Pages you can bind multiple view models. Use [BindProperties] and import several fields into a view. You can have a single controller responsible for processing the number of pages in your web application.
It need not be Razor Pages vs. MVC, just combine both and use Razor Pages for HTML views and MVC for REST API calls. If keen on simplicity, pick Razor Pages vs. MVC that is flexible yet complex.
No natty way to find a suitable framework whether it is a page-focused or architectural pattern. Encapsulate the fundamental similarities and differences in light of your project.