分享
 
 
 

关于COM+的一些细节问题

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

client端只需要midas.dll就够了!

Com+在使用时需要进行用户的验证,当你在局域网里的时候,由于的所有的

机子都是在一个域里,他默认的所有的域成员都有权利访问,你如果要在广域网

上使用,你必须在服务器上建立客户端的用户,然后,把该用户添加到你的com+

的角色当中,就可以访问了!

如果你现在还是在使用DCOMCONNECTION空间进行连接的话,我建议你不要用

,因为直接在广域网中访问com+的话需要很多的端口,而这些端口可能会被占用

,而且防火墙会阻挡这些端口,导致你的Com+无法访问;所以我建议你使用Socke

tConnection控件来连接,这样的话就只需要一个你指定的端口了,这样的话通过

防火墙就比较方便了

/*1. 是不是com+的client也必须是域中的一个用户?*/

com+的服务器与客户端不必安装在一个域中,如何配置取决于你使用的连接

方式。

例如当你使用HTTP方式连接时,你的应用即可以部署到Internet环境中。

/*2. client在分了的时候除了附加midas.dll,是不是还需要别的文件?*/

midas.dll这个文件在Delphi6以后的版本中已不再需要了。你可以在工程文

件中导入MidasLib单元。

如果你将应用设及到的单元连接到程序中,那么在部署时不用附加任何文件

首先,COM+有两个MTS组件,一个是MTS Object,另一个是MTS DATA MODULE;

MTS Object建立时同时用DcomConnection建立MTS DATA MODULE,MTS Object有1

个GetDatas取数据方法和UPDATAS存储数据方法,当方法完成时就执行SetComplet

e或SetAbort。

Updates的方法如下:

procedure tmtsbook.updatas(vDatas : olevariant; iMaxError

:Integer; Var iErrorCount : Integer);

Var SerObj : IAppServer;

OwnData : OleVariant

begin

try

serobj := FMydm.dcombooks.GetServer;

serobj.As_applyupdates(vDatas, iMaxError, iErrorCount, Owndata);

setcomplete;

except

setabort;

end;

end;

结果,调用这个updatas更新数据,总把修改的数据更新到最后一条记录。

来宾发言:我经常通过在AppServer端定义事务处理的相关方法来解决(210字节)

来宾姓名:henrycheng

来宾发言:

就是在Server端定义如下的可以远程调用的方法,然后在客户端根据需要直

接调用它们。

procedure TRemoteServer.Start; safecall;

procedure TRemoteServer.Commit; safecall;

procedure TRemoteServer.RollBack; safecall;

这种方法的确可以实现事务处理的要求,但有一个致命的问题是:一旦有客户端

开始一个事物后与网络失去联系(如死机等)将导致其他客户端陷入无限的等待

状态,因为此时数据表被锁定,只有提交或回滚这个事物后才会解锁! 影响其它

用户。

但前提是中间层必须能够解析客户端提交的数据的逻辑结构。这时,最好的方法

是建立相应的信息模型或数据模型,客户端根据信息模型处理输入、输出,中间

层处理应用逻辑,包括存储逻辑。我们现在就是这么做的。如果你希望进行进一

步的探讨,可以跟我联系。

clientdataset可将数据集,包括所有你输入的临时数据库打包成XML传给中间层,

中间层实现在事务中进行MVC中的M层是否更新过的判断

具体实现大家自已琢磨吧!

来宾发言:我这样做的……(46字节) 来宾姓名:duke

来宾发言:

中间层定义连接控件的事物处理。

在客户端调用。

来宾发言:

刚做三层结构,听大家意见,把一个C/S结构改为三层,事物处理我这样用不

知可行否?

服务端定义接口:

procedure TBarDCOMServer.isTrans(const iStates: WideString);

begin

if iStates='BeginTrans' then

ServerMainF.ADOConnection1.BeginTrans

else if iStates='CommitTrans' then

ServerMainF.ADOConnection1.CommitTrans

else if iStates='RollbackTrans' then

ServerMainF.ADOConnection1.RollbackTrans;

end;

客户端调用:

dm1.DCOMConnection1.AppServer.isTrans('BeginTrans');

try

errorCounts:=0;

errorCounts:=errorCounts+dm1.kcspIndexCD.ApplyUpdates(0);

errorCounts:=errorCounts+dm1.yyCD.ApplyUpdates(0);

if errorCounts=0 then //提交是否有错误

dm1.DCOMConnection1.AppServer.isTrans('CommitTrans')

else

begin

dm1.DCOMConnection1.AppServer.isTrans('RollbackTrans');

ShowMessage('Error');

exit;

end;

except

dm1.DCOMConnection1.AppServer.isTrans('RollbackTrans');

ShowMessage('网络忙,请重试。');

end;

由于提交时,如果有错误并不触发异常,因此try……except……end似乎不

起作用,所以定义一个变量errorCounts来记录提交返回的错误数,由此决定是否

提交事物。

此方法没有经过实践,明天把程序发给客户使用后,再做判断是否可行。

不过,我想应该有更好的方法,请有多层经验的朋友指教一下。

***可以,不过在COM接口中应该用olevariant

三层结构,在别的机器上运行客户端,提示“拒绝联接”如何注册.TLB文件?(68

字节)

此错误不是客户端的问题,而是服务端的COM的权限不正确

2。将服务端的*.tlb文件加入到客户端的项目中即可

webconnection

多出来的一步是吧httpsrvr.dll发布到IIS具有执行权限的virtual dir中

设置好httpsrvr.dll在服务器的http URL以及Server的GUID就行了

其他大同小异。具体看Delphi的Help,什么都有

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有