开源权限引擎-anycmd融合

15-01-04 liangshan
              

anycmd是一个.net平台的完全开源的,完整支持rbac的,将会支持xacml、javascript的通用的权限框架、引擎、中间件、解决方案。更多介绍猛击http://www.oschina.net/p/anycmd

Function 和operation 的区别?

operation 是一种function,operation 集是function 集的子集。operation 是功能层(展示层)的function, 一个operation 表示一个功能,一个function 不一定是一个功能。

如果一个operation 的访问是受控的,也就是说不是每个主体的请求都会被满足的则就是permission。而privilege是subject + permission。Operation = action + resourceType;Permission = managedOperation;功能级Privilege = subject * permission;实体级privilege = subject * entity;(这些公式并不严禁,并没有事先定义加减乘除是什么意思,只是用来传递意思,需要借助大量的冗余来降低信息损失)实体属性级/单元格级以此类推(注意合理分配存储和计算)。

关于审计:

比如用户申请某些权限的时候,权限管理员授予用户权限的时候都可能需要审计,不仅仅是用户而是所有的主体(全部主体包括用户主体和系统主体)。Rbac上也定义有审计概念。审计某个活动,审计某条资源记录(客体),审计某个主体,审计整个系统……

关于跨平台:

最终像clr jvm这样的东西仅仅是个cpu角色,Clr仅仅用来计算,一切东西都可以从clr中取出来自己托管自己显式的管理。做到这一步就做到了最终的夸平台了。使用anycmd开发的系统可以运行在各种平台,因为它们在咱们看来都只是cpu,现在Java golang nodejs .net平台的anycmd都在齐头并进,即使不追求仅把技术平台当作cpu用,至少权限数据可以跨平台。感觉那个akka.net actor把万事万物抽象为了actor + cpu。如果cpu被看作计算actor的话就是全是actor了。这些actor就是面向对象最初人们所指的对象。这些actor被串在一棵树上,并提供一个管理调谐这棵树和actor的编程系统(或解释或编译,没有本质差别),世界现在就是这个样子的,以后只是更好的是这样的。

关于代码生成:

代码生成不是anycmd的方向。首先因为anycmd的代码结构还没形成模式;其次anycmd希望考虑这样的方向,减少编译时代码,通过提取和配置一套元数据来影响运行时,把编译时代码降到最低。

// 往下是拓展内容,用于积、累。

不妨相信人类的知识树是良好的,不妨相信人类的知识树是按照构造定律构建的。那么“功能”、“能力”就是“功”、“能”、“力”。按照本意理解那棵知识树节点中的词汇出错的机会是非常小的。

从新表述一下Operation和Function的区别

与上面的表述在意义上没有差别,是一致的,是对同一个事物不不同描述。

Operation是一种Function,Operation集是Function集的子集。

Operation表示的是主体发起的调用,Operation是有标识的实体,Operation的标识在调用发起时由系统分配。在Operation方法体的直接子节点中可以通过UserSession.Current到当前线程中索引发起当前调用的主体(方法体的直接子节点是指方法体中直接书写的那些语句而不是跳到另一个方法中去)。

而Function体中不能通过UserSession.Current索引当前主体,若Function体中做功时需要当前主体信息的话,当前主体唯有通过Function的入参传入。

“方法、函数、功能”是在做功。函数体中那个运行时的栈就是在做功。function没有标识(注意这是个小写的function,表示function实例。当然大写的Function是有标识的,这个标识是元数据标识),function是值对象;operation会在主体调用时由系统分配一个唯一的标识,operation是实体。

国家的rbac标准上使用的是Operation这个词,而anycmd中使用的是Function这个词。由于Function集比Operation集大,Operation集是Function集的子集,这就是说anycmd的能力集是比rbac大的多的。

控制权限就是控制运动:

时间 = 运动 = 变化 = 功 = 能。将人类所有的资料中的这些词汇相互替换后阅读一定都是通顺的。

事物有变化才需要控制,当事物睡在空间介质中不动时是不需要控制权限的,只有当有人读它、写它,只有它有变化时,只有做功时才需要控制。

在anycmd关键字下,之前咱们论述到时间就是变化。时间 = 变化 = 运动 = 功能。

事物睡在空间介质中时它是不变化的,从而它的时间是静止的。时间是相对的(运动是相对的、变化是相对的),睡在空间介质中的事物的时间是静止的,但是别的醒着的事物的时间是前进着的,为了统一管理整个系统中的时间箭头我们的系统中会有个唯一的计时设备(cpu)。

睡在空间介质中的事物可以在某些系统时刻到达时由外部醒着的事物向它们发起请求,然后由基础设施将它的副本转移到活跃的空间中去催醒它使它参与完成某件事情,办完事情后基础设施再次将它催眠。

我们的系统中的任何事物都在那棵系统树上对应有个位置,系统的运行时就是在这棵树上进行变化。但是由于这棵树非常深枝叶非常多非常复杂导致我们认识这棵树时难以人知到整体,往往陷入枝条片叶中去了。anycmd努力一下试试能不能把这棵树理出来帮助后来者理解它从而更好的做事情。

统一:

如果树形结构、构造定律、集合论都是正确的话,宇宙中根本不会有长、宽、高这样的概念,只有场这唯一的概念。null的状态保持和状态变化就是时间,变化导致不均匀,导致场,导致可以被我们识别出的界限,导致物质,导致物体……,世界没有开始也不会有结束,就这样一直按照构造定律运行下去永无止境导致这个世界。这根相对论也是一致的,没有直线,没有长宽高。测不准原理和波粒二象性等效(已被证实,忘记出处)。