2008年11月12日 星期三

DynamicProperties動態屬性設定1-1

MyShare furl Yahoo! My Web TwitThis ');//-->

RunPC 109期:在.Net上保存應用程式設定(一)

在與各位讀者探索.Net的應用程式設定DynamicProperties(動態屬性)設定方法之前,我們先來了解一下它可能運用地方:如:資料庫的連結這是它最常被應用到的地方,各位是否和筆者早期於學校撰寫畢業專題(進銷存管理系統),用VB開發資料庫應用程式一般,將Visual Basic與MS SQL Server相關連結的部分深植於應用程式中或直接由ADODC按右鍵設屬性頁簡易設定而帶來往後安裝與維護上的惡夢,每當開發系統的資料庫由本機移植到另一台學校測試的SQL Server上時,系統與資料庫連結的部分須重寫,然後再次重新編譯原始碼,方可以安裝、佈署系統,雖然當時的筆者已知要將連結資料庫的參數設成常數,往後維護只要更改常數部分即可,但還是造成筆者在佈署上的諸多不便。後來筆者於實作中了解到動態設定屬性參數對真實開發系統的重要性,如:上面所提到的資料庫連結參數、系統環境參數的配置…等,將其配置於外部檔案,在所部佈署的機器上即使系統環境不同時只需改變外部設定檔案參數即可,而不用重新再次編譯原始碼。

一、早期動態參數設定方式概述
當然早在.Net還未出現前,我們已經可找到相關的動態應用參數設定解決方式,請參考如下:
1、 最簡單的方式是利用File System Object讀取外面某個文字檔內儲存值來當系統參數(參考:Programming in the FSO Object Model),File System Object讀取外面文字檔為非標準作法,不建議使用。
2、 早期系統開發上較常用的是讀取ini檔案的方式,可參考Using INI Files to Save Application Data - Saving Entire Sections 這篇文章,此方式會有所限制,所以建議改採用第五項作法(XML設定檔方式)。
3、 直接截取命令列引數:使用Command方法來當參數,在.Net上改用System.Environment.CommandLine方法來截取命令列引數,在此簡述它們的開發和佈署時期的應用方式;VB6的開發設定方式:選專案功能表內『專案屬性』打開專案屬性對話盒,選擇『製成』頁讖,於命令列的引數內輸入相關引數(如:Arg1,Arg2…)見圖一;VS.Net的開發設定方式:選Project功能表內Properties,出現Project Property Pages選擇Configuration Properties內的Debugging在於Start Options項目中找到Command line arguments輸入相關引數(如:Arg1,Arg2…)見圖二;佈署後的設定方式:建立該專案執行檔(如:MyApp.exe)的捷徑,再選擇捷徑內容於『捷徑』頁讖內目標項內後帶相關參數見圖三,即可用Command或System.Environment.CommandLine來截取。


(圖一)VB6內設計時期內設定命令列引數

(圖二)VS.NET內設計時期設定命令列引數

(圖三)佈署時期設定引數

4、 利用註冊檔為參數值儲存所,使用GetSetting方法取得註冊檔內資料、SaveSetting方法來儲存資料到註冊檔內、DeleteSetting方法刪除應用程式在註冊檔內的機碼。
註:一般VB6所儲存的註冊檔位置為『HKEY_CURRENT_USER\Software\VB and VBA Program Settings\』到當然若要儲存到非該位置下,則需使用到特殊API的呼叫。
5、 彈性最佳的方式,配合MSXML取得外部自訂的XML設定檔。如今該方式已成為筆者開發系統最常應用留存系統設定檔的方式,也是筆者在XML應用上最為廣泛使用。如:筆者在系統開發上的一個實際的例子,財吉寶現金卡融資審核表及其相關消費性貸款融資審核表,因業務上需求各選項配分必須隱藏且必須因應市場反應而作適當彈性調整配分,而XML恰好俱自我描述功能與樹狀結構設計,是故筆者以XML來訂定相關系統選項配分、描述與資料庫連結參數…等,請見表一。
註:此處融資審核表還有一處有趣的部分,它產生出來的融資審核表為非HTML而是動態的Word報表,且是不可以修改的喔!有興趣的讀者可參考以上的網址。


(表一)消貸系統融資審核表XML設定檔

以上五種方法為非.Net平台上的作法而此篇文章將焦點放置於.Net的應用上,在此就不加以詳細說明,讀者若有興趣了解相關主題可參考相關連結或來信與筆者討論。

MyShare furl Yahoo! My Web TwitThis ');//-->

沒有留言:

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming