還是老規(guī)矩先吐下槽,在規(guī)范的開發(fā)過(guò)程中,這個(gè)時(shí)候應(yīng)該是編寫總體設(shè)計(jì)(概要設(shè)計(jì))的時(shí)候,不過(guò)對(duì)于中小型項(xiàng)目來(lái)說(shuō),過(guò)于規(guī)范的遵守軟件工程,編寫太多文檔也會(huì)拉長(zhǎng)進(jìn)度,一般會(huì)將它與詳細(xì)設(shè)計(jì)合并到一起來(lái)處理,所以本文檔看起來(lái)會(huì)怪怪的,不是很符合規(guī)范,它只是從實(shí)用角度出發(fā)來(lái)編寫,以指導(dǎo)后面功能的設(shè)計(jì)與開發(fā)。
從零開始編寫自己的C#框架
后臺(tái)管理系統(tǒng)功能設(shè)計(jì)文檔
文件狀態(tài): [√] 草稿 [ ] 正式發(fā)布 [ ] 正在修改 | 文件標(biāo)識(shí): | C#框架 |
當(dāng)前版本: | 0.1 | |
作 者: | 陳煥(AllEmpty) | |
聯(lián)系方式: | 1654937@QQ.com | |
更新日期: | 2014-04-23 |
目錄
一、 文檔介紹 31、文檔目的 32、文檔說(shuō)明 33、讀者對(duì)象 34、系統(tǒng)開發(fā)強(qiáng)度等級(jí) 35、開發(fā)環(huán)境及使用工具 3二、 項(xiàng)目總體規(guī)劃 41、系統(tǒng)實(shí)現(xiàn)功能圖 42、系統(tǒng)整體性能規(guī)劃 4三、 后臺(tái)管理系統(tǒng)功能介紹 61、 登陸與在線用戶表 62、 系統(tǒng)首頁(yè) 73、 系統(tǒng)管理 84、 信息發(fā)布 165、 員工管理 196、 個(gè)人事務(wù) 20
一、文檔介紹1、文檔目的本文檔是《從零開始編寫自己的C#框架》項(xiàng)目后臺(tái)管理系統(tǒng)的開發(fā)指引說(shuō)明。2、文檔說(shuō)明本文主要描述后臺(tái)管理功能說(shuō)明等,方便開發(fā)人員根據(jù)功能設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),能更快捷和順利的完成系統(tǒng)開發(fā)。3、讀者對(duì)象本項(xiàng)目的開發(fā)人員。4、系統(tǒng)開發(fā)強(qiáng)度等級(jí)(強(qiáng)度分為:容易、中等、困難) 當(dāng)前難度為:容易5、開發(fā)環(huán)境及使用工具Windows7 + IIS5 + SQL Server2005 + Visual Studio 2010 + Offices2010 + ExcelToSQLString2.91 for July等軟件。
二、 項(xiàng)目總體規(guī)劃1、系統(tǒng)實(shí)現(xiàn)功能圖

