【发布时间】:2020-01-17 12:27:09
【问题描述】:
我想知道开发一个多租户的 .NET Core 应用程序是否可行,还是拥有一个普通的单租户应用程序就足够了?
我目前的db结构如下:
- 用户表
- 组织表
- 产品表
一个用户属于一个组织(系统管理员除外),一个组织可以拥有多个产品
当用户登录时,他们的部分声明是 OrganizationId,这意味着他们只能看到他们的 OrganizationId 拥有的产品。
目前,我的网址如下所示:
- www.localhost.com:9988
- www.localhost.com:9988/Products/Product/Create
我的 Startup.cs url 路由如下所示:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
});
将我现在拥有的应用程序转换为多租户应用程序会很困难吗?类似于当属于某个组织的用户登录时,他们的 url 将是
组织名称.localhost.com:9988/Products/Product
或者我现在的方法够用了吗?
我打算构建它以支持多个组织。
【问题讨论】:
-
你可以随心所欲。我个人的偏好,尤其是在使用容器时(你应该使用容器),是使租户配置基于。换句话说,您可以使用例如“{orgname}-prod”的环境进行部署,然后使用完全不同的配置设置(连接字符串等)。这样,您的应用程序只需专注于以抽象方式支持通用组织。所有使一个组织与众不同的东西都来自配置。
-
当你说容器时,你是指像 Docker 这样的东西吗?我正在尝试实现类似于 Shopify 所做的事情。当您注册时,您会使用您的商店名称获得类似子域的东西。
标签: c# asp.net-mvc asp.net-core .net-core multi-tenant