用Delphi/C++ Builder做网站是否现实,该用什么技术好?(150分)

  • 主题发起人 主题发起人 Sachow
  • 开始时间 开始时间
S

Sachow

Unregistered / Unconfirmed
GUEST, unregistred user!
近期要完成公司网站的技术支持论坛,本人对Delphi/BCB比较熟,但对于做网站却是门外汉
一个,我想了解一下用ASP与用前者相比效率上相比有多大差距,用Delphi/BCB是不是只能
用CGI/ISAPI?我对ISAPI有恐惧心理,不知现在还有没有人用CGI做网站的?
 
这么多人当中没人用Delphi/BCB做过网站?昨天我看到《Delphi 5从入门到精通》中以极短
的篇幅提到过Delphi+ASP的编程方式,觉得很有兴趣,但信息太少。文中提到的方式是以
Delphi建立一个Active控件为核心,然后用ASP脚本调用此Active为手段,这样就能较多地
使用Delphi的技术了,但我不知道以Active控件为核心的网站其稳定性会怎样?
 
我做过类似的一个小型试验性论坛,用 Delphi 做 ISAPI,并结合 Win2000 Server IIS 5.0,
效果还不错。我没有用 ASP,因为对 ASP 不熟。客户数据的传送以及服务器数据的发送都采用
HTTP 协议。至于客户端,可以只使用浏览器进行页面访问,也可以专门定制开发一个
ActiveX Form 控件嵌入在浏览器页面中,你可以视具体情况而定。
 
使用activeX Form安全性差、效率太低,因为要下在activX程序,而且当时用比较多的activx
form 的时候delphi有很多不足!
有没有其他办法?
 
不用Active Form,而是用Active Server Object,这是检验COM技术的时候了。
 
用ASP等比较简便
一般的操纵数据库也不直接使用ASP,
有些复杂的服务器程序可用Delphi 做
 
主要是开发效率问题,使用 JSP,ASP或PHP 中的任何一个的开发效率都比使用
delphi 高得多。
 
asp效率比cgi高很多

作论坛这种简单点的活用asp好

只有asp实现不了的才用isapi或者编写activex组件供asp调用



 
呵呵,没想到来了一群 ASP JSP 专家,我是不是有点班门弄斧,在高人面前抬不起
头了。:)
 
就我们开发web应用来看,delphi做asp object有点勉强,占用内存过大,首选还是c++。

比起做传统应用来,web应用更加考验程序员的基本功,因为你写的代码基本上24小时不停
的在运行,速度,内存的使用,共享,线程锁定都需要仔细推敲,大量的测试后才能最终
定夺。有时候在lan上面跑得很好的程序,一到真实的internet环境下就不行了。

如果你的程序员技巧性不高而资金充裕的话,选用jsp是个比较好的方案。jsp表面性能比
asp高,但内存耗用极其严重,当有瞬间大量访问的时候占用内存以GB计,但是Java内置
的安全性可以保证代码可靠,开发成本比asp低。

如果你不需要编写asp object,那么asp是一个很好的解决方案,需要的硬件环境也比jsp
低,但是要想编写牢固的应用,则技巧性比较强。

我曾经服务过国内多家大型网站,在这方面有一定经验,有兴趣的同仁可以多多交流。
 
to jojo
看来藏龙卧虎形容这里毫不为过啊!
请问jojo先生,为什么用delphi做asp组件勉强呢?我看过李维的那本关于delphi和电子商务
的书,里面说得delphi好得不得了,我也相信了,但是从来没有证实过,jojo有实例证明
这个吗?我现在正在学习用delphi开发db和web,我觉得delphi有利有弊,但还是不错的。
我用asp比较长时间了,但总觉得层次很低,就是说用到的asp中的丰富的内涵的东西比较
少,其实asp在ms的架构里面有很多可以应用的,比如在ms的DNA架构下开发,利用delphi
vb,c++编写组件,都可以提高效率和安全性,请问您有什么经验可以告诉我吗?
希望能和你保持联系,做个朋友。
我的email:bobgates@263.net
 
delphi开发asp object,用于连接后端数据库。随后在asp脚本中调用。
效率如何我也不知,详情可以参考李维《电子商务篇》。
 
to:bobgates
很好,我是www.cnlist.com,www.jingqi.com,www.gazx.com前技术负责人,
现任www.360cn.com技术领导人,上面那三个网站现任负责人也是我的好朋友和伙伴。

有关开发asp object的方面,与其去看李维的书,不如去深入研究一下com。再说这里大
部分人一提到三层,就是delphi的clientdataset,这个东西比起rds和tdc来,在web
上面的性能可就差得很远,更不用说现在新的sql 2000所附带的xml扩展功能。

我想诸位如果想真正的编写一些web应用,首先搞搞清楚下面的一些问题:
1.ADO支持的接口模式是什么?IUnknown还是IDispatch?什么是Dual Interface?
2.线程模式对性能的影响如何(COM的线程),应该采用哪一种线程?
3.你真正的了解ADO吗?如何选用正确的DBProvider?
4.了解asp模型中上下文切换对性能的影响吗?什么时候应该创建对象?在asp中com对象
有几种工作模式?

