You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/docs/es/Getting-Started-AspNetCore-...

4.5 KiB

Empezando con ABP y una Aplicacion AspNet Core MVC Web

Este tutorial explica como empezar una aplicacion ABP desde cero usando las dependencias minimas. Uno generalmente desea empezar con la plantilla de inicio.

Crea un Proyecto Nuevo

  1. Crea una Aplicacion Web AspNet Core nueva usando Visual Studio 2022 (17.0.0+):

  1. Configura el nuevo proyecto:

  1. Presione el boton Create:

create-aspnet-core-application

Instale el paquete Volo.Abp.AspNetCore.Mvc

Volo.Abp.AspNetCore.Mvc es el paquete de integracion con AspNet Core MVC para ABP. Siendo asi, instalalo en su proyecto:

Install-Package Volo.Abp.AspNetCore.Mvc

Crea el primer modulo ABP

ABP es un marco de referencia modular y require una clase de inicio (raíz) tipo modulo derivada de AbpModule:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;

namespace BasicAspNetCoreApplication
{
    [DependsOn(typeof(AbpAspNetCoreMvcModule))]
    public class AppModule : AbpModule
    {
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            var app = context.GetApplicationBuilder();
            var env = context.GetEnvironment();

            // Configura la canalización de peticiones HTTP.
            if (env.IsDevelopment())
            {
                app.UseExceptionHandler("/Error");
                // El valor por defecto de HSTS es 30 dias. Debes cambiar esto en ambientes productivos. Referencia https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();
            app.UseConfiguredEndpoints();
        }
    }
}

AppModule es un buen nombre para el modulo de inicio de una aplicacion.

Los paquetes de ABP definen clases de tipo modulo y cada modulo puede depender de otro. En el codigo anterior, el AppModule depende de el modulo AbpAspNetCoreMvcModule (definido por el paquete Volo.Abp.AspNetCore.Mvc). Es comun agregar el atributo DependsOn despues de instalar un paquete ABP nuevo.

En vez de la clase de inicion Startup, estamos configurando una canalizacion de ASP.NET Core en este modulo.

La clase Program

El proximo paso es modificar la clase Program para integrate el sistema de modulos ABP:

using BasicAspNetCoreApplication;

var builder = WebApplication.CreateBuilder(args);

await builder.Services.AddApplicationAsync<AppModule>();

var app = builder.Build();

await app.InitializeApplicationAsync();
await app.RunAsync();

builder.Services.AddApplicationAsync<AppModule>(); Agrega todos los servicios definidos en todos los modulos empezando desde AppModule.

app.InitializeApplicationAsync() inicializa y empieza la aplicacion.

Ejecutar la Aplicación

Es todo! Ejecuta la aplicación, debe funcionar como esperado.

Uso de Autofac como Marco de Inyección de Dependencia

Mientras el sistema de Inyección de Dependencia de ASP.NET Core es suficiente para requerimientos basico, Autofac proporciona características avanzadas como Inyección de Propiedades e Intercepcion de Metodos, los cuales son necesarios para que ABP pueda llevar a cabo funciones avanzadas.

El acto de remplazar el sistema DI de ASP.NET Core por Autofac e integrarlo con ABP es facil.

  1. Instala el paquete Volo.Abp.Autofac
Install-Package Volo.Abp.Autofac
  1. Agrega la dependencia sobre el modulo AbpAutofacModule
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
[DependsOn(typeof(AbpAutofacModule))] //Agrega la dependencia sobre el modulo ABP Autofac
public class AppModule : AbpModule
{
    ...
}
  1. Actualiza Program.cs para que use Autofac:
using BasicAspNetCoreApplication;

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseAutofac();  //Agrega esta linea

await builder.Services.AddApplicationAsync<AppModule>();

var app = builder.Build();

await app.InitializeApplicationAsync();
await app.RunAsync();

Codigo fuente

Obten el codigo fuente del ejemplo creado en este tutorial de aqui.