推荐针对我的情况的最佳方法(多租户与具有abp的单租户)

时间:2018-12-15 06:01:10

标签: architecture domain-driven-design aspnetboilerplate

我正在建模一种计费应用程序,该系统涉及系统上的三个主要角色,即保险人,医疗提供者和分析师,我选择aspnetboilerplate应用程序框架来构建我的解决方案。我正在尝试从约束中选择“单租户还是多租户”。

  1. 医疗提供者,需要招募其他提供者看不到的患者
  2. 医疗提供者,具有由整个系统的管理员创建的管理员帐户,但可以在其“租户”下创建其他用户
  3. 电子邮件被视为用户名,并且在整个系统中应该是唯一的,而不是每个医疗提供者。
  4. 保险公司,在其门户网站上查看医疗服务提供者的医疗索赔。
  5. 分析师对保险公司的索赔要求
  6. 管理员用户创建管理员医疗服务提供者并注册保险公司。

在这种情况下使用aspnetboilerplate时,多租户方法是最佳选择还是单租户更合适?

1 个答案:

答案 0 :(得分:0)

有了这些要求,您应该采用Abp多租户方法。在Abp中,当您使用IMustHaveTenant界面时,Abp可以根据登录用户的租户自动过滤查询响应。

public class Product : Entity, IMustHaveTenant
{
    public int TenantId { get; set; }
    public string Name { get; set; }
    //...other properties
}
  

这样,ASP.NET Boilerplate知道这是特定于租户的   实体,并自动将一个租户的实体与其他实体隔离   租户。

您可以从他们的multi-tenancy documentation获得更多信息。

  

什么是多租户?

     

“软件多租户是指其中   一个软件的单个实例在服务器上运行并提供多个   租户。租户是与以下用户共享公共访问权限的一组用户   软件实例的特定特权。与多租户   架构,一个软件应用程序旨在提供   租户实例的专用份额,包括其数据,   配置,用户管理,租户个人功能以及   非功能性属性。多租户与多实例的对比   架构,其中单独的软件实例代表   不同的租户”(维基百科)

     

主机与租户

     

我们定义了多租户系统中使用的两个术语:

     

租户:拥有自己的用户,角色,权限,   设置...并使用与其他应用程序完全隔离的应用程序   租户。多租户应用程序将有一个或多个租户。如果   这是一个CRM应用程序,不同的租户也有自己的   客户,联系人,产品和订单。所以当我们说一个“房客   用户”,指租户拥有的用户。

     

主机:主机为单例   (只有一个主机)。主机负责创建和   管理租户。 “主机用户”处于较高级别且独立   并可以控制所有租户。