Este tutorial muestra cómo empezar a trabajar con dependencias mínimas empezar a utilizar el desarrollo de PAA.
A menudo es necesario descargar una plantilla de inicio
Crear un nuevo proyecto
- Utilizando Visual Studio para crear una aplicación Web Core ASPNet vacío:
- Seleccione una plantilla en blanco
Se puede elegir otra plantilla, pero quiero demostrar que a partir de un proyecto simple.
paquete de instalación Volo.Abp.AspNetCore.Mvc
Volo.Abp.AspNetCore.Mvc ABP se integra paquete ASPNet Core MVC, instalarlo en su proyecto:
Install-Package Volo.Abp.AspNetCore.Mvc
Creación de módulo ABP
ABP es un marco modular, se necesita un módulo (raíz) de inicio heredado deAbpModule:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.AspNetCore.Modularity;
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();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvcWithDefaultRoute();
}
}
}
AppModule
La aplicación comenzó buen nombre del módulo (módulo también sugieren que empezar a usar el nombre).
De paquete del módulo ABP define las clases, los módulos pueden depender de otros módulos. En el código anterior AppModule
se basa en AbpAspNetCoreMvcModule
después de añadir (módulo Volo.Abp.AspNetCore.Mvc presente en el paquete). ABP instalar nuevo paquete DependsOn
es práctica común .
Configuramos canalización de ASP.NET Core en este módulo de clase en lugar de inicio de clases.
clase de arranque
A continuación, ABP modificado integrado clase de arranque sistema modular:
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace BasicAspNetCoreApplication
{
public class Startup
{
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddApplication<AppModule>();
return services.BuildServiceProviderFromFactory();
}
public void Configure(IApplicationBuilder app)
{
app.InitializeApplication();
}
}
}
Modificación ConfigureServices
valor de retorno del método IServiceProvider
(por defecto void
). Esto nos permite modificar el marco de inyección de dependencias alternativa ASPNet Core (véase más adelante Autofac parte integral). services.AddApplication<AppModule>()
Añadir todos los servicios definidos en todos los módulos.
app.InitializeApplication()
Llamar Configure
método para inicializar e iniciar la aplicación
Hola Mundo!
La aplicación anterior hay ninguna característica que nos permite crear un controlador MVC para lograr algunas de las características:
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace BasicAspNetCoreApplication.Controllers
{
public class HomeController : AbpController
{
public IActionResult Index()
{
return Content("Hello World!");
}
}
}
Si ejecuta la aplicación verá "Hello World!" En la página.
Derivado HomeController
de AbpController
lugar de estándar Controller
de clase. Esto no es necesario, pero AbpController
la clase de base tiene propiedades útiles y métodos para que su desarrollo sea más fácil.
A partir de la AbpController
derivada HomeController
en lugar de heredada de Controller
la clase. Aunque no es obligatorio, pero la AbpController
clase tiene muchas propiedades útiles y hay maneras de hacer que su desarrollo sea más fácil.
Uso marco de inyección de dependencias Autofac
Aunque ASPNet Core inyección de dependencias (DI) para unos requisitos básicos del sistema, pero Autofac proporciona propiedades y métodos de implantación de interceptación funciones avanzadas, que se ejecutan funciones avanzadas marco de aplicación ABP necesario.
ASPNet Core sustituido con sistema DI Autofac e integrado en el ABP es muy simple.
- paquete de instalación Volo.Abp.Autofac
Install-Package Volo.Abp.Autofac
- Añadir
AbpAutofacModule
dependientes[DependsOn(typeof(AbpAspNetCoreMvcModule))] [DependsOn(typeof(AbpAutofacModule))] // 在模块上添加依赖AbpAutofacModule public class AppModule : AbpModule { ... }
- Modificado
Startup
en la categoríaservices.AddApplication<AppModule>();
de la siguiente manera:services.AddApplication<AppModule>(options => { options.UseAutofac(); // 集成 Autofac });
- Actualizando
Program.cs
el código ya no se utilizaWebHost.CreateDefaultBuilder()
el método (ya que utiliza el contenedor DI predeterminado):public class Program { public static void Main(string[] args) { /* https://github.com/aspnet/AspNetCore/issues/4206#issuecomment-445612167 CurrentDirectoryHelpers 文件位于: \framework\src\Volo.Abp.AspNetCore.Mvc\Microsoft\AspNetCore\InProcess\CurrentDirectoryHelpers.cs 当升级到ASP.NET Core 3.0的时候将会删除这个类. */ CurrentDirectoryHelpers.SetCurrentDirectory(); BuildWebHostInternal(args).Run(); } public static IWebHost BuildWebHostInternal(string[] args) => new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIIS() .UseIISIntegration() .UseStartup<Startup>() .Build(); }