2、系統(tǒng)整體性能規(guī)劃1) 安全性需求 整個(gè)系統(tǒng)的設(shè)計(jì)及服務(wù)器配置都認(rèn)真的考慮了系統(tǒng)的安全性,能夠防范常見的黑客攻擊。服務(wù)器安全:系統(tǒng)采用Windows2008,使用McaFee防火墻,啟動(dòng)安全策略后,采用非允許的軟件無(wú)法對(duì)C盤及注冊(cè)表進(jìn)行任何寫入或更改策略、對(duì)內(nèi)對(duì)外端口非允許軟件全部阻止策略、對(duì)站點(diǎn)所在文件夾,采入可運(yùn)行目錄無(wú)寫入權(quán)限,可寫入目錄無(wú)執(zhí)行權(quán)限策略。修改相關(guān)軟件的訪問(wèn)端口(如有需要,可限制某些服務(wù)的遠(yuǎn)程訪問(wèn)權(quán)限,或指定ip段才可以訪問(wèn))。嚴(yán)格按照《服務(wù)器安全部署文檔》來(lái)配置服務(wù)器與網(wǎng)站,最大限度的保證服務(wù)器的安全。代碼級(jí)安全:上傳到服務(wù)器上的程序代碼,都必須進(jìn)行編譯和混淆;對(duì)提交到數(shù)據(jù)庫(kù)的內(nèi)容,都必須進(jìn)行過(guò)濾處理,防止sql注入式攻擊與XSS攻擊;對(duì)上傳的圖片文件,必須進(jìn)行檢查操作,防止上傳非法文件。后臺(tái)與前臺(tái)分開,登陸需提交驗(yàn)證碼。系統(tǒng)級(jí)安全:本系統(tǒng)通過(guò)菜單權(quán)限、頁(yè)面按鍵權(quán)限和多權(quán)限組合的方式來(lái)管理系統(tǒng)中各個(gè)不同的權(quán)限組與頁(yè)面權(quán)限;每個(gè)頁(yè)面訪問(wèn)都會(huì)驗(yàn)證用戶組權(quán)限、用戶權(quán)限及鏈接中提交過(guò)來(lái)的密鑰,以辨別是否是非法訪問(wèn),防止后臺(tái)操作人員跨頁(yè)面非法訪問(wèn)。后臺(tái)的所有操作都會(huì)記錄到操作日志中,以保證出現(xiàn)問(wèn)題后臺(tái)快速定位,找出原因。2) 性能需求由于是個(gè)基礎(chǔ)框架,在這個(gè)框架上可能會(huì)擴(kuò)展不同的業(yè)務(wù)系統(tǒng),有可能業(yè)務(wù)量會(huì)很大,所以在框架代碼編寫與數(shù)據(jù)庫(kù)設(shè)計(jì)上,以千萬(wàn)級(jí)別數(shù)據(jù)庫(kù)訪問(wèn)為基準(zhǔn)進(jìn)行設(shè)計(jì)。開發(fā)人員在開發(fā)時(shí),必須嚴(yán)格遵守項(xiàng)目開發(fā)規(guī)范,以及數(shù)據(jù)庫(kù)設(shè)計(jì)要求(詳細(xì)請(qǐng)看下一章節(jié))。數(shù)據(jù)庫(kù)設(shè)計(jì)上,數(shù)據(jù)量大的報(bào)表,實(shí)現(xiàn)實(shí)時(shí)與非實(shí)時(shí)查詢相結(jié)合,將可以延后查詢的數(shù)據(jù)全部放在深夜由數(shù)據(jù)庫(kù)啟動(dòng)相關(guān)存儲(chǔ)過(guò)程自動(dòng)分析處理。在數(shù)據(jù)查詢條件編寫上,將時(shí)刻注意查詢條件位置,優(yōu)化查詢語(yǔ)句,并隨時(shí)檢查復(fù)合索引是否已創(chuàng)建,使用空間換性能等方式提高查詢效率。在編碼時(shí)必須做到能不訪問(wèn)數(shù)據(jù)庫(kù)的地方,絕不向數(shù)據(jù)庫(kù)讀取數(shù)據(jù);對(duì)于需要反復(fù)讀取的數(shù)據(jù),可以存放到IIS緩存或Redis緩存中,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù);可以使用xml、JS等文本方式讀取數(shù)據(jù)的,根據(jù)具體的生成頻率狀況,有選擇性的使用。盡量使用空間換性能的方式進(jìn)行處理,減輕服務(wù)器的負(fù)擔(dān),提高用戶訪問(wèn)效率。前臺(tái)頁(yè)面采用模版緩存方式,減少頁(yè)面與數(shù)據(jù)庫(kù)的交互,提交用戶訪問(wèn)效率。3) 可靠性需求在設(shè)備選型方面,采用具有較高可靠性并支持容錯(cuò)的網(wǎng)絡(luò)設(shè)備和服務(wù)器,如支持冗余電源、帶電熱拔插、鏈路冗余等容錯(cuò)技術(shù)。為了保證數(shù)據(jù)的可靠性,采用支持磁盤陣列(RAID)等磁盤冗余技術(shù)的服務(wù)器,盡量減少因?yàn)榇疟P的故障造成系統(tǒng)的意外down機(jī)。4) 可擴(kuò)充性需求隨著業(yè)務(wù)的發(fā)展,系統(tǒng)在設(shè)計(jì)上考慮到未來(lái)功能的開發(fā)能夠預(yù)留一定的應(yīng)用擴(kuò)展空間。框架完全自主開發(fā),實(shí)現(xiàn)功能模塊化、組件化、可繼承,對(duì)常用功能函數(shù),使用T4模板統(tǒng)一生成,減少人手復(fù)制粘貼操作,開發(fā)靈活。開發(fā)完善的集成接口,使系統(tǒng)更具備開放性,可多人協(xié)作團(tuán)隊(duì)開發(fā),供相關(guān)開發(fā)人員進(jìn)行功能延伸開發(fā)。5) 后期維護(hù)方便快捷需求整個(gè)開發(fā)必須遵循后續(xù)維護(hù)便捷為核心的思想進(jìn)行,即后續(xù)開發(fā)維護(hù)時(shí),在數(shù)據(jù)庫(kù)中添加、修改和刪除字段時(shí),對(duì)原有的頁(yè)面開發(fā)只需要修改一些小參數(shù)即可完成。在頁(yè)面添加、修改和刪除一些按鍵與功能時(shí),也只需做一些小調(diào)整甚至只是在后臺(tái)相關(guān)頁(yè)面增改一些參數(shù)即可完成。后臺(tái)管理系統(tǒng)開發(fā)時(shí),數(shù)據(jù)訪問(wèn)層統(tǒng)一使用SubSonic生成,減輕開人發(fā)員開發(fā)工作量與減少出錯(cuò)的可能;業(yè)務(wù)邏輯層常用函數(shù)統(tǒng)一使用T4模版生成,自定義函數(shù)編寫也采用高度集合繼承與封裝方式,全部或部分使用泛類進(jìn)行操作,這樣處理后,在表示層開發(fā)時(shí),大量的UI頁(yè)面顯示只需要傳入相關(guān)的數(shù)據(jù)庫(kù)表名和相關(guān)參數(shù)就可以馬上實(shí)現(xiàn)列表、分頁(yè)、排序、新增、編輯與刪除等功能,避免重復(fù)的維護(hù)開發(fā)工作。UI層使用FineUI插件,可以減輕開發(fā)人員對(duì)于UI繪制以及分頁(yè)、排序等各種常用功能所花費(fèi)的開發(fā)時(shí)間。
三、 后臺(tái)管理系統(tǒng)功能介紹由于很多功能很簡(jiǎn)單,看著原型圖就明白,所以就不寫詳細(xì)的文字描述。
1、 登陸與在線用戶表對(duì)于在線用戶列表的緩存方法,IIS緩存與Redis緩存開發(fā)編碼是不一樣的,如果后端站點(diǎn)使用多進(jìn)程的話,只能使用Redi緩存,如果選用IIS緩存的話,必須進(jìn)行跨站點(diǎn)共享緩存方式進(jìn)行配置,或使用新的算法才行。本項(xiàng)目開發(fā)將會(huì)選用Redis緩存。登陸原型:
登陸流程判斷與在線用戶表的關(guān)系,請(qǐng)看下圖:

