




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.Net某權限管理系統(tǒng)在一個好的架構下編程,不僅對于開發(fā)人員是一件賞心悅目的事情,更重要的是軟件能夠表現(xiàn)出一個健康的姿態(tài);而架構設計的不合理,不僅對于開發(fā)人員是一件受苦受難的事情,軟件本身的質量更是受到嚴重威脅。架構設計圖架構說明一個標準的四層架構包含如下四個部分:1. 展示層,負責系統(tǒng)與客戶的交互2. 業(yè)務邏輯層,負責處理系統(tǒng)的業(yè)務3. 數(shù)據(jù)訪問層,負責處理數(shù)據(jù),與不同的數(shù)據(jù)庫打交道4. 服務層,負責與其他系統(tǒng)進行數(shù)據(jù)交互和業(yè)務集成我們在此四層架構的基礎上進行一些擴展,就是將業(yè)務邏輯的方法抽象出業(yè)務接口層(IBLL)。調用關系請結合下面的組件圖一起來看,如下:展示層(App)調用業(yè)務接口層(
2、IBLL),業(yè)務邏輯層(BLL)實現(xiàn)了接口層(IBLL),業(yè)務邏輯層(BLL)調用數(shù)據(jù)訪問層(DAL),公共組件(Common)則是抽象了系統(tǒng)中可以共用和重用的部分,每個層都可以調用。另外,增加了一個服務層(WcfHost),將接口層(IBLL)暴露給其他系統(tǒng),使其方便與其他系統(tǒng)進行數(shù)據(jù)交互和業(yè)務集成。注意:此處沒有讓展示層(App)調用服務層(WcfHost),是為了性能的考慮。組件設計圖組件說明1. App頁面展示是BS架構的項目,選擇最新的MVC框架,使用Jquery腳本庫。2. BLL業(yè)務邏輯業(yè)務邏輯的操作,包括業(yè)務處理,事務等。3. DAL數(shù)據(jù)訪問數(shù)據(jù)庫訪問的操作,數(shù)據(jù)實體,業(yè)務實體
3、,數(shù)據(jù)校驗,使用Entity Framework。4. IBLL業(yè)務接口業(yè)務邏輯層的方法對外暴露的接口和服務契約。5. Common公共組件整個應用程序使用的公共輔助方法。6. ModelingProject模型設計在此設計項目的圖例,如:架構圖。7. WcfHost服務宿主為對外的服務提供宿主,使用微軟WCF技術。8. WFActivitys工作流活動層定義了工作流的活動,使用微軟WF技術。9. WFDesigner工作流設計器實施人員自由配置工作流的設計器,使用微軟WPF技術。以上是在架構圖的框架下設計的9個組件,我們結合架構圖一起分析: 1. 展示層,包含App和WFDesigner項目
4、2. 業(yè)務邏輯層,包含BLL,IBLL和WFActivitys項目3. 數(shù)據(jù)訪問層,包含DAL項目4. 服務層,包含WcfHost項目5. 公共組件層,包含Common項目“數(shù)據(jù)實體”在DAL層中,是Entity Framework自動生成的實體;“業(yè)務實體”是基于“數(shù)據(jù)實體”進行擴展的實體,或者自定義的實體。因為是基于Entity Framework自動生成的數(shù)據(jù)實體,所以也放在DAL層中。另外,數(shù)據(jù)實體和業(yè)務實體集成了數(shù)據(jù)驗證的作用。注意:因為“業(yè)務實體”也放在DAL訪問層中,所以展示層(App)也需要引用數(shù)據(jù)訪問層,但此處約定不許在展示層做數(shù)據(jù)庫操作。數(shù)據(jù)訪問層僅僅負責管理數(shù)據(jù)庫與業(yè)務邏
5、輯層之間的通訊,不負責業(yè)務邏輯。技術上我們采用Entity Framework ,它是微軟開發(fā)的基于ADO.NET的ORM(Object/Relational Mapping)框架。Entity Framework的主要特點:1. 支持多種數(shù)據(jù)庫(Microsoft SQL Server, Oracle, and MySQL);2. 能很好地支持表,視圖和存儲過程;3. 提供Visual Studio集成工具,進行可視化操作;創(chuàng)建ADO.NET 實體數(shù)據(jù)模型項目在項目上點擊右鍵,添加->新建項選擇“ADO.NET 實體數(shù)據(jù)模型”從數(shù)據(jù)庫生成,新建連接,選擇數(shù)據(jù)源填寫連接需要的數(shù)據(jù)庫信息后
6、,點擊下一步注意:只選擇“在模型中加入外鍵列”可以看到新生成了兩個文件“App.Config”和“Model1.edmx”:“App.Config”里面是數(shù)據(jù)庫連接字符串“Model1.edmx” 里面是數(shù)據(jù)實體類和訪問數(shù)據(jù)庫的上下文注意:Model1.edmx文件是Entity Framework自動生成的,不做修改,因為每次更新會覆蓋。分析總結我們將系統(tǒng)需要的基礎類放在“Framework”文件夾中,所有的實體數(shù)據(jù)都需要繼承IBaseEntity接口,所有的數(shù)據(jù)庫表操作都需要繼承BaseRepository抽象類,所有視圖操作都需要繼承BaseViewRepository抽象類下面我們以S
7、ysException單表的增刪改為例,進行介紹:這里使用了分部類(partial class)對實體數(shù)據(jù)SysException進行擴展,加入自定義的屬性,使用SysExceptionMetadata類對SysException進行數(shù)據(jù)驗證,以保障數(shù)據(jù)的完整性和正確性。數(shù)據(jù)訪問層中的SysExceptionRepository執(zhí)行數(shù)據(jù)庫中的增刪改查操作。以上我們完成了數(shù)據(jù)訪問層的設計,此架構的代碼實現(xiàn),請參考業(yè)務邏輯層是應用程序的大腦1. 負責處理系統(tǒng)的核心業(yè)務,2. 負責對用戶定義的流程進行建模,3. 負責數(shù)據(jù)訪問層和展示層的通訊,4. 不能因為數(shù)據(jù)庫的變換而變化,也不能因為終端的變換而變
8、化。下面是業(yè)務邏輯層的具體實現(xiàn)1. BLL業(yè)務邏輯業(yè)務邏輯的操作,包括業(yè)務處理,調用數(shù)據(jù)訪問,事務等。2. IBLL業(yè)務接口業(yè)務邏輯層的方法對外暴露的接口和服務契約3. WFActivitys工作流活動層定義了工作流中使用的活動業(yè)務的最小邏輯單元因為服務層和展示層都會調用業(yè)務邏輯層,所以在此層做事務、異常和并發(fā)的處理比較合理。l 事務的使用首先,引用“using System.Transactions;”命名空間,調用TransactionScope類l 異常的處理l 并發(fā)的處理更新的時候會面臨一個難點,假設某條記錄同時被兩個人A和B讀取并且正在修改。A先修改完成然后保存了,然后B再保存的時候
9、,會由于時間戳不一致(因為A之前先保存修改了時間戳)導致B保存失敗。給一個表加一個時間戳字段Timestamp,可以有效的解決數(shù)據(jù)庫并發(fā)問題。我們約定1. 將系統(tǒng)需要的基礎類放在"Framework"文件夾中2. 在此層做事務、異常和并發(fā)的處理3. 對外暴露的方法,必須繼承自IBLL項目的接口以上我們完成了業(yè)務邏輯層的設計,此架構的代碼實現(xiàn),請參考展示層,它負責系統(tǒng)與客戶的交互,我們以BS架構的項目為例。我們選擇MVC 框架,這是一個展示層的框架哦。Content文件夾放置項目的樣式文件IndexStyle.css是所有列表頁面的樣式StyleSheet.css是所有增加修
10、改詳細頁面的樣式Controllers文件夾放置mvc框架的控制器HomeController.cs登陸后的主頁面Codes文件夾放置基礎框架的模型LogClassModels.cs日志模型BaseController.cs控制器的基類SupportFilter.cs全局的過濾器SysFieldModels.cs數(shù)據(jù)字典模型HtmlHelper文件夾放置mvc框架的模型CheckBoxListHelper.cs是CheckBoxList的輔助方法Easyui.cs是Easyui套件對應的后臺Cs代碼FileUploaderHandler.cs頁面上傳的控制類RadioButtonListHel
11、per.cs是RadioButtonList的輔助方法Res文件夾放置第三方的頁面套件Easyui文件夾是easyui的套件jquery.uploadify-v2.1.4是上傳套件My97DatePicker是時間套件Scirpts文件夾放置項目使用的js文件jquery.min.js是jquery文件JScriptCommon.js自定義的js文件JScriptIndex.js列表頁面的jsUp文件夾放置上傳的文件Views文件夾放置mvc框架的展示視圖Home文件夾:Index.aspx登陸后主頁Shared文件夾是母版頁的存放位置WorkFlow文件夾放置設計的工作流Global.asa
12、x文件是項目的路由和全局信息Web.config文件時項目的配置信息請看展示層(MVC框架)在四層架構設計圖的位置:我們約定:1. 將系統(tǒng)App項目需要的基礎類放在"Models"文件夾中2. 所有的控制器都需要繼承BaseController類3. 遵循“胖業(yè)務邏輯層,瘦展示層”的原則以上我們完成了展示層的設計,此架構的代碼實現(xiàn),請參考公共層(Common),它負責系統(tǒng)整個應用程序使用的公共輔助方法。所有層都可以引用并調用Common中的類和方法。EncryptAndDecrypte.cs保證系統(tǒng)安全的加解密方法NetSendMail.cs發(fā)送郵件Result.cs產(chǎn)生主
13、鍵的地方Suggestion.cs提示信息ValidationError.cs業(yè)務層向展示層提供的錯誤信息ValueConvert.cs數(shù)據(jù)轉換WFHelp.cs工作流的輔助類日志處理功能的設計為了記錄客戶在業(yè)務系統(tǒng)中的操作,為了記錄系統(tǒng)運行過程中產(chǎn)生的數(shù)據(jù),我們需要將這些操作和數(shù)據(jù)記錄到日志功能中。日志處理功能需要實現(xiàn):可以通過簡單配置就對所有需要記錄的地方統(tǒng)一開啟或者關閉也可以個性化的開啟或者關閉日志功能通過在Web.config文件上配置,就可以實現(xiàn)統(tǒng)一控制記錄日志的功能是否開啟<!-是否記錄操作日志(true:是,false:否)-><add key="LogEnabled" value="false" />在記錄日志的方法中加入一個有默認值的參數(shù)LogOpration logOpration public static void WriteServiceLog(string message, string menu, LogOpration logOpration = LogOpration.Default)/寫入日志的靜態(tài)方法 只需要在需要記錄日志的地方加上如下方法LogClassModels.WriteServiceLog(Suggestion.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 母豬養(yǎng)殖的科技支持策略試題及答案
- 對聯(lián)試題解題方法及答案
- 激光技術工程師??贾R點分析
- 激光技術在環(huán)保領域的應用試題及答案
- 電梯技術員試題及答案
- 禮儀導師考試題及答案
- 衛(wèi)生管理學科復習試題及答案
- 育嬰師的工作職責與法律知識試題及答案
- 激光行業(yè)人才流動與職業(yè)發(fā)展的現(xiàn)狀分析試題及答案
- 綜合衛(wèi)生管理知識的試題及答案
- 豬場轉讓合同范本
- (二模)石家莊市2025屆高三教學質量檢測(二)生物試卷(含標準答案)
- 南開一模試題及答案物理
- 2025年安陽職業(yè)技術學院單招職業(yè)技能測試題庫必考題
- 有關電除顫的試題及答案
- 2024-2025學年七年級數(shù)學北師大版(2024)下學期期中考試模擬卷B卷(含解析)
- 2025年入團考試練習試題(100題)附答案
- (二模)溫州市2025屆高三第二次適應性考試地理試卷(含答案)
- 2025北京外國語大學輔導員考試題庫
- 感染性休克指南解讀
- JGJ/T235-2011建筑外墻防水工程技術規(guī)程
評論
0/150
提交評論