我实在是理解不了,请各位大虾帮我解答一下(100分)

  • 主题发起人 chillkwanjane
  • 开始时间
C

chillkwanjane

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个项目,原来是两层的,一个系统有多个应用程序组成,
现在要改成3层,因为我对3层不甚理解,遇到一个问题,想向大家
请教,请大家不吝赐教,提携提携后辈:
在我的应用服务器中,一个RemoteDataModule, 一个Database控件(非BDE)
我使用multi instant, apartment模式。
我的疑问是,
首先假设A用户登录,调用一个自定义的接口,如DoLogin(aUserName, aPassword);
并假设A成功登录,那么,应用服务器已经为他分配了一个服务线程,是这样吗?
接着,假如B用户又登录,由于它的用户名和A不一样,他怎么登录呢?此时Database
已经处于连接状态了。
我实在是理解不了,请各位大虾帮我解答一下。
 
>>multi instant
>>并假设A成功登录,那么,应用服务器已经为他分配了一个服务线程
和一套database连接。
>>接着,假如B用户又登录
应用服务器又为他分配另一个服务线程和另一套database连接。
 
您是说,应用服务器位每一个连接生成一个RemoteDataModule吗?
 
如果我的多个程序都又一个用户启动,那么对于同一个用户名,我是否可以只为他分配一个
RemoteDataModule对象呢?
 
多层结构中,DELPHI有单线程与多线程
前者是,每一个客户登录,服务器都会为其创建一个线程
后者是,服务器创建一个应用程序后,多个客户连接。我现在搞的这个项目就是用这种。
其中单线程或多线程是在创建TRomoteDataModule那里选择的
 
我知道单线程多线程,但是我想问一下,就是在MutliInstant, Apartment模式下,
是否每产生一个连接,系统就自动为他创建一个TRemoteDataModule对象?然后只要
个线程间只要不访问对象以外的数据,就不会有问题?
 
理论上是。
 
谢谢,你应该知道很多,请你给我多说一点可以吗?
如果我的多个程序都由一个用户启动,那么对于同一个用户名,我是否可以只为他分配一个
RemoteDataModule对象呢?也就是他的另外几个进程都共享一个TRemoteDataModule呢?
 
我想,因为我的系统由多个应用程序组成,全部都连接到同一应用服务器,如果一个用户
同时运行多个应用程序,会导致创建它太多的数据库连接,你知道,数据库连接是有限制的。
我主要是想避免这种情况
哎,搞代码真难
 
多人接受答案了。
 
顶部