紧急求助.关于分布式DCOM三层问题.

wumylove1234 2005-10-25 11:13:27
在服务器上准备部署DCOM或者COM+的组件,这个组件负责接受客户端的请求,完成对数据库的操作.但是现在有一个问题,我在服务器端的程序是一个ActiveEXE:BusinessRules,一个ActivexDLL:DataAccess,在DataAccess内只完成对单表的数据库操作,这样我要同时向多表写数据的时候就需要在BusinessRules层启用事务,我想用一个全局的连接来控制,不过我试了一下,将这个全局连接放在BusinessRules和DataAccess都会让所有的客户端只共享一个连接,这样一来并发的处理只能是处理完前一个请求后再处理其它请求,严重影响性能!

请问大家在做物理三层的时候,是如何控制事务的呢?MTS我不懂,这个技术是不是可以解决我的问题呢?
...全文
322 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
^_^
wumylove1234 2006-05-18
  • 打赏
  • 举报
回复
DCOM怎么说也是落后的技术,扔了不搞了.
LordBasic 2005-11-07
  • 打赏
  • 举报
回复
有一个办法可能可以解决,不知道对不对。
就是在你的ActiveXEXE工程中添加一个Form,将Form设定为启动,用Form中的全局变量来保持你所需的全局变量,带来的代价是每次被调用时会出现一个Form,而且不能在客户端调用结束后自行去除,可能也有性能的问题。
faysky2 2005-11-05
  • 打赏
  • 举报
回复
学习!
  • 打赏
  • 举报
回复
还没解决完?
  • 打赏
  • 举报
回复
绝大多数的时候 毁于随 好像经常自言自语 不过 这也许是绝大多数科学家的共性吧
wumylove1234 2005-10-26
  • 打赏
  • 举报
回复
每个在线的客户都会订阅服务器端的某个全局对象的事件,这样我在其它对象对数据库操作时引用全局对象的事件就可以了.

关键现在的问题在于不同的线程之间不能够共享全局对象.

用Socket我知道,如果实在没办法就只能这样了.



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
wumylove1234 2005-10-26
  • 打赏
  • 举报
回复
通过几天的测试.确定了DCOM的公寓线程模型不能实现我的要求,只能另辟新路了.呵呵.




================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
我试一下,似乎是因为ActiveXEXE只有一个进程,加载了DataAccess后也会和ActiveEXE在一个进程,这样在ActiveEXE提供多线程的时候,多个线程也只能对一个DataAccess进行调用.....
我测试的方法是:在BusinessRules层定义新的数据库连接对象然后传到DataAccess中了,同时启动两个客户端调用BusinessRules中的两个写数据库的方法,我发现只有在先调用的方法完成后才会执行第二个方法(两个方法写不同的数据库).

也就是说现在不是连接是否为"共享的一个问题",而是DataAccess不提供多线程的问题了.



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
zyg0 2005-10-25
  • 打赏
  • 举报
回复
//刚才的思路有些问题,就是说我现在实现了数据库的并发,但是我想要在每个客户端写了一条数//据后,要通知其它的客户端.
这个用数据库做的话代价很大,用winsock作吧,插入的时候给各个在线客户端发消息
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
现在的问题很明确了,在工程属性为"为每个对象对应一个线程"的情况下如何让ActiveXEXE共享全局模块中的变量!



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
  • 打赏
  • 举报
回复
我现在比较忙,先收藏一下,必有时间看的。
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
不能再发了吗?
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
刚才的思路有些问题,就是说我现在实现了数据库的并发,但是我想要在每个客户端写了一条数据后,要通知其它的客户端.

考虑的方式是使用事件回调的方式:即让每个客户端引用ActiveXEXE的一个对象,然后注册它的事件处理,在发生事件时,让ActiveXEXE自动的向每个客户端引发事件.

我先说到这吧,哪位大侠有经验的可以教我一下,我现在是实现这个实现不了那个.项目很急,谢谢了!

QQ:14361227
MSN:fx__wdl@hotmail.com



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
刚才的思路有些问题,就是说我现在实现了数据库的并发,但是我想要在每个客户端写了一条数据后,要通知其它的客户端.

考虑的方式是使用事件回调的方式:即让每个客户端引用ActiveXEXE的一个对象,然后注册它的事件处理,在发生事件时,让ActiveXEXE自动的向每个客户端引发事件.

我先说到这吧,哪位大侠有经验的可以教我一下,我现在是实现这个实现不了那个.项目很急,谢谢了!

QQ:14361227



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!
wumylove1234 2005-10-25
  • 打赏
  • 举报
回复
问题基本解决.

请回复http://community.csdn.net//Expert/TopicView2.asp?id=4346329&datebasetype=now这个帖子,是关于ActiveEXE调试的问题,一同给分,谢谢.



================业精于勤荒于嬉,形成于思毁于随=================

如果再给我一次爱的机会,我会好好的珍惜!

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