通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件
2012-03-25 23:38 通用C#系统架构 阅读(3484) 评论(6) 编辑 收藏 举报越成熟的东西,越牛X的东西,越简单才对,简单才是硬道理,苹果的手机只有少数几个按键,苹果Ipad也很少的按钮,甚至连苹果的笔记本键盘都少一排,通用权限管理系统组件的目的并不是为了把简单的问题复杂话,而是把复杂的问题更加简化,他的集成任何一个系统甚至是不用写代码,或者写很少的代码就可以了,简化重复开发,彻底复用劳动成果是我们的最终奋斗目标。
一、我们的目标
1:多个业务系统可以用统一的后台管理就可以了。
2:多种不同数据库的业务系统,用统一的一个后台管理系统就可以了。
3:不管是简单的,还是复杂的权限管理要求,都用一套后台管理就可以了。
4:不管是大陆的,台湾的,相关的,日本的,美国的业务系统,都用一套后台管理就可以了。
5:不管是B\S的还是C\S的,都用一套后台管理系统就可以了。
6:不管是个人,还是创业公司,还是上市公司,不管是做医疗的,政府的,企业的,都用一套后台管理系统就可以了。
二、源码销售人群
1:想提高自己的系统架构能力,想拿高薪的程序开发人员。
2:学习入门爱好者,想见识一下相对正规的大中型软件项目的,想学习成为一个体系的整套的软件项目的。
3:将来自己想接项目,创业,或者尝试自己承接软件项目想锻炼自己的。
4:软件公司开发的项目多了,想规范化管理的,把多个项目都集中统一管理的。
5:客户实用的各种业务系统多了,多儿杂,想统一规范化管理的。
6:公司内部人员流动过,懒得进行正规培训的直接模仿通用权限管理的一整套开发模式就可以,少一些烦恼了。
三、权限系统集成:不改数据库
1:权限系统有自己独立的数据库,不与任何业务系统有关系,他的设计思想是,任何一个系统至少分2个库进行设计,一个是业务数据库,一个是权限数据库,互相不影响互相不干扰,2个都是相对独立的。
2:权限系统的数据库既可以独立部署,也可以放在业务数据库里合并,也并不是非要100%分2个数据库,我们是主张分2个数据库。
3:所以需要集成别人的系统,只是额外挂了一个权限数据库,或者导入了一个权限数据库,对现有的业务系统不进行大的改动也可以了。
四、权限系统集成:几乎不写代码
1:权限系统的每个窗体都可以独立呼叫。
2:权限系统是源码有偿公开的,也可以直接调用源码。
3:权限系统的DLL,只有3个,只要引用到自己的项目里就可以了,非常方便调用。
4:需要把配置文件复制过来,小改一下。
5:通用权限管理系统组件,帮你开发测试好了接近100个非常通用的,与业务逻辑无关的信息管理系统共性的窗体,这个足够可以节约几个月的开发时间,而且还可以反复利用,铜墙铁壁的健壮的优质代码,一劳永逸的解决问题。
五、权限系统集成:集成权限系统组件的最最简单的例子代码
1:运行效果如下(几乎不写代码集成13个功能点,系统登录、用户管理、角色管理、用户权限、角色权限、访问情况、消息管理、组织机构、模块菜单、职员管理、选项管理、文档管理)。
2:集成参考代码如下,去掉注视,代码不超过10行。
// All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd.
//--------------------------------------------------------------------
using System;
using System.Windows.Forms;
namespace DotNet.Example
{
using DotNet.Utilities;
using DotNet.WinForm;
/// <summary>
/// FrmCallPermission.cs
/// 权限接口演示
///
/// 修改记录
///
/// 2012.03.25 版本:1.0 JiRiGaLa 创建。
///
/// 版本:1.0
///
/// <author>
/// <name>JiRiGaLa</name>
/// <date>2012.03.25</date>
/// </author>
/// </summary>
public partial class FrmCallPermission : Form
{
public FrmCallPermission()
{
InitializeComponent();
}
private void SetControlState()
{
// 用户登录了系统,才可以用这些按钮。
this.btnFrmUserAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmRoleAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmUserPermissionAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmRolePermissionAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmOrganizeAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmModuleAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmPermissionItemAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmStaffAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmLogGeneral.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmItemsAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmFileAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
this.btnFrmMessage.Enabled = BaseSystemInfo.UserIsLogOn;
}
private void button_Click(object sender, EventArgs e)
{
// 目标的命名空间
string assemblyName = "DotNet.WinForm";
// 目标窗体的名字,其实就是按钮的名字去掉前缀btn
string formName = ((Button)sender).Name.Substring(3);
// 通过反射调用相应的窗体
Type assemblyType = CacheManager.Instance.GetType(assemblyName, formName);
Form form = (Form)Activator.CreateInstance(assemblyType);
form.ShowDialog();
// 若的已经登录了,需要把相关按钮设置为有效
this.SetControlState();
}
}
}