首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Autofac ASP.NET核心多租户:无法在每个租户的ContainerBuilder上调用IServiceCollection扩展

Autofac ASP.NET核心多租户:无法在每个租户的ContainerBuilder上调用IServiceCollection扩展
EN

Stack Overflow用户
提问于 2020-08-08 14:15:09
回答 1查看 120关注 0票数 0

我想创建一个多租户ASP.NET核心应用程序。我正在跟踪documentation,并且我正在调用

代码语言:javascript
运行
AI代码解释
复制
var mtc = new MultitenantContainer(container.Resolve<ITenantIdentificationStrategy>(), container);

mtc.ConfigureTenant(
    tenant.Name,
    builder=>
    {
        // register per-tenant services here
    });

我想为每个租户注册一个数据库连接。我正在使用的库在IServiceCollection上提供了一个扩展方法,所以我通常会调用services.AddDataBase(),但在lambda中,builder参数的类型是ContainerBuilder,所以扩展在这里自然不起作用。

是否有一种方法可以将builder转换为IServiceCollection,以便能够调用扩展方法?或者,这是实现扩展方法并复制整个逻辑的唯一方法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-08 14:50:51

我想出了一个相当简单的方法:

代码语言:javascript
运行
AI代码解释
复制
mtc.ConfigureTenant(
    tenant.Name,
    builder =>
    {
        IServiceCollection services = new ServiceCollection();

        services.AddDataBase();

        builder.Populate(services);
    });

我没有将构建器转换为IServiceCollection,而是实例化了一个新的构建器,然后在ContainerBuilder上使用Populate()扩展方法复制绑定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63316373

