**有关Apartment线程模型的问题,那位Super高人帮帮忙** (100分)

  • 主题发起人 主题发起人 benben1982
  • 开始时间 开始时间
B

benben1982

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在看李维的《分布式多层应用系统-系统片》一书的第6章(COM/DCOM线程模型和多层
应用系统)时,由于此章主要讲的是概念而没有实现部分所以我不会真正的建立一个
Apartment线程模型的应用系统,(为此我熬了无数的昼夜~∪_∪~Zzz)
书上说用TComponentFactory来为每一个远程数据模块建立一个Apartment,但没讲如何建立
,我想问题就出在这 所以那位Super高人能告诉我如何建立正确的Apartment线程模型的应
用系统(最好能附有原码)。小弟不胜感激,谢谢~谢谢~....亿万个省略.....~~
 
其实李维书中的“TComponentFactory来为每一个远程数据模块建立一个Apartment”这段
话容易让人误解,它是指系统自己的动作,不需要人去操作,大家都以为要用代码实现。
1.建立ActiveX library,
2.建立远程数据模块或TMtsDataModule
3.添加方法完成功能。
4.注册
5.在使用段use TLB文件
6.定义变量 IAKQ 即接口,在tlb文件中有该类型
7.建立如下函数
Function ComKQ : IAKQ ;
begin
result := CoAKQ.CreateRemote(ComServer.ComServer);
// 或 result := CoAKQ;
end;
8.ComKQ 就是你的一个对象了,你可以使用其中你定义的方法和事件、属性等数据了。
怎样,多给些银子吧。!!![:)]

 
我也提過一樣的問題,沒人回 55555555
hujunx,你的意思是不是我定義
Function ComKQ : IAKQ 就可以使用它了
我是不是每調用一次,就產生了一個對象
 
不会,服务器自动进行对象池处理
 
hujunx:大侠能留下您的联系方式吗?我还有一些问题想请教您~!谢谢
 
hujunx@hotmail.com
 
谈谈我的看法:
其实所谓的线程模型应该从两个角度去理解:
1,客户端的多线程访问的数据保护
我们通常写的类很少考虑多线程访问的数据保护,有时如果类需要在多线程中同时
访问,我们自己可以假如线程同步(如:写类成员数据的函数用临界区同步)以保证对象
数据安全。而Com对象提供了多种线程模型,如我们通常使用的Apartment线程模型,
使用Apartment线程模型时多个客户线程访问com对象的数据同时只能有一个客户线程访问
从而解决了数据保护的问题。我们也就不需要自己编写同步代码来保护数据。
2。使用不同数据模型的效率
然而正如线程同步一样,线程模型的使用也带来了效率的降低。如:single线程模型
不能支持多线程客户访问。Apartment线程模型同时只能有一个客户线程访问,
free线程模型可以同时支持多个客户线程访问等等。
当然free线程模型效率高但使用复杂。
hujunx说的有一定的道理,因为Com底层实现的代码有Borland为我们写了(或ATL中
MicroSoft为我们写了),我们不必关心其细节。
 
hujunx:收到我的信了吗?
 
hujunx:收到我的信了吗??????????!!!!!!!
 
To:benben1982,
我一直非常忙,没有时间看。
你的E_mail我看过,你关于 Apatment 的理解基本正确。
因为我也不是非常精通,所以我也是不很了解它们。
我的看法是不一定要对此非常精通,只是我们的程序可以运行才是必须的。
 
可以留下您的Qicq吗?很想和你交个朋友~!!!!~∩_∩~
 
d6里Apartment已经是多线程了。不用你费劲了。[:D]
代码:
 
不想留下您的联系方式吗?谢谢!
 
多人接受答案了。
 
你可以看一下Delphi的DEMO中的Pooling
 
后退
顶部