上一页 1 ··· 142 143 144 145 146 147 148 149 150 ··· 197 下一页
摘要: 最近在写一个基于XE2 DATASNAP的中间层,以前也写过基于DCOM的MIDAS中间层,看到网上一些同仁对中间层的提问。我摘录俩个典型的提问,如下:第一个提问:Midas三层程序,如何支持大量用户同时请求连接?系统结构: TClientDataSet -> TSocketServer -> scktsrvr.exe -> RemoteDataModule -> ADO 要求:允许500-1000个客户端同时“请求”连接,服务器和客户端均不能死掉。现状:在现有的程序中,只要同时“请求”连接的客户端达到一个较大的数量,例如80或100,应用服务器就停止响应了。客户端尝试 阅读全文
posted @ 2012-02-25 09:30 delphi中间件 阅读(5944) 评论(1) 推荐(1) 编辑
摘要: 获得客户端的信息 记得datasnap 2009时,要得到客户端信息,非官方的方法,要去搞什么DSConnectEventObject.ChannelInfo.Id,弄成 TIdTCPConnection。xe2就好得多了。仍然是在DSServer的OnConnect 事件里,DSConnectEventObject.ChannelInfo.ClientInfo就是客户端的信息。能得到啥? 看代码 TDBXClientInfo = recordIpAddress: String;ClientPort: String;Protocol: String;AppName: String;end;也就 阅读全文
posted @ 2012-02-23 22:50 delphi中间件 阅读(1359) 评论(0) 推荐(1) 编辑
摘要: 服务器端如何防止DDOS 前面说到DSServer的OnConnect是socket已经完全搭好client都调用connect的服务器方法了才触发的,如果我们到这里才来想起拒绝不合法的ip连接,已经挺晚了:socket已经连接好了,都已经创建线程开始通讯了。怎么做才能在最开始的socket握手里,就让捣蛋鬼死在萌芽中呢。要解决这个问题,当然得从TDSTCPServerTransport下手,因为ServerTransport才是真正负责通讯的,可以在它的OnConnect事件下手procedure TServerContainer1.DSTCPServerTransport1Connect( 阅读全文
posted @ 2012-02-23 22:49 delphi中间件 阅读(1360) 评论(0) 推荐(1) 编辑
摘要: TDSAuthenticationManager的用法 xe开始有了TDSAuthenticationManager,这个主要用来做用户认证,用法也很简单 服务器端 1.TDSAuthenticationManager有两个主要的事件 在这个事件里面,看看检测连上来的用户名,密码是否合法,valid 阅读全文
posted @ 2012-02-23 22:47 delphi中间件 阅读(3141) 评论(0) 推荐(1) 编辑
摘要: 要深刻理解TclientDataSet的两个重要属性:Data、Delta要深刻理解并区分开Tfield的4个重要属性:Value、OldValue、CurValue、NewValueTField的事件触发顺序: 显示时触发:OnGetText 编辑时触发:OnSetText->OnValidate->OnChange (1) OnGetText事件是访问DisplayText或Text时触发。如果数据库中存储的值和要显示给用户看的值不一样,如数据库中存储的是bool型的值,要显示给用户“真”或“假”,可以在这个事件里进行处理。 (2) OnSetText事件是设置字段的值时触发。 阅读全文
posted @ 2012-02-21 20:24 delphi中间件 阅读(2167) 评论(0) 推荐(0) 编辑
摘要: TField.ProviderFlags,这对于组 SQL 来说至关重要!ProviderFlags 是 TProviderFlag 的集合,我们来看看 ProviderFlags 可以包含哪些元素 元素名称 说明 备注 pfInUpdate INSERT / UPDATE 要包含此字段 实际上会不会包含,要看字段值有没有变动而定 pfInWhere UPDATE / DELETE 时要加入 WHERE 实际上会不会加入 WHERE,要看字段值有没有变动而定 pfInKey UPDATE / DELETE 时要加入 WHERE,以及 DataSet 内数据的重复检查 一定会加入WHERE p. 阅读全文
posted @ 2012-02-20 23:10 delphi中间件 阅读(1900) 评论(0) 推荐(0) 编辑
摘要: 数据集对象池unit ServerMethodsUnit1;interfaceuses SysUtils, Classes, DSServer, DB, Generics.Collections, DSService, Provider, ADODB;type TServerMethods1 = class(TDSServerModule) procedure DSServerModuleCreate(Sender: TObject); private { Private declarations } ListofQuery : TDictionary<Integer,Tadoquery 阅读全文
posted @ 2012-02-20 23:02 delphi中间件 阅读(1736) 评论(1) 推荐(1) 编辑
摘要: TDSServerClass有一个属性LifeCycle,这个属性有三个值,很好理解1.Session,这是默认值。说明:这是默认属性,也是delphi推荐设置。Session会为每个来自客户端的链接,建立一个线程来实例化。实例化是什么概念呢?就是这个线程把所有你将要用到的类、函数等等都建立好了,等待你客户端直接使用。这个线程和实例化并不释放,直到客户端中断连接。如果有300个客户端,那么你的服务器将会有300线程和实例,对服务器硬件和内存是个考验。适用环境:这个设置是线程安全的!客户端数量少,每台服务器不超过连接数量: 200 x CPU个数 x (每个CPU核数x0.7) (这是经验值,稳 阅读全文
posted @ 2012-02-20 20:48 delphi中间件 阅读(1660) 评论(2) 推荐(1) 编辑
摘要: 可作为参数的类型TDBXWideStringValueTDBXAnsiStringValueTDBXInt16ValueTDBXInt32ValueTDBXInt64ValueTDBXSingleValueTDBXDoubleValueTDBXBcdValueTDBXTimeValueTDBXDateValueTDBXTimeStampValueTDBXBooleanValueTDBXReaderValueTDBXStreamValue可作为var和out的参数的类型booleanSmallIntIntegerInt64SingleDoubleAnsiStringStringTDBXTimeT 阅读全文
posted @ 2012-02-20 20:48 delphi中间件 阅读(1507) 评论(2) 推荐(0) 编辑
摘要: 一个插件就是一个DLL或者BPL工程,只有经过注册的插件和注册的插件中的模块,主控程序才能识别并加载。1. 注册插件的数据表结构:如上图所示需要在数据表中登记插件的名称(比如PLUGIN1.DLL)和插件的说明(比如基本资料)。2. 注册插件中的模块的数据表结构:如上图所示需要在数据表中登记模块的编号,所属的父模块编号,模块的名称,所属插件的名称,模块的类名,说明 阅读全文
posted @ 2012-02-19 21:00 delphi中间件 阅读(1140) 评论(0) 推荐(0) 编辑
上一页 1 ··· 142 143 144 145 146 147 148 149 150 ··· 197 下一页