.NET全局静态可访问IServiceProvider(支持Blazor)

thbcm阅读(384)

如何在静态方法中访问DI容器长期以来一直都是一个令人苦恼的问题,特别是对于热爱编写扩展方法的朋友。之所以会为这个问题苦恼,是因为一个特殊的服务生存期——范围内(Scoped),所谓的Scoped就是范围内单例,最常见的WebAPI/MVC中一个请求对应一个范围,所有注册为Scoped的对象在同一个请求中是单例的。如果仅仅用一个静态字段存储应用启动时创建出的
IServiceProvider对象,那么在一个请求中通过该字段是无法正确获取当前请求中创建的Scoped对象的。

云上分布式SQL Server,你值得拥有

thbcm阅读(385)

介绍

Microsoft SQL Azure 是微软的云关系型数据库,后端存储又称为云 SQL Server(Cloud SQL Server)。

它构建在 SQL Server 之上,通过分布式技术提升传统关系型数据库的可扩展性和容错能力。

vivo 全链路多版本开发测试环境落地实践

thbcm阅读(361)

软件系统中全链路指的是从用户请求发起,到最终返回响应的整个过程中所涉及到的所有环节和组件。在微服务软件架构风格盛行的今天,因为微服务独立部署、松耦合等特性,往往一个业务系统由数目较多的服务组成,较多的服务往往带来一系列操作上的复杂性。

EntityFramework Core并发迁移解决方案

thbcm阅读(453)

但是当多个操作同时对一个库进行Migrate的时候,就会出现问题,比如“新增一张表”的操作已经被第一个迁移执行过了,第二个执行的迁移并不知道已经执行过了Migrate,就会报错表已存在。

于是考虑在执行Migrate的时候,加入一个锁的机制,对当前数据库执行Migrate之前先获取锁,然后再来决定接下来的操作。由于这边有的服务无法访问Redis,这里使用数据库来实现锁的机制,当然用Redis来实现更好,加入锁的机制只是一种解决问题的思路。

联系我们