最近由于项目需要,重新学习了一下WebBroker和WebSnap,学习体会如下:
1、WebBroker是Delphi中最早的Web技术,最早应该是出现在Delphi4,后来没有再做升级,主要是封装了标准的http协议中的请求和响应,
并通过Web模块中的不同动作来输出网页内容。使用非常简单,方便。我最初使用Delphi开发Web程序,用的就是这种方法,当时好象使用的是Delphi4,由于对html等相关知识了解不够,感觉使用比较麻烦。现在来看,还是比较简单的,也非常直观,前提是需要扎实的html、css、javascript等知识,并且对web的请求、响应工作模式比较清楚。由于现在重新学习,是使用的delphi7,发现竟然能够支持http协议1.1版中的文件上载,当初在使用时,由于不会使用文件上载功能,还找了一个第三方控件,叫cgi专家。
2、WebSnap最早出现在delphi6,刚出来时,研究过一阵子,也做过一个简单地应用,但由于对其工作原理没有掌握,一直觉得这东西不如webbroker好用,webbroker更直观一些。这次研究,加深了对WebSnap的认识,这一套组件是非常棒的,运行过程和.net的WebForm简直一样,并且Delphi中的实现单元的名称就是WebForm,这个可是出现在2001年,当时.net还未正式推出,不知是否和.net的设计师出自Borland有关,反正觉得WebSnap和asp.net中的WebForm,设计思想完全一致。这样理解起来,WebSnap就比较好理解了。用起来,也完全按照asp.net中WebForm的思路来设计,当然,里面有一些具体的技术问题,还需要研究,可惜的是,这组优秀的组件,一直没有比较好的文档,后来Borland推出了VCL for WEB,WebSnap好象也不再升级了,至少我没发现后来有什么实质性变化。
WebSnap每个网页需要使用一个PageModule,这也是原来不理解WebSnap的主要问题,因为WebSnap太智能了,反而不适应了,PageModule的名称就是浏览器请求动作的名称,如:http://localhost/p1.dll/home,这个home,就是PageModul的Name属性值,WebSnap会自动转发这种请求,原来老想着WebBroker的action,就是找不到,原来秘密在这里。这也是delphi的传统,如果认为一个PageModul相当于一个Delphi窗口,这种设计方法也就好理解了。
3、在WebSnap中,仍然可以使用WebBroker的组件和工作方式,这是这次学习最大的收获。但反过来就不行了,因为WebSnap和工作方式与WebBroker不同,但他们共享了TWebRequest和TWebResponse类,因此,很多东西是一样的。
4、VCL for WEB最早出现在delphi7中,不过,名字是IW,版本也比较低,没做仔细研究,在delphi2007和2010中对这一块着重进行了增强,也是Delphi给我们提供的另一种选择,这个更像WebForm的工作方式,连设计方式也一样,完全不需要了解html的任何知识。但我不喜欢这种工作方式。但这种工作方式确是典型的delphi风格,我想这也是delphi收购这个第三方的组件库的主要原因。顺便说点题外话,delphi一直有集成第三方组件的传统,但有些优秀的组件却没有被delphi收购集成,我觉得最主要的原因是组件的使用和设计风格不符合delphi的传统,比如:FastReport,风格与标准的delphi组件使用风格明显不同,但用起来感觉比rave要好用。
5、这次项目中,顺便把scktsrvr.exe的源码学习了一下,摘出了主要的类,集成到了一个webServer中,这样,这个WebServer既可以支持WebSanp的ISAPI程序,也可以支持midas的远程数据模块,简化了部署,对小型应用,还是很实用的。
delphi是一个伟大的工具,感觉目前delphi发展的重点是跨平台,而不是绑定在win32平台上,这也是delphi的传统,希望delphi能够在跨平台开发上越走越好。