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