我们有一个由多个 EXE 组成的客户端/服务器应用程序。数据访问层与我们的 EXE 模块共享的库中的客户端位于同一物理层。 ODBC 和 OleDB 连接池按进程进行管理;是否有跨进程共享数据库连接的技术(除了将数据访问层移至中间层之外)?
最佳答案
OLEDB 和 ODBC 中的数据库连接本质上是进程绑定(bind)的。在最低级别,sql server 数据库连接使用 IPC 机制,如命名管道、共享内存或 tcp 套接字。其他数据库可能专门使用网络连接。如果您考虑一下,要共享连接池和连接,您需要将这些低级对象(套接字、命名管道、共享内存部分)复制到另一个进程,然后允许它们管理它们。即使您可以将它们交给您,您也无法同时使用它们。
为了做你想做的事,你真的必须将数据访问层移动到所有多个 exe 都想要使用的共享空间中。这通常是一个中间层,然后每个 exe 将通过某种 IPC 机制(.net 远程处理、com 服务器、RPC、网络等)与其进行通信。
关于sql - 跨进程的数据库连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365984/