websnap好象对COM的以来太大了,一时哙不了平台
例子
http://community.borland.com/article/0,1410,27404,00.html
Delphi 6 探索
—— WebSnap
品雪 2001.6
pinxue@263.net http://pinxue.yeah.net
根据Develper Guide的说明,WebSnap解决了如下问题:
1、允许使用多个Web module将应用分成单元,支持团队开发。
2、可以使用多个不同意图的dispatchers处理不同类型的请求。
3、支持所有的WebBroker content producer,加上许多其它设计以利快速开发复杂的数据驱动的web页。
4、支持服务器端脚本(Jscript或VBscript),以便划分业务逻辑与HTML生成逻辑(俺习惯上称之为界面逻辑)。
5、支持自动从page dispatcher中取得、从服务器端脚本中定位命名页。
6、支持session。
7、dispatcher自动响应大量请求,这大大简化了web应用开发,在WebBroker体系里则需要显式处理。
8、提供surface designer,可视化的设计页面,在设计时即可查看结果,所有构件均支持Preview。
9、提供了Web Application Debugger,可以方便的进行集成调试。这个Debugger很强大,显示大量的webServer应用的细节信息,自动log所有的http命令并以易于理解的方式显示。
不过,这个debugger基于COM技术开发,恐怕要移植到Linux上会大费周章。事实上WebSnap目前对COM技术的依赖非常严重,一个可被其调试的WebSnap应用就是一个COM对象,这对于移植也是极为不利的。
目前WebSnap不能在CLX体系结构中使用。
10、通过XSLPageProducer提供了对XML/XSL的支持。
就核心框架而言,WebSnap与WebBroker并没有什么不同,都是isapi或cgi之类的应用,都是通过Module+Dispatcher派遣http请求,都是使用PageProducer生成响应页面的。其页面内容生成过程和请求响应过程如下:
.........._____________________________________________________________
..........|................|.. Web Application Module.................|
Server<---|Web Response<---|Page Producer<==>Script Engine<==> Adapter|
..........|................|..↑......................................|
..........|................|.Template.................................|
..........|..Web Snap application.....................................|
..........______________________________________________________________
..........|................|.. Web Application Module..................|
Server<---|Web Response<---|Page Dispatcher<------Action Response<----.|
......--->|Web Request.--->|AdapterDisp->ActionRequest->AdapterAction↑|
..........|................|...........................................|
..........|..Web Snap application......................................|
*注:Page Dispatcher会自动问适当的Web Page Module要内容。
.........._________________________________________________
..........|................|.. Web Application Module.....|
Server<---|Web Response<---|<------Adapter Image Field....|
......--->|Web Request.--->|AdapterDisp->Image Request.↑.|
..........|................|..............................|
..........|..Web Snap application.........................|
使用WebSnap基本过程:
1、File | New | Other | WebSnap | WebSnap Application
2、设置Module选项,
如果是Page Module,那么可以设置Page Options,选择Producer(AdapterPageProducer只支持JScript,DataSetPageProducer可以为DataSet生成HTML代码,InetXPageProducer支持InterExpress内容生成控件,PageProducer支持HTML模板和自定义tag处理)。
设置WebSnap Application Module Components:
Application Adapter:包含应用程序信息,象标题什么的。
End User Adapter:用户信息,象名字、访问权限和是否已登录。
Page Dispatcher:根据HTTP请求的pathinfo选择对应的page module提供响应页内容。
Adapter Dispatcher:通过调用adapter的action及field componets,自动处理HTML form提交和动态图象请求。
Dispatch Actions:允许定义一组action item根据pathinfo和方法类型处理请求。
Locate File Service:提供Web应用运行时,对加载模板文件或脚本包含文件的控制。
Sessions Service:显然是用来短期保存用户信息提供会话支持的。
User List Service:保持对已认证用户及其口令、存取权限的跟踪。
各项默认值均为Delphi6所提供的类型,也可以自行开发需要的Component或使用第三方控件。
Web modules共有4种:TWebAppPageModule、TWebAppDataModule、TWebPageModule、TWebDataModule;上面罗索了一堆都是针对PageModule的,TWebPageModule提供页面的内容,而TWebDataModule则扮演整个应用共享使用的构件的容器。