兄弟正在开发COM+,客户端想用dcom连接,再做个DCOM服务器,完成接口转换过程。处理过程如下:
客户端需要知道该DCOM服务器的接口,连接到该服务器后通过该服务器传递Olevariant类型的参数并调用COM+组件(因为我想做出可用其他方式调用的com+组件)来完成事务性操作,当然也需要返回数据。
但小弟不明白DCOM服务器那里应该怎么去写,需要自定义列集实现接口转换?请大虾指点一二,感激不尽…………
客户端需要知道该DCOM服务器的接口,连接到该服务器后通过该服务器传递Olevariant类型的参数并调用COM+组件(因为我想做出可用其他方式调用的com+组件)来完成事务性操作,当然也需要返回数据。
但小弟不明白DCOM服务器那里应该怎么去写,需要自定义列集实现接口转换?请大虾指点一二,感激不尽…………
解决方案 »
- winxp与wince相互压缩与解压
- 大家帮忙看看这是用什么控件的啊!下划线的Edit
- loadfromfile和savetofile的菜鸟问题
- 英语不行啊!~~~~~~~~5555555
- 如何把DateTimePicker的边框去掉?不胜感激
- 请问高手如何在DBGrid控件中灰化显示一条记录,在线等待!!!
- 【请教】如何动态创建一个控件,用Create创建的不能显示!
- 新手问一个ADO的问题?UP有分!
- 谁会Modem对Modem的数据传送
- 对于一个DELPHI新手怎样才能更快的学好它,请高手指点,给分?
- 请问如何在局域网内使用DCOM创建出可转连COM+的服务器
- 大家来说说,这种技术难不难呢?
现在这里人气很差
建议你看一下李维的那本ADO/MTS/COM+
为什么不直接调用COM+
function TIsapiserver.execSql(STRSQL: string): integer;
var
obj: variant;
begin
coinitialize(nil);
try
obj := createoleobject('pmts.mtsreport');//你的com+
obj.queryexe(strsql);//你的方法
result := s_ok;
finally
CoUninitialize;
end;
end;
不使用DCOM如何能跨机器调用com+组件?我了解的三层结构主要有以下几种(不对地方请指出):
1)客户端直接连接到自己编写的服务器上(一般是dcom),服务器直接连接数据库,但没有享受到事务;
2)客户端通过SCK,WEBCON等根据IP(适合因特网)连接到iis上,再通过httpsvr转连COM+
3)还有就是我这种情况,想利用现有的COM+组件通过dcom连接,可方便应用于内部网再次感谢 theone_jxm() ,不过我希望要的是不关联任何具体组件信息,只是将请求转发。我希望创建的是线程模型和COM+相同的单一服务器COM组件,通过MARSHALINTERFACE方式调用COM+接口,不知是否需要自定义列集???
还有李维所有的书都有,最经典的两本看了好几遍
file->new->选择要写的liberary就行了
Good Luck!
如果你真要做,自已去看scktsrvr的源码,它是用SOCKET来实现你要的功能。
当然在不同的应用可以使用不同的手法。你这种做法也是正确的。
至于客户端,我的观点是不一定要特别瘦,太瘦会加重服务器负担。现在硬件发展很快,我将一些显示逻辑分离出来写到客户端。
这样客户端和COM+组件之间的通讯就可以分离出来,不管是用什么方式实现,只是充当“中介”或“代理”的角色。当在因特网上调用,可以使用基于TCP/IP协议的WEBCON,而内部网使用DCOM效率应该比WEBCON要高(我是不喜欢使用SCK),也能提供一定程度的安全性,但缺点是配置较复杂,实施成本较高。
不管怎样,我规划的这种方式理论上应该是可行的,如果我能搞定会把代码贴出来共享,更希望大家多帮忙,谢谢