复制
相关文章
多租户技术
多租户技术(Multi-TenancyTechnology)又称多重租赁技术,用于实现如何在多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。 具体的多租户隔离技术有多种,数据库通常有如下三种。 1. 独立数据库 这是第一种方案,即一个租户一个数据库。这种方案的用户数据隔离级别最高,安全性最好,但成本也高。 优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,则恢复数据比较简单。 缺点:增大了数据库的安装数量,随之带来维护成本和购置
大数据和云计算技术
2018/03/08
7.1K0
多租户技术
Autofac 集成测试 在 ConfigureContainer 之后进行 Mock 注入
在使用 Autofac 框架进行开发后,编写集成测试时,需要用 Mock 的用于测试的模拟的类型去代替容器里面已注入的实际类型,也就需要在 Autofac 完全收集完成之后,再次注入模拟的对象进行覆盖原有业务代码注册的正式对象。但 Autofac 默认没有提供此机制,我阅读了 Autofac 的源代码之后,创建了一些辅助代码,实现了此功能。本文将告诉大家如何在集成测试里面,在使用了 Autofac 的项目里面,在所有收集完成之后,注入用于测试的 Mock 类型,和 Autofac 接入的原理
林德熙
2021/06/09
2.6K0
多租户技术
独立数据库 这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。 优点: 为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求; 如果出现故障,恢复数据比较简单。 缺点: 增大了数据库的安装数量,随之带来维护成本和购置成本的增加。 这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。 共享数据库,隔离数据架构 这是第二种方案,即多个或所有租户共享 Database,但是每个租户一个 Schema。 优点: 为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。 缺点: 如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据; 如果需要跨租户统计数据,存在一定困难。 共享数据库,共享数据架构 这是第三种方案,即租户共享同一个 Database、同一个 Schema,但在表中通过 TenantID 区分租户的数 据。这是共享程度最高、隔离级别最低的模式。 优点: 三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。 缺点: 隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量; 数据备份和恢复最困难,需要逐表逐条备份和还原。 如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。
全栈程序员站长
2022/08/10
8630
多租户Kubernetes
Kubernetes Multitenancy WG Deep Dive KubeCon EU 2019 (last updated 5/22/2019) 描述了4种解决方案,并做了对比:
王磊-字节跳动
2020/02/13
3K0
Cortex:多租户、可横向扩展的Prometheus即服务
Prometheus是用于监控和可观察性的标准开源解决方案之一。 Prometheus于2012年起源于SoundCloud,迅速获得广泛采用,后来成为首批CNCF项目之一,第二个毕业项目(仅次于Kubernetes)。它被许多具有前瞻性思维的公司用于生产,包括DigitalOcean、Fastly和Weaveworks等重量级公司,并拥有自己的年度会议PromCon。
CNCF
2019/12/05
2.5K0
Cortex:多租户、可横向扩展的Prometheus即服务
ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期. 这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 正文 上一篇我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础功能而已.. 所以今天我们主要讲讲如何采用Autofac来替换IOC容器,并实现属性注入 注意:本文需要读者理解DI IOC并使用过相关框架. 1.将默认的IOC容器替换为Autofac  首先,我们需要从nu
GuZhenYin
2018/03/30
1.1K0
ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
[云计算架构:Dynamics ] 多租户 或多实例 ?
Dynamics 365(在线)为您提供了隔离Dynamics 365数据和用户访问权限的选项。 对于大多数公司而言,在订阅中添加和使用多个实例可提供正确的功能组合和易管理性。 具有不同地理位置的企业可能会考虑使用多个租户来分离Dynamics 365(在线)许可证。 多个实例可以在实例之间共享用户; 多个租户不能。
架构师研究会
2018/09/21
3.3K0
[云计算架构:Dynamics ] 多租户 或多实例 ?
.Net Core 学习之路-AutoFac的使用
本文不介绍IoC和DI的概念,如果你对Ioc之前没有了解的话,建议先去搜索一下相关的资料 这篇文章将简单介绍一下AutoFac的基本使用以及在asp .net core中的应用 Autofac介绍 组件的三种注册方式 反射 现成的实例(new) lambda表达式 (一个执行实例化对象的匿名方法) 下面是一些简短的示例,我尽可能多的列出来一些常用的注册方式,同时在注释中解释下“组件”、“服务”等一些名词的含义 // 创建注册组件的builder var builder = new ContainerBui
蓝夏
2018/05/02
1.6K0
ELK多租户方案
日志分析是目前重要的系统调试和问题排查的重要手段之一,而目前分布式系统由于实例和机器众多,所以构建一套统一日志系统是非常必要的;ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前的主流选择之一。
陶陶技术笔记
2020/12/11
2.6K0
ELK多租户方案
ASP.NET Core 依赖注入基本用法
ASP.NET Core从框架层对依赖注入提供支持。也就是说,如果你不了解依赖注入,将很难适应 ASP.NET Core的开发模式。本文将介绍依赖注入的基本概念,并结合代码演示如何在 ASP.NET Core中使用依赖注入。
拓荒者IT
2019/09/24
2.1K0
ASP.NET Core 依赖注入基本用法
【asp.net core 系列】14 .net core 中的IOC
通过前面几篇,我们了解到了如何实现项目的基本架构:数据源、路由设置、加密以及身份验证。那么在实现的时候,我们还会遇到这样的一个问题:当我们业务类和数据源越来越多的时候,我们无法通过普通的构造对象的方法为每个实例进行赋值。同时,传统意义上的赋值遇到底层切换或者其他修改的时候,就需要修改大量的代码,对改变不友好。为了改变这种现状,我们基于面向接口编程,然后使用一些DI功能和IOC框架。
程序员小高
2020/07/02
1.2K0
hibernate实现多租户[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105687.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/10
1.6K0
hibernate实现多租户[通俗易懂]
关于多租户架构下的每个PDB的dbtime查询
有客户咨询在19c多租户这样的架构中,除了查询cdb本身外,还想查询具体pdb的负载(DB Time),但是使用之前的脚本发现查询不到,只显示cdb自己的结果,客户写的脚本如下:
Alfred Zhao
2022/10/31
4890
虚拟集群 - 集群视图扩展基于命名空间的多租户
在这篇客座文章中,来自阿里巴巴的Kubernetes团队,将分享他们如何在社区里基于上游的Kubernetes通过利用一组名为“虚拟集群(Virtual Cluster)”的插件,构建硬性多租户以及扩展租户设计。该团队决定开源这些K8s插件,并在即将到来的KubeCon,为Kubernetes社区贡献这些插件。
CNCF
2019/12/04
1.7K0
虚拟集群 - 集群视图扩展基于命名空间的多租户
全面理解 ASP.NET Core 依赖注入
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚。另外再介绍一下.NET  Core的DI实现以及对实例生命周期的管理(这个是经常面试会问到的问题)。最后再给大家简单介绍一下在控制台以及Mvc下如何使用DI,以及如何把默认的Service Container 替换成Autofac。 我录了一些关于ASP.NET Core的入门视频:有兴趣的同学可以去看看。 http://www.cnblogs.com/jesse
用户1153966
2018/03/14
2.3K0
全面理解 ASP.NET Core 依赖注入
.NET CORE——Console中使用依赖注入
我们都知道,在 ASP.NET CORE 中通过依赖注入的方式来使用服务十分的简单,而在 Console 中,其实也只是稍微绕了个小弯子而已。不管是内置 DI 组件或者第三方的 DI 组件(如Autofac),通过 IServiceCollection 接口我们都可以做到和应用程序的无缝连接。本文将在别给出内置组件和第三方组件(主要是Autofac)在 Console 应用程序中的依赖注入实现方式。 1. 在 Console 中使用内置 DI 组件 网上已经有几篇相关的博客讲解 Console 中的依赖注入
潘成涛
2018/07/09
2.1K0
.NET CORE——Console中使用依赖注入
我们都知道,在 ASP.NET CORE 中通过依赖注入的方式来使用服务十分的简单,而在 Console 中,其实也只是稍微绕了个小弯子而已。不管是内置 DI 组件或者第三方的 DI 组件(如Autofac),通过 IServiceCollection 接口我们都可以做到和应用程序的无缝连接。本文将在别给出内置组件和第三方组件(主要是Autofac)在 Console 应用程序中的依赖注入实现方式。 1. 在 Console 中使用内置 DI 组件 网上已经有几篇相关的博客讲解 Console 中的依赖注入
潘成涛
2018/01/18
1.1K0
(译)创建.NET Core多租户应用程序-租户解析
本系列博客文章探讨了如何在ASP.NET Core Web应用程序中实现多租户。这里有很多代码段,因此您可以按照自己的示例应用程序进行操作。在此过程的最后,没有对应的NuGet程序包,但这是一个很好的学习和练习。它涉及到框架的一些“核心”部分。
李明成
2020/04/07
2.5K0
ASP.NET Core 依赖注入
一、什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它? 初学者特别容易对控制反转IOC(Iversion of Control),DI等概念搞晕。 1.1依赖 当一个类需要另一个类协作来完成工作的时候就产生了依赖。比如我们在AccountController这个控制器需要完成和用户相关的注册、登录 等事情。其中的登录我们由EF结合Idnetity来完成,所以我们封装了一个EFLoginService。这里AccountControlle
牛嗷嗷
2018/03/30
1.8K0
Byzer 多租户支持指南
用户可能通过 Byzer 的上层应用诸如 Notebook 进行任务的提交,任务会通过 Byzer Router 完成路由转发。
用户2936994
2022/05/08
8590
Byzer 多租户支持指南

相似问题

多租户ASP.NET核心

12

多租户ASP.NET核心

10

Asp.Net核心多租户

11

Hangfire -多租户,ASP.NET核心-解析正确的租户

10

Autofac多租户-在运行时重写租户

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文