论坛首页 编程语言技术论坛

有人试过用c++写b/s程序没有?

浏览 22955 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-20  
C++
我为学校内的几个大ftp写了个简单的搜索引擎, 用c++写的, 今天打算做一个web界面, 不是很复杂, 又懒得去用php, rails什么的, 所以就决定用c++写cgi, 但cgi弊端很多, 所以我想到了用fastcgi, 在研究的过程中另外又找到了一个cgicc的库, 发现相当好用, 突发奇想是不是可以实现一套c++的web应用框架.

可能用c++写b/s意义不大, 不过我觉得:
1.现在stl库,boost库已经把c++扩充得很强大, 动态语言的一些优点不再那么令人神往了.
2.c++连本地数据库速度还是挺爽的, 配合sqlite3不错, 不是说b/s主要瓶颈在io上吗?
4.我最近做的几个b/s程序都是用了大量的ajax, 所以c++的任务就是生成xml或json, 这些应该都有很方便的库.
3.c++也有很好的ide, 我用vc9express觉得相当不错, 不管是编码还是调试, rails最好的ide netbeans速度还是有点不爽
4.fcgi的编程风格也容易写出mvc这种模式
5.适合过分饭c++的人,过分追求速度的人,虽然用c++写出的b/s程序不一定比rails快多少, 但是多少能满足有些人的bt心理, 呵呵

下面是我程序的几个部分:
1.dll, 主要用来处理业务逻辑, 主要导出函数为dispatcher
2.主程序, 主要是fcgi主循环, 页面被访问之后循环开始, 显示调用调用dll的dispatcher解析http请求, 这样程序在开发的过程中基本不用杀掉fcgi进程
3.html,css,images..., 这些不是c++了, 可以用其它的工具来做
4.测试程序, 不是单元测试(我这方面经验还不足). 分两种, 一个是普通cgi, 因为fcgi主程序一旦调用, 关闭比较麻烦, 需要杀掉一个apache进程和一个fcgi进程, 用普通cgi就方便了; 另一种是一个本地程序, 模仿主程序显示调用dll, 这主要是为了方便调试dll, 用vc调试还是相当方便的.

另外我还有一些想法:
1.因为主程序中的静态变量是被所有的fcgi主循环共享的, 所以这里可以放一些共享数据, 缓存一些东西
2.不一定所有地方都用ajax, 纯用c++生成或者纯的html模板可能方便性不是很高, 可以考虑在html模板中假如一些模板语言, 自己定语法用c++解析可能速度不一定快, 用一些简单的又可以用c++执行的动态语言呢? 比如说lua? 其实用c++生成json放到页面里让javascript自己去处理也行


我的想法不一定很成熟, 只是因为很喜欢c++, 也熟悉b/s开发, 看看有没有途径让c++也可以方便的写b/s程序

欢迎拍砖!
   发表时间:2008-04-20  
那你起码要处理好两个问题:

1、改个页面就要重新编译一遍C++源代码,你是否能够忍受

2、你是否有足够自信确保程序创建的所有对象都被你手工销毁掉了,否则你会有无穷无尽的烦恼。
0 请登录后投票
   发表时间:2008-04-20  
robbin 写道
那你起码要处理好两个问题:

1、改个页面就要重新编译一遍C++源代码,你是否能够忍受

2、你是否有足够自信确保程序创建的所有对象都被你手工销毁掉了,否则你会有无穷无尽的烦恼。

嗯,戳到了一些痛处
第一点还好,多用dll和预编译头速度还是挺快的
第二点确实是有些麻烦,不过就算不是b/s应用,这些问题一样存在于普通c++程序中
0 请登录后投票
   发表时间:2008-04-21  
用c++写的cgi在性能上和其他工具没啥区别,以我的经历io更快啥的基本上只是自我安慰而以。关键在于项目的需求,我这里99%都是c++,剩下一点cgi再引入新语言实在没啥必要,干脆就用c++一勺烩了。
c++写cgi真正需要的其实就是两样东西,一个cgi库,一个html模版库,网上一抓一把,不爽的话自己写一个也不麻烦。
0 请登录后投票
   发表时间:2008-04-22  
还是没那个时间和精力去搞全c/c++,现在b/s用rails,后台用一个c++程序用共享内存缓存索引,然后用c++和swig写个ruby的扩展从共享内存读取需要的索引进行搜索(这一步用纯ruby好慢),速度一样没有问题,而且整个搜索引擎各模块分的很清晰
0 请登录后投票
   发表时间:2008-04-23  
好,取长补短,这才是正道~
0 请登录后投票
   发表时间:2008-05-01  
1、C++写CGI没有现成的模板引擎,写起来很累很烦。
2、维护和修改起来很麻烦。
3、BS瓶颈在io,并不是说调用函数,而是数据库的处理,我想应该是这个意思。
4、内存管理方面,如果做得不好,只有过段时间就重起fastcgi.
5、静态变量可以直接用共享内存做。
6、fastcgi+C++的速度确实很快,要是追求极速的话,这是个途径,但要看瓶颈和有没有必要高效
7、boost库能让你用很少的代码来做某件事情,但难维护,在很多情况下,代码越少越难维护和调试。
8、可以用写php的模块,这样也不错。
0 请登录后投票
   发表时间:2008-05-04  
rubynroll 写道
好,取长补短,这才是正道~


同意.各取所长,才是正道;:)
0 请登录后投票
   发表时间:2008-05-04  
如果用C++写B/S轻松,就不会有PHP了。我认为PHP是C/C++的B/S程序版。
0 请登录后投票
   发表时间:2008-05-04  
你可以用一下google的ctemplate,那也是页面生成时很有用的库。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics