ASP.NET Boilerplate; a Starting point for new modern web applications
What is an application framework?
An application framework makes writing applications easier. To explain in detail, the framework takes all the complexities of interfacing with the different environments and simplifies them for you. It handles all the non-business-related details for you. So you can only focus your business and save time.
The Application Framework lets you build applications from scratch with writing less code. And it prevents you from repeating yourself.
What are the advantages of using an application framework?
DRY — Don’t Repeat Yourself! is one of the main ideas of being a good developer. When developing new web applications, we need the same requirements.
Most web applications need login pages, authorization management, localization, exception handling, logging and so on. Also, high quality and large scale applications should implement best practices of software design and development.
Starting a new enterprise web application is difficult. Since all applications need some common tasks, we’re repeating ourselves. Many companies are developing their own Application Frameworks or Libraries for such common tasks to do not re-develop the same things. Others are copying some parts of existing applications and preparing a start point for their new application. The first approach is pretty good if your company is big enough and has time to develop such a framework. So, in the long view, writing/using a framework is the best decision.
What is ASP.NET Boilerplate?
ASP.NET Boilerplate is developed due to the reasons mentioned above. ASP.NET Boilerplate is a starting point for new modern web applications using best practices and most popular tools. It’s aimed to be a solid model, a general-purpose application framework and a project template. It is one of the most starred application frameworks in the .net world on Github.
ASP.NET Boilerplate features:
- Based on both the latest ASP.NET Core, ASP.NET MVC & Web API.
- Implements Domain-Driven Design (Entities, Repositories, Domain Services, Application Services, DTOs, Unif Of Work… and so on)
- Implements Layered Architecture (Domain, Application, Presentation and Infrastructure Layers).
- It provides an infrastructure to develop reusable and composable modules for large projects.
- Uses the most popular frameworks/libraries as (probably) you’re already using.
- It provides infrastructure and make it easy to use Dependency Injection (uses Castle Windsor as DI container).
- It provides a strict model and base classes to use Object-Relational Mapping easily (Directly supports EntityFramework and EntityFramework.Core).
- Supports and implements database migrations.
- Includes a simple and flexible localization system.
- Includes an EventBus for server-side global domain events.
- Manages exception handling and validation.
- Creates dynamic Web API layer for application services.
- Provides base and helper classes to implement some common tasks.
- Uses convention over configuration principle.
- Provides project templates for Single-Page Applications (with the latest version of AngularJs) and Multi-Page Applications. Templates are based on Twitter Bootstrap.
- Includes unique APIs for some common tasks: showing alerts & notifications, blocking UI, making AJAX requests…
Besides these common infrastructures, a module named module-zero is developed. It provides a role and permission-based authorization system (implementing the latest ASP.NET Identity Framework), a setting system, multi-tenancy and so on.
ASP.NET Boilerplate Templates
There are some free templates that are developed using ABP Framework. Also, there is an additional framework for authentication management named module-zero that is developed separately from the ABP Framework.
- aspnetboilerplate/aspnetboilerplate-templates: Angular1.x, MVC 5.x basic layout (full .net framework)
- aspnetboilerplate/module-zero-template: Angular1.x, MVC 5.x + Abp.Zero basic layout with authorization (full .net framework)
- aspnetboilerplate/aspnet-core-template: Angular4, ASP.NET Core basic layout (.net core)
- aspnetboilerplate/module-zero-core-template: Angular4, ASP.NET Core + Abp.Zero basic layouts (.net core)
As you can see there are templates with different options. You can download the above templates from ABP Framework’s site https://aspnetboilerplate.com/Templates.
ABP Framework has a great community and it is updating, constantly.
This article was originally published on Volosoft Blog.