在李维先生的书中谈到在应用程序服务器中使用Apartment线程模型,在一个Apartment中只能存在一个线程,如果不自己写程序创建多线程来处理客户端的请求的话,在多个客户端连接到服务端后,服务端对客户端请求的处理不是及时的,而是排队来进行的,就是处理完一个客户的请求后,接着处理下一个客户端的请求。同时李维先生也举了个例子来说明,由于本人不能理解。所以我也就提出以下几个问题。

解决方案 »

  1.   

    (继续上面的问题)
    1、按照李维先生的说法,一个Apartment中只能处理一个线程,那就是说如果要同时处理多个客户端的请求,我们就要建立多个Apartment.如何创建Apartment,按照我个人的理解是不是创建TCRemoteDataModule,如果是,如何将创建的,是不是new一个,如果是的话,如何将创建的TCRemoteDataModule和客户端连接起来。
      

  2.   

    (继续上面的问题)
    2、如果要创建多个Apartment,那我们在那里监听客户端的连接,我想如果客户端时使用TSocketConnectiong来请求连接的话,在服务端,我们是否可以使用TServerSocket来监听客户端的连接,如果客户端是使用TDCOMConnection来请求连接,那么服务端是怎么监听。
    3、如果以上我的观点错误,请大家赐教。谢谢。
      

  3.   

    1. 是创建 TCRemoteDataModule, 建立的 RDM 是一个 COM 对像,接近 new, 对应一个客户 OleVariant(IDispatch), 一个客户对应一个COM 对像引用。2. TSocketConnection 在服务器就是用 TServerSocket(当然不完全是,是TCustomServerSocket 另一子类,TServerSocket 兄弟), see scktsrvr 原码, TDCOMConnection 请监听是由 DCOM 代理完成,所谓 DCOM 代理基本也就是个 scktsrvr, 所不同之处是 DCOM 代理中有MS自已的加密机制,DCOM 压缩了数据,DCOM 有用户认证机制,但是 DCOM 建立连接时很慢,慢到你无法容忍呵。3. 赐教谈不上,但我个人认为你应该找本 COM/DCOM 的书或者 CORBA 书 认真看看再提问