※ 引述《brucetu (sec)》之铭言:
: 现代网站开发一定有框架
: 几乎所有的操作都有现成的函数让你用
: 也是就说
: 就算用c++开发也只是在call框架的API
: 把资料丢来丢去而已
: 有人觉得python / .net 写网站比较简单
: 但其实框架包得好
: 就算是c++也没有什么不同吧?
: 例如 python 的 list comprehension
: 或是 .net 的 linq
: 都可以包成一个套件来做啊
: 在 c++ 也就只是一行 function call 而已了
: 那为什么不用c++开发网站就好了?
CGI 这东西,看了这么多人回,都没人讲出来,表示这边的都是高手了。
资O会,以前某套内部的系统是CGI 当底的,后面接的是C。
但当我看到它每一个取char * 传进来的字串长度是用sizeof 时,就该明白....赞啦。
还好它只是检查它长度是否大于0。
鬼扯哪么久,回到正题,用C 接http request,有什么好处呢?
我们先理解一下web application 在做什么呢。
以前:将request 收到的key/value 凑一凑,塞给DB 做insert/update/delete/query
将结果结合html tag 产生response。
现在:将request 收到的key/value 凑一凑,塞给一个叫ORM 的框架,让它帮你
塞给DB 做insert/update/delete/query
将结果凑成一个叫json 的产生response,让"前端"的javascript 帮忙产生对应的
html tag。
看到了没?
"将request 收到的key/value 凑一凑,塞给DB 做" 这样的事
要C++ 来做,是为哪一条? 在写embedded系统,这种什么都穷的系统。
例如你家的router 之类的管理接口,才因为穷有好处,不然,有啥好处?
举例来说,
C++一般来说,处理速度是Java 的两倍,哪会因为用了C++ 而增加两倍的处理能力?
显然不会嘛,因为你还有一段network I/O,一段DB Action,甚致再多一段Disk I/O嘛。
而以CPU vs network I/O 的速度来比,不管是以前还是现在,都不是同一个量
级的对手。而不管是凑html 还是json,都没什么功,甚致都只是memory copy而已。
所以, 在这种基本上是I/O bound 的工作面前,用以CPU bound 为强项的语言。
是不是大材小用了?
再来,每次改完测试,都要重新compile。为了这个大材,还要浪费人力时间去
compile。
这会不会,太花人力成本了一点?
穷,去做穷该做的事。