2、 系統(tǒng)首頁(yè)首頁(yè)的頂端,會(huì)顯示當(dāng)前登陸用戶的一些信息左邊菜單欄會(huì)顯示當(dāng)前用戶有權(quán)限查看到的目錄右邊顯示公司公告、公司信息,以及當(dāng)前用戶的登陸信息
3、 系統(tǒng)管理1) 系統(tǒng)參數(shù)設(shè)置主要是對(duì)系統(tǒng)全局參數(shù)進(jìn)行設(shè)置,比如日志、郵件等各參數(shù)的設(shè)置(詳細(xì)請(qǐng)看下面的原型設(shè)計(jì))設(shè)置了日志保留時(shí)間以后,存儲(chǔ)過(guò)程會(huì)自動(dòng)刪除過(guò)期的日志啟用郵件通知以后,需要使用郵件通過(guò)的地方就會(huì)發(fā)送郵件
2) 圖片重新生成對(duì)上傳到服務(wù)器端的圖片按重新設(shè)置的格式全部重新生成3) 菜單管理管理后臺(tái)的菜單與各個(gè)頁(yè)面對(duì)于后端系統(tǒng)的所有頁(yè)面,都需要在這里添加綁定(注冊(cè)),然后再賦予權(quán)限才能訪問(wèn),只要頁(yè)面繼承了PageBase類,則頁(yè)面會(huì)自動(dòng)檢查當(dāng)前用戶是否有該頁(yè)面的操作權(quán)限。不添加的頁(yè)面默認(rèn)為無(wú)訪問(wèn)權(quán)限。對(duì)于不用檢測(cè)權(quán)限的頁(yè)面,在創(chuàng)建后直接繼承System.Web.UI.Page。這些頁(yè)面必須調(diào)用指定函數(shù),檢查用戶是否登陸以及是否從正確的路徑進(jìn)入本頁(yè)面(系統(tǒng)對(duì)所有頁(yè)面的路徑都進(jìn)行了加密,只要密鑰不正確就無(wú)法進(jìn)入相應(yīng)頁(yè)面)。對(duì)于不用檢測(cè)權(quán)限的頁(yè)面,也需要在菜單中進(jìn)行添加綁定,不添加綁定的話,用戶操作日志就無(wú)法記錄該用戶瀏覽過(guò)這些特殊的頁(yè)面。

