ASP.NET Core DI概述

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 众所周知,ASP.NET Core有一个DI框架,应用程序启动时初始化。

众所周知,ASP.NET Core有一个DI框架,应用程序启动时初始化。

  预定义依赖

1: IApplicationBuilder:提供了配置应用程序的请求管道机制

2:ILoggerFactory:次类型提供了创建记录器组件的模式

3:LHostinEnvironment:此类型提供管理应用程序运行的Web宿主环境的信息。

  注册自定义依赖

为了注册类型,需要让系统知道如何将一个抽象类型解析为一个具体类型,这种映射可以是静态设定,也可以是动态的。

publicvoid ConfigureServices(IServiceCollection services)         {             services.AddTransient<ICustomerService, CustomerService>();         }

每当请求一个实现了ICustomerService的类型的实例时,系统返回CustomerService的一个实例,特别是,AddTransient方法确保了每次都会返回CustomerSerivce类型的一个新实例。

静态解析有时候有一定的局限性。事实上,如果需要根据运行时条件将类型T解析为不同的类型,它允许指定一个回调函数来解析依赖

publicvoid ConfigureServices(IServiceCollection services)         {             services.AddTransient<ICustomerService>(provider=> {                 var context = provider.GetRequiredService<IHttpContextAccessor>();                 if (SomeRuntimeConditionHolds(context.HttpContext.User))                     returnnew CustomerServiceMatchingRuntionCondition();                 else                    returnnew DefaultCustomerService();             });         }

  收集配置数据

我们都知道之前的配置都是用web.config文件类获取配置,那么在Core中他们提供了一个更加丰富,复杂的基础结构。

它配置是基于 名称-值 对列表。1:Json数据提供程序,2:环境变量提供程序,3:内存提供程序。4:自定义配置提供程序。

关于自定义配置,我们需要实现一个IConfigurationSource接口的类,但是,在实现的时候,还需要引用一个集成自ConfigurationProvider的自定义类

publicclass MyDatabaseConfigSoure : IConfigurationSource     {                public IConfigurationProvider Build(IConfigurationBuilder builder)         {             thrownew MyDatabaseConfigProvider();         }     } publicclass MyDatabaseConfigProvider : ConfigurationProvider     {         privateconststring ConnectionString = "";         publicoverridevoid Load()         {             using (var db = new MyDatabaseContext(ConnectionString))             {                 //..            }         }     }

相关文章
|
26天前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
42 5
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
49 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
1月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
28 3
|
11天前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
29 0
|
4月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
4月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
87 0
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
69 0
|
5月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
5月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
161 0
|
8月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
220 0