我做了一个项目,原来是两层的,一个系统有多个应用程序组成,
现在要改成3层,因为我对3层不甚理解,遇到一个问题,想向大家
请教,请大家不吝赐教,提携提携后辈:
   在我的应用服务器中,一个RemoteDataModule, 一个Database控件(非BDE)
   我使用multi instant, apartment模式。   我的疑问是,
   首先假设A用户登录,调用一个自定义的接口,如DoLogin(aUserName, aPassword);
   并假设A成功登录,那么,应用服务器已经为他分配了一个服务线程,是这样吗?
   接着,假如B用户又登录,由于它的用户名和A不一样,他怎么登录呢?此时Database
已经处于连接状态了。我实在是理解不了,请各位大虾帮我解答一下。

解决方案 »

  1.   

    每个客户端连接上服务器,都会为他分配一份RemoteDataModule的内存拷贝.
    大家的运行二进制代码都一样,但是互不相干.
      

  2.   

    因为我的系统由多个应用程序(客户)组成,如果由一个用户启动它们,我的
    应用程序就要为他们各自准备一份RemoteDataModule,然后也各自创建一个
    到数据库的连接,你也知道,数据库连接这种资源含有限,事务一多,数据库
    就受不了,我还想知道我是否能够根据不同的用户名,决定分配不同的RemoteDataModule,而同一用户名分配同一个RemoteDataModule呢?
      

  3.   

    摩托~~~~~◎◎◎◎◎◎◎◎◎◎◎◎◎◎多个客户(相同用户)用同一个module?那很容易错乱的你为什么允许多个相同的用户同时登录呢?在login里禁用已经登录的用户吧
      

  4.   

    错乱的问题我可以解决,关键是是否可以呢?共享Module?
      

  5.   

    你可以用打包(bpl)的方式。可以共用一个Module.多个客户(相同用户)用同一个module是不会乱的。同一个module可以减少开发时间。
    代码也可以减少。但对于多个应用程序(客户端)就只能用打包的方式(把Module连接数据库打包bpl)。
      

  6.   

    问:
    首先假设A用户登录,调用一个自定义的接口,如DoLogin(aUserName, aPassword);
       并假设A成功登录,那么,应用服务器已经为他分配了一个服务线程,是这样吗?
       接着,假如B用户又登录,由于它的用户名和A不一样,他怎么登录呢?此时Database
    已经处于连接状态了。
    答:
    不同的用户会自动创建不同的RDM的实例;
      

  7.   

    谢谢各位,尤其是moto大侠,衷心谢谢,
    对于您们的热心帮助,我非常感激让我尝试一下moto大侠的方法Thanks
      

  8.   

    用TList判断就成;
    实例我有,而且可以发信息;指定用户信息;
      

  9.   

    可以给我参考一下吗?
    这个问题我必须解决,否则我用不成midas了