使用 Autofac 的上下文的 MVC 多租户应用程序实例范围?
MVC Multitenant Application Instance Scope on Context using Autofac?
大家好我正在优化我的应用程序并且有一个问题。我的设计看起来像这样:
ApplicationCore -> 来自 ApplicationDatabases 模型生成器的 T4
ApplicationData -> 访问 ApplicationCore 中的数据库上下文的存储库
public class entityRepository<TEntity> : entityRepository<TEntity> where TEntity : class, IEntity
{
protected readonly DatabaseContext dbContext;
protected readonly IDbSet<TEntity> currentTableContext;
public entityRepository(DatabaseContext context)
{
this.DbContext = context;
currentTableContext = context.Set<TEntity>();
}
ApplicationDatabases -> 从模型生成器创建的数据库
ApplicationServices -> 创建 entityRepository 的服务
private readonly entityRepository<Users> _userRepository;
public userService(entityRepository<Users> userRepository)
{
_userRepository = userRepository;
}
我想知道我是否可以在 Autofac 中将 entityRepository 注册为 InstancePerTenant 或者我应该使用另一个实例范围。
builder.Register(context => new DatabaseContext()).InstancePerTenant();
builder.RegisterGeneric(typeof(entityRepository<>)).As(typeof(IentityRepository<>)).InstancePerTenant;
我现在正在这样做并且它有效,但我不确定我以后是否会得到任何资源或类似的问题。如果我能得到一些建议,我也会很高兴。
恕我直言,我在一个多租户项目中工作过,但没有使用 autofac。有几点想提给大家讨论一下
- 在多租户应用程序的情况下,将用户和实体存储库加载到每个租户的内存中,似乎有点开销
- 如果租户希望查看其子租户的数据,如何实现
- 当有 50 个租户的应用程序负载时,从应用程序的角度来看,对负载的并行性和响应性会发生什么变化。
请仔细考虑这些用例以及在转向生产后可能出现的其他用例并分享您的想法。
大家好我正在优化我的应用程序并且有一个问题。我的设计看起来像这样:
ApplicationCore -> 来自 ApplicationDatabases 模型生成器的 T4
ApplicationData -> 访问 ApplicationCore 中的数据库上下文的存储库
public class entityRepository<TEntity> : entityRepository<TEntity> where TEntity : class, IEntity
{
protected readonly DatabaseContext dbContext;
protected readonly IDbSet<TEntity> currentTableContext;
public entityRepository(DatabaseContext context)
{
this.DbContext = context;
currentTableContext = context.Set<TEntity>();
}
ApplicationDatabases -> 从模型生成器创建的数据库
ApplicationServices -> 创建 entityRepository 的服务
private readonly entityRepository<Users> _userRepository;
public userService(entityRepository<Users> userRepository)
{
_userRepository = userRepository;
}
我想知道我是否可以在 Autofac 中将 entityRepository 注册为 InstancePerTenant 或者我应该使用另一个实例范围。
builder.Register(context => new DatabaseContext()).InstancePerTenant();
builder.RegisterGeneric(typeof(entityRepository<>)).As(typeof(IentityRepository<>)).InstancePerTenant;
我现在正在这样做并且它有效,但我不确定我以后是否会得到任何资源或类似的问题。如果我能得到一些建议,我也会很高兴。
恕我直言,我在一个多租户项目中工作过,但没有使用 autofac。有几点想提给大家讨论一下
- 在多租户应用程序的情况下,将用户和实体存储库加载到每个租户的内存中,似乎有点开销
- 如果租户希望查看其子租户的数据,如何实现
- 当有 50 个租户的应用程序负载时,从应用程序的角度来看,对负载的并行性和响应性会发生什么变化。
请仔细考虑这些用例以及在转向生产后可能出现的其他用例并分享您的想法。