ACF:让控制台程序变得更为简单
ACF(Adaptive Console Framework)是一款.NET下的控制臺程序開發框架。控制臺程序不是非常簡單嗎?還需要開發框架干什么?當你回答完下面的問題以后,你就會發現,原來自己也需要一套合理的控制臺程序的開發方案。
- 控制臺程序都提供命令行參數以及參數值,是否每次開發的時候,都需要去解析用戶給定的參數?
- 如果控制臺程序需要提供多種參數組合,那么要針對每種參數組合開發一套解析機制,是否感覺很頭疼?
- 要針對命令行參數以及參數值給出說明信息,當用戶給定的參數或者參數值不正確時,是否需要額外的時間來編寫這些說明信息和文檔?
- 我編寫的控制臺程序是可測試的嗎?是否滿足測試驅動開發的需求?
- 我編寫的控制臺程序是可擴展的嗎?是否能夠隨心所欲地對其所支持的命令行參數進行開發和擴展?
在你遇到上面的問題時,你就會考慮去使用一個開發框架來幫你實現這些技術細節。每個項目管理人員和開發人員都有同樣的感受,就是能夠盡快地將所有的資源用在業務的處理上,而那些技術活,就交給框架去完成。ACF之所以是一個框架,是因為它為你提供了開發一個控制臺程序的基礎平臺,并且預留了實現接口,你所要做的僅僅是往這些實現接口中填入你的業務處理邏輯。
現在,讓我們預覽一下ACF能幫你提升效率的強大功能。catool是ACF的一個示例程序,catool的基本功能就是通過用戶輸入的命令行參數,對給定的兩個整數做加減乘除運算。此外,catool還將根據用戶的需求打印程序版本以及幫助信息。
1、Logo與描述信息的輸出
當你自己定制了一個控制臺程序的實現時,你需要指定這個程序的Logo字符串以及描述信息。在運行的過程中,Logo和描述信息將被打印出來。而這個打印的過程是不需要額外編程的。比如:
2、命令行語法的自動生成
你不需要寫任何一行代碼,就可以獲得專業的命令行語法描述。在語法描述中,強制性參數會以“<>”囊括,可選參數會以“[]”囊括,非選項型參數將以p1, p2...的形式表示出來。ACF還會針對多種命令行參數組合自動生成語法描述。
3、命令行參數的無序性
與正則表達式型的命令行參數解析相比,ACF具有命令行參數無序性,這是參數解析中的一道難題,自己編程實現也需要花費不少精力。ACF的命令行參數無序性,使得用戶無需關心每個參數之間的先后順序即可隨心所欲地使用控制臺程序。
4、參數名稱的多樣性
針對同一個參數,ACF支持多個名稱,比如上面例子中,用戶在指定計算方式的時候,可以使用/method,也可以使用/m。為了輸入方便,一般會用/m的形式,而當程序被用于批處理文件,并希望有更好的可讀性時,就可以使用/method的形式。而作為開發人員,所要做的僅僅是將這兩種形式的參數名稱用分號分開。
5、幫助界面(Help Screen)的自動生成
除了設置相應的屬性,用戶無需編寫一行代碼,即可獲得非常詳細的幫助界面。在幫助界面里,你將看到:a) 每種命令行參數組合的詳細解釋;b) 參數名稱以及可選性(是否是可選參數);c) 針對每個參數名稱的詳細描述。
6、可測試性
使用ACF開發的控制臺程序具有可測試性(testable)。這對測試驅動開發是個很大的幫助。這是因為,每種命令行參數的業務處理邏輯都將單獨實現,開發人員能夠很方便地將這些邏輯放在獨立的.NET程序集中(甚至于分布在多個程序集中)。針對每種命令行參數,開發人員都能很方便地編寫測試用例,對其業務處理邏輯進行測試。
7、可擴展性
最新版本(3.5.3253.15384及其以上版本)將支持多元的“選項契約(Option Contract)倉儲”(在ACF中,每種命令行參數的組合或者說每種命令行語法都與一個“選項契約”相對應,包含有多個選項契約的程序集稱為“選項契約倉儲”)。這就使得控制臺程序所能支持的命令行語法能夠隨意擴展:
- 添加新的語法規則:開發人員只需要編寫新的“契約倉儲”,并將其名稱加入配置文件即可
- 刪除已有語法規則:開發人員只需要修改配置文件即可
如上講了ACF的七大特色,在使用的過程中,你將發現ACF的確能夠很大程度地提高你的開發效率。ACF也有成功的案例:來自加拿大的Bil Simser(Microsoft MVP,MSDN Canada Speakers Bureau成員)在其開發的Tree Surgeon開源項目中就使用了ACF,他還寫了一篇博客專門介紹ACF的使用過程與心得,點擊這里可以看到他寫的這篇文章。
?
你可以到CodePlex站點的ACF主頁上獲得最新的源代碼以及安裝包。在使用安裝包時,安裝程序會自動將所需的組件添加到你的“Add Reference(添加引用)”對話框中,并且會將使用說明以及開發文檔安裝到開始菜單。
?
ACF主頁:www.codeplex.com/acf
ACF源代碼地址:http://www.codeplex.com/acf/SourceControl/ListDownloadableCommits.aspx
ACF安裝包下載地址:http://www.codeplex.com/acf/Release/ProjectReleases.aspx?ReleaseId=17617
總結
以上是生活随笔為你收集整理的ACF:让控制台程序变得更为简单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数组:SFTP
- 下一篇: Cisco2620路由器的密码恢复和灾难