关于Web编程,各位有什么好的建议?(300分)

  • 主题发起人 主题发起人 Shuzi
  • 开始时间 开始时间
To Shuzi,
为什么说ISAPI要花很多精力用于线程的处理及程序的测试上,因此应该慎用:
ISAPI作为动态链接,是直接被Web Server(如PWS、IIS等)加载到进程空间内使用的,一
旦你编写的DLL有内容访问方面的BUG,很可能就会影响到Web Server的工作,甚至使其崩溃。
而且ISAPI DLL在被Web Server加载后,在Web Server关闭之前是不会被释放的,这使得调试
和更新ISAPI DLL变得很麻烦(可能有些工具会让ISAPI DLL的调试变得简单,IntraBob就是
做这个的,我没用过,具体情况不太清楚)。
早期我开始学习Web编程时曾认为可以在调试程序时把程序写为CGI的,到发布时再通过修改
一下项目文件将其编译为ISAPI DLL,并认为这是一项可行的工作,但现在看来事情并非如此。
CGI方式下,每个进程的全局变量、数据库操作等都是在一个独立的进程空间内进行,所有事
情都是很简单的。但是在ISAPI DLL下,上面的一些都变得棘手了,全局变量要保护、为了
安全地存取数据库,又需要为每一个线程建立一个Session,如果用BDE的话,每台机器上
Session的数量又不能超过48个,又要为之开发Session Pooling技术;如果用ADO的话,对付
Oracle数据库时又很别扭(我指在DLL中的应用,此外Oracle Provider For OLE DB在DLL中
也不是完全好用,而且Oracle Provider For OLE DB的效率不好,只有BDE或MS Provider的
50%-60%)。接触一段时间后你就会发现如果把所有核心工作都采用ISAPI完成的话简直就是
折磨自己。

使用ASP,如果把业务逻辑都写在COM组件里,而不是脚本里的话,我认为安全性是足够高的,
即使别人又发现了ASP的某某漏洞,可以把你网站上所有的ASP脚本取到他的机器上,它取得
的也只是一些无足轻重的东西:用于调用组件和生成界面的代码!
 
Sachow:
首先,谢谢你的解答!
这段时间我在对我们的系统作多层改造,基本的方案就是采用Delphi的WizSnap,通过
Soap的方式架构系统(表述不清楚,大概意思就是这样)。关于ISAPI的调试,找到一篇文
章,对IIS进行一些调整,似乎已经不存在问题。但是你说的“一旦你编写的DLL有内容访
问方面的BUG,很可能就会影响到Web Server的工作,甚至使其崩溃”引起了我们的重视,
对此一定得想办法解决,比如我们能不能接管IIS调入的DLL呢?Windows的ADSI应该可以
作些事情吧。但我苦于没有ADSI方面的资料,你有吗?
按李维的说法,SOAP和COM是可以配合使用的,我还没有认真测试过,但应该是可以的。
至于ASP,我不能说它就不好,事实上有很多人就是用ASP的。但关键是我们一直以来都是
用Delphi,现在没有精力和时间去深入研究它,当然一般的还是要了解,其实WebSnap中
也用到很多ASP。
 
我觉得IntraWeb还是不错的,开发周期短。
 
多人接受答案了。
 
后退
顶部