开发总结
目前3天內搞定一個獨立的內部管理系統,而且五臟俱全的是我從業10年左右的最快記錄,當然若第二次做類似的東西,可能有希望2天內可以搞定了。 經過多年的積累,手上才會有一個運行穩定、可以靈活配置的B/S開發架構,雖然看看都很簡單,但是最起碼不斷完善幾年后,才會達到銅墻鐵壁的程度,我們經常會發現,開發一個小小的軟件,往往1個月也開發不完,很可能是由于沒有穩定的B/S開發架構導致的,這個架構也不是說技術,就是一個美觀的整體效果良好的運行穩定的B/S系統吧,從頭開發的B/S架構,由于需要調整很多細節環節、特別是頁面、菜單的美觀設計等上會耗費很多精力。 有時候界面設計良好、程序思路嚴謹、用戶交互效果好的B/S空框架也能賣出幾萬元,以前不能理解,現在是徹底能體會了,穩定的B/S架構的確可以值一些錢,因為是經過精雕細刻后才能形成最后的勞動成果的。 軟件的大體效果做到這里,大概花費了3天時間、接下來可能要花費的時間會更多,應該不止3天了,可能是30天,因為很多業務上的細節會耗費很多時間來調整,例如新增頁面的先后輸入的內容,頁面輸入的檢查、頁面的美觀設計、光標的順序優化、回車優化,輸入內容的完善補充等等,查詢頁面的排序順序優化、查詢內容的先后順序排版、表格中各列的寬度調整,一些提醒顏色的優化等等會有很多細節問題上還要耗費很久時間的,?做軟件其實就是做細節,你需要有一個良好的B/S開發框架,否則全部自己弄,不知道什么時候才能弄好,有個良好的框架、再有良好的例子程序,整個管理系統,就是一個量的問題了,其次就是很多細節的優化上,會花費很多時間。 有良好的穩定的B/S開發框架,前期工作只用了3天,若沒有這個,從頭開始做,可能30天也做不完,更不會把大多精力都花費在業務邏輯的細節優化上,可能更多的精力都耗費在B/S系統架構的穩定、優化上了,那這個軟件的質量就更沒保障了。 有了穩定的B/S開發框架后,才好進行大規模生產、大量招聘人員做開發工作,若這些都沒有,招聘來一大堆開發人員,那很可能局面就亂套了,大家就容易亂來了。 ProjectManager.cs手工編寫的商業邏輯代碼如下: 代碼 //------------------------------------------------------------
//?All?Rights?Reserved?,?Copyright?(C)?2010?,?Jirisoft?,?Ltd?.
//------------------------------------------------------------
using?System;
using?System.Data;
using?System.Data.Common;
using?System.Collections.Generic;
namespace?Project
{
????using?DotNet.DbUtilities;
????using?DotNet.Manager;
????using?DotNet.Utilities;
????using?DotNet.Business;
????///?<summary>
????///?ProjectManager
????///?項目跟進表
????///
????///?修改紀錄
????///
????///????????2010-09-28?版本:1.0?JiRiGaLa?創建主鍵。
????///
????///?版本:1.0
????///
????///?<author>
????///????????<name>JiRiGaLa</name>
????///????????<date>2010-09-28</date>
????///?</author>
????///?</summary>
????public?partial?class?ProjectManager?:?BaseManager,?IBaseManager
????{
????????public?DataTable?Search(string?userId,?string?searchValue)
????????{
????????????//?一、這里是開始進行動態SQL語句拼接,字段名、表明都進行了常量定義,表名字段名發生變化時,很容易就知道程序哪里都調用了這些。
????????????string?sqlQuery?=?string.Empty;
????????????sqlQuery?=?"?SELECT?*?"
????????????????????+?"?FROM?"?+?this.CurrentTableName
????????????????????+?"?WHERE?"?+?ProjectTable.FieldDeleteMark?+?"?=??0?";
????????????//?二、我們認為?userId?這個查詢條件是安全,不是人為輸入的參數,所以直接進行了SQL語句拼接
????????????if?(!String.IsNullOrEmpty(userId))
????????????{
????????????????sqlQuery?+=?"?AND?"?+?ProjectTable.FieldCreateUserId?+?"?=?'"?+?userId?+?"'";
????????????}
????????????//?三、這里是進行參數化的準備,因為是多個不確定的查詢參數,所以用了List。
????????????List<DbParameter>?dbParameters?=?new?List<DbParameter>();
????????????//?四、這里看查詢條件是否為空
????????????searchValue?=?searchValue.Trim();
????????????if?(!String.IsNullOrEmpty(searchValue))
????????????{
????????????????//?五、這里是進行支持多種數據庫的參數化查詢
????????????????sqlQuery?+=?"?AND?("?+?ProjectTable.FieldKeHuMingCheng?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldKeHuMingCheng);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldKeHuXiangMuMingCheng?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldKeHuXiangMuMingCheng);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldCreateUserRealname?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldCreateUserRealname);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldDescription?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldDescription)?+?")";
????????????????//?六、這里是判斷,用戶是否已經輸入了%
????????????????if?(searchValue.IndexOf("%")?<?0)
????????????????{
????????????????????searchValue?=?"%"?+?searchValue?+?"%";
????????????????}
????????????????//?七、這里生成支持多數據庫的參數
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuMingCheng,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuXiangMuMingCheng,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldCreateUserRealname,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldDescription,?searchValue));
????????????}
????????????sqlQuery?+=?"?ORDER?BY?"?+?ProjectTable.FieldSortCode?+?"?DESC?";
????????????//?八、這里是將List轉換為數組,進行數據庫查詢
????????????return?DbHelper.Fill(sqlQuery,?dbParameters.ToArray());
????????}
????????
????????///?<summary>
????????///?更新(帶有修改記錄功能)
????????///?</summary>
????????///?<param?name="projectEntity">實體</param>
????????///?<param?name="changeLog">修改記錄</param>
????????///?<returns>影響行數</returns>
????????public?int?Update(ProjectEntity?projectEntity,?bool?changeLog)
????????{
????????????//?若不需要修改記錄
????????????if?(!changeLog)
????????????{
????????????????return?this.UpdateEntity(projectEntity);
????????????}
????????????String?changeMessage?=?String.Empty;
????????????//?獲取原來的數據
????????????ProjectEntity?oldProjectEntity?=?this.GetEntity((int)projectEntity.Id);
????????????if?(oldProjectEntity.KeHuXiangMuMingCheng?!=?projectEntity.KeHuXiangMuMingCheng)
????????????{
????????????????changeMessage?+=?"客戶項目名稱被修改為:"?+?projectEntity.KeHuXiangMuMingCheng?+?"?原值:"?+?oldProjectEntity.KeHuXiangMuMingCheng?+?"<br>";
????????????}
????????????if?(oldProjectEntity.KeHuMingCheng?!=?projectEntity.KeHuMingCheng)
????????????{
????????????????changeMessage?+=?"客戶名稱被修改為:"?+?projectEntity.KeHuMingCheng?+?"?原值:"?+?oldProjectEntity.KeHuMingCheng?+?"<br>";
????????????}
????????????if?(oldProjectEntity.KaiGaiRiQi?!=?projectEntity.KaiGaiRiQi)
????????????{
????????????????//?changeMessage?+=?"開改模日期被修改為:"?+?((DateTime)projectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat)?+?"?原值:"?+?((DateTime)oldProjectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat)?+?"<br>";
????????????}
????????????if?(!String.IsNullOrEmpty(changeMessage))
????????????{
????????????????BaseCommentManager?commentManager?=?new?BaseCommentManager(this.DbHelper,?this.UserInfo);
????????????????commentManager.Add("工程管理",?projectEntity.Id.ToString(),?projectEntity.KeHuXiangMuMingCheng,?changeMessage,?false,?String.Empty,?false,?this.UserInfo.IPAddress);
????????????}
????????????return?this.UpdateEntity(projectEntity);
????????}
????}
} posted @ 2010-10-07 21:39 不僅僅是通用權限設計 閱讀(6477) | 評論(99) | 編輯
下載 http://www.jirigala.tk/JiRiGaLa_FunctionPreview.wmv C# ASP.NET走火入魔通用權限管理_進行配置文件管理
下載 http://www.jirigala.tk/JiRiGaLa_Configuration.wmv C# ASP.NET走火入魔通用權限管理_登錄功能01
下載 http://www.jirigala.tk/JiRiGaLa_Login01.wmv
C# ASP.NET走火入魔通用權限管理_登錄功能02
下載 http://www.jirigala.tk/JiRiGaLa_Login02.wmv
C# ASP.NET走火入魔通用權限管理_登錄功能03
下載 http://www.jirigala.tk/JiRiGaLa_Login03.wmv C# ASP.NET走火入魔通用權限管理_登錄功能接口之說一 下載 http://www.jirigala.tk/JiRiGaLa_Interface01.wmv C# ASP.NET走火入魔通用權限管理_登錄功能接口之說二 下載? http://www.jirigala.tk/JiRiGaLa_Interface02.wmv C# ASP.NET走火入魔通用權限管理_登錄功能服務程序之說 下載 http://www.jirigala.tk/JiRiGaLa_Service.wmv C# ASP.NET走火入魔通用權限管理_登錄功能服務程序多種運行模式之說 下載 http://www.jirigala.tk/JiRiGaLa_RunMode.wmv C# ASP.NET走火入魔通用權限管理_登錄功能 B/S 架構之代碼復用說
下載 http://www.jirigala.tk/JiRiGaLa_Code.wmv C# ASP.NET走火入魔通用權限管理_實體結構定義
下載 http://www.jirigala.tk/JiRiGaLa_Entities.wmv C# ASP.NET走火入魔通用權限管理_為什要用代碼生成器(必要性) 下載 http://www.jirigala.tk/JiRiGaLa_CodeBuilder01.wmv C# ASP.NET走火入魔通用權限管理_代碼生成器如何用(實戰)
下載 http://www.jirigala.tk/JiRiGaLa_CodeBuilder02.wmv C# ASP.NET走火入魔通用權限管理_數據庫設計注意思想指導
下載 http://www.jirigala.tk/JiRiGaLa_DbDesign.wmv C# ASP.NET走火入魔通用權限管理_添加角色數據
下載 http://www.jirigala.tk/JiRiGaLa_FrmRoleAdd01.wmv C# ASP.NET走火入魔通用權限管理_異常信息管理
下載 http://www.jirigala.tk/JiRiGaLa_Exception.wmv C# ASP.NET走火入魔通用權限管理_如何集成通用權限管理系統 下載 http://www.jirigala.tk/JiRiGaLa_Integration.wmv? 配套軟件購買地址 :http://item.taobao.com/item.htm?id=3430408842 相關下載 相關數據庫設計免費下載:http://www.cnblogs.com/Files/jirigala/DotNet.DesignDocument.rar?(PowerDesigner15格式) 說明文檔免費下載:http://www.cnblogs.com/Files/jirigala/handbookV3.0.pdf? 相關視頻免費下載:http://www.cnblogs.com/jirigala/archive/2010/09/16/1828482.html ============================================================? posted @ 2010-09-16 23:03 不僅僅是通用權限設計 閱讀(1187) | 評論(9) | 編輯
//?All?Rights?Reserved?,?Copyright?(C)?2010?,?Jirisoft?,?Ltd?.
//------------------------------------------------------------
using?System;
using?System.Data;
using?System.Data.Common;
using?System.Collections.Generic;
namespace?Project
{
????using?DotNet.DbUtilities;
????using?DotNet.Manager;
????using?DotNet.Utilities;
????using?DotNet.Business;
????///?<summary>
????///?ProjectManager
????///?項目跟進表
????///
????///?修改紀錄
????///
????///????????2010-09-28?版本:1.0?JiRiGaLa?創建主鍵。
????///
????///?版本:1.0
????///
????///?<author>
????///????????<name>JiRiGaLa</name>
????///????????<date>2010-09-28</date>
????///?</author>
????///?</summary>
????public?partial?class?ProjectManager?:?BaseManager,?IBaseManager
????{
????????public?DataTable?Search(string?userId,?string?searchValue)
????????{
????????????//?一、這里是開始進行動態SQL語句拼接,字段名、表明都進行了常量定義,表名字段名發生變化時,很容易就知道程序哪里都調用了這些。
????????????string?sqlQuery?=?string.Empty;
????????????sqlQuery?=?"?SELECT?*?"
????????????????????+?"?FROM?"?+?this.CurrentTableName
????????????????????+?"?WHERE?"?+?ProjectTable.FieldDeleteMark?+?"?=??0?";
????????????//?二、我們認為?userId?這個查詢條件是安全,不是人為輸入的參數,所以直接進行了SQL語句拼接
????????????if?(!String.IsNullOrEmpty(userId))
????????????{
????????????????sqlQuery?+=?"?AND?"?+?ProjectTable.FieldCreateUserId?+?"?=?'"?+?userId?+?"'";
????????????}
????????????//?三、這里是進行參數化的準備,因為是多個不確定的查詢參數,所以用了List。
????????????List<DbParameter>?dbParameters?=?new?List<DbParameter>();
????????????//?四、這里看查詢條件是否為空
????????????searchValue?=?searchValue.Trim();
????????????if?(!String.IsNullOrEmpty(searchValue))
????????????{
????????????????//?五、這里是進行支持多種數據庫的參數化查詢
????????????????sqlQuery?+=?"?AND?("?+?ProjectTable.FieldKeHuMingCheng?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldKeHuMingCheng);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldKeHuXiangMuMingCheng?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldKeHuXiangMuMingCheng);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldCreateUserRealname?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldCreateUserRealname);
????????????????sqlQuery?+=?"?OR?"?+?ProjectTable.FieldDescription?+?"?LIKE?"?+?DbHelper.GetParameter(ProjectTable.FieldDescription)?+?")";
????????????????//?六、這里是判斷,用戶是否已經輸入了%
????????????????if?(searchValue.IndexOf("%")?<?0)
????????????????{
????????????????????searchValue?=?"%"?+?searchValue?+?"%";
????????????????}
????????????????//?七、這里生成支持多數據庫的參數
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuMingCheng,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuXiangMuMingCheng,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldCreateUserRealname,?searchValue));
????????????????dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldDescription,?searchValue));
????????????}
????????????sqlQuery?+=?"?ORDER?BY?"?+?ProjectTable.FieldSortCode?+?"?DESC?";
????????????//?八、這里是將List轉換為數組,進行數據庫查詢
????????????return?DbHelper.Fill(sqlQuery,?dbParameters.ToArray());
????????}
????????
????????///?<summary>
????????///?更新(帶有修改記錄功能)
????????///?</summary>
????????///?<param?name="projectEntity">實體</param>
????????///?<param?name="changeLog">修改記錄</param>
????????///?<returns>影響行數</returns>
????????public?int?Update(ProjectEntity?projectEntity,?bool?changeLog)
????????{
????????????//?若不需要修改記錄
????????????if?(!changeLog)
????????????{
????????????????return?this.UpdateEntity(projectEntity);
????????????}
????????????String?changeMessage?=?String.Empty;
????????????//?獲取原來的數據
????????????ProjectEntity?oldProjectEntity?=?this.GetEntity((int)projectEntity.Id);
????????????if?(oldProjectEntity.KeHuXiangMuMingCheng?!=?projectEntity.KeHuXiangMuMingCheng)
????????????{
????????????????changeMessage?+=?"客戶項目名稱被修改為:"?+?projectEntity.KeHuXiangMuMingCheng?+?"?原值:"?+?oldProjectEntity.KeHuXiangMuMingCheng?+?"<br>";
????????????}
????????????if?(oldProjectEntity.KeHuMingCheng?!=?projectEntity.KeHuMingCheng)
????????????{
????????????????changeMessage?+=?"客戶名稱被修改為:"?+?projectEntity.KeHuMingCheng?+?"?原值:"?+?oldProjectEntity.KeHuMingCheng?+?"<br>";
????????????}
????????????if?(oldProjectEntity.KaiGaiRiQi?!=?projectEntity.KaiGaiRiQi)
????????????{
????????????????//?changeMessage?+=?"開改模日期被修改為:"?+?((DateTime)projectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat)?+?"?原值:"?+?((DateTime)oldProjectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat)?+?"<br>";
????????????}
????????????if?(!String.IsNullOrEmpty(changeMessage))
????????????{
????????????????BaseCommentManager?commentManager?=?new?BaseCommentManager(this.DbHelper,?this.UserInfo);
????????????????commentManager.Add("工程管理",?projectEntity.Id.ToString(),?projectEntity.KeHuXiangMuMingCheng,?changeMessage,?false,?String.Empty,?false,?this.UserInfo.IPAddress);
????????????}
????????????return?this.UpdateEntity(projectEntity);
????????}
????}
} posted @ 2010-10-07 21:39 不僅僅是通用權限設計 閱讀(6477) | 評論(99) | 編輯
[置頂]【經典C#.NET入門教程】管理軟件開發必備知識免費視頻教程下載
走火入魔通用權限管理視頻講解(娛樂大家、給生活加點兒料、突破思想框框),第三次錄視頻希望大家能諒解、都上傳好了,給大家分享一下,不足之處請大家指點。 干事情需要要有激情,有力度,要像飛機的發動機一樣有強有力的推動力,才容易不斷進步走在行業領先的位置上。如何我們死去活來的做架構、做軟件、做組件,然后又賣不出1毛錢,那還如在家休息看看電影逛逛街好了對身體也很好,搞那么累干啥?我們這么努力學技術,說白了,就是為了賣點兒錢不是? 感謝曾經的同事, 肖曉光給我們提供了視頻空間,我在這里代表大家謝謝你了。 C# ASP.NET走火入魔通用權限管理_功能概要下載 http://www.jirigala.tk/JiRiGaLa_FunctionPreview.wmv C# ASP.NET走火入魔通用權限管理_進行配置文件管理
下載 http://www.jirigala.tk/JiRiGaLa_Configuration.wmv C# ASP.NET走火入魔通用權限管理_登錄功能01
下載 http://www.jirigala.tk/JiRiGaLa_Login01.wmv
C# ASP.NET走火入魔通用權限管理_登錄功能02
下載 http://www.jirigala.tk/JiRiGaLa_Login02.wmv
C# ASP.NET走火入魔通用權限管理_登錄功能03
下載 http://www.jirigala.tk/JiRiGaLa_Login03.wmv C# ASP.NET走火入魔通用權限管理_登錄功能接口之說一 下載 http://www.jirigala.tk/JiRiGaLa_Interface01.wmv C# ASP.NET走火入魔通用權限管理_登錄功能接口之說二 下載? http://www.jirigala.tk/JiRiGaLa_Interface02.wmv C# ASP.NET走火入魔通用權限管理_登錄功能服務程序之說 下載 http://www.jirigala.tk/JiRiGaLa_Service.wmv C# ASP.NET走火入魔通用權限管理_登錄功能服務程序多種運行模式之說 下載 http://www.jirigala.tk/JiRiGaLa_RunMode.wmv C# ASP.NET走火入魔通用權限管理_登錄功能 B/S 架構之代碼復用說
下載 http://www.jirigala.tk/JiRiGaLa_Code.wmv C# ASP.NET走火入魔通用權限管理_實體結構定義
下載 http://www.jirigala.tk/JiRiGaLa_Entities.wmv C# ASP.NET走火入魔通用權限管理_為什要用代碼生成器(必要性) 下載 http://www.jirigala.tk/JiRiGaLa_CodeBuilder01.wmv C# ASP.NET走火入魔通用權限管理_代碼生成器如何用(實戰)
下載 http://www.jirigala.tk/JiRiGaLa_CodeBuilder02.wmv C# ASP.NET走火入魔通用權限管理_數據庫設計注意思想指導
下載 http://www.jirigala.tk/JiRiGaLa_DbDesign.wmv C# ASP.NET走火入魔通用權限管理_添加角色數據
下載 http://www.jirigala.tk/JiRiGaLa_FrmRoleAdd01.wmv C# ASP.NET走火入魔通用權限管理_異常信息管理
下載 http://www.jirigala.tk/JiRiGaLa_Exception.wmv C# ASP.NET走火入魔通用權限管理_如何集成通用權限管理系統 下載 http://www.jirigala.tk/JiRiGaLa_Integration.wmv? 配套軟件購買地址 :http://item.taobao.com/item.htm?id=3430408842 相關下載 相關數據庫設計免費下載:http://www.cnblogs.com/Files/jirigala/DotNet.DesignDocument.rar?(PowerDesigner15格式) 說明文檔免費下載:http://www.cnblogs.com/Files/jirigala/handbookV3.0.pdf? 相關視頻免費下載:http://www.cnblogs.com/jirigala/archive/2010/09/16/1828482.html ============================================================? posted @ 2010-09-16 23:03 不僅僅是通用權限設計 閱讀(1187) | 評論(9) | 編輯
[置頂]10年磨一劍,軟件編程走火入魔之:把簡單的功能做個徹徹底底、把勞動成果重復利用
讓管理軟件開發人員早點兒回家休息,做個跟老外有的一PK的軟件組件,銅墻鐵壁的權限組件。 年輕時、精力旺盛,有用不完的勁兒,但是工作經驗不多,對各種行業實際應用沒有深入的了解,大多停留在表面問題上,做不出過硬的有質量的軟件組件來,剛精通C#程序時,發現又需要精通C/S、B/S才可以,這時又發現自己的數據庫技術不過關,等剛掌握了SQLServer,又發現自己不懂Oralce,也不懂MySql,自己寫出來的程序又不兼容這些數據庫,等數據庫也都精通了一些,發現自己的寫文檔能力不行,做個像樣的東西非常不容易。 這時又發現自己的設計能力不行,等把設計能力也提高了,發現寫文檔的表達能力還是不行,等自己的表達能力也變得很強了,對各種行業應用也開始有了深入的了解,技術又變了很多,以前積累的技術又淘汰了。 當這些能力都接近已具備時,發現自己從早上忙到晚上,根本沒有精力去寫一個理想中的軟件來,工作上的、家庭上的雜事也變得多如毛,當能力提高到了一定的境界后,普通人做出來的東西也都看不上了,也都不能放心了,因為知道得太多了,就能找出太多的問題了,但是自己又往往沒那么多精力、空去做這個心目中的東東。 當真的全身心去投入了,去精心制作了這個東西后又發現這個東西,市場定位錯了,只有很少數的人才肯花錢購買這個東東,所以成功很難,不僅需要有能力、而且需要更準確的市場定位能力,你做出來的軟件?誰為此買單? 把設計文檔寫好、把程序寫好、把操作手冊寫好,又要有一定的深度廣度,的確也不是很容易;雖然我沒有驚人的技術能力,但是我用了接近前后10年,不斷完善改進這么一個很簡單的功能,把這個簡單的功能,做個徹徹底底,能達到真正的產品化的重復利用的要求,花費了2個月的業余時間,精心把使用手冊編寫完畢了,雖然軟件沒有開源,但是大部分的功能都寫出來了,有做權限方面的開發人員,可以有一定的參考作用。 權限管理涉及的東西太多了,他需要涉及到數據庫、要涉及到用戶、組織機構、角色、日志、序列生成器、開發框架、甚至代碼生成器,頁面操作、底層存儲結構設計等等方方面面,說是開發通用權限組件還不如是說:“輕量級的快速管理類軟件開發平臺”也不過分的。 既然愛好這個,又投入了這么多年的心血,也就不差再投入幾年,再深入研究、再不斷推廣了,把一個簡單的東西做個徹徹底底,做個真正對開發人員有幫助,能解放開發人員的部分工作,能把勞動成果重復利用10次、100次、1000次、10000次,那就足夠有把這個功能模塊做個徹底質量過關,讓大家徹底能認可的意義了,一個人只能做好那么幾件事情,若是人人都有那么幾件事情徹底做好了,舍得全身心去研究完善,那我們軟件開發人員也沒必要那么累了,都可以早點兒回家休息了,因為我們有很多可重復利用的組建、可提高我們工作效率的懶人工具。 小時候親眼見過也親身體驗過人耕牛拉式的辛勤種地;社會總是需要有人冒險,去發明、研究、制造、改進拖拉機,雖然為此付出的代價會很高很高,但是用拖拉機種地效率就高很多產值也會高很多,大家也可以從繁重的體力勞動解放出來,雖然購買拖拉機要花錢、平時還需要燒油。 但是大家都不舍得購買拖拉機、平時也不舍得燒油,那只能繼續“人耕牛拉”了,??偙韧侠瓩C便宜很多,平時吃草就可以了有點也很多,還環保底炭。通用權限管理組件、輕量級的快速管理類軟件開發平臺能成為大家學習開發軟件的拖拉機、開發軟件的拖拉機。 以下部分是花費了接近2個月時間,精心編寫的部分使用說明,雖然有些廣告夾雜,但是認真對待了每篇文章的說明、希望有興趣的朋友,可以補充完善、讓有需要的人能直接重復利用、逐漸完善成大家都能認可的精品軟件組件,大家都可以參考對比的標準權限功能。 人有追求有目標也是個鬧心的事情、達不到目的,睡不好,吃不好,總想達到自己的目的,白天想、晚上想,幾天、幾周、幾個月、幾年都過的很快,人有追求了,也就不迷茫了,也就不腐敗了,也不會墮落了,也挺有意思的。就把一個簡單的東西做個精品出來,能徹底重復利用、沒多大必要再重新開發,也別浪費人力物力了,該休息就休息、該早點兒回家就回家,該干啥就干啥吧。 ?轉載于:https://blog.51cto.com/2347979/428657
總結
- 上一篇: 基于动态IP的Internet视频监控解
- 下一篇: lwuit ---一些细节疑难杂症整理笔