关于COM+的一些细节问题

我的车牌号007

我的车牌号007

2016-02-19 16:22

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的关于COM+的一些细节问题,希望大家看完后能赶快学习起来。
 

  client端只需要midas.dll就够了!
       Com+在使用时需要进行用户的验证,当你在局域网里的时候,由于的所有的

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

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

  的角色当中,就可以访问了!
      
       如果你现在还是在使用DCOMCONNECTION空间进行连接的话,我建议你不要用

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

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

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

  防火墙就比较方便了

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

   

  /*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结构改为三层,事物处理我这样用不

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  知可行否?
       服务端定义接口:
       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,什么都有
  

展开更多 50%)
分享

猜你喜欢

关于COM+的一些细节问题

编程语言 网络编程
关于COM+的一些细节问题

新版Twitter UI的一些细节问题

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
新版Twitter UI的一些细节问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

关于羊水穿刺的一些问题

电脑网络
关于羊水穿刺的一些问题

关于美食拍摄的一些问题

摄影 人像摄影 静物摄影
关于美食拍摄的一些问题

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

关于如何利用COM+来提高ASP执行权限的问题!

Web开发
关于如何利用COM+来提高ASP执行权限的问题!

关于如何利用COM+ 来提高ASP执行权限的问题!

电脑网络
关于如何利用COM+ 来提高ASP执行权限的问题!

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

IntToHex(10-16进制的转换)

IntToHex(10-16进制的转换)

Linux中ifconfig命令用法汇总

Linux中ifconfig命令用法汇总
下拉加载更多内容 ↓