Este tutorial mostra como começar com dependências mínimas começar a usar o desenvolvimento ABP.
Muitas vezes você precisa baixar um modelo de inicialização
Criar um novo projeto
- Usando o Visual Studio para criar um ASPNET Web Application núcleo vazio:
- Escolha um modelo em branco
Você pode escolher um outro modelo, mas eu quero demonstrá-lo a partir de um projeto simples.
pacote de instalação Volo.Abp.AspNetCore.Mvc
Volo.Abp.AspNetCore.Mvc ABP é integrado pacote ASPNet Núcleo MVC, instalá-lo em seu projeto:
Install-Package Volo.Abp.AspNetCore.Mvc
Criando módulo ABP
ABP é uma estrutura modular, ele precisa de um módulo de início (root) herdada 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
O aplicativo foi iniciado bom nome do módulo (módulo também sugerem que você começar a usar este nome).
De ABP pacote módulo define as classes, os módulos podem depender de outros módulos. No código acima AppModule
baseia-se AbpAspNetCoreMvcModule
após a adição de (módulo Volo.Abp.AspNetCore.Mvc presente no pacote). ABP instalar um novo pacote DependsOn
é prática comum .
Nós configurar gasoduto ASP.NET Núcleo neste módulo classe em vez da classe de inicialização.
classe de inicialização
Em seguida, modificado ABP integrado classe inicialização do 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();
}
}
}
Modificação ConfigureServices
valor de retorno do método IServiceProvider
(padrão void
). Isso nos permite modificar a estrutura alternativa injeção de dependência ASPNet Núcleo (veja abaixo Autofac parte integrante). services.AddApplication<AppModule>()
Adicionar todos os serviços definidos em todos os módulos.
app.InitializeApplication()
Chamar Configure
método para inicializar e iniciar a aplicação
Olá Mundo!
A aplicação acima há característica que nos permite criar um controlador de MVC para alcançar algumas das 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!");
}
}
}
Se você executar o aplicativo, você verá "Olá mundo!" Na página.
Derivada HomeController
de AbpController
, em vez de padrão Controller
classe. Isso não é necessário, mas AbpController
classe tem propriedades básicas úteis e métodos para tornar seu desenvolvimento mais fácil.
A partir da AbpController
derivada HomeController
em vez de herdada de Controller
classe. Embora não seja obrigatório, mas a AbpController
classe tem muitas propriedades úteis e existem maneiras de tornar seu desenvolvimento mais fácil.
quadro Use injeção de dependência Autofac
Embora ASPNet núcleo de injecção de dependência (DI) para um requisitos básicos do sistema, mas Autofac fornece propriedades e métodos de funções avançadas implantação de intercepção, que são executadas funções avançadas quadro aplicação ABP necessário.
ASPNet núcleo substituído com Autofac sistema DI e integrado na ABP é muito simples.
- pacote de instalação Volo.Abp.Autofac
Install-Package Volo.Abp.Autofac
- Adicionar
AbpAutofacModule
dependente[DependsOn(typeof(AbpAspNetCoreMvcModule))] [DependsOn(typeof(AbpAutofacModule))] // 在模块上添加依赖AbpAutofacModule public class AppModule : AbpModule { ... }
- Modificada
Startup
sob a categoriaservices.AddApplication<AppModule>();
da seguinte forma:services.AddApplication<AppModule>(options => { options.UseAutofac(); // 集成 Autofac });
- Atualizando
Program.cs
o código não é mais usadoWebHost.CreateDefaultBuilder()
método (porque ele usa o contêiner DI padrão):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(); }