Série COMEÇANDO - o uso da ABP em ASPNet Núcleo MVC Web Application em

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

  1. Usando o Visual Studio para criar um ASPNET Web Application núcleo vazio:
  2. 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 AbpControllerderivada HomeController em vez de herdada de Controllerclasse. Embora não seja obrigatório, mas a AbpControllerclasse 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.

  1. pacote de instalação Volo.Abp.Autofac
    Install-Package Volo.Abp.Autofac
  2. Adicionar  AbpAutofacModule dependente
    [DependsOn(typeof(AbpAspNetCoreMvcModule))]
    [DependsOn(typeof(AbpAutofacModule))] // 在模块上添加依赖AbpAutofacModule
    public class AppModule : AbpModule
    {
        ...
    }
    

     

  3. Modificada Startupsob a categoria services.AddApplication<AppModule>();da seguinte forma:
    services.AddApplication<AppModule>(options =>
    {
        options.UseAutofac(); // 集成 Autofac
    });
    

     

  4. Atualizando  Program.cso código não é mais usado WebHost.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();
    }
    
     

     

Publicado 87 artigos originais · ganhou elogios 69 · Exibições 600.000 +

Acho que você gosta

Origin blog.csdn.net/S2T11Enterprise/article/details/103983879
Recomendado
Clasificación