datasnap http用法注意事项
2015-11-23 01:07
441 查看
DataSnap Http 用法注意事项
(2010-12-10 21:45:30)
转载▼
2010-04-28 15:37
(2010-12-10 21:45:30)
转载▼
标签:delphiit | 分类: 软件设计 |
DataSnap 我们常用的是Tcp/Ip协义,但它也支持http. 在局域网中我们可以用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就是对照DSTCPServerTransp 4000 ort的端口。 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单元就可以了。 |
相关文章推荐
- 几种基于HTTP协议的RPC性能比较
- TCP之close_wait
- iOS开放中HTTP请求安全问题的解决方法
- 基于深度卷积神经网络的多视点人脸检测
- Nmap / NetCat(nc) / 网络安全工具
- [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
- TCPIP、Http、Socket的区别
- iOS 将NSArray、NSDictionary转换为JSON格式进行网络传输
- TCP协议格式
- http 头信息详解(转)
- Socket套接字/TCP
- 图解TCP/IP读书笔记(一)
- VRRP详解
- 判断Http请求由手机端发起,还是有电脑端发起
- 初识Winsock之美
- HTTP协议状态码详解(HTTP Status Code)(转)
- HTTP头信息详解2-转
- 【android-async-http】官方文档学习笔记
- [连载]《C#通讯(串口和网络)框架的设计与实现》-2.框架的总体设计
- 【PHP】$_POST, $HTTP_RAW_POST_DATA, and php://input