冰果

技术群:26678700     
交流QQ: 704839634
合作: 1) 可兼职远程办公开发; 2) 有一套Go+Python开发的行业短信云平台可合作;3)目前正在开发物联网、大数据平台。

socket通讯是使用第三方库还是手工封装操作系统api

      socket通讯是使用第三方库还是手工封装操作系统api?
      我相信做过几年的服务器程序开发,你不止一次和网络通讯、数据库、文件系统打交道。闭上眼睛,静静回忆一下你开发的那些C++服务器系统,是不是大多数都涉及四个部分:
      业务逻辑模块、网络通讯模块、数据库访问模块、文件访问模块。
      单谈网络通讯模块,我们可能既手工封装操作系统api,又使用第三方库。
      在unix/linux系统上,直接调用socket()系列。
      在windows上,直接调用winsock2提供的API。
      使用MFC开发的,可能直接使用MFC提供的那个框架。
      使用了boost库的,可能喜欢使用那个异步io库。
      还有著名的ACE库,以及类似的跨平台库。
      ......
      使用什么来实现都没错,主要是我们最好把握好一个度:
      你的项目你的系统是什么规模,最好就采用什么规模的实现方式。
      技术人员总有一种倾向,新学了一种知识,总是想使用一下,不管它合适不合适,有没有害处。
      我曾经看到一段简单的代码,就是一个线程实现,没有什么数据同步、数据通讯等等,可这个线程是用ACE库里的线程类来实现的,整个程序就四五个小小行数的cpp文件,为了一个线程,就引进一个大大ACE,而ACE仅仅在我那台linux开发机上编译出一个库就花大半个上午,发布的时候还要带上个so库文件,这么简单的功能直接使用pthread库,linux常常都自带了,完全没有必要引入这么大的库。
      设计原则上讲,形式追随功能。
      我们用什么形式去实现功能,是功能决定的,至于你能否把握这个原则,那要看你知识的广度、开发经验等。
      双节棍在李小龙手里很厉害,你也像他那样快速舞动一下,我看马上就头上肿起来了。也不是说我们就不能练双节棍了,你立志成为武术好手, 双节棍高手,那你要下很多功夫,当然就功到自然成了。
      可以说,作为个人最好在技术上广而精,逐步扩大自己知识面;商业项目开发时,则最好形式追随功能,也要看参与者现有的知识结构。
      
      我的理解有限,大家多回复一下自己的看法,回复一下曾经开发通讯模块时都采用什么。

posted on 2012-03-11 12:40 冰果 阅读(1859) 评论(2)  编辑 收藏 引用

评论

# re: socket通讯是使用第三方库还是手工封装操作系统api 2012-03-13 17:29 vvilp

同意, 做几个小web 完全没必要用到ssh 可以自己搭个小框架,但是现在 ssh 满天飞,能用上ssh的大规模web却不太多.....  回复  更多评论   

# re: socket通讯是使用第三方库还是手工封装操作系统api 2012-03-15 09:27 Serval

可能作者的考慮是爲了後期的擴展和維護吧,加入功能陸續加入的時候,某些庫就會體現出它的便利來。但是,個人有一點疑問:是否需要爲了後續不確定的需求而增加現在開發的複雜度。我個人的想法是,最好能夠搭建出一個好的數學模型,將時間,和後續增加需求的可能性都作為輸入,計算出一個值,根據這個值來決定採取那樣的設計。
比如,我們一次做東西,需要限制在300KB,於是有工程師便砍掉了能看的所有功能,約270KB。說這樣後續如果增加需求的時候,就不用再砍了。這個項目過了半年了,也沒有再對它加什麽需求。反倒是有些額外功能被砍,使得後續的生產、測試稍顯不便。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理