基於WPF+XMPP的IM程序開發日志 之一:開篇


一:為什么做這個項目 

   算起來我從大二開始接觸.NET到現在也有四年時間了,畢業后一直從事.NET的開發,在公司做過不少.NET項目,但是國內的軟件開發公司都是很浮躁的,比如我畢業后第一家公司是一間軟件定制公司,老板技術出身,懂技術,所以基本上什么都做,從C\C++到.NET,java,從硬件嵌入式到手機應用到asp.net,基本上有需求就做,而通常一個項目組只有一兩個人,搞.NET的員工居多。基本上我認為這家公司的作風是:搞到客戶的錢就行了,根本不是抱着為客戶開發可用的軟件的態度來經營公司,基本上程序員寫的東西F5能運行就過關交付,代碼質量,健壯性根本不考慮。

  作為一個畢業生,再加上有那么一點小聰明,我往往被分配到很多組里面幫忙,因此,嵌入式,手機,軟件硬件方面的話題我都略知一二。其實這就是小公司的一些好處:菜鳥進去了,提升速度不是一般快,因為什么都要你干(當然要經常加班)。然而,弊端也是同樣明顯,就像我:什么都懂點,但真正深入理解的卻基本沒有。所以過了兩年,我的軟件開發能力,或者說技術還是那么一般般。

    后來,我發現自己寫的代碼真的太垃圾,做的比較多的項目是asp.net,無非都是在page.load,button.click中寫一些增刪改查的語句,按一個過程一句一句寫代碼,雖然也有用三層,但也稱不上OOP,老實說,干了幾年,我自己真正用到繼承,或者以OOP方式來設計一些模塊的經歷都幾乎沒有。而且我相信跟我一樣情況的碼奴還不少。我有時也看看一些比較專業的開源項目的源碼(像我現在手頭的這個agsXMPP),別人寫的代碼都是精心設計的,模塊,繼承,接口,很顯然就是有設計有架構的項目。當然我不是說有繼承有接口就是好代碼,但是一個稍大的程序里面一個繼承也沒有,重復出現的代碼滿地都是的話,可以肯定這是個垃圾東西。

   我會寫c#,但不會寫出好的代碼,好的程序,這就是我的現狀,相信也是很多人的現狀。這就是菜鳥與高手,碼奴與工程師的區別。想提升想進步,未有練習(老外常說的practice),多做多練,因為我始終信奉一句:孰能生巧,這不是大道理,是我切實感受到的,我碰過很多剛畢業的人經常去尋找“如何提高能力”之類的答案,但卻很少去練習,所以即使了解了方法,但也應用不上去,相反,做熟了一樣東西,這東西的好與不好的地方也心中有數,也會越做越好。

   然而,代碼不是敲的越多,能力越提高,就像我在上面提高的公司里面即使做一萬個項目,也不會有質的提升,因為我沒有針對點去練習,而且一般在公司做的商業項目大多太倉促,似乎天天加班都不能完成無盡的工作。而且代碼並不是數量的東西越多越好,寫好的代碼好的軟件是需要思考的,而國內大多數軟件公司的老板最不想給的就是讓你看似發呆地思考的時間。因此,我需要一個項目,一個沒有老板與客戶催促,自由發揮的項目,能讓我在毫無壓力下自由自在地寫,借這個項目有針對性地訓練 ,寫的差,或者濫用設計模式,或者代碼苦澀難懂都不重要,因為就是要經歷這些,能力才會提升。

   因為WPF可以做出很酷的界面,而且wp7也是用xaml開發,所以我想做一個WPF程序。

   因為IM軟件可以接觸到一些通信的東西,而且對架構的設計,代碼層次的設計比較高,適合於訓練,所以我想做一個IM程序

   因為XMPP是開放的IM協議,好像比較有趣,所以我想做一個基於WPF+XMPP的IM程序。

 

二: XMPP介紹:Extensible Messaging and Presence Protocol)是一個開放的即時消息協議,也就是說,只要是基於XMPP協議開發的即時聊天軟件都可以相互聯通,設想一下使用QQ的用戶能直接與MSN或者GTALK的用戶通信那多好,不過出於差異化競爭,騰訊是不可能使用XMPP或者公開自己的通信協議的。但現在MSN,GTALK這些IM大佬也部分支持XMPP,畢竟,開放標准才是用戶最想要的,誰想一開機后又開QQ又開MSN GTALK SKYPE POPO沒完沒了啊。

 

三: XMPP的類庫。在軟件開放世界中,總不用擔心“類庫”或者“框架”這些東西,XMPP的開發類庫就有幾個,我選了agsXMPP.agsXMPP是ags公司的開源項目,使用它可以很方便地開發XMPP應用。而且代碼看上去設計得還不錯,我喜歡這種風格,經常看這些源碼肯定有不少收獲。其實我還想親自編寫XMPP的類庫,不過我將XMPP兩個主要協議(RFC3920,RFC3921)打印出來看,覺得很枯燥,有很多很難看的明白(畢竟是翻譯),所以還是先用類庫,慢慢接觸耳濡目染了,在看協議應該有助於理解協議。

 

 

    其實開始這個項目已經有一段時間,每天下班回來都寫一下,速度不是很快,但反正不是商業項目,沒老板沒客戶,慢慢做吧,寫些博客將遇到的問題都記下來,固化一下成果,相信能對技術能力提升不少。 

 

附XMPP協議中文翻譯:RFC3920,RFC3921 的doc文件下載地址:http://download.csdn.net/detail/zeewendotnet/4126869 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM