程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 軟件架構(C#)

軟件架構(C#)

編輯:.NET實例教程
學過軟件工程的朋友應該都知道,合理的軟件架構(Software Architecture)對後期的維護、新功能的添加是極為有利的。我對研究 Windows 的架構非常有興趣,自己也想動手實踐一下。但是很遺憾,我沒有什麼大軟件的代碼可以拿來研究,說句實話,就算是有,可能我也沒時間去鑽研。


我只好拿我以前寫的一個小軟件來改造,這個軟件最早的一些版本結構顯得不太清晰(我已經寫了20多個版本啦)。也許你會覺得這對一個小軟件來說沒有必要,但這只是一個試驗性的東西,將來這個架構也可以用於更大一些的軟件。要知道系統結構對大型軟件來說非常之重要,一個合理的結構會節省很多的工作量。

先簡單介紹一下我的改造對象吧。AoouchWare(R) Date Convert 可以用於修改文件的創建時間、修改時間、訪問時間,支持批量更改。可以對系統時間進行實時追蹤。本軟件基於Microdoft.NET技術編寫,正常的使用需要首先安裝 Microsoft.Net Framework 1.0 版或更高的版本。

從下面的圖中可以看到在 SP2 版中外殼層和管理層是分開的,但是最初的 Release 版上面兩層是和在一起的。所以從 SP1 版我就開始了對它的改造工作,要把一開始就定義為一個整體的兩個層次完全的分開並不容易,所以我分了兩步進行。SP1 版算是一個半改造的東西吧,上面兩層並未完全的分離,只是把各個模塊中的 文字信息提取到了一個文件 Notify.dll 中,這樣的架構還不算完美。現在我的這個版本已經基本上把我頭腦中的架構實現了,盡管對內存的優化還要放在下個版本中(.Net 程序的內存占用實在是太大了)。



下面簡單談一下我的研究成果吧。其實說是研究成果,只不過是把我頭腦中的一些想法變成現實罷了。







我的思路說明:我的目標就是要把它分成3個層次,也就是外殼層(Shell Layer)、管理層(Manage Layer)和內核層(Kernel Layer)。外殼層主要包括 Notify.dll 和 UShell.dll,這兩個是用戶直接接觸到的,他們的任何更改對軟件功能都沒有直接影響。管理主要由主程序來實現,主程序中沒有任何可以進行實質性工作的代碼,只是提供了對接口的管理功能,目的是把上下兩層有效的銜接起來。這樣即使要更新下層的代碼或接口,都不會牽涉到用戶層,也就是說,軟件更新包的大小不會很大。核心層包括兩部分,一個是環境監測(Environment),包括 EnvirChk.dll、VerRep.dll,這兩個模塊主要實現的是文件版本管理和環境變量管理,如果用戶在更新時留下了不屬於當前版本的文件,程序是不會運行的。還有一部分當然就是實現軟件功能的執行(Execution)模塊了,包括 FileEvt.dll、TimeChkR.dll,這個我就不多介紹了。

各個模塊的具體作用:

Notify.dll 用來存儲用戶界面上的文字信息,也可以被其他模塊調用以發出提示信息。這也為多語言程序的開發提供了便利。
UShell.dll 這是界面部分,主程序的界面是從這個文件中繼承的。這樣一來便實現了換膚功能。
DateCov.dll 這就是主程序,實現了對上下兩層的銜接和管理。
EnvirChk.dll 這個模塊用作檢測環境變量,和版本管理。不合理的變量是不能被引用的,同樣錯誤的版本將導致程序不能運行。
VerRep.dll 用來返回各個模塊現在正確的版本號。
FileEvt.dll 用來調用打開文件(夾)對話框,以及執行對文件的更改。
TimeChkR.dll 可以返回當前的系統時間,以及實現對用戶輸入時間的標准檢測,這樣可以避免很多不必要的錯誤。


Date Convert + SP2 下載地址: http://free.efile.com.cn/aoouch/AoouchWare/DCSP2/DCSetup_CHS.exe

PlusPack for SP2 下載地址: http://free.efile.com.cn/aoouch/AoouchWare/DCSP2/DCPSetup_CHS.EXE

關於軟件的下載:我發布的那個安裝包是綠色的,如果你還不放心可以用 WinRAR 來解開。英文版的安裝包我就不提供了,如果想用英文版的朋友可以下載 PlusPack 來實現。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved