关于COM+的一些细节问题

2016-02-19 16:22 6 1 收藏

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

【 tulaoshi.com - 编程语言 】

 

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

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

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

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

  的角色当中,就可以访问了!
      
       如果你现在还是在使用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,什么都有
  

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

来源:https://www.tulaoshi.com/n/20160219/1611897.html

延伸阅读
标签: Web开发
1、如何配置PhpMyAdmin2.9 网络上很多教程的配置文件是针对PhpMyAdmin底版本的,一开始连2.9配置文件都不知道放哪里? 配置文件相对地址是: config.sample.inc.php   (不是这个libraries/config.default.inc.php) 2、让phpMyAdmin使用密码登陆 在设置config.inc.php设置以下参数: $cfg['Servers'][$i]['auth_type'] = 'co...
标签: Web开发
不可否认,我是非常看好AJAX技术的。我以为AJAX技术对于互联网,就像HTML对于互联网一样。但同时又要看到,AJAX技术不能完全取代我们常规的WEB开发技术。AJAX技术有它让人眼睛一亮的优点,同时它也有很多弱点。 我们作为开发人员,不能因为AJAX技术好,就在WEB开发中全部使用AJAX。      对了,不能为了AJAX而AJ...
首先说明这里指的是Java中的String,虽然我已经决定转战C/C++了,但是因为今天碰到一个问题,还是来看一下。String的定义如下: 代码如下: public final class String { private final char value[]; // 保存的字符串 private final int offset; // 开始的位置 private final int count; // 字符数目 private int hash; // 缓存的hash...
tulaoshi 避免误入雷区 孕前五个生活小细节须知 孕育 宝宝 可是一件大工程,备孕准备当然必不可少。很多想要宝宝的 女性 来说,备孕要做哪些准备可能感觉一头雾水,图老师小编偷偷告诉你哟,女性的孕前调理包括饮食、起居、运动、护理等各方面的调节。当然生活中一些小细节万万不能忽视的哟。 一、时刻都...
标签: Web开发
本文总结网页制作中关于CSS样式表应用的一些基础技巧,希望大家掌握!谢谢支持网页教学网。 一、关于注释 在创建xhtml+CSS网站时,CSS中的注释非常重要。在创建CSS样式时,应当保持随手注释的习惯。一般的,我习惯于使用/* 注释内容 */的格式来写注释,因为在EditPlus等具有高亮功能的编辑器里,使用C语言中常用的/***************/之类...

经验教程

488

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部