asp.net-mvc - 哪种架构/思维方式适合构建用户可以购买 Azure 等功能的 Web 应用程序?
问题描述
我们最近有一个新的业务规则,要求我们的用户为我们的 Web 应用程序中的各个模块付费。因此,我们在应用程序中构建的所有功能都不会适用于所有用户。一些用户可以选择添加他们想要的功能。我已经尝试研究一种架构/思维方式来处理这种发展。如果我能知道如何开始这个..我将非常感激。
我使用 .NET Web 应用程序和 Microsoft SQL Server。
谢谢。
解决方案
首先列出您需要跟踪的“对象”或事物。
- 用户
- 用户身份
- 全名
- 可以管理他的功能吗?你说不是所有用户都可以
- ...
- 特征:
- 特征标识
- 描述
- 成本
- ...
- 用户有特征
- 用户和功能之间的链接
- 每行都是userid,featureid
使用它,您可以查询哪个用户具有什么功能。或列出有权访问特定功能的用户。
在您的网络应用程序中,您将需要管理员功能:
- 用户管理:添加、删除、修改、列表
- 功能:添加,删除,修改,列表
- 链接管理:添加、删除、列表
- 报告:您想要的任何报告
和用户功能:
- 用户:登录、修改、重置密码、查看所有功能、查看用户已有的功能、添加新功能、删除功能
- 报告:用户正在使用的功能的总成本,其他
现在这是一个非常快速的初稿。有很多缺失的要求:
- 批准工作流程:用户可以在没有 X 批准的情况下修改他的功能吗?
- 支付方式
- 内部计费项目编号
- 成本结构:每月一次,一次,...?
- 经理可以查看他管理的员工的特征吗?
- ...
这要记住:
- 从项目中的对象开始。这些成为表格。
- 对象的特征成为表中的字段。
- 如果相同的特征出现在许多具有相同值的对象表中,请考虑为这些表创建一个新表。前任。在地址中,您不会将国家/地区值保留为简单的 VARCHAR 字段。您将链接到具有国家/地区值的另一个表。
- 列出关系。这些成为外键或链接表。
- 拆分你的对象。所以至少应用 1NF、2NF 和 3NF。对于大多数应用程序来说已经足够了。(NF == 范式)。
- 每个表和链接都需要管理员页面 (CRUD)
- 用户只能看到与其功能相关的有限视图。
这是一个巨大的主题,我可以继续说下去,但这可以让你开始。
玩得开心!
推荐阅读
- docker - 进程终止后如何停止docker-compose
- python - 使用来自另一台计算机的 python 脚本在新计算机上安装 Python?
- python-3.x - 将字符串添加到数组中会分别添加所有字符
- python - 在python中将图像分成两部分
- debian - 使用 sudo apt-get update 时如何修复 parrot os 4.4 sudo 冲突
- python - 获取类型错误:“NoneType”类型的对象没有 len()。并且它也不会在 for 操作之后打印序列
- c# - 无法访问已处置的对象。此错误的常见原因是处理从依赖注入中解析的上下文
- python - 从具有嵌套列表的字典列表创建数据框
- page-numbering - LibreOffice Writer 中是否有按章节编号的方法?
- intellij-idea - 创建 getter/setter 不再显示