前一陣做了一個小軟件“豆瓣電臺桌面版”,到現(xiàn)在已經(jīng)基本告一段落。其實做這個小軟件,一方面是研習(xí)研習(xí)自己最薄弱的Winform開發(fā),順便掌握了一點Windows API編程的基本知識,更主要的,是體驗了一把獨立開發(fā)軟件的過程:從需求,到開發(fā),到測試,到推廣等等一系列的過程,倒是小有收獲。
這是我第一次獨立開發(fā)一個桌面小軟件,身兼設(shè)計、開發(fā)、文檔、測試、推廣、客服數(shù)職,體會不可謂不深,但也不能說這些心得就是對的,在這里拋磚引玉,還望有更多經(jīng)驗的童鞋討論指教。
需求篇
和開發(fā)商業(yè)軟件不同,開發(fā)小軟件的第一個客戶,也是最重要的客戶肯定是開發(fā)者自己。我猜絕大多數(shù)開發(fā)小軟件的童鞋都會有這樣的一段心路歷程:
“我擦,XXX怎么用著這么別扭” \ “我勒個去,XXX怎么連這個功能都沒有”
-》
Google \ Baidu 一番
-》
下載一個或者幾個看上去很美好的似乎可以滿足我們的小小愿望的軟件
-》
各種不給力
-》
一怒之下,打開IDE或者記事本,踏上了開發(fā)小軟件之路
這個過程中我們可能還加入了幾個論壇,看了幾個博客,下載了幾分源碼,最好別丟掉它們,它們會是很寶貴的資源。
既然需求是自己提的,一切都好說。這時如果有前人的代碼借鑒更是容易,有時只要改動幾行代碼就可以了;即使是沒有代碼,既然能動手寫,至少說明心中有數(shù),一般也不會太困難,一個周末基本就搞定了。
如果就此打住,可能只是誕生了一個小工具,一段小代碼,沒有推廣的必要,也就沒有接下來的麻煩了,但這時候,可能心中一點點小小的完美主義會跟你說“你不能做的更好么?”然后你開始會想之前看到的AAA、BBB、CCC軟件,它們的XXX、YYY、ZZZ功能看上去都不錯,為什么我不把它們也添加到自己的軟件里面呢?這樣你之前的一點小小的自我滿足欲開始向更大的野心膨脹了。
開發(fā)篇
語言+平臺
開發(fā)小軟件,當(dāng)然是越快越好,如果再有點野心,越方便擴展越好。.Net雖然基本還是個Windows Only的框架,但開發(fā)效率實在是高,而且本人也最熟,所以豁上放棄Linux和蘋果的用戶,也毅然選擇了.Net和C#。
不過用.Net開發(fā)桌面應(yīng)用程序也有好幾個選擇,一個是Winform,一個是WPF,還有一個是可脫離瀏覽器的Silverlight。
Winform:各種庫各種控件很豐富,開發(fā)較快,而且可以直接調(diào)用系統(tǒng)各方面資源,再一個性能比較好,占得資源比較少;但一些在WPF和Silverlilght下很容易實現(xiàn)的效果在Winform下就會很困難,更別說動畫了,而且布局方面也很麻煩。
WPF:大部分的Winform控件都可以直接放到WPF里面,也可以直接調(diào)用系統(tǒng)各方面資源,動畫、特效什么的都很容易實現(xiàn),流式布局或者表格布局也很方便;最大的問題是性能較差,占用資源大概是Winform的兩倍左右。
Silverlight(Out of Browser):布局方便,動畫、特效也很多;但控件比WPF的弱,不能直接調(diào)用系統(tǒng)資源。
最后考慮到我的軟件需要調(diào)用系統(tǒng)資源,同時也要考慮性能(一個小小的電臺軟件占用物理內(nèi)存六、七十兆還是有點夸張),選擇了Winform。
Hack! Hack!
既然是茶余飯后的小軟件,除了必要的良好架構(gòu)之外,最好是在現(xiàn)有的輪子上增增補補,而不是完全重新做一個輪子。但輪子畢竟是別人做的,各種不順手,這時候就該發(fā)揮我們的才智,用各種小聰明進行各種Hack了。
比如“豆瓣電臺桌面版”,就是直接用WebBrowser控件包了一個網(wǎng)頁中的原本的那個豆瓣電臺的flash。這樣不用考慮從獲