zoukankan      html  css  js  c++  java
  • 入门系列-在AspNet Core MVC Web Application中使用ABP

    本教程将介绍如何开始以最少的依赖关系开始使用ABP开发.

    通常情况下你需要下载一个 启动模板

    创建一个新项目

    1. 使用Visual Studio创建一个空的AspNet Core Web Application:
    2. 选择空模板

    你可以选择其它模板,但是我想要从一个简洁的项目演示它。

    安装 Volo.Abp.AspNetCore.Mvc 包

    Volo.Abp.AspNetCore.Mvc是ABP集成AspNet Core MVC的包,请安装它到你项目中:

    Install-Package Volo.Abp.AspNetCore.Mvc

    创建ABP模块

    ABP是一个模块化框架,它需要一个启动 (根) 模块继承自AbpModule:

    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 是应用程序启动模块的好名称(建议你的启动模块也使用这个命名).

    ABP的包定义了这个模块类,模块可以依赖其它模块.在上面的代码中 AppModule 依赖于 AbpAspNetCoreMvcModule (模块存在于Volo.Abp.AspNetCore.Mvc包中). 安装新的ABP的包后添加DependsOn是很常见的做法.

    我们在此模块类中配置ASP.NET Core管道,而不是Startup类中。

    启动类

    接下来修改启动类集成ABP模块系统:

    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();
            }
        }
    }
    
    

    修改 ConfigureServices 方法的返回值为 IServiceProvider (默认是void).这个修改允许我们替换 AspNet Core 的依赖注入框架. (参阅下面的Autofac集成部分). services.AddApplication<AppModule>()添加了所有模块中定义的全部服务.

    app.InitializeApplication() 调用 Configure 方法初始化并启动应用程序

    Hello World!

    上面的应用程序没有什么功能,让我们创建一个MVC控制器实现一些功能:

    using Microsoft.AspNetCore.Mvc;
    using Volo.Abp.AspNetCore.Mvc;
    
    namespace BasicAspNetCoreApplication.Controllers
    {
        public class HomeController : AbpController
        {
            public IActionResult Index()
            {
                return Content("Hello World!");
            }
        }
    }
    
    

    如果运行这个应用程序你会在页面中看到"Hello World!".

    Derived HomeController from AbpController instead of standard Controller class. This is not required, but AbpController class has useful base properties and methods to make your development easier.

    AbpController派生HomeController 而不是继承自Controller类.虽然这不是强制要求,但是AbpController类有很多有用的有属性和方法,使你的开发更容易。

    使用 Autofac 依赖注入框架

    虽然AspNet Core的依赖注入(DI)系统适用于基本要求,但Autofac提供了属性注入和方法拦截等高级功能,这些功能是ABP执行高级应用程序框架功能所必需的.

    用Autofac取代AspNet Core的DI系统并集成到ABP非常简单.

    1. 安装 Volo.Abp.Autofac 包
      Install-Package Volo.Abp.Autofac
    2. 添加 AbpAutofacModule 依赖
      [DependsOn(typeof(AbpAspNetCoreMvcModule))]
      [DependsOn(typeof(AbpAutofacModule))] // 在模块上添加依赖AbpAutofacModule
      public class AppModule : AbpModule
      {
          ...
      }
      
    3. 修改在Startup类下的services.AddApplication<AppModule>();如下所示:
      services.AddApplication<AppModule>(options =>
      {
          options.UseAutofac(); // 集成 Autofac
      });
      
    4. 更新 Program.cs代码, 不再使用WebHost.CreateDefaultBuilder()方法(因为它使用默认的DI容器):
      public class Program
      {
         public static void Main(string[] args)
         {
             /*
                 https://github.com/aspnet/AspNetCore/issues/4206#issuecomment-445612167
                 CurrentDirectoryHelpers 文件位于: frameworksrcVolo.Abp.AspNetCore.MvcMicrosoftAspNetCoreInProcessCurrentDirectoryHelpers.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();
      }
      
       
  • 相关阅读:
    Hadoop 最讨厌的报错:运行VirtualBox提示0x00000000错误“0x00000000指令引用的0x00000000内存该内存不能为written?
    linux下面/usr/local和opt目录有何区别
    Hadoop是不是必须在linux上运行?(根本原因是操作系统Linux的权限开放优势)
    Hadoop主要配置文件的作用
    RPC模式
    Hadoop安装最后一步~Hadoop伪分布式配置
    word 使用中遇到的小细节(按空格键后面字不见;从编译器粘贴的代码出现乱码,word标题内容折叠效果实现)
    在VS Code下配置Julia
    使用pandas读取csv文件和写入文件
    ModuleNotFoundError: No module named 'sklearn.cross_validation'
  • 原文地址:https://www.cnblogs.com/fxck/p/13076454.html
Copyright © 2011-2022 走看看