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常常都自带了,完全没有必要引入这么大的库。
      设计原则上讲,形式追随功能。
      我们用什么形式去实现功能,是功能决定的,至于你能否把握这个原则,那要看你知识的广度、开发经验等。
      双节棍在李小龙手里很厉害,你也像他那样快速舞动一下,我看马上就头上肿起来了。也不是说我们就不能练双节棍了,你立志成为武术好手, 双节棍高手,那你要下很多功夫,当然就功到自然成了。
      可以说,作为个人最好在技术上广而精,逐步扩大自己知识面;商业项目开发时,则最好形式追随功能,也要看参与者现有的知识结构。
      
      我的理解有限,大家多回复一下自己的看法,回复一下曾经开发通讯模块时都采用什么。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值