资源描述:
《delphi2010datasnap白皮书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Delphi2010DataSnap白皮书12010-04-0711:25在这个白页中我们将讲解Delphi2010DataSnap架构新的特性和功能.1.DATASNAP历史作为MIDAS起始于Delphi3,Delphi4是MIDASII,Delphi5中是MIDASIII,而后基于COM远程数据模块方式使用TCP/IP,HTTP,(D)COM构建出强大的通讯能力.从Delphi6开始改名为DataSnap,直到D2007这个框架一直在使用.D2009重新架构了DataSnap—移除COM依赖,使用TCP/IP以更轻量级的方式生成远程服务对象和客户端连接能力.同时提供
2、了与DelphiPrism2009开发的.NET程序通讯的功能.Delphi2010中构建于D2009架构之上,并对此架构做了进一步的扩展,包括使用两个向导来创建新的部署目标(VCL窗体,Window服务,控制台及面向Web的ISAPI,CGI或WebAppDebugger).HTTP(S)传输协议,HTTP验证,客户端回调函数,REST和JSON的支持,及使用过滤器来支持压缩和解压缩.1.1DATASNAP范例数据位置本白页中我建议您使用Demo和范例来学习.虽然Delphi支持很多数据库系统,使用DBX4,ADOdbGo,或其他数据存取技术,为了演示方便我这里使用DB
3、X4来操作BlackfishSQL的employee.jds数据库.见[C:DocumentsandSettingsAllUsersDocumentsRADStudio7.0DemosdatabasedatabasesBlackfishSQLemployee.jds].在截图中可以看到我使用的是WindowsVista或Win7操作系统,使用WindowsServer2008Web编辑器来部署DataSnapISAPI服务.2.DATASNAP目标:如何获取数据DataSnap2010支持三种不同的Windows方式:VCL窗体,Windows服务和控
4、制台应用程序.本节中我们将讨论他们的好处,不同和每种方式最适合在什么情况下使用.下面会创建一个DataSnap服务端和客户端,我们将讲解TDSServer,TDSServerClass,TDSTCPServerTransport,TDSHTTPService,TDSHTTPWebDispatcher和TDSHTTPServiceAuthenticationManager组件,以及自定义的服务方法和TDSServerModule类.将讨论不同的传输协议(TCP,HTTP)的好处及传输效率.并讨论DataSnap服务对象的不同生命期选项(Server,Session,Invo
5、cation),及他们的效率和使用的建议.最后,讨论部署.2.1.DATASNAP服务端范例在ObjectRepository中有两个不同的DataSnap服务向导:一个是生成基于Windows的Datasnap服务项目,一个是生成基于WebBroker的DataSnap服务项目(需要部署到IIS或Apache).我们将会演示.启动了Delphi2010,点击File.New.Other,你会在ObjectRepository中看到DataSnap服务向导中显示的三个图标:DataSnapServer,DataSnapWebBrokerServer,和ServerModu
6、le.双击第一个(后面的两个在下面的小结中讲解),弹出如下对话框:界面中第一部分是控制项目类型的.默认可以生成可视化的带有主窗体的VCL窗体应用程序.第二个选项是创建控制台应用程序,生成一个控制台窗口—可以用来输出请求应答信息(用Writeln语句输出服务应用程序正在做什么).这两种方式都是为了做范例或最初部署,很少用于最终部署.由于DataSnap架构不再基于COM,客户端将不能使服务端启动.因此为了响应客户端的请求,DataSnap服务端应该一直在运行.如果你希望应用7X24小时全天候运行,DataSnap服务端必须同时也在运行中.对应VCL窗体或控制台应用程序,需要
7、一个账户登录到Windows中后才能启动DataSnap服务,背离了这种要求.第三者选择在这时最适合:一个Windows服务应用程序,安装后配置成为自动启动,当计算机启动后将自动运行(不需要账户登录).服务应用程序不会弹出界面,很难调试Bug.然而,为了整合这三种的优势,我将用几分钟创建一个项目组,包括VCL窗体应用程序的DataSnap服务,控制台DataSnap服务,及Windows服务Datasnap服务,都共享同一个自定义的服务方法,这样就可以开发一个Datasnap服务应用程序,在需要的时候编译出三个不同类型的部署方