我没有做过三层的程序,但我看过许多关于三层的资料。我一直以为客户端通过中间层与数据库联接,无论有多少个客户端,与数据库的联接只有一个。今天我试着用Delphi做了一个简单的三层程序,创建中间层时Instancing选项选择的是Multiple Instance,数据库为SQL Server。我发现,当我打开3个客户端,从SQL Server企业管理器中查看数据库的联接为3,不是我一直以为的1个。如果有N个客户端,与数据库的联接不就是N个了吗?如果客户端数量很大岂不一样占用大量资源。这与C/S结构的又有什么区别?

解决方案 »

  1.   

    是这样的,这就是为什么用midas做系统,
    两个用户修改同一记录时会报错,因为他受事物保护.
    而两层则要自己写代码控制.
      

  2.   

    既然多层所说的并发是指中间层的服务进程是并发或是单发,哪为什么很多多层资料的结构图都是下面这样的呢?Client1-----↘
    Client2-----→中间层-----→数据服务器
    Client3-----↗
       .
       .
       .岂不是要改成下面这样
    Client1-----→中间层-----↘
    Client2-----→中间层-----→数据服务器
    Client3-----→中间层-----↗
       .
       .
       .
    这不就是C/S结构吗?只是多了一个中间层。
      

  3.   

    这种问题讨论多了, 是 pooling, midas 没提供什么 pooling, 只提供一种数据包封装, pooling com+ 里有设置, 在 com+ application 的属性里, 缓冲池大小就是 pooling
    但, 建立远程对像时要建立线程模型成 Both(介于 multi 和 single的一种, 在回调机制上是 single)com+ 也可以建立 free 的线程模型, 不过 midas 不支持, 编程时就不能直接用向导的代码