ABP (ASP.NET Boilerplate) es un framework completo y de código abierto para la construcción de aplicaciones empresariales en .NET.
Ofrece una arquitectura modular, componentes reutilizables y una serie de herramientas que facilitan el desarrollo rápido, mantenible y escalable.
ABP Framework es una infraestructura completa para crear aplicaciones web modernas siguiendo las mejores prácticas y convenciones para desarrollar aplicaciones empresariales, como aplicaciones de gestión de inventarios, CRM, ERP y más.
Incluye todo lo necesario para desarrollar una aplicación, como la arquitectura, la seguridad, la autenticación, la autorización, el manejo de errores, el control de versiones, el mapeo de objetos relacionales, entre otros.
Características de ABP,
- Arquitectura Modular: Facilita la organización del código en módulos reutilizables.
- Inyección de Dependencias: Soporte integrado para la inyección de dependencias.
- ORM: Integración con Entity Framework Core y otros ORMs.
- Autenticación y Autorización: Soporte para diferentes mecanismos de autenticación y autorización.
- Internacionalización: Soporte para aplicaciones multilingües.
- UI: Integración con Blazor, Angular y otros frameworks de UI.
- Automatización de Tareas: Herramientas para la automatización del desarrollo y despliegue.
Instalación de ABP
Instalación de la Herramienta CLI de ABP
ABP proporciona una herramienta CLI (Command Line Interface) para facilitar la creación y gestión de proyectos. Puedes instalarla globalmente utilizando el siguiente comando:
dotnet tool install -g Volo.Abp.Cli
Creación de un Nuevo Proyecto ABP
Puedes crear un nuevo proyecto utilizando la herramienta CLI de ABP:
abp new MyProject -t app
Este comando crea una nueva solución ABP con una estructura de proyecto predeterminada y varios módulos preconfigurados.
Configuración Inicial
Estructura del Proyecto
Un proyecto ABP típico tiene la siguiente estructura:
- src: Contiene el código fuente de la aplicación.
- MyProject.Application: Contiene la lógica de aplicación.
- MyProject.Domain: Contiene las entidades de dominio y las reglas de negocio.
- MyProject.EntityFrameworkCore: Configuración de Entity Framework Core.
- MyProject.HttpApi: Controladores API.
- MyProject.Web: Proyecto web para la UI.
Configuración de la Base de Datos
ABP utiliza Entity Framework Core como ORM por defecto. Para configurar la base de datos, abre el archivo appsettings.json
en el proyecto MyProject.DbMigrator
y actualiza la cadena de conexión:
"ConnectionStrings": {
"Default": "Server=(localdb)\\mssqllocaldb;Database=MyProjectDb;Trusted_Connection=True"
}
Migraciones de Base de Datos
Para aplicar las migraciones de Entity Framework Core, navega al directorio del proyecto MyProject.DbMigrator
y ejecuta:
dotnet ef migrations add InitialCreate
dotnet ef database update
Desarrollo de Aplicaciones con ABP
Creación de Entidades de Dominio
Define tus entidades de dominio en el proyecto MyProject.Domain
. Por ejemplo, crea una entidad Product
:
using Volo.Abp.Domain.Entities;
public class Product : Entity<Guid>
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(Guid id, string name, decimal price)
{
Id = id;
Name = name;
Price = price;
}
}
Repositorios
ABP proporciona interfaces genéricas para los repositorios. Crea un repositorio para la entidad Product
:
using Volo.Abp.Domain.Repositories;
public interface IProductRepository : IRepository<Product, Guid>
{
// Métodos específicos para la entidad Product
}
Servicios de Aplicación
Crea servicios de aplicación para manejar la lógica de negocio. Por ejemplo, un servicio para gestionar productos:
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
public class ProductAppService : ApplicationService, IProductAppService
{
private readonly IProductRepository _productRepository;
public ProductAppService(IProductRepository productRepository)
{
_productRepository = productRepository;
}
public async Task CreateProductAsync(string name, decimal price)
{
var product = new Product(Guid.NewGuid(), name, price);
await _productRepository.InsertAsync(product);
}
// Otros métodos de servicio
}
Controladores API
Define controladores API en el proyecto MyProject.HttpApi
para exponer los servicios de aplicación. Por ejemplo, un controlador para productos:
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
[Route("api/products")]
public class ProductController : MyProjectController
{
private readonly IProductAppService _productAppService;
public ProductController(IProductAppService productAppService)
{
_productAppService = productAppService;
}
[HttpPost]
public async Task<IActionResult> CreateAsync(CreateProductDto input)
{
await _productAppService.CreateProductAsync(input.Name, input.Price);
return Ok();
}
// Otros métodos de controlador
}
UI con Blazor
ABP soporta la creación de interfaces de usuario con Blazor. Crea componentes en el proyecto MyProject.Web
para interactuar con los servicios de aplicación.
@page "/products"
@inject IProductAppService ProductAppService
<h3>Products</h3>
<button @onclick="CreateProduct">Create Product</button>
@code {
private async Task CreateProduct()
{
await ProductAppService.CreateProductAsync("New Product", 10.0m);
}
}