当前位置: 首页 > news >正文

娄底高端网站建设网站建设费计入 科目

娄底高端网站建设,网站建设费计入 科目,杭州企业网站设计模板,作文网站大全ASP.NET Core在底层内置了一个依赖注入框架#xff0c;通过依赖注入的方式注册服务、提供服务。依赖注入不仅服务于ASP.NET Core自身#xff0c;同时也是应用程序的服务提供者。毫不夸张的说#xff0c;ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建#xff0c;… ASP.NET Core在底层内置了一个依赖注入框架通过依赖注入的方式注册服务、提供服务。依赖注入不仅服务于ASP.NET Core自身同时也是应用程序的服务提供者。毫不夸张的说ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建同时也实现了面向抽象的编程模式和编程体验提升了应用程序的扩展性。今天我们普及一下ASP.NET Core中依赖注入的一些基本知识。一、服务的注册   我们通过创建一个ASP.NET Core的项目可以发现在Startup.cs 类中有一个方法ConfigureServices这个方法的注释是这样的     This method gets called by the runtime. Use this method to add services to the container.     在ConfigureServices方法中我们可以将通过ASP.NET Core内置的依赖注入框架实现服务的的注册。  这个方法有个参数IServiceCollection见名知意服务集合。  ASP.NET Core内置的依赖注入框架将服务注册信息存储到一个实现了IServiceCollection接口的对象中。默认情况下这个接口的实现类是ServiceCollection以下是这个类的说明  https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.servicecollection?viewdotnet-plat-ext-3.1  通过这个接口和类实现我们可以发现注册服务其实就是将一个服务的ServiceDescriptor对象添加到ServiceCollection集合中。  例如public void ConfigureServices(IServiceCollection services) {services.Add(new ServiceDescriptor(typeof(IUserRepository), new UserRepository()));services.AddControllers(); } ServiceDescriptor可以理解为对某个服务注册项的描述。ASP.NET Core的依赖注入容器IServiceProvider通过ServiceDescriptor的信息动态创建服务的实例Instance.   我们看一下这个ServiceDescriptor类      有几个关键的属性     1. ServiceType服务的类型例如服务接口的类型信息     2. ImplementationType服务的实现类型例如服务接口实现类的类型信息     3. ImplementationInstance实现服务的实例一般是服务单例模式场景下使用。https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.servicedescriptor.-ctor?viewdotnet-plat-ext-3.1#Microsoft_Extensions_DependencyInjection_ServiceDescriptor__ctor_System_Type_System_Object_    4. Lifetime服务生命周期Scoped同一个请求中同一个IServiceProvider提供的对象是同一个、Singleton单例、Transient每次从服务容器进行请求时创建    5. ImplementationFactory 服务实例创建工厂自定义的IServiceProvider服务提供容器  服务注册提供了一系列重载的方法大家可以根据需要进行选择       服务注册的过程中涉及到了服务的生命周期的概念接下来我们详细看一下。二、服务生命周期   服务的生命周期设置决定了服务提供容器IServiceProvider使用什么样的方式提供服务实例对象。正如上面第一章节所说的   ASP.NET Core服务依赖注入框架支持三种类型的服务生命周期   Singleton   Scoped   Transient  其中   Transient暂时的每次从服务容器进行请求时创建。 这种生存期适合轻量级、 无状态的服务。   Singleton单一实例在第一次请求时或者在运行 Startup.ConfigureServices 并且使用服务注册指定实例时创建的。每个后续请求都使用相同的实例。   Scoped范围内的作用域生存期服务以每个客户端请求连接一次的方式创建。可以这么理解同一个请求中同一个IServiceProvider提供的对象是同一个。   微软给了个例子不错先注册服务三种类型public void ConfigureServices(IServiceCollection services) { br services.AddRazorPages(); br services.AddScopedIMyDependency, MyDependency();services.AddTransientIOperationTransient, Operation();services.AddScopedIOperationScoped, Operation();services.AddSingletonIOperationSingleton, Operation();services.AddSingletonIOperationSingletonInstance(new Operation(Guid.Empty));//OperationService depends on each of the other Operation types.services.AddTransientOperationService, OperationService();}第一个请求  控制器操作暂时性d233e165-f417-469b-a866-1cf1935d2518作用域5d997e2d-55f5-4a64-8388-51c4e3a1ad19单一实例01271bc1-9e31-48e7-8f7c-7261b040ded9实例00000000-0000-0000-0000-000000000000OperationService 操作暂时性c6b049eb-1318-4e31-90f1-eb2dd849ff64作用域5d997e2d-55f5-4a64-8388-51c4e3a1ad19单一实例01271bc1-9e31-48e7-8f7c-7261b040ded9实例00000000-0000-0000-0000-000000000000第二个请求第二个请求控制器操作暂时性b63bd538-0a37-4ff1-90ba-081c5138dda0作用域31e820c5-4834-4d22-83fc-a60118acb9f4单一实例01271bc1-9e31-48e7-8f7c-7261b040ded9实例00000000-0000-0000-0000-000000000000OperationService 操作暂时性c4cbacb8-36a2-436d-81c8-8c1b78808aaf作用域31e820c5-4834-4d22-83fc-a60118acb9f4单一实例01271bc1-9e31-48e7-8f7c-7261b040ded9实例00000000-0000-0000-0000-000000000000大家可以根据实际的需要选择服务的生命周期创建不同类型的服务。三、服务的消费  前面我们将服务注册到IServiceCollectionASP.NET Core服务提供容器IServiceProvider就可以根据IServiceCollection 创建具体类型的服务对象了。  我们先看一下IServiceProvider接口可以发现只有一个GetService方法。     我们可以通过以下代码使用public static void Main(string[] args) {var builder CreateHostBuilder(args);var host builder.Build();var userRepo host.Services.GetService(typeof(IUserRepository)) as IUserRepository;userRepo.AddUser(user);host.Run();}同时我们更多常用的是 将服务通过ASP.NET Core依赖注入框架注入到控制器中 ASP.NET Core MVC 控制器通过构造函数显式请求依赖关系。即通过构造函数注入服务的实现。 前面我们通过ConfigureServices注册了服务IUserRepository在Controller这一层如何消费使用这个服务呢答案就是在Controller构造函数中注入。 看一段示例代码HomeController的构造函数中增加了一个参数IUserRepositorypublic class HomeController : Controller {private readonly ILoggerHomeController _logger;private IUserRepository _userRepository;public HomeController(ILoggerHomeController logger, IUserRepository userRepository){_logger logger;_userRepository userRepository;}public IActionResult Index(){_userRepository.AddUser(new User() { });return View();}public IActionResult Privacy(){return View();}[ResponseCache(Duration 0, Location ResponseCacheLocation.None, NoStore true)]public IActionResult Error(){return View(new ErrorViewModel { RequestId Activity.Current?.Id ?? HttpContext.TraceIdentifier });}} 同时ASP.NET Core MVC 控制器支持通过注解FromServicesAttribute 将服务直接注入到Action方法中而无需使用构造函数注入public IActionResult Index([FromServices] IUserRepository userRepository) {userRepository.AddUser(new User() { });return View(); }ASP.NET Core除了支持将服务注入到控制器同时还支持将服务依赖注入到视图可以参考以下链接    https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/dependency-injection?viewaspnetcore-3.0    以上是对ASP.NET Core依赖注入框架的研究分享给大家。往期精彩回顾【.net core】电商平台升级之微服务架构应用实战.Net Core微服务架构技术栈的那些事Asp.Net Core 中IdentityServer4 授权中心之应用实战Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式Asp.Net Core 中IdentityServer4 授权流程及刷新TokenAsp.Net Core 中IdentityServer4 实战之 Claim详解Asp.Net Core 中IdentityServer4 实战之角色授权详解Asp.Net Core 中间件应用实战中你不知道的那些事Asp.Net Core Filter 深入浅出的那些事-AOPAsp.Net Core EndPoint 终结点路由工作原理解读ASP.NET CORE 内置的IOC解读及使用
http://www.zqtcl.cn/news/460770/

