本教程将介绍如何开始以最少的依赖关系开始使用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-445612167CurrentDirectoryHelpers 文件位于: \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();
    }
    

入门系列-在AspNet Core MVC Web Application中使用ABP相关推荐

  1. 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式

    当我们用ASP.NET MVC开发Web应用程序的时候,我们都是将需要呈现的数据通过"Controllers"传输到"View"当中,怎么去实现,下面我介绍一下 ...

  2. [原创]web application中使用Profile应该注意的问题

    转载请注明出处:菩提树下的杨过 http://blog.sqlsky.com   1.如何在web application中正确使用Profile web application与website的一个 ...

  3. MVC web项目中引入jquery插件

    MVC web项目中引入jquery插件 1.下载jquery [https://jquery.com/] 看到这样的文档,直接CTRL+S保存到自己的文件夹 2.将文件夹中的js文件直接拖拽导入到项 ...

  4. 使用.NET Core MVC Web应用程序中的ResponseCache属性处理缓存

    HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...

  5. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...

  6. ASP.NET Core开源Web应用程序框架ABP

    "作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格. 通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易理解,开发,测试, ...

  7. PWA(Progressive Web App)入门系列:(五)Web Worker

    前言 在说Service Worker前有必要说一下Web Worker,因为Service Worker本身就属于Web Worker的延伸,大部分功能也是基于Web Worker进行的扩展. 背景 ...

  8. 【BPF入门系列-4】如何在 BPF 程序中正确地按照 PID 过滤?

    1. 前言 在 bpf 的实现中我们经常在内核 helper 函数 bpf_get_current_pid_tgid() 来进行用户空间进程 pid 进行过滤,那么到底如何写呢? 在 BCC 项目中有 ...

  9. ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel

    本文简单介绍一下在母版页中使用UpdatePanel控件,翻译自官方文档.<?XML:NAMESPACE PREFIX = O /> 主要内容 1.添加UpdatePanel控件到Cont ...

最新文章

  1. 爬虫+数据分析:重庆买房吗?爬取重庆房价
  2. 短url服务java_Serverless-实现一个短网址服务(二)
  3. 添加一列_快速给电子书pdf添加书签
  4. Mac 登陆Linux云服务器方法
  5. requests与bs4编码
  6. OpenStack版本发布周期或将延长为1年
  7. FPGA BCD计数器(一位)
  8. java基本数据类型的数值范围
  9. HDUOJ_2567_寻梦
  10. 中科院毕业去向(硕士+博士)
  11. 洛谷题解P1428 小鱼比可爱
  12. 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...
  13. 赶集网CEO杨浩涌向搜狐IT确认
  14. html和js制作个人所得税表格,原创文章:使用Vuejs实现个人所得税功能兼容移动端...
  15. Codeforces Round #263 (Div. 1)-A,B,C
  16. Guitar Pro8.1最新中文版自动扒谱编写吉他谱 新功能讲解
  17. 基于 MaxCompute 的大数据安全方案
  18. 学习Linux命令(14)
  19. 计算机主题桌面更改不了,电脑桌面怎么换主题?更换电脑桌面主题
  20. 内蒙公务员面试计算机岗位,国家公务员考试职位哪些适合男生报名?

热门文章

  1. Ubuntu18.04安装显卡驱动导致开机时卡在『ok』‘starting Gnome display manager
  2. 如何给未越狱的ios下载历史版本的app?未越狱IOS系统安装历史版本软件的方法,iPhone未越狱的手机如何安装旧版本APP?
  3. OpenGL绘制地月天体,基于Qt框架。
  4. 利用协同过滤算法的皮尔逊系数:计算歌曲相似度
  5. Android SDK Manager和AVD Manager使用
  6. 9000字通俗易懂的讲解下Java注解,你还看不明白?
  7. Mac pro使用的那些坑(一)复制,粘贴和剪切快捷键
  8. OpenHarmony社区运营报告(2022年12月)
  9. 区块链产业正开启“赛马”模式
  10. 广东高职高考数学可以用计算机吗,广东高职高考多少分可以过