关于三层中的线程模式、连接池、对象池的问题。请各位高手发表一下自己的经验,见解。(100分)

A

ahai227

Unregistered / Unconfirmed
GUEST, unregistred user!
连接池、对象池(写成无状态对象)是不是mts/com+帮我们自动完成?用ado时和bde有没有分别?
线程是不是在建com+/mts对象时选择为apatrment类型(还是别的类型好呢?)就可以了,不用用代码控制?
恳请各位尽量发表意见,本人菜鸟一名,还望指教。
 
这个问题在李维的系统篇里都讲了,你可以买一本,我可不想给你打出来。
 
书,我已经看过。可是觉得有点模糊不清,还请高手总结总结。
 
和楼上有同感,看了不下3遍,感觉还是模糊。
不知李维的ADO/MTS/COM书中讲了没有。
福州的新华书店居然没找到。
关注
 
1.接池、对象池(写成无状态对象)是不是mts/com+帮我们自动完成?
[red]是的[/red]
2.用ado时和bde有没有分别?
[red]有微妙区别,ADO+MTS据说要好于BDE+MTS,但是具体什么区别我也说不清[/red]
3.线程是不是在建com+/mts对象时选择为apatrment类型(还是别的类型好呢?)就可以了,不用用代码控制?
[red]是的,可以看VCL源代码,其中可以看到如果不是Aprtment类型就不会建立多线程[/red]
把系统篇好好读一读,精读一下第六章的32到35页,其他的讲得有点混乱,可以不看
 
谢谢Traveller!!!!
请继续讨论。
再谢!
 
请精读一下系统篇的6-32到6-35页,对线程模式讲得很清晰。
4-73到4-85讲解的是Session pooling,尤其是图4-69, 图4-70, 图4-71三个图很直观。
另外,Delphi的Demos/MIDAS下的pooler目录详细研究一下有助于了解pooling(缓冲池)技术。
最后阅读本论坛首页的《提问的智慧》,没有具体的问题是无法回答的。
 
to Traveller:
那些pooling技术是不是com+/mts帮我们自动完成,不用我们写代码控制的。
 
一般来说是自动的(用精灵创建的框架),但是你可以选择自己控制它.(还与服务器设置
有关)
 
请问如何控制?能给个例子吗?有什么好处?
服务器设置?如何设置?能说的具体点吗
谢谢
 
是的,需要写代码控制的主要是状态的有效期(因为MTS中要求是无状态对象,但是我们的业务逻辑实际上是有状态的)。
如果是MTS对象,Delphi会自动控制其生存期,默认是在响应一个DataProvider事件期间保持状态,如果需要自己控制其状态,那么就需要把AutoComplete设为False,然后在处理完毕的时候调用SetComplete来释放状态。
如果是普通对象并且自己实现Pooling(任何两次调用之间都不保留状态),那么就需要在客户端保留状态,然后作为参数传递到服务器。
前者的例子我现在没有,后者的例子可以参见$(DELPHI)/Demos/MIDAS/Pooler目录。
 
to Traveller:
你说的是不是关于事务控制的。也就是执行完业务逻辑后,主动调用SetComplete来结束该对象的事务过程。
另外,有状态对象是不能得到对象池的功能,你的目的是不是尽快释放掉它。
 
请再帮我看看这个问题。谢谢
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1397064
 
这是特殊情况,自己控制对象生存期,也就是自己控制何时释放它。一般来说让Delphi自己控制已经足够了,实在不行也最好采用第二种方案,第二种方案在MTS中也同样有效。
 
来自:yangxiao_jiang, 时间:2002-10-27 10:27:00, ID:1397238
这个问题在李维的系统篇里都讲了,你可以买一本,我可不想给你打出来。

read book,and understand.
 
to dragonlee007:大侠~~~不要这样拉。你多说两句经验、认识啊什么的,对我们这些菜鸟来说,
是很有帮助的。还望指教!!!
 
接受答案了.
 
顶部