DataSnap Http 用法注意事项
来源:互联网 发布:淘宝网耐克运动鞋 编辑:程序博客网 时间:2024/04/24 23:52
在局域网中我们可以用TCP/IP,因为人数有限,保持长连接也无所谓。但如果在广域网中则最好用http协义,就像web一样,客户端有需求,则服务端就响应。 因为广域网中你不知道经过多少防火墙和路由器,所以用tcp不算太好,也容易掉线,即使用心跳包也会出现连接死掉的情况。 而http是一次请求后就会断开,也不会占用服务端过多 的资源,但在用http时应注意以下几点:
我们就要用到DSHTTPService这个组件,它是负责用http方式与客户端通讯。它的属性主要有图上显示的那些。
1. Active ,我们在设计时设为True,它就处于侦听阶段,此时你运行时会提示“端口被占用”,所以在设计后保存时不要设为true,一般在TServerContainer1.DataModuleCreate的事件中用代码方式设置为ture就可以了。
2. AuthenticationManager,是用来管理验证http的组件。(图中没有加上这个组件)
3. DSHostName和DSPort是设置Server的。如果没有连接TDSServer组件就设置这两个属性,否则是用dsserver设置的参数。如果我们连接了TDSServer,则这两个属性是无效的。DSPort就是对照DSTCPServerTransport的端口。
4.Filters,是设置一些容器,默认的是压缩容器。
5.HttpPort 是用于侦听并和客户端联系的端口。
6.RestContext, 是根据rest的上下文,用rest服务的方式调用 DataSnap服务的。
以上是http组件的设置。
如果我们服务端是用ado、BDE方式连接数据库并且以http方式通讯,则一定要初始化Com,否则在客户端调用时会提示:Remote Error:尚未调用 Coinitialize.而DBX方式就不用初始化了。
Com的初始化不是放在一个单元文件的最后面,这样是没用的。因为ado是多线程的,而DataSnap用的通讯基础是indy控件,所以在单元文件中初始化Com是没必要的,因为主线程的Ado是会自动初始化Com.而DataSanap是多线程的,这个子线程就不会自动初始化Com。所以把初始化放在
以下两个事件中(记着引用ActiveX单元)
procedure TServerContainer1.DSServerClass1CreateInstance(
DSCreateInstanceEventObject: TDSCreateInstanceEventObject);
begin
CoInitialize(nil);
end;
procedure TServerContainer1.DSServerClass1DestroyInstance(
DSDestroyInstanceEventObject: TDSDestroyInstanceEventObject);
begin
CoUninitialize
end;
服务端设置好后,就要设置客户端。放上一个sqlconnection连接服务端此时就要设置CommunicationProtocol为http,如果为空或TCP/IP就表示用TCP/IP协义。
port应设置和服务端的一样。
URLPath是用于如iis等服务的地址,这个没测试。
我们在运行时会弹出一个错误只要加上DSHTTPLayer单元就可以了。
建义在局域网中用TCP/IP连接,而在广域网中用http连接。
- DataSnap Http 用法注意事项
- datasnap http用法注意事项
- DataSnap
- Http协议访问DataSnap Rest 服务器
- Http协议访问DataSnap Rest 服务器 - 封三郎
- Android开发注意事项 HTTP
- AngulaJS $http post 注意事项
- http 协议注意事项
- typedef用法注意事项
- ExecuteNonQuery 的用法注意事项
- sprintf 用法 注意事项
- assert() 用法及注意事项
- java API 用法注意事项
- NSString 用法注意事项
- sprintf 用法 注意事项
- php heredoc用法注意事项
- fflush用法的注意事项
- erase用法和注意事项
- Android 通过 intent传值获得null
- Android 自定义View (二) 圆环交替 等待效果
- •硕士论文查重原理与快速通过的七大方法(转载)
- OpenWrt安装tcpdump抓包
- Android中调用webservice
- DataSnap Http 用法注意事项
- js中的时间与毫秒数互相转换
- XMPPFramework 简介
- Unity读取PC端文件
- Spring 配置文件XML中<beans>中属性概述
- UVa 10160 Servicing stations解题报告
- 实战:sqlserver 2008 扩展事件-XML转换为标准的table格式
- 如何自动跳过12306的「查询失败」
- 友盟(二)快速初步集成并测试