DataSnap初步二
转:https://blog.csdn.net/a00553344/article/details/51670486
1. 一个典型的DataSnap服务器至少需要三个控件:
TDSServer: DataSnap的逻辑核心控件,控制服务器的运行。
TDSServerClass: DataSnap服务端服务导出控件,通过OnGetClass事件来导出服务端的类及方法供客户端的远程调用。
作为服务端导出给客户端远程调用的类需要满足以下两个条件:
从TComponent类派生。
需要有{$METHODINFOON}指令。
一个通讯控件:采用TCP的话,选用TDSTCPServerTransport控件,采用HTTP的话,选用IDSHTTPService控件。
2. 客户端利用一个TSQLConnection控件,Driver设置为Datasnap后,点右键就可以从服务端导入可以远程调用的类及方法。
这一篇详细描述如何利用delphi提供的向导自动创建一个DataSnap服务器。
File > New > Other > DelphiProjects [or C++Builder Projects] > DataSnap Server > DataSnap Server
1. 三种选择:
Forms Application : 标准的Forms类型V应用程序。
Console Application: 工作台应用程序。
Service Application: 服务类型的应用程序。
这里选择第一种Forms Application
2. 二种选择:
VCL application : 传统的VCL框架
FireMonkey application: 跨平台的FireMonkey框架
这里选择VCL application,因为DataSnap服务端通常运行在Windows服务器上,所以选择VCL框架即可。
3. 这里包括通讯协议、远程调用是否需要授权。。。。等等,这里先按默认的设置。
Protocols:服务端和客户端之间的通讯协议。这里可以多选,表示服务端同时支持多种通讯协议。
Authentication:授权或验证。如果勾选,表示客户端连接到服务端的时候需要身份验证。带有Authentication的服务端会增加一个验证控件TDSAuthenticationManager。
Server Methods Class:服务器方法类,由服务端导出给客户端远程调用。通常服务端要实现的供客户端远程调用的函数及方法都会放在这个类里面,再通过TDSServerClass的OnGetClass事件导出给客户端远程调用。
Filters:在客户端和服务端之间过滤(加密或是压缩)数据。勾选后,通常会在TDSTCPServerTransport和IDSHTTPService控件的Filters属性中增加加密和压缩的项。注意除了设置服务端TDSTCPServerTransport和IDSHTTPService控件Filters属性外,也需要在客户端指定一个相应的过滤器。
JavaScript Files:在生成DataSnap REST Server的时候,生成JavaScript接口文件,供客户端调用使用。
Mobile Connectors:提供移动端调用服务端导出类的一些接口文件。
4. 选择TCP的通讯端口,按默认设置。
5. 用于远程调用的服务器端函数方法所在类的实现方式(继承方式,从不同的祖先类继承,具备了不同的功能)。
TComponnet:从TComponent类继承,所有导出给客户端使用的功能都需要进一步具体实现,因为TComponent类几乎不提供什么功能。
TDataMoudle: 从TDataMoudle类继承,可以放入非可视化控件,比如数据库访问控件。这样,服务端就可以直接利用这些控件访问数据库服务器。但是,访问数据库的连接,数据和数据集不同直接导出给客户端使用,需要服务端进一步实行将数据传输给客户端使用。
TDSServerModule: 从TDSServerModule类继承,它既包含了TDataModule的功能,又可以直接将与数据库服务器的连接和数据集直接暴露给客户端调用,客户端可以非常方便的通过DataSnap服务端直接访问数据库服务器。这个方式广泛应用于客户端是移动端的应用中,因为访问各种数据库需要数据库客户端的驱动或是函数,移动端通常都没有或是安装不了这些数据库客户端驱动,所以将这些数据库客户端驱动都安装到DataSnap服务端上去,由DataSnap服务端来实现数据的访问和存取,而客户端则直接使用DataSnap服务端导出的数据库连接和数据集来访问和存取数据库,同时客户端并不需要安转各种数据库的客户端驱动。
6. 选择Finish,这样一个DataSnapServer就建立了。
————————————————
版权声明:本文为CSDN博主「a00553344」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a00553344/article/details/51670486
DataSnap初步二的更多相关文章
- node初步二 小爬虫
小爬拉勾网 获取想要的信息: 一.分三步 1 获得数据 2 处理数据 3展示数据 二 .代码 :创建文件reptile.js;写入 var http=require('http'); var chee ...
- 2016 - 1 - 25 CSS初步 (二)
1.The customising link We can change the link's style when we move our pointer on the link like that ...
- C语言实现通用链表初步(二)
接着上次的内容,我们继续! 还是无头单向非循环链表.假如要删除某个节点,如何实现? //删除成功返回0,失败返回-1 int slist_del(struct node_info *node, str ...
- ACT开发初步(二)——XML
由于pc无法发文,先挖坑,慢慢填
- 数学软件实训1-MATLAB程序设计及应用初步
数学软件实训任务一 一 题目:MATLAB程序设计及应用初步 二 目的:掌握MATLAB程序设计的基本方法,会利用MATLAB程序设计思想编程处理一些简单问题. 三 要求: 1 掌握控制流的基本语法结 ...
- datasnap的初步
datasnap的初步-回调函数 服务器端 TServerMethods1 =class(TComponent) private { Private declarations } public { P ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- datasnap的初步 生命期LifeCycle
datasnap的初步 生命期LifeCycle TDSServerClass有一个属性LifeCycle,这个属性有三个值,很好理解1.Session,这是默认值.就是一个连接,一个Sessio ...
- Delphi 6 Web Services初步评估之二(转)
Delphi 6 Web Services初步评估之二(转) ★ 测试环境:CPU:PIII 550内存: 256MBOS: Windows2000 Server + SP2Web Server: ...
随机推荐
- 用Python给你的代码上个进度条吧 | 【代码也要面子的】
微信公众号:AI算法与图像处理如果你觉得对你有帮助,欢迎关注.转发以及点赞哦-( ̄▽ ̄-)~ 前言 最近在跑一些代码的时候,很烦...因为有时候不知道这段程序什么时候能执行完,现在执行哪里了,如果报错 ...
- 【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结
1,gstreamer开发手册,gstreamer官网(这些都不用说了吧) 2,gst-launch的用法,这也不用说了吧.(白菜,鸡蛋,西红柿,砖头,鼠标--..) 3,http://blog.ch ...
- 【编程开发】opencv实现对Mat中某一列或某一行的元素进行normalization
[编程开发]opencv实现对Mat中某一列或某一行的元素进行normalization 标签: [编程开发] [机器学习] 声明:引用请注明出处http://blog.csdn.net/lg1259 ...
- 41.进程池--Pool
进程池 方便创建,管理进程,单独进程的Process创建,需要手动开启,维护任务函数,以及释放回收 进程池不需要这么麻烦,进程提前创建好,未来在使用的时候,可以直接给与任务函数 某个进程池中的任务结束 ...
- Java 之前总结
写Java程序 1使用记事本,编写代码 2命名为文件里的类名称相一致 “.java” 3编译编译器创建class文件 编译 打开命令行窗口,进入Java文件所在的目录,执行命令:javac Welco ...
- Kubernetes---资源控制器之ReplicationController、ReplicaSet和Deployment
1.ReplicationController和ReplicaSet介绍 RC(ReplicationController)主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数.即如果有容 ...
- cdoj 574 High-level ancients dfs序+线段树 每个点所加权值不同
High-level ancients Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/s ...
- php中连接tcp服务的三种方式
首先需要现有一个 tcp 服务,我们使用 php中的 socket 系列函数实现 <?php //创建socket套接字 $socket = socket_create(AF_INET, SOC ...
- Python初学者常见错误详解
Python初学者常见错误详解 0.忘记写冒号 在 if.elif.else.for.while.class.def 语句后面忘记添加 “:” if spam == 42 print('Hello ...
- 第九章 ZYNQ-MIZ701 片上ADC的使用
9.0难度系数★☆☆☆☆☆☆ 9.1实验概述 这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC ...