- Jun 19, 2017
Our team of .NET developers at Helios is often confronted with this question. They wittily say that in order to appreciate what we have today – ASP.NET Core MVC, we would need to take a short walk down memory lane.
In today’s post, therefore, the highlights are:
- Flashback: A little about ASP.NET MVC 5
- What is ASP.NET Core MVC 6?
- Key Features of ASP.NET Core MVC
Flashback: A little about ASP.NET MVC 5
ASP.NET MVC is a lightweight and testable framework built on top of ASP.NET features which was system.web and that brought over a lot of existing baggage or legacy code.
In ASP.NET MVC 5, Web pages, MVC and Web API were implemented separately, leading to duplication and inconsistencies. The programming model was as depicted in the figure below.
The adoption of ASP.NET MVC for enterprise app development was on the rise for years; however, Microsoft was facing the issue of maintaining two code bases.
Going forward, Microsoft has unified MVC, Web API, and Web Pages in ASP.NET Core and with ASP.NET Core MVC redefined the complete idea of web application development.
What is ASP.NET Core MVC 6?
It is open source, model view controller framework designed and optimized for use with ASP.NET Core. It is test driven development (TDD)-friendly, uses latest web standards and supports pattern-based way of building dynamic websites with clean separation of concerns.
A quick glance at the ASP.NET Core improvements:
- New set of tools to make modern web development simpler and easier.
- Built on .NET Core which supports complete side-by-side app versioning.
- Merged web stack for MVC and Web API.
- Allows building and running cross-platform ASP.NET apps on Linux, Mac and Windows.
- Built-in support for dependency injection.
- Runs on IIS or can be self-hosted in your own process.
- Environment-based configuration is cloud-ready.
- Integrated support for creating and utilizing NuGet packages.
What’s new in ASP.NET Core MVC?
Microsoft has completely overhauled the existing ASP.NET MVC framework and come out with a new and advanced ASP.NET Core MVC. The new framework not only equips you with greater flexibility but also enables you to gain competitive advantages with high-end web applications.
Here are the key features of ASP.NET Core MVC:
ASP.NET Core, unlike the .NET framework, can be run beyond Windows platforms such as Linux, Mac, etc. Visual Studio Code is a component in Visual Studio, the development tool for ASP.NET that allows developing applications in Linux and Mac operating system.
Now, our team of dot net developers is leveraging this platform independency feature of ASP.NET Core to develop a single application that can be run on multiple platforms.
Added flexibility of being open source
Being open source, ASP.NET Core empowers you to maintain modularity across the project development environment in order to simplify coding. It also provides you the flexibility to add libraries and framework components as required for application deployment.
You can avail the benefits of NuGet Package Manager to manage runtime. You can also include .NET Core libraries as well as ASP.NET Core framework libraries as per your project requirement.
Improved support for cloud deployment
Cloud deployment support is enhanced due to the modular architecture of this framework. The flexible environment and extended modularity provided by ASP.NET Core MVC enables you to build applications that ready to be deployed on the cloud.
Supports hosting independence
Unlike ASP.NET application development, when it comes to ASP.NET Core application development, the applications can run on web servers other than IIS (Internet Information Services). This is because, as ASP.NET Core supports cross-platform, it could not keep the application dependent only on IIS.
Earlier, IIS used to be the default server for ASP.NET applications. Moreover, ASP.NET Core gave a specification of OWIN (Open Web Interface for .NET) application.
Newly introduced Tag Helpers
This feature is a newly added in ASP.NET Core framework. The Tag Helpers enables your server-side code to participate in building and rendering HTML elements in Razor files. You can also use them to define custom tags, e.g., <environment> or to modify the behaviour of existing tags, e.g., <label>. It can also be used to replace HTML helper methods in some cases as it is easy to use.
Furthermore, Visual Studio, IDE for .NET supports the creation of HTML elements with Tag Helpers in a better way.
Built-in Support for Dependency Injection
Support for Dependency Injection was there even in previous versions of ASP.NET MVC, however, they were using third-party IoC container. In ASP.NET Core MVC, DI is built-in first which means that DI is wired in from the very beginning.
As DI is baked into the core of ASP.NET MVC, you can effectively use this built-in feature in your application. In MVC, it can be used to support coding structure. Moreover, you can use this DI in view files with the help of @inject directive:
@inject SomeService ServiceName
Support for JSON based configurations
Being an advanced framework, ASP.NET Core MVC supports JSON based files and configuration providers. You can manage the data with various providers such as Environment Variables, Command Line Parameters, and Azure Key vault.
Unit testing with xUnit.net
In ASP.NET Core MVC, Visual Studio Unit Test framework has been replaced with xUnit.net to perform unit testing. Moreover, the use of interfaces and DI in this framework makes it well-suited for unit testing.
As ASP.NET Core MVC offers so many benefits over previous versions, this improved framework is highly preferred by our team of web developers for building high-end enterprise apps with intuitive user experience. Its rich community is an added advantage.
Be it business websites or web shops, you can gain an edge over competition with .NET development.
Don’t you think with all these built-in enhanced features it is obvious to become the default choice of developers? Which is your favourite feature, by the way? How about starting a conversation? Please leave your comments below; we would love to hear from you.