基于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 

posted on 2012-05-15 00:30  wyman25  阅读(3765)  评论(10编辑  收藏  举报

导航