.NET Core如何使用APB vNext框架
这篇文章给大家分享的是有关.NETCore如何使用APBvNext框架的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
快速入门案例.NET Core 控制台应用1. 安装 ABP 框架核心依赖Install-PackageVolo.Abp.Core-Version3.3.22. 新建 ABP 应用的启动模块
HelloAbpModule.cs
usingVolo.Abp.Modularity;namespaceHelloAbp{///<summary>///启动模块///</summary>publicclassHelloAbpModule:AbpModule{}}3. 新建服务,并注册到启动模块中
HelloWorldService.cs
usingSystem;usingVolo.Abp.DependencyInjection;namespaceHelloAbp{///<summary>///TODO:ABP注册服务方式一:继承接口///ISingletonDependency、IScopedDependency、ITransientDependency///</summary>publicclassHelloWorldService:ITransientDependency{publicvoidRun(){Console.WriteLine($"{nameof(HelloAbpModule)}-{nameof(HelloWorldService)}:HelloWorld!");}}}4. 根据启动模块创建 ABP应用,调用应用中注册的服务方法
Program.cs
usingSystem;usingMicrosoft.Extensions.DependencyInjection;usingVolo.Abp;namespaceHelloAbp{classProgram{staticvoidMain(string[]args){//根据启动模块创建abp应用varapplication=AbpApplicationFactory.Create<HelloAbpModule>();//初始化abp应用application.Initialize();//获取应用中注册的服务varservice=application.ServiceProvider.GetService<HelloWorldService>();//调用应用中的服务方法service.Run();Console.ReadKey();}}}ASP.NET Core Web 应用程序1. 安装 ABP 框架核心依赖
Install-PackageVolo.Abp.Core-Version3.3.2Install-PackageVolo.Abp.AspNetCore.Mvc-Version3.3.22.新建 ABP 应用的启动模块
AppModule.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Http;usingMicrosoft.Extensions.Hosting;usingVolo.Abp;usingVolo.Abp.AspNetCore.Mvc;usingVolo.Abp.Modularity;namespaceHelloWebAbp{///<summary>///启动模块///TODO:1.在启动模块中配置ASP.NETCoreWeb程序的管道,就需要定义对ASP.NETCoreMvc模块的依赖///</summary>[DependsOn(typeof(AbpAspNetCoreMvcModule))]publicclassAppModule:AbpModule{///<summary>///应用初始化方法///TODO:2.重写ABP应用的初始化方法,用来构建ASP.NETCore应用程序的中间件管道///</summary>///<paramname="context"></param>publicoverridevoidOnApplicationInitialization(ApplicationInitializationContextcontext){//base.OnApplicationInitialization(context);varapp=context.GetApplicationBuilder();varenv=context.GetEnvironment();if(env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();//TODO:5.将程序应用的端点配置修改为ABP应用的端点配置app.UseConfiguredEndpoints();}}}3. 注册 ABP 启动模块,并初始化 ABP 应用
Startup.cs
usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.AspNetCore.Http;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Hosting;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;namespaceHelloWebAbp{///<summary>///程序启动类///TODO:3.在Startup类中,完成对ABP应用的初始化///</summary>publicclassStartup{//Thismethodgetscalledbytheruntime.Usethismethodtoaddservicestothecontainer.//Formoreinformationonhowtoconfigureyourapplication,visithttps://go.microsoft.com/fwlink/?LinkID=398940publicvoidConfigureServices(IServiceCollectionservices){services.AddApplication<AppModule>();}//Thismethodgetscalledbytheruntime.UsethismethodtoconfiguretheHTTPrequestpipeline.publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv){app.InitializeApplication();}}}4. 新建控制器,测试 ABP 应用运行状态
HomeController.cs
usingMicrosoft.AspNetCore.Mvc;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingVolo.Abp.AspNetCore.Mvc;namespaceHelloWebAbp.Controllers{///<summary>///控制器///TODO:4.继承Abp框架中的基类控制器(提供了一些便捷的服务和方法)///</summary>publicclassHomeController:AbpController{publicIActionResultIndex(){returnContent("Helloworld!");}}}各个击破案例
在模块中注册自定义服务ABP应用中的模块可以有很多个,但是启动模块只能有一个;
ABP应用中的每个模块之间没有必然的联系;
ABP应用中每个模块注册的服务,都注册到了ABP应用的全局容器中;
ABP应用中的模块也分为两种类型:应用程序模块(业务实现)和框架模块(技术实现);
ABP应用中最顶层的模块是启动模块,最后被加载的也是启动模块。
HelloAbpModule.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingMicrosoft.Extensions.DependencyInjection;usingVolo.Abp;usingVolo.Abp.Modularity;namespaceHelloAbp{///<summary>///启动模块///</summary>publicclassHelloAbpModule:AbpModule{//TODO:重写ABP模块的服务配置方法,向模块中注册自定义的服务publicoverridevoidConfigureServices(ServiceConfigurationContextcontext){base.ConfigureServices(context);//TODO:ABP注册服务方式二:模块注册context.Services.AddTransient<HelloWorldService>();}}}
小结
使用标签属性注册自定义服务初始化ABP模块
1.注册ABP基础设施与核心服务(模块系统相关)
2.加载整个应用的所有模块,按照依赖性排序
3.按顺序遍历所有模块,执行每一个模块的配置方法
4.按顺序遍历所有模块,执行每一个模块的初始化方法
HelloWorldService.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingMicrosoft.Extensions.DependencyInjection;usingVolo.Abp.DependencyInjection;namespaceHelloAbp{///<summary>///TODO:ABP注册服务方式三:特性标签///ServiceLifetime.Singleton、ServiceLifetime.Scoped、ServiceLifetime.Transient///</summary>[Dependency(ServiceLifetime.Transient)]publicclassHelloWorldService{publicvoidRun(){Console.WriteLine($"{nameof(HelloAbpModule)}-{nameof(HelloWorldService)}:HelloWorld!");}}}ABP 项目中使用 Autofac1. 安装 Autofac 模块
Install-PackageVolo.Abp.Autofac-Version3.3.22. 在模块中创建对 Autofac 模块的依赖
HelloAbpModule.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingMicrosoft.Extensions.DependencyInjection;usingVolo.Abp;usingVolo.Abp.Autofac;usingVolo.Abp.Modularity;namespaceHelloAbp{///<summary>///启动模块///</summary>//TODO:使用Autofac第三方依赖注入框架(提供了更多的高级特性)[DependsOn(typeof(AbpAutofacModule))]publicclassHelloAbpModule:AbpModule{publicoverridevoidConfigureServices(ServiceConfigurationContextcontext){base.ConfigureServices(context);context.Services.AddTransient<HelloWorldService>();}}}3. 在ABP应用创建时集成 Autofac
Program.cs
usingSystem;usingMicrosoft.Extensions.DependencyInjection;usingVolo.Abp;namespaceHelloAbp{classProgram{staticvoidMain(string[]args){{//根据启动模块创建abp应用varapplication=AbpApplicationFactory.Create<HelloAbpModule>(options=>{//集成Autofacoptions.UseAutofac();});//初始化abp应用application.Initialize();//获取应用中注册的服务varservice=application.ServiceProvider.GetService<HelloWorldService>();//调用应用中的服务方法service.Run();}Console.WriteLine("HelloWorld!");Console.ReadKey();}}}
感谢各位的阅读!关于“.NETCore如何使用APBvNext框架”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。