mirror of https://github.com/abpframework/abp
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.
141 lines
4.5 KiB
141 lines
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](Getting-Started-AspNetCore-MVC-Template.md)**.
|
|
|
|
## Crea un Proyecto Nuevo
|
|
|
|
1. Crea una Aplicacion Web AspNet Core nueva usando Visual Studio 2022 (17.0.0+):
|
|
|
|

|
|
|
|
2. Configura el nuevo proyecto:
|
|
|
|

|
|
|
|
3. Presione el boton Create:
|
|
|
|

|
|
|
|
## 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``:
|
|
|
|
````C#
|
|
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](https://www.nuget.org/packages/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:
|
|
|
|
````C#
|
|
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](https://autofac.org/) 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](https://www.nuget.org/packages/Volo.Abp.Autofac)
|
|
|
|
````
|
|
Install-Package Volo.Abp.Autofac
|
|
````
|
|
|
|
2. Agrega la dependencia sobre el modulo ``AbpAutofacModule``
|
|
|
|
````C#
|
|
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
|
|
[DependsOn(typeof(AbpAutofacModule))] //Agrega la dependencia sobre el modulo ABP Autofac
|
|
public class AppModule : AbpModule
|
|
{
|
|
...
|
|
}
|
|
````
|
|
|
|
3. Actualiza `Program.cs` para que use Autofac:
|
|
|
|
````C#
|
|
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](https://github.com/abpframework/abp-samples/tree/master/BasicAspNetCoreApplication).
|