关于datasnap的服务器方法的调用问题

llmiss 2015-07-09 10:53:33
datasnap默认提供了一个继承于TDSServerModule的TServerMethods1类,供客户端调用这个类提供的方法,想问下如果我要新增其他类,且不放在ServerMethodsUnit1这个PAS下该怎么弄。我试过新增一个pas,然后写了一个继承于TDSServerModule的类,通过客户端的TSQLCONNECTION,在客户端也能看到这个类提供的方法,就是一旦调用,就会提示“remote error: resource 类名not found”。请大神指教
...全文
619 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
逝水年华zfx 2017-07-14
  • 打赏
  • 举报
回复
新增server module,TServerContainer1.DSServerClass1GetClass( DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);这个事件怎么写代码,是修改这个地方的代码吗?
llmiss 2015-07-13
  • 打赏
  • 举报
回复
已解决,服务器端新增server module
llmiss 2015-07-11
  • 打赏
  • 举报
回复
引用 5 楼 lyhoo163的回复:
楼主可能没有弄清DataSnap机制。 1、通过ClientDataSet,从服务器上读取数据;这是主要功能。 2、定义方法,在服务器中对数据库进行操作,返回需要的数据。 3、上会文件,或下载文件。 主要的操作是通过SQL语句结合Delphi的数据循环,进行操作。 你的10个不同的业务,人员管理,包含了人员分类,人员检索,人员排查,在客户端的人员管理界面上通过SQL语句 调用 只要是对数据库的表,什么操作都是可以的。或者服务器后台操作,返回结果。
如果业务仅仅是查询数据库,那我客户端就直接拖几个控件,cientdataset,datasource,dbgrid等,执行什么applyupdate和execute命令就行了,但是如果实际业务有一定的复杂度,比如说要先经过一些逻辑判断,或者非sql能处理的业务,再决定如何操作数据库和返回结果,并且这一系列的流程都在服务器端处理,客户端仅仅是点击一个按钮,调用一个方法并传参数,那么感觉简单的用控件就不能达到这个效果。所以我是想通过新增服务器的类来实现,业务类下面的方法完成这一系列的处理,并将结果以json的方式传回客户端
缘中人 2015-07-11
  • 打赏
  • 举报
回复
楼主的要求,用java实现比较合适
llmiss 2015-07-10
  • 打赏
  • 举报
回复
引用 2 楼 ksrsoft 的回复:
在ServerContainer1单元的DSServerClass1GetClass事件里 PersistentClass := ServerMethodsUnit1.TServerMethods1; 这个绑定了默认的ServerMethodsUnit1。 所以你也不能随便新增类了。 还是在这里边写代码吧
这个可以通过新增或者动态生成dsserverclass和指定ongetclass事件来实现
llmiss 2015-07-10
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
datasnap默认使用一个TDSServerModule,它仅是动态产生连接数据库的模块。 楼主无需,再继承一个。如果有其它类,你可以定在另一个单元中,使用该类的单元引用它即可。
是这样的,比如我有10个不同的业务,假设每个业务对应一个类,那么我肯定希望服务器新增10个pas来分别存放这10个类,而不是一股脑全部放在servermethodunit里。但是这10个类需要被客户端调用,而不是被servermethodunit类调用,比如其中一个业务类叫人员管理,包含了人员分类,人员检索,人员排查三个方法,在客户端的人员管理界面上可以直接调用这三个方法完成业务,这个能实现么?
缘中人 2015-07-10
  • 打赏
  • 举报
回复
在ServerContainer1单元的DSServerClass1GetClass事件里 PersistentClass := ServerMethodsUnit1.TServerMethods1; 这个绑定了默认的ServerMethodsUnit1。 所以你也不能随便新增类了。 还是在这里边写代码吧
sxper 2015-07-10
  • 打赏
  • 举报
回复
方法要public,connectiong要先gerarae一下
lyhoo163 2015-07-10
  • 打赏
  • 举报
回复
datasnap默认使用一个TDSServerModule,它仅是动态产生连接数据库的模块。 楼主无需,再继承一个。如果有其它类,你可以定在另一个单元中,使用该类的单元引用它即可。
lyhoo163 2015-07-10
  • 打赏
  • 举报
回复
楼主可能没有弄清DataSnap机制。 1、通过ClientDataSet,从服务器上读取数据;这是主要功能。 2、定义方法,在服务器中对数据库进行操作,返回需要的数据。 3、上会文件,或下载文件。 主要的操作是通过SQL语句结合Delphi的数据循环,进行操作。 你的10个不同的业务,人员管理,包含了人员分类,人员检索,人员排查,在客户端的人员管理界面上通过SQL语句 调用 只要是对数据库的表,什么操作都是可以的。或者服务器后台操作,返回结果。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