前一阵做了一个小软件“豆瓣电台桌面版”,到现在已经基本告一段落。其实做这个小软件,一方面是研习研习自己最薄弱的Winform开发,顺便掌握了一点Windows API编程的基本知识,更主要的,是体验了一把独立开发软件的过程:从需求,到开发,到测试,到推广等等一系列的过程,倒是小有收获。
这是我第一次独立开发一个桌面小软件,身兼设计、开发、文档、测试、推广、客服数职,体会不可谓不深,但也不能说这些心得就是对的,在这里抛砖引玉,还望有更多经验的童鞋讨论指教。
需求篇
和开发商业软件不同,开发小软件的第一个客户,也是最重要的客户肯定是开发者自己。我猜绝大多数开发小软件的童鞋都会有这样的一段心路历程:
“我擦,XXX怎么用着这么别扭” \ “我勒个去,XXX怎么连这个功能都没有”
-》
Google \ Baidu 一番
-》
下载一个或者几个看上去很美好的似乎可以满足我们的小小愿望的软件
-》
各种不给力
-》
一怒之下,打开IDE或者记事本,踏上了开发小软件之路
这个过程中我们可能还加入了几个论坛,看了几个博客,下载了几分源码,最好别丢掉它们,它们会是很宝贵的资源。
既然需求是自己提的,一切都好说。这时如果有前人的代码借鉴更是容易,有时只要改动几行代码就可以了;即使是没有代码,既然能动手写,至少说明心中有数,一般也不会太困难,一个周末基本就搞定了。
如果就此打住,可能只是诞生了一个小工具,一段小代码,没有推广的必要,也就没有接下来的麻烦了,但这时候,可能心中一点点小小的完美主义会跟你说“你不能做的更好么?”然后你开始会想之前看到的AAA、BBB、CCC软件,它们的XXX、YYY、ZZZ功能看上去都不错,为什么我不把它们也添加到自己的软件里面呢?这样你之前的一点小小的自我满足欲开始向更大的野心膨胀了。
开发篇
语言+平台
开发小软件,当然是越快越好,如果再有点野心,越方便扩展越好。.Net虽然基本还是个Windows Only的框架,但开发效率实在是高,而且本人也最熟,所以豁上放弃Linux和苹果的用户,也毅然选择了.Net和C#。
不过用.Net开发桌面应用程序也有好几个选择,一个是Winform,一个是WPF,还有一个是可脱离浏览器的Silverlight。
Winform:各种库各种控件很丰富,开发较快,而且可以直接调用系统各方面资源,再一个性能比较好,占得资源比较少;但一些在WPF和Silverlilght下很容易实现的效果在Winform下就会很困难,更别说动画了,而且布局方面也很麻烦。
WPF:大部分的Winform控件都可以直接放到WPF里面,也可以直接调用系统各方面资源,动画、特效什么的都很容易实现,流式布局或者表格布局也很方便;最大的问题是性能较差,占用资源大概是Winform的两倍左右。
Silverlight(Out of Browser):布局方便,动画、特效也很多;但控件比WPF的弱,不能直接调用系统资源。
最后考虑到我的软件需要调用系统资源,同时也要考虑性能(一个小小的电台软件占用物理内存六、七十兆还是有点夸张),选择了Winform。
Hack! Hack!
既然是茶余饭后的小软件,除了必要的良好架构之外,最好是在现有的轮子上增增补补,而不是完全重新做一个轮子。但轮子毕竟是别人做的,各种不顺手,这时候就该发挥我们的才智,用各种小聪明进行各种Hack了。
比如“豆瓣电台桌面版”,就是直接用WebBrowser控件包了一个网页中的原本的那个豆瓣电台的flash。这样不用考虑从获