了解这些东西,再开始决定需不需要写com,写什么样的com。
 
to jojo:
//就我们开发web应用来看,delphi做asp object有点勉强,占用内存过大,首选还是c++。

我觉得这个说法不对,我这一年一直用DELPHI开发网站,给我的感觉就是越做越顺
的确,如果代码控制不好的话,很容易内存泄漏,造成服务器当机,
但这并不能说delphi做ASO很勉强.
相反,我认为delphi开发ASO不但开发速度快,而且运行是非常稳定的,这个是实践证明了的
我用MTS+ASO开发的站,每天的流量5000左右,运行了2个月,没有内存泄漏的问题
网站一直运行良好

用组件就是第一次启动的时候慢一点,以后启动的速度非常的快,如果在D6里面改成中立
线程,使用ObjectPooling,速度就更快了
每个服务请求的时间都在10MS以内,这个速度是用ASP脚本不可能达到的.

还有就是大家对ASP有个误解,好像认为ASP就是脚本,其实MS推荐的ASP构建结构是
ASP脚本+ ASP组件的模式. 脚本仅仅是胶水,把各个组件结合起来.
用这样的模式,什么ASP的看代码漏洞什么的,根本就没有什么问题
因为ASP的脚本就是3句
Set Obj = Server.CreateObject("")
Obj.方法名
Set Obj = Nothing

总上所说,我认为DELPHI开发组件是没有任何问题的。


 
to:大鱼儿
我在cndev经常看到你。
每天5000的流量,若8小时计每秒还不到一个,我开发的可是每秒并发200以上的网站啊。
cnlist.com的访问者通常集中在证券交易所开市前,很容易造成访问浪涌,一个delphi的
object需要用掉300k左右的内存,你帮我算算我需要多少内存应付。用c++内存可减小到
几十K,这中间的性能差异太大了。我本身C++不过关,新的Action3中重要的com都是茶壶
写的,速度和内存占用率比以前的版本提高了几倍,数据库性能提高更多。
但是有一点没错,用Delphi写很简单。
至于ms的推荐,嘿嘿,至少上面 Set Obj = Server.CreateObject("")这种写法就不被
推荐,暂时卖个关子,等你查不到的时候我再告诉你。事实上如果io操作频繁,用script
代码和com相差不大,脚本可不是什么胶水啊,等你再写多一点就知道了。
我是软件不足硬件补,让服务器内存上4g,用不用C++都无所谓。但是最好还是C++,当
然用不用由你。
 
附带object pooling的问题:
Object Pooling是一项令人十分激动的技术,它实现了对象可重复利用功能,能够减少
对象的创建/释放的开销,提高运行速度。
但是,目前的Object Pooling技术远远没有达到这种要求。Object Pooling实际性能一
直在mts论坛上有强烈的争议。许多数据表明,Object Pooling的命中率太低,根本没有
什么实际上的用处。就我的实际测评数据来看,Object Pooling的命中率大多在30-50左
右,而Catch的命中率没有低过80。所以目前加强性能用增加Catch的方法比加大Object
Pooling要好。
有关Object Pooling 的问题,在msdn上有详细描述。
微软正在努力改善Object Pooling的性能,下一个版本也许会好。
 
to: jojo
久闻你的大名了,在拓创混的时候就常看到了,今天是顺便过来看看,顺手发一贴 :)
我也在jingqi呆了半年,写了没完没了的脚本,之前也写了不少时间,给我的感觉就是
很不爽,可能是没有写进去的原因,有了DELPHI的组件,我就不想去钻脚本如何了,偷点
懒也是可以谅解的,呵呵
网站的集中浪涌是很头痛的事情,要单靠软件去解决不太可能,软件不足硬件补,我是
非常的赞同!要我用C++去写组件,不如先杀了我了,嘿嘿。我的网站都不会想这样很集
中的访问,而且硬件还不错,所以不担心会给搞死掉
你的Action3什么时候给我们看看呀
MS推荐的写法是什么?悄悄告诉我拉,我就懒的去找MSDN了,好累的 :)
 
to:大鱼儿
谢谢,你太客气了。
由于我目前不在北京,Action3开发进度极其缓慢,估计要等到年底才可以看到。
这个版本我决定同时支持asp和asp.net,所以会比较复杂。如果不行的化也可能放弃对
asp.net的支持。据内部消息,asp.net的beta2和beta1有很多地方不同,如果是这样,可
能要等到beta3才有可能定型,那样我就不用太着急了。
创建object的推荐写法是
<object id="obj" progid="progid" runat="sever"></object>
这样创建的对象称作静态对象,由iis来决定何时真正创建和释放,不会发生泄漏,对
象的生成期由系统控制,比较安全。
个人的力量总是渺小的,大家一同努力才能得到更大的提高。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部