c# - .NET Core 多租户实用性
问题描述
我想知道开发一个多租户的 .NET Core 应用程序是否可行,还是拥有一个普通的单租户应用程序就足够了?
我当前的数据库结构如下:
- 用户表
- 组织表
- 产品表
一个用户属于一个组织(系统管理员除外),一个组织可以有多个产品
当用户登录时,他们的部分声明是 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
还是我目前的方法足够了?
我打算构建它以支持多个组织。
解决方案
我们目前所做的事情与您的理论设置非常相似。每个租户在他们自己的“服务器”(容器化)上运行相同的代码。配置中的大部分“难点”应该与服务器有关,而不是.Net本身。
根据您的业务领域,您可能想要确定是否有任何客户可能会因为他们的数据与其他人的数据混合而感到不安。如果这没什么大不了的,只是逻辑(组织)分离工作忽略了我。
推荐阅读
- apache-kafka - kafka记录没有被删除
- twitter-bootstrap - 如何在不将徽标品牌移动到中心的情况下修复中心菜单?
- game-development - 如何在 Gamemaker Studio 1.4 中创建类似于 MOTHER 系列的里程计/滚动计生命系统?
- twilio - Twilio Autopilot:如何从 Airtable 中提取数据并将结果返回给用户?
- c++ - Qt QTableView paint() 事件无限期交付,消耗 1 个 CPU 内核的 100%
- javascript - 如何在 reactjs 中与组件一致地使用网格布局
- build - 尝试构建 next.js 示例应用程序时从 Terser 获取 TypeError
- android - 如何在 Android 应用程序中结合 RxJava 中的网络和数据库更新
- reactjs - 路由参数更改时组件不会重新加载新数据
- php - $_POST 在 ajax 向 php 页面发送请求后返回空数组