為什么80%的碼農都做不了架構師?>>> ??
?? 越成熟的東西,越牛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();
????????}
????}
}
?