仍是老規矩先吐下槽,在規範的開發過程當中,這個時候應該是編寫整體設計(概要設計)的時候,不過對於中小型項目來講,過於規範的遵照軟件工程,編寫太多文檔也會拉長進度,通常會將它與詳細設計合併到一塊兒來處理,因此本文檔看起來會怪怪的,不是很符合規範,它只是從實用角度出發來編寫,以指導後面功能的設計與開發。html
從零開始編寫本身的C#框架前端
後臺管理系統功能設計文檔算法
文件狀態:sql [√] 草稿數據庫 [ ] 正式發佈後端 [ ] 正在修改緩存 |
文件標識:安全 |
C#框架服務器 |
當前版本:網絡 |
0.1 |
|
做 者: |
陳煥(AllEmpty) |
|
聯繫方式: |
1654937@qq.com |
|
更新日期: |
2014-04-23 |
目錄
1、 文檔介紹 3
一、文檔目的 3
二、文檔說明 3
三、讀者對象 3
四、系統開發強度等級 3
五、開發環境及使用工具 3
2、 項目整體規劃 4
一、系統實現功能圖 4
二、系統總體性能規劃 4
3、 後臺管理系統功能介紹 6
一、 登錄與在線用戶表 6
二、 系統首頁 7
三、 系統管理 8
四、 信息發佈 16
五、 員工管理 19
六、 我的事務 20
1、文檔介紹
一、文檔目的
本文檔是《從零開始編寫本身的C#框架》項目後臺管理系統的開發指引說明。
二、文檔說明
本文主要描述後臺管理功能說明等,方便開發人員根據功能設計數據庫結構,能更快捷和順利的完成系統開發。
三、讀者對象
本項目的開發人員。
四、系統開發強度等級
(強度分爲:容易、中等、困難) 當前難度爲:容易
五、開發環境及使用工具
Windows7 + IIS5 + SQL Server2005 + Visual Studio 2010 + Offices2010 + ExcelToSQLString2.91 for July等軟件。
2、 項目整體規劃
一、系統實現功能圖
二、系統總體性能規劃
1) 安全性需求
整個系統的設計及服務器配置都認真的考慮了系統的安全性,可以防範常見的黑客攻擊。
服務器安全:系統採用Windows2008,使用McaFee防火牆,啓動安全策略後,採用非容許的軟件沒法對C盤及註冊表進行任何寫入或更改策略、對內對外端口非容許軟件所有阻止策略、對站點所在文件夾,採入可運行目錄無寫入權限,可寫入目錄無執行權限策略。修改相關軟件的訪問端口(若有須要,可限制某些服務的遠程訪問權限,或指定IP段才能夠訪問)。嚴格按照《服務器安所有署文檔》來配置服務器與網站,最大限度的保證服務器的安全。
代碼級安全:上傳到服務器上的程序代碼,都必須進行編譯和混淆;對提交到數據庫的內容,都必須進行過濾處理,防止sql注入式攻擊與XSS攻擊;對上傳的圖片文件,必須進行檢查操做,防止上傳非法文件。後臺與前臺分開,登錄需提交驗證碼。
系統級安全:本系統經過菜單權限、頁面按鍵權限和多權限組合的方式來管理系統中各個不一樣的權限組與頁面權限;每一個頁面訪問都會驗證用戶組權限、用戶權限及連接中提交過來的密鑰,以辨別是不是非法訪問,防止後臺操做人員跨頁面非法訪問。後臺的全部操做都會記錄到操做日誌中,以保證出現問題後臺快速定位,找出緣由。
2) 性能需求
因爲是個基礎框架,在這個框架上可能會擴展不一樣的業務系統,有可能業務量會很大,因此在框架代碼編寫與數據庫設計上,以千萬級別數據庫訪問爲基準進行設計。開發人員在開發時,必須嚴格遵照項目開發規範,以及數據庫設計要求(詳細請看下一章節)。
數據庫設計上,數據量大的報表,實現實時與非實時查詢相結合,將能夠延後查詢的數據所有放在深夜由數據庫啓動相關存儲過程自動分析處理。
在數據查詢條件編寫上,將時刻注意查詢條件位置,優化查詢語句,並隨時檢查複合索引是否已建立,使用空間換性能等方式提升查詢效率。
在編碼時必須作到能不訪問數據庫的地方,毫不向數據庫讀取數據;對於須要反覆讀取的數據,能夠存放到IIS緩存或Redis緩存中,減小數據庫訪問次數;可使用XML、JS等文本方式讀取數據的,根據具體的生成頻率情況,有選擇性的使用。儘可能使用空間換性能的方式進行處理,減輕服務器的負擔,提高用戶訪問效率。
前臺頁面採用模版緩存方式,減小頁面與數據庫的交互,提交用戶訪問效率。
3) 可靠性需求
在設備選型方面,採用具備較高可靠性並支持容錯的網絡設備和服務器,如支持冗餘電源、帶電熱拔插、鏈路冗餘等容錯技術。爲了保證數據的可靠性,採用支持磁盤陣列(RAID)等磁盤冗餘技術的服務器,儘可能減小由於磁盤的故障形成系統的意外down機。
4) 可擴充性需求
隨着業務的發展,系統在設計上考慮到將來功能的開發可以預留必定的應用擴展空間。框架徹底自主開發,實現功能模塊化、組件化、可繼承,對經常使用功能函數,使用T4模板統一輩子成,減小人手複製粘貼操做,開發靈活。開發完善的集成接口,使系統更具有開放性,可多人協做團隊開發,供相關開發人員進行功能延伸開發。
5) 後期維護方便快捷需求
整個開發必須遵循後續維護便捷爲核心的思想進行,即後續開發維護時,在數據庫中添加、修改和刪除字段時,對原有的頁面開發只須要修改一些小參數便可完成。在頁面添加、修改和刪除一些按鍵與功能時,也只需作一些小調整甚至只是在後臺相關頁面增改一些參數便可完成。
後臺管理系統開發時,數據訪問層統一使用SubSonic生成,減輕開人發員開發工做量與減小出錯的可能;業務邏輯層經常使用函數統一使用T4模版生成,自定義函數編寫也採用高度集合繼承與封裝方式,所有或部分使用泛類進行操做,這樣處理後,在表示層開發時,大量的UI頁面顯示只須要傳入相關的數據庫表名和相關參數就能夠立刻實現列表、分頁、排序、新增、編輯與刪除等功能,避免重複的維護開發工做。
UI層使用FineUI插件,能夠減輕開發人員對於UI繪製以及分頁、排序等各類經常使用功能所花費的開發時間。
3、 後臺管理系統功能介紹
因爲不少功能很簡單,看着原型圖就明白,因此就不寫詳細的文字描述。
一、 登錄與在線用戶表
對於在線用戶列表的緩存方法,IIS緩存與Redis緩存開發編碼是不同的,若是後端站點使用多進程的話,只能使用Redi緩存,若是選用IIS緩存的話,必須進行跨站點共享緩存方式進行配置,或使用新的算法才行。
本項目開發將會選用Redis緩存。
登錄原型:
登錄流程判斷與在線用戶表的關係,請看下圖:
二、 系統首頁
首頁的頂端,會顯示當前登錄用戶的一些信息
左邊菜單欄會顯示當前用戶有權限查看到的目錄
右邊顯示公司公告、公司信息,以及當前用戶的登錄信息
三、 系統管理
1) 系統參數設置
主要是對系統全局參數進行設置,好比日誌、郵件等各參數的設置(詳細請看下面的原型設計)
設置了日誌保留時間之後,存儲過程會自動刪除過時的日誌
啓用郵件通知之後,須要使用郵件經過的地方就會發送郵件
2) 圖片從新生成
對上傳到服務器端的圖片按從新設置的格式所有從新生成
3) 菜單管理
管理後臺的菜單與各個頁面
對於後端系統的全部頁面,都須要在這裏添加綁定(註冊),而後再賦予權限才能訪問,只要頁面繼承了PageBase類,則頁面會自動檢查當前用戶是否有該頁面的操做權限。不添加的頁面默認爲無訪問權限。
對於不用檢測權限的頁面,在建立後直接繼承System.Web.UI.Page。這些頁面必須調用指定函數,檢查用戶是否登錄以及是否從正確的路徑進入本頁面(系統對全部頁面的路徑都進行了加密,只要密鑰不正確就沒法進入相應頁面)。
對於不用檢測權限的頁面,也須要在菜單中進行添加綁定,不添加綁定的話,用戶操做日誌就沒法記錄該用戶瀏覽過這些特殊的頁面。
4) 頁面按鍵設置(公共)
這裏設置經常使用的按鍵名稱,方便按鍵權限設置時,不用一個個錄入,只須要選擇添加就能夠了
5) 頁面按鍵權限設置
頁面權限指的是頁面中各個控件(按鈕)的操做權限,只要頁面繼承了PageBase類,程序就會自動在頁面中查找ToolBar控件內的按鍵,並進行權限檢查,除了刷新、查詢、關閉等幾個按鍵外,若是用戶沒有該控件權限時,由會自動將該控件禁用。
在本欄目爲每一個頁面綁定按鍵名稱後,職位設置權限時就會顯示出來,給管理員打勾選擇權限。
而對於須要更細化的權限管理的,好比頁面中有一個樹列表或分類,分類A與分類B各有一個按鍵叫作C,而有權限進入本頁面的人有多個,有的人能夠對分類A的按鍵C操做權限,而有的對分類B的按鍵C有操做權限。這時使用頁面按鍵權限控制就很難實現了。須要另外開發一個職位權限控制功能來實現,以區分不一樣職位的人員分別控制頁面中不一樣分類同名按鍵的操做權限。(講的可能還不夠清晰,這裏再補充一下。這裏講的職位權限與後面的職位權限管理是不同的,後面的職位權限是針對每個頁面和控件的,而這裏是針對頁面裏不一樣分類同命控件權限,具體如何開發與操做,之後有時間的話再編寫相關例子)
6) 部門管理
主要是用來管理企業架構,添加、編輯、刪除部門,並可對所建立的部門進行排序操做。
每位員工只能隸屬於一個部門。
在系統中部門是一個邏輯概念,所以部門設置與真實的組織結構能夠不一樣。系統中部門的邏輯結構主要取決於按照組織結構劃分的部門權限和工做範圍。
部門設置主要用於數據篩選的權限管理。當須要查詢部門數據時,使用部門編號字段做爲過濾條件,就能夠很方便的查詢到當前員工所管理部門以及子部門的全部數據。而對於平級部門或上級部門的資料由沒法查看。
若是企業有多個分公司,而這些分公司的人事或其餘一些管理是相互獨立的時候,只要在職位那裏設置該職位綁定直屬部門(能夠爲一級部門也能夠是其餘級別的部門——這主要是要看該企業是如何建立這個企業架構和具體需求的),那麼當該用戶在管理系統時,只能設置或查看他所在部門及子部門的權限或查看員工信息,而對於這個部門節點平行或以上的數據他是沒法查看到的。只有在綁定時指定了全部數據的才能夠查看到整個企業全部的數據。
7) 職位管理(角色)
根據企業本身的架構,在對應的部門裏建立相應的各個職位
設置各職位的操做權限,如欄目的訪問權限,頁面裏各個按鍵的使用權限等
一位員工能夠同時擁有多個職位,當他擁用多個職位時,他就具備這些職位的全部權限。
職位權限的設置,它是將部門、菜單與頁面控件權限捆綁在一塊兒的綜合應用。
職位權限管理主要是爲了減輕管理員的工做量與出錯率,在人事變更時(即調動崗位或新進員工),不用對員工權限從新設置,只須要綁定相應職位就能夠了。
在設置菜單、頁面訪問操做權限時,要基於這樣一個原則,用戶不該該有的或無關緊要的權限就不要開啓,使界面簡單、明瞭、易用。
8) 登錄日誌
記錄用戶登錄、退出日誌,並將用戶在線時長記錄在日誌中。
9) 操做日誌
框架底層會詳細記錄用戶進入過那些頁面,邏輯層生成的函數會記錄用戶增、刪、改、更新等各類詳細操做。
10) 在線用戶
顯示當前在線用戶列表,能夠查看這些用戶的各類日誌,並能夠將指定用戶踢除下線。
11) 錯誤日誌
記錄全部未捕捉到的異常信息,方便開發人員查看修復。
四、 信息發佈
1) 信息分類管理
管理各類信息分類
2) 信息內容管理
管理與發佈各類公告、公司新聞和其餘信息。(若是有前端的話,能夠將幫助、公司簡介、新聞等各類內容在這裏發佈)
3) 郵件信息管理
查看系統中已發送的各類郵件內容,以及發送失敗信息。
五、 員工管理
1) 在職人員
可添加、修改員工信息;設置該員工賬號是否可多人使用,設爲否時,每一個賬戶只能有一個用戶登錄,當該賬號在其餘地方登錄時,前一登錄用戶將被系統踢除,在踢除的同時,系統會發信息提示被踢除的用戶(就像同一個QQ賬號屢次登錄時,前一登錄賬號將被強迫離線)。設爲能夠時,該賬戶就能夠由多人擁有,能夠同時登錄系統;用戶的操做權限是同職位綁定的,只要指定了該用戶的職位,該用戶即擁有該職位的全部權限。
員工離職時設置員工離職狀態,設置後該員工賬號就登錄不了系統。
可幫助員工修改密碼,可用多種條件進行查詢。
2) 離職人員
可查看離職員工的詳細信息
對離職員工點擊復職,該員工就能夠轉爲正常狀態
點擊刪除,將刪除該員工的全部信息,包括相片
六、 我的事務
1) 我的設置
員工能夠在這裏修改密碼與聯繫方式
2) 部門通信錄
顯示用戶所在部門的全部員工通信錄(包括子部門)
3) 公司通信錄
顯示用戶企業全部員工通信錄
版權聲明:
本文由AllEmpty原創併發佈於博客園,歡迎轉載,未經本人贊成必須保留此段聲明,且在文章頁面明顯位置給出原文連接,不然保留追究法律責任的權利。若有問題,能夠經過1654937@qq.com 聯繫我,很是感謝。
發表本編內容,只要主爲了和你們共同窗習共同進步,有興趣的朋友能夠加加Q羣:327360708 或Email給我(1654937@qq.com),你們一塊兒探討。
更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/