DataSnap三层测试

TDSServerClass的LifeCycle设置为Session的情况下,意味着每个请求会启动一个线程服务,而且TDSServerClass的DSServerClass1GetClass中指向的业务处理类也是线程安全的,每个请求都会new一个新的业务处理类来服务当前线程;

测试如下:

type
{$METHODINFO ON}
  TServerMethods1 = class(TDataModule)
    sqlconn: TSQLConnection;
  private
  public
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;

    function getServerThreadId() : Integer;
//返回当前线程ID
function getServerDbId() : Integer;
//返回当前DbConn的内存句柄
end; {$METHODINFO OFF} implementation {$R *.dfm} uses System.StrUtils; function TServerMethods1.EchoString(Value: string): string; begin Result := Value; end; function TServerMethods1.getServerDbId: Integer; begin Result := Cardinal(@sqlconn); end; function TServerMethods1.getServerThreadId: Integer; begin Result := GetCurrentThreadId; end; function TServerMethods1.ReverseString(Value: string): string; begin Result := System.StrUtils.ReverseString(Value); end;

启动服务端后;连续启动多个客户端时服务返回服务线程信息:

3个客户端获取的服务线程id,服务db.connection都是不同的;

在Sqlserver的连接监视面板中观察也是每个客户端新建了一个新的连接;

 

【总结】

在小并发用的mis中,完全不用考虑数据库连接池和负载均衡之类的东东,确实的方便简单,三层开发会像两层一样变的简单,只要服务端的封装+客户端对TQuery的调用封住能够屏蔽掉三层的边边角角那就更好了,下次实验吧;

转载于:https://www.cnblogs.com/931it/p/5284665.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值