相关文章:

  • 题库网站怎么做做网站文件夹都起什么名字
  • 河南网站怎么备案东台市住房和建设局网站
  • 有什么手机做网站的asp.net网站安全
  • 怎么做查询网站后台做爰的视频网站
  • 迪虎科技网站建设国际市场那个app可以看
  • 怎么做跳转不影响原网站排名wordpress添加邮箱设置
  • 网站内容规范外贸电商怎么做
  • 郑州做网站齿轮wordpress 文章h标签美化
  • 建设银行网站怎么修改手机号码吗网站建设怎样容易
  • 网站建设风险管理计划书户外媒体网站建设免费
  • 学到什么程度可以做网站网站维护的要求包括
  • 泉州网站设计平台南阳响应式网站
  • 阿里云 企业网站选哪种推广普通话的文字内容
  • 广州市南沙建设局网站中山建网站咨询电话
  • 怎么创建网站快捷方式网络服务器搭建配置与管理 下载
  • 现在什么类型网站没有人做wordpress get_categories()
  • 石家庄网站推广优化闲鱼网络营销方式
  • 精诚时代 网站谁做的北京网站设计必看刻
  • 长沙网站排名报价企业管理培训课程网课
  • 怎样做婚庆网站外贸网站怎么注册
  • 网站设计制作公司推荐自己做商务网站有什么利弊
  • 传媒网站杨浦网站建设哪家好
  • 500m主机空间能做视频网站吗做中文网站的公司
  • 网站建设规划模板公司网站建设论文
  • p2p网站开发的内容广东世纪达建设集团有限公司官方网站
  • 网站基本建设是什么o元做网站
  • 南昌做购物网站的公司mc做弊端网站
  • 汕头制作网站推荐文化建设五大工程
  • 公司购物网站备案遵义市乡村街道建设投诉网站
  • ps做景观有哪些素材网站网站推广软文