DataSnap 2009是从Delphi2009开始提供的新的DataSnap,对原有DataSnap大副改进,虽然保留了原来的基于COM的方式,但默认是使用新的不基于COM的方式,这使得它成为轻量级的、灵活的多层应用技术。这也为未来的跨平台提供了基础。
Delphi2010继续新的DataSnap,应该叫DataSnap 2009呢?仍是DataSnap 2010?命名不太明确。我更但愿它叫DataSnap2.0。
1、新的DataSnap的第一种用法是服务器方法调用(server methods invoke),这个有向导,使用起来很简单。
工具条上点击New Items:
服务方法类的继承,咱们就选默认的TDSServerModule,由于这个封装得最全面,后面一个比一个简单还须要咱们写多余的代码。
ServerContainerUnit 容器内已经给咱们放置好了服务器端的控件,DSServerClass1.LifeCycle属性有3个选项:Session、Server、 Invocation,咱们选默认的Session,这个使得咱们的ServerMethods类的实例的生命周期是一个链接会话。而Server是只产 生一个实例服务于整个Server的运行期,咱们的ServerMethods类须要对多个线程同时访问是安全的,也就是不能由于多线程访问咱们的类而导 致出错。Invocation是每次调用都产生一个实例,虽然节省内存,但显然在大访问量的状况下效率低下。
若是咱们创建Service服务程序,在这个单元内还自动生成了控制DataSnap启停的语句。
ServerMethodsUnit单元内已经为咱们写好了一个EchoString方法,咱们依样画葫芦就好了。
运行这个服务器,点击菜单Run,Run Without Debugging。
创建客户端,生成一个普通窗体程序,放置一个TSQLConnection控件,设置它的Driver为Datasnap,咱们就能够勾选Connected属性链接服务器了。
在TSQLConnection控件上点击右键,选择Generate DataSnap client classes,Delphi自动生成代理类,经过调用代理对象,咱们就能够像调用本地方法同样调用服务器上的方法。
2、新的DataSnap的第二种用法是IAppServer接口的应用,这可使新的DataSnap能够像原来的旧的DataSnap同样,直接用数据控件链接远程服务器,读取、编辑、更新数据。
⒈用DataSnap向导生成服务器框架程序,在ServerMethodsUnit单元的数据模块窗体上,放上TSQLConnection、TSQLQuery、TDataSetProvide。
设置好它们的关联,另外DataSetProvider1的Options要选中poAllowCommandText,以容许远程客户端发送命令。
咱们能够看到,这些和旧的DataSnap的用法上基本上是同样的。
2.设置客户端。
新创建一个VCL Forms程序,在窗体上放置TSQLConnection并设置链接刚才的服务器。放置一个TDSProviderConnection,这个控件具备 和服务器上的TDataSetProvider对接的功能,设置它的SQLConnection属性为刚才放置的SQLConnection1。另外要设 置它的ServerClassName属性,这个比较关键,必须设置,不然打开数据集时会出现:Exception class EOleException with message 'Remote error: .AS_GetRecords method not found in the server method list'. 。这个属性在Object Inspector内没有下拉列表框,即便已经链接到服务器也没有,必须手工输入,这个或许是须要改进的地方。这里咱们输入向导自动生成的服务器的类 名:TServerMethods2。
而后放置TClientDataSet控件,设置它的RemoteServer属性为刚才放置的 DSProviderConnection1,若是已经链接服务器了,就能够在ProviderName属性下拉框,选择 DataSetProvider1,这个DataSetProvider1就是服务器那一端的那个DataSetProvider1。
之后再放置TDataSource、TDBGrid、TDBNavigator,并关联,咱们就轻车熟路了。
放置一个按钮,命名为btnSave,双击写事件:ClientDataSet1.ApplyUpdates(0);。
如图:
这 里我链接的BlackFish数据库Employee,数据库文件位于C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL\employee.jds。链接的Country 表。
咱们能够运行客户端,修改数据,点导航按钮的保存后,再点击btnSave保存到服务器数据库。而后咱们用Data Explorer查看数据库表,确实已经被修改了。数据库