4) 頁(yè)面按鍵設(shè)置(公共)這里設(shè)置常用的按鍵名稱,方便按鍵權(quán)限設(shè)置時(shí),不用一個(gè)個(gè)錄入,只需要選擇添加就可以了
5) 頁(yè)面按鍵權(quán)限設(shè)置頁(yè)面權(quán)限指的是頁(yè)面中各個(gè)控件(按鈕)的操作權(quán)限,只要頁(yè)面繼承了PageBase類,程序就會(huì)自動(dòng)在頁(yè)面中查找ToolBar控件內(nèi)的按鍵,并進(jìn)行權(quán)限檢查,除了刷新、查詢、關(guān)閉等幾個(gè)按鍵外,如果用戶沒(méi)有該控件權(quán)限時(shí),由會(huì)自動(dòng)將該控件禁用。在本欄目為每個(gè)頁(yè)面綁定按鍵名稱后,職位設(shè)置權(quán)限時(shí)就會(huì)顯示出來(lái),給管理員打勾選擇權(quán)限。而對(duì)于需要更細(xì)化的權(quán)限管理的,比如頁(yè)面中有一個(gè)樹列表或分類,分類A與分類B各有一個(gè)按鍵叫做C,而有權(quán)限進(jìn)入本頁(yè)面的人有多個(gè),有的人可以對(duì)分類A的按鍵C操作權(quán)限,而有的對(duì)分類B的按鍵C有操作權(quán)限。這時(shí)使用頁(yè)面按鍵權(quán)限控制就很難實(shí)現(xiàn)了。需要另外開發(fā)一個(gè)職位權(quán)限控制功能來(lái)實(shí)現(xiàn),以區(qū)分不同職位的人員分別控制頁(yè)面中不同分類同名按鍵的操作權(quán)限。(講的可能還不夠清晰,這里再補(bǔ)充一下。這里講的職位權(quán)限與后面的職位權(quán)限管理是不一樣的,后面的職位權(quán)限是針對(duì)每一個(gè)頁(yè)面和控件的,而這里是針對(duì)頁(yè)面里不同分類同命控件權(quán)限,具體如何開發(fā)與操作,以后有時(shí)間的話再編寫相關(guān)例子)
6) 部門管理主要是用來(lái)管理企業(yè)架構(gòu),添加、編輯、刪除部門,并可對(duì)所創(chuàng)建的部門進(jìn)行排序操作。每位員工只能隸屬于一個(gè)部門。在系統(tǒng)中部門是一個(gè)邏輯概念,因此部門設(shè)置與真實(shí)的組織結(jié)構(gòu)可以不同。系統(tǒng)中部門的邏輯結(jié)構(gòu)主要取決于按照組織結(jié)構(gòu)劃分的部門權(quán)限和工作范圍。部門設(shè)置主要用于數(shù)據(jù)篩選的權(quán)限管理。當(dāng)需要查詢部門數(shù)據(jù)時(shí),使用部門編號(hào)字段作為過(guò)濾條件,就可以很方便的查詢到當(dāng)前員工所管理部門以及子部門的所有數(shù)據(jù)。而對(duì)于平級(jí)部門或上級(jí)部門的資料由無(wú)法查看。如果企業(yè)有多個(gè)分公司,而這些分公司的人事或其他一些管理是相互獨(dú)立的時(shí)候,只要在職位那里設(shè)置該職位綁定直屬部門(可以為一級(jí)部門也可以是其他級(jí)別的部門——這主要是要看該企業(yè)是如何創(chuàng)建這個(gè)企業(yè)架構(gòu)和具體需求的),那么當(dāng)該用戶在管理系統(tǒng)時(shí),只能設(shè)置或查看他所在部門及子部門的權(quán)限或查看員工信息,而對(duì)于這個(gè)部門節(jié)點(diǎn)平行或以上的數(shù)據(jù)他是無(wú)法查看到的。只有在綁定時(shí)指定了所有數(shù)據(jù)的才可以查看到整個(gè)企業(yè)所有的數(shù)據(jù)。
7) 職位管理(角色)根據(jù)企業(yè)自己的架構(gòu),在對(duì)應(yīng)的部門里創(chuàng)建相應(yīng)的各個(gè)職位設(shè)置各職位的操作權(quán)限,如欄目的訪問(wèn)權(quán)限,頁(yè)面里各個(gè)按鍵的使用權(quán)限等一位員工可以同時(shí)擁有多個(gè)職位,當(dāng)他擁用多個(gè)職位時(shí),他就具有這些職位的所有權(quán)限。職位權(quán)限的設(shè)置,它是將部門、菜單與頁(yè)面控件權(quán)限捆綁在一起的綜合應(yīng)用。職位權(quán)限管理主要是為了減輕管理員的工作量與出錯(cuò)率,在人事變動(dòng)時(shí)(即調(diào)動(dòng)崗位或新進(jìn)員工),不用對(duì)員工權(quán)限重新設(shè)置,只需要綁定相應(yīng)職位就可以了。在設(shè)置菜單、頁(yè)面訪問(wèn)操作權(quán)限時(shí),要基于這樣一個(gè)原則,用戶不應(yīng)該有的或可有可無(wú)的權(quán)限就不要開啟,使界面簡(jiǎn)單、明了、易用。
8) 登陸日志記錄用戶登陸、退出日志,并將用戶在線時(shí)長(zhǎng)記錄在日志中。
9) 操作日志框架底層會(huì)詳細(xì)記錄用戶進(jìn)入過(guò)那些頁(yè)面,邏輯層生成的函數(shù)會(huì)記錄用戶增、刪、改、更新等各種詳細(xì)操作。
10) 在線用戶顯示當(dāng)前在線用戶列表,可以查看這些用戶的各種日志,并可以將指定用戶踢除下線。
11) 錯(cuò)誤日志記錄所有未捕捉到的異常信息,方便開發(fā)人員查看修復(fù)。
4、 信息發(fā)布1) 信息分類管理管理各種信息分類

