[转载红鱼儿]kbmmw 开发点滴:kbmmW服务端事务控制

简介: 关于kbmMW的事务控制,前文已经在客户端实现,通过kbmMWClientTransaction来控制多个数据集的提交,在客户端提交多数据集,实际上,是在客户端实现业务逻辑,并通过一个事务来完成数据处理,这是违反多层架构的做法,实际项目中,需要在服务端,往往是利用多个数据集进行业务处理,并且用事务来控制,那我们该怎么办呢?换句话说,如何在服务实现事务的控制。
   关于kbmMW的事务控制,前文已经在客户端实现,通过kbmMWClientTransaction来控制多个数据集的提交,在客户端提交多数据集,
实际上,是在客户端实现业务逻辑,并通过一个事务来完成数据处理,这是违反多层架构的做法,实际项目中,需要在服务端,
往往是利用多个数据集进行业务处理,并且用事务来控制,那我们该怎么办呢?换句话说,如何在服务实现事务的控制。

kbmMW在服务端,如同在客户端一样,为我们提供了方便的机制来处理事务。
下面的代码,转自kbmMW的新闻组:

var tx: TkbmMWTransaction;
begin
 tx := TkbmMWTransaction.Create;
 try
   try
     tx.AddConnection(SrvCore.mwDbConPool.GetBestConnection);
     tx.StartTransaction;
     qQueryDel.Execute(tx);//if exec type statement
     qQueryDel.Resolve(tx);//if resolve qAnotherQuery.Resolve(tx);
     tx.CommitTransaction; Result := true;
   except
     tx.RollbackTransaction;
     raise;
   end;
 finally
   tx.ReleaseConnections;
   tx.Free;
 end;
end;
通过上面的代码,可以看到,kbmMW提供了TkbmMWTransaction,来控制服务端的事务控制,用法简洁,想必一看也就清楚了。
目录
相关文章
|
数据库 关系型数据库 MySQL
清幽傲竹实现的kbmMWServer数据库联接失败重联(转载红鱼儿)
1。修改kbmMWUnidac单元的TkbmMWUNIDACConnection.InternalOpenConnection方法,加上:            //支持unidac重联           FDatabase.
946 0
|
数据库
unidac 6.0.1 与kbmmw 的一点小摩擦
unidac 6.0.1  出来了,虽然支持sql server 直连等新特性,但是由于内部改动比较大, 导致与kmmmw 的集成起来存在有点小问题,就是如果数据库不是interbase 或者firebird 的话, 客户端访问kbmmw会出现"InterBase provider is not registered.
977 0
|
JSON 数据格式 数据库
[转载红鱼儿]kbmmw 开发点滴:kbmMW:Unknown property:indexes
利用kbmMW的QueryServices,对数据集进行提交,当改用JSON格式时,客户端提交时,会产生这个错误,明明已经更新数据库,也产生这个错误!如果换成Bin格式,则正常。 能过查看kbmMWJSONStreamFormat单元,问题产生在这行代码:nIndexDefs:=nDefs.AsArray['indexes']; 可以这样理解: 客户端提交数据后,服务器会返回一个错误结果数据集,不管有无错误,都要返回这个结果集。
900 0
|
SQL 数据库
[转载红鱼儿]kbmmw 开发点滴:kbmMWQuery插入记录
想利用TkbmMWUNIDACQuery插入一条记录,结果遇到问题,显示: 不允许从数据类型 sql_variant 到 varchar 的隐式转换。请使用 CONVERT 函数来运行此查询。这是什么问题啊?下面是出问题的代码,很常规的写法。
870 0
|
应用服务中间件
使用delphi 开发多层应用(十五)使用kbmMW 的代理服务
首先,当一个企业要给外网用户提供服务时,应用服务器上应该配置外网IP,同时外网防火墙也要进行相关的配置, 但是当对外的服务器比较多时,可能需要很多外网IP,同时防火墙上要频繁设置,非常麻烦。第二,分发客户端后,一般 配置都要默认设置好(否则会给客户造成不必要的麻烦),那么客户端都会指向一个相对比较固定的服务器IP,也就是说 客户端理想状态是通过一个统一的入口连接到服务器上,调用相关的服务。
1022 0
|
安全
[转载红鱼儿]kbmmw 开发点滴:TkbmMWLock用法
TStringList不是线程安全的,当我们在线程用到他是,要做保护。方法有两种,一种是用delphi自带的Critical,另外一种就是kbmMW为我们提供的TkbmMWLock类。 现在我们看看如何用TkbmMWLock为TStringList做线程安全: 1.
1074 0
|
SQL 缓存
[转载红鱼儿]kbmmw 开发点滴:kbmMW缓存机制
kbmMW提供了稳顾机制,分为服务端的Cache及客户端的Cache。以客户端为例,当客户端发出相同的数据查询请求时,kbmMW会在客户端的Cache中查找,如果找到,则不再向服务器请求数据。 为了启用一个ClientQuery使用稳存,首先要设置其以下两个属性: kbmMWClientQuery.
841 0
|
SQL 应用服务中间件 数据库
[转载红鱼儿]kbmmw 开发点滴:kbmMW数据集流化
kbmMW提供了QueryService,供我们在客户端象传统数据库应用一样,直接利用ClientQuery做SQL查询,以及提交,并且能够在客 户端以事务的方式提交多个数据集,应该说,QueryService为我们提供了非常好的便利,快速将两层应用转为多层应用,如果用过ASTA,就会发 现,QueryService在对两层应用的转化上,要比其实现的更完美,层次更清晰。
991 0
[转载红鱼儿]kbmmw 开发点滴:kbmMWEventService的本质
在kbmMW创建服务向导中,有个“Eventoperated service”,其描述信息:同TkbmMWSimpleService一样,就是公布了一个附加的事件,来控制客户端请求,取代了ProcessRequest.
590 0
|
SQL 开发者
[转载红鱼儿]kbmmw 开发点滴:kbmMW客户端提交事务的现场处理
多层应用中的事务处理,是必须的,如果处理不好,就会出现各种数据不同步的现象,无法投入使用。以前用ASTA实现的多层应用,是在客户端利用ASTA机 制,将要提交的数据集、执行的SQL及SP,统统生成到一个脚本中,在ASTA是TAstaParamList,然后一次性提交到服务器,在服务器端在执 行这个脚本时,开启事务,执行脚本,如果成功则Commit,失败则Rollback。
809 0

热门文章

最新文章