基于元数据配置的asp.net数据库应用快速开发框架设计及实现

数据库应用开发一般包含如下工作:

  • 数据库的设计与实现(数据表、字段、索引、视图、存储过程、触发器等)
  • 业务逻辑的设计与实现(对于简单的数据管理,数据表CRUD、查询、排序占了80%以上)
  • 用户及权限的实现
  • 用户界面的实现

我们都希望能够有一个开发工具或方法,能够尽可能的简化设计、开发及编码的工作,使我们能够在更快更短的时间内,完成应用的设计开发工作。

SFI正是基于上述目标设计,它的设计思想是:

  • 对一些常用的数据操作,不需要任何编码
  • 通过配置,可以完成适量的个性化
  • 具备用户、权限管理
  • 包含了用户界面与基本业务操作的整合
  • 具备一定的可扩展性,能够支持特定业务逻辑及操作

SFI结构及原理

基于元数据配置的asp.net数据库应用快速开发框架设计及实现

SFI通过核心引擎读取元数据,展现出用户界面,并与用户交互,根据用户的指令及SFI元数据(及扩展)中定义的业务逻辑,执行各项操作,并将更新存储到应用数据。

SFI元数据定义组成

SFI元数据主要有以下对象组成:实体类型(EntityType)、实体字段(EntityField)、实体操作(EntityAction、实体视图(EntityView)、子实体关系(EntitySub)。

基于元数据配置的asp.net数据库应用快速开发框架设计及实现

SFI元数据包括了界面定义、业务逻辑定义及数据映射定义。通过特定的扩展机制,还可以进一步与用户的自定义HTML, Javascript,Asp.net代码及存储过程进行交互。

EntityType(数据实体): EntityType描述了我们需要管理的数据实体类型信息,对应于数据库层次的Table(或者View)。EntityType还包含了UI显示的一些描述,如EntityType在界面菜单的显示位置、标题、及缺省数据列表、搜索过滤的显示方式定义。

EntityField(数据字段):EntityField描述了EntityType所包含的数据字段信息,包含所对应的数据表字段、显示标题、数据类型、显示方式等。

EntityAction(操作):描述EntityType所具备的操作,如显示列表、新增、修改、删除、查看及各种自定义操作。

EntityView(视图):描述EntityType不同的数据列表显示视图,可自定义过滤条件及显示的字段, 来展现出各种预定义的数据列表。对于一个EntityType,可以具备多个EntityView列表视图,但共享同样的操作EntityAction及字段EntityField定义。注意,它并不对应数据库中的View。

EntitySub(子实体关系):描述一个Entity所关联的其他实体,即可以通过一定关联关系,显示一对一,一对多的其他实体信息。

权限设计

权限对象包括:用户、角色、组(部门)、用户角色、角色权限

基于元数据配置的asp.net数据库应用快速开发框架设计及实现

权限系统是基于Role(角色)的,首先需要配置角色,为角色指定对于用户数据实体(EntityType)的操作(EntityAction)权限。SFI中所有的访问控制都是基于EntityType所具备的EntityAction的。
一个用户可以具备多个用户角色(UserRole)。多个用户角色的权限采取叠加策略。即用户将具备对应的所有用户角色允许操作的权限集合。
对于一个实体的操作权限,还可以指定一定的范围(Scope),包括All(所有的), Owner(自己的)。即我们可以授权一个角色,访问对于一个实体所有的数据记录,或者只允许操作自己创建的记录。

观看视频


如果你的对SFI感兴趣,欢迎关注此博客:)

转载于:https://www.cnblogs.com/startfromit/archive/2011/03/29/1998823.html