What is an application framework?
An application framework make writing applications easier. To explain in detail, the framework takes all the complexities of interfacing with the different environment 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 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 of web applications need login pages, authorization management, localization, exception handling, logging and so on. Also, a high quality and large scale applications should implements best practices of software desing 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 same things. Others are copying some parts of existing applications and preparing a start point for their new application. First approach is pretty good if your company is big enough and has time to develop such a framework. So, on the long view, writing/using a framework is the best desicion.
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 with 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 framework in .net world on github.
ASP.NET Boilerplate features:
- Based on both 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).
- Provides an infrastructure to develop reusable and composable modules for large projects.
- Uses most popular frameworks/libraries as (probably) you’re already using.
- Provides an infrastructure and make it easy to use Dependency Injection (uses Castle Windsor as DI container).
- Provides a strict model and base classes to use Object-Releational 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 latest version of AngularJs) and Multi-Page Applications. Templates are based on Twitter Bootstrap.
- Mostly used javascript libraries are included ana configured by default.
- Creates dynamic javascript proxies to call application services (using dynamic Web API layer) easily.
- Includes unique APIs for some sommon tasks: showing alerts & notifications, blocking UI, making AJAX requests…
Beside these common infrastructure, a module taht named module-zero is developed. It provides a role and permission based authorization system (implementing 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 with using ABP Framework. Also, there is an additional framework for authentication management that named module-zero that is developed seperately from 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 layout (.net core)
As you can see there are templates with different options. You can download above templates from ABP Framework’s site https://aspnetboilerplate.com/Templates.
ABP Framework have a great community and it is updating, constantly.