DataSnap 2009 系列之一 (系统连接篇)

转载 2011年01月11日 15:39:00

(连接篇)

Delphi 的MIDAS出来了这么多年终于有改进的版本了,COM-FREE的DataSnap 2009真是清爽了很多,DataSnap 2009 除了不支持回调和Intercept组件以外 其它的该有的都有了 而且还有很多强大的特性;

  第一篇就先写点DataSnap 2009连接方面可能要用到的东西,以后再继续写写关于生命周期的管理 对象池的应用 以及远程管理 远程方法调用等方面的东西吧。

  首先 建立个DataSnap 2009的服务器工程,一共用到三个组件:

    DSServer   服务配置组件 用于绑定其它的组件;

  DSServerClass 可以看作是一个类的工厂 用于导出需要远程调用的服务端模块;

  DSTCPServerTransport 传输组件 这里使用的是indy的tcpserver;

   将DSServerClass和DSTCPServerTransport 的Server设置成DSServer就可以了,客户端连接和断开连接时会触发DSServer的两个事件OnConnect和OnDisConnect,参数为 TDSConnectEventObject。

  我们看下该类的定义

    我们可以看到其中包含了两个属性ConnectProperties ChannelInfo:

    ConnectProperties 包含了客户端连接所传递的参数 Params 也就是一个TStrings的内容;

    ChannelInfo 里面有个很重的属性就是它的ID 其实是TIdTCPConnection对象的ID 所以我们可以直接强制转换成TIdTCPConnection;

  然后建立个DataSnap 2009的客户端工程,由于使用的DbExpress框架客户端连接用的是TSQLConnection组件,只要把Driver设置成Datasnap即可。连接的服务器地址通过HostName和Port来进行设定,下面我们就实现个简单的DEMO 客户端通过用户名和密码连接服务端 如果密码不争取服务端则断开连接。

  客户端主要函数

服务端主要函数

 

注意:OnConnect事件中还可以使用另外一种方式拒绝客户端连接,在代码中抛出个异常即可 在客户端会捕捉到一个TDBXError的异常 显示'Remote error ' 加上异常显示的消息。 

  效果图如下:

Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”

当我们在客户端用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”!! 问题原因:服务器端对提供服务的控件所属单元选择错...
  • sunylat
  • sunylat
  • 2015年06月11日 10:56
  • 5604

DataSnap 2009 系列

(连接篇)  Delphi 的MIDAS出来了这么多年终于有改进的版本了,COM-FREE的DataSnap 2009真是清爽了很多,DataSnap 2009 除了不支持回调和Intercept组件...
  • aroc_lo
  • aroc_lo
  • 2010年02月28日 15:53
  • 2158

HDU 1465 不容易系列之一【错排】

有个网名叫做8006的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟! 现在的问题是:请大家...
  • u012469987
  • u012469987
  • 2014年07月24日 15:23
  • 638

DataSnap 2009 系列之二 (方法篇)

DataSnap 2009 系列之二 (方法篇)
  • shuaihj
  • shuaihj
  • 2011年01月11日 15:40
  • 2177

DataSnap 2009 系列之三 (生命周期篇)

DataSnap 2009 系列之三 (生命周期篇)
  • shuaihj
  • shuaihj
  • 2011年01月11日 15:41
  • 2313

HDU1465 不容易系列之一

原题链接 错排公式: 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. ...
  • u012846486
  • u012846486
  • 2014年03月15日 18:17
  • 686

杭电OJ——1465 不容易系列之一

不容易系列之一 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是...
  • lishuhuakai
  • lishuhuakai
  • 2013年01月22日 13:03
  • 3164

杭电 HDU ACM 1465 不容易系列之一

不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...
  • lsgqjh
  • lsgqjh
  • 2015年04月06日 01:30
  • 921

《一刻钟优化MySQL》ISOPHP 2017年会分享内容

上个周末天朝帝都异常的冷,自从我回到胡建后,就把厚衣服厚鞋子都扔了,然后就悲催了,一出门脚就可冻惨了~即使这么冷,也没能挡住众多开发者来参加活动,我猜其实是因为本次活动上有好吃的(餐点很赞),又有好玩...
  • n88Lpo
  • n88Lpo
  • 2017年12月18日 00:00
  • 862

DataSnap中连接池的应用

当开发人员开始创建Delphi的DataSnap应用时很常见的数据库连接定义方式是每个数据模块建立一个连接。这样做将产生大量的数据库连接,并产生很多问题。从Delphi XE开始,EMB提供了Sess...
  • xieyunc
  • xieyunc
  • 2015年09月25日 11:24
  • 2045
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataSnap 2009 系列之一 (系统连接篇)
举报原因:
原因补充:

(最多只允许输入30个字)