2) 信息內(nèi)容管理管理與發(fā)布各種公告、公司新聞和其他信息。(如果有前端的話,可以將幫助、公司簡(jiǎn)介、新聞等各種內(nèi)容在這里發(fā)布)

3) 郵件信息管理查看系統(tǒng)中已發(fā)送的各種郵件內(nèi)容,以及發(fā)送失敗信息。
5、 員工管理1) 在職人員可添加、修改員工信息;設(shè)置該員工帳號(hào)是否可多人使用,設(shè)為否時(shí),每個(gè)帳戶只能有一個(gè)用戶登陸,當(dāng)該帳號(hào)在其他地方登陸時(shí),前一登陸用戶將被系統(tǒng)踢除,在踢除的同時(shí),系統(tǒng)會(huì)發(fā)信息提示被踢除的用戶(就像同一個(gè)QQ帳號(hào)多次登陸時(shí),前一登陸帳號(hào)將被強(qiáng)迫離線)。設(shè)為可以時(shí),該帳戶就可以由多人擁有,可以同時(shí)登陸系統(tǒng);用戶的操作權(quán)限是同職位綁定的,只要指定了該用戶的職位,該用戶即擁有該職位的所有權(quán)限。員工離職時(shí)設(shè)置員工離職狀態(tài),設(shè)置后該員工帳號(hào)就登陸不了系統(tǒng)。可幫助員工修改密碼,可用多種條件進(jìn)行查詢。
2) 離職人員可查看離職員工的詳細(xì)信息對(duì)離職員工點(diǎn)擊復(fù)職,該員工就可以轉(zhuǎn)為正常狀態(tài)點(diǎn)擊刪除,將刪除該員工的所有信息,包括相片
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注