ABP.ModuleZero.Feature——特性管理
原文地址:http://aspnetboilerplate.com/Pages/Documents/Feature-Management (在翻译原文的基础上增补更多细节说明)
简介
在大多数SAAS系统中。都提供【版本】这个概念。不同的版本提供不同的功能特性。通过这种方式,一个SAAS系统可以提供不同的价格与功能组合给不同的租户。
例如【标准版】含有A/B/C三个功能,售价1000元;【旗舰版】包含A/B/C/D四个功能,售价2000元。
ABP内置了特性(功能)模块以简化此类功能开发。您可以定义各种特性(功能),检测某个指定特性(功能)是否对某个指定租户开放,或者根据后台设置的特性(功能)开放对应的页面或是生成对应的导航。
在一个SAAS系统中,使用不同功能版本的租户应该看到不同的导航菜单。例如在一个OA系统中,旗舰版的用户有人事管理、财务管理、行政管理、知识管理四个导航菜单。但标准版则没有知识管理这个导航菜单。即使用户通过在地址栏直接输入知识管理对应的url地址,系统也应该给与明确的错误提示:您的版本为开通此功能,如有需要,请联系...,而不应该不做任何验证直接使用该功能。在ABP的架构设计中,特性和版本是直接关联的,您可以通过检测当前用户所属的租户对应的版本是否开通了当前操作对应的功能以确定是否对用户开放当前操作。
补充:在ABP中,特性可以直接关联到具体的租户,也可以关联到具体的版本。举例:系统中一共有5个功能,标准版有1,2,3功能,旗舰版有1,2,3,4,5功能。现实情况中,有可能会出现客户因为价格原因,购买标准版,但是又对旗舰版的第五项功能迫切需要。此时可单独针对此租户开放1,2,3,5四个功能(具体实现代码后续在我们的OA中做详细演示)。
特性值仓库接口
特性功能通过使用IFeatureValueStore 接口来实现获取特性的值。您可以自己实现该接口,该接口的完整实现在Module Zero项目中。如果您没有在系统中手动实现该接口,系统默认会使用NullFeatureValueStore这个实现,在该实现中,所有获取特性的方法都返回Null值。
此处翻译起来很别扭,可能是我理解有误,没想明白作者为何要如此操作。
特性类型
系统中存在两种基本特性类型。
布尔特性类型
值为“true”或者“false”,此类型克用于设置针对某个版本或是某个租户开放或者关闭某个特性(功能)。
值特性类型
该类型可以存储任意类型的值。在系统中,存储或获取该值时,得到的是该值的文本形式。故,在实际使用中,需要进行类型转化。
举个例子:假如系统是一个任务管理系统,并且限制每个月可创建的任务数。想象一下,假如系统包含两个版本,标准版限制每月最多允许创建1000个任务,旗舰版限制每月最多允许创建5000个任务。此时,我们应该使用特性去存储1000与5000这两个值,而不应该简单存储true/false。
在实际使用中,如果一定只有两个版本且日后不会更改,用布尔值区分特性也是可以的,但是,假如系统有三个、四个、甚至五个版本时,布尔值就不够用了(布尔值最多允许两个值)。
注意:系统中存储的1000与5000是字符串格式的“1000“与“5000“,而不是具体的数字。
ABP.ModuleZero.Feature——特性管理的更多相关文章
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十三节--RBAC模式及ABP权限管理(附送福利)
ABP+AdminLTE+Bootstrap Table权限管理系统一期 Github:https://github.com/Jimmey-Jiang/ABP-ASP.NET-Boilerplate- ...
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十二节--小结,Bootstrap Table之角色管理
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 很多人说ABP不适合高并发大型,有一定的道理,但是我觉得还是可以的,就看架构师的能力了,哈哈,我之前公司就是ABP ...
- ABP ModuleZero后台框架materialize禁止模拟select和checkbox
使用abp modulezero自带那个后台框架发现一个操蛋的问题,所有的select和checkbox都被改成div模拟的,虽然比原生美观,但有时候真的很难用. 比如说要用select做一个联动菜单 ...
- AspnetBoilerplate (ABP) Organization Units 组织结构管理
ABP是一个成熟的.NET框架,功能完善.目前由于项目需要正在自学中. ABP对于组织节点管理这一基本上每个项目都要反复重复开发的内容,进行了自己的实现. 主要包括这些常用功能: 多租户 树结构管理的 ...
- X-Admin&ABP框架开发-设置管理
在网站开发中,设置是不可缺少的一环,如用户设置.系统设置.甚至是租户设置等.ABP对于设置的管理已经做了很好的处理,我们可以借助巨人的力量来完成我们的冒险. ABP官网地址:https://aspne ...
- ABP理论学习之设置管理
返回总目录 本篇目录 介绍 定义设置 获取设置值 更改设置 关于缓存 介绍 每个应用程序都需要存储一些设置信息,然后在应用程序中的某个地方使用这些设置.ABP提供了健壮的基础设施来存储或检索服务端和客 ...
- ABP理论学习之功能管理
返回总目录 本篇目录 介绍 功能类型 定义功能 检查功能 功能管理者 版本说明 介绍 大多数的Saas(多租户)应用都有不同 功能的 版本(包).因此,他们可以给租户(客户)提供不同的 价格和功能选项 ...
- Module-Zero之租户管理
返回<Module Zero学习目录> 开启多租户 租户实体 租户管理者 默认租户 开启多租户 ABP和Module-Zero可以运行多租户或单租户模式.多租户默认是禁用的.我们可以在mo ...
- ABP Zero 多租户管理
ABPZero - 多租户管理 启用多租户 ASP.NET Boilerplate和module-zero可以运行多租户或单租户模式.多租户默认为禁用.我们可以在我们的模块PreInitialize方 ...
随机推荐
- window7远程桌面到server不能复制粘贴解决的方法
用远程桌面登陆server不能在本机和远程server之间粘贴文本了,即不能从本机复制文本粘贴到server,也不能从server复制文本粘贴到本机. 下面是解决方法之中的一个,试了几次都非常管用户: ...
- 十五项指标衡量DevOps是否成功
DevOps在你的组织内部运行的如何?如果你需要一些帮助来度量它的运行情况,我们已经准备了一个用于跟踪的关键DevOps指标的列表,这些度量可以帮助了解你的团队是如何随着时间的推移而运行的. 在团队内 ...
- vmstat命令参数详解
转自:https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html vmstat命令是最常见的Linux/Unix监控工具,可以展 ...
- fastRPC服务使用
现在出现了很多中间件解决跨语言问题,使用RPC远程调用:但是庞大是个问题,而且要按照格式使用.尤其是源码量比较庞大. 为了简单易用,我采用订阅发布模型,在此基础上创建了fastRPC,模拟RPC,调用 ...
- centos配置静态ip地址
1.输入以下命令: vim /etc/sysconfig/network-scripts/ifcfg-eth0 2.注释掉BOOTPROTO=dhcp 3.添加如下内容: ONBOOT=yes 表示开 ...
- Phpstorm如何连接服务器
当服务器是Linux的时候不懂指令觉得很懊恼,这个时候直接就可以使用PHPstorm连接服务器操作了: 1丶准备工作 首先你先要准备服务器丶phpstorm这两个吧! 2丶开始配置phpstorm 按 ...
- 【NoSql】之Hbase
Hbase概述 · Hbase是构建在hdfs上的分布式列式存储系统 · Hbase内部管理的文件全部存储在HDFS上面, · Hbase是基于google bigtable 模型开发的,典型的 ...
- VB6 Access 事务(Transaction)
VB6 Access 事务 On Error GoTo err_trans intTrans = conn.BeginTrans '开始事务 X = count For i = 0 To X sql= ...
- # 2017-2018-1 20155224 《信息安全系系统设计基础》第四周MyOD
2017-2018-1 20155224 <信息安全系系统设计基础>第四周MyOD 在这里跟老师先道歉,当时我的git没有安装好,后面也一直没有装上,所以程序没有git. 要求 参考教材第 ...
- 亲手搭建一个基于Asp.Net WebApi的项目基础框架4
实现目的:配置website端与服务端对接 1:配置好各项配置文件 2:server端编写接口客户端调用 1.1首先配置文件有log4的配置文件,有config的配置文件,还有服务列表的配置文件 首先 ...