我们有一个由多个EXE组成的客户端/服务器应用程序。数据访问层与我们的EXE模块共享的库中的客户端位于同一物理层上。 ODBC和OleDB连接池按进程管理;有没有跨进程共享数据库连接的技术(除了将数据访问层移动到中间层)?
答案 0 :(得分:4)
OLEDB和ODBC中的数据库连接本质上是进程绑定的。在最低级别,sql server数据库连接使用IPC机制,如命名管道,共享内存或tcp套接字。其他数据库可能只使用网络连接。如果您考虑一下,要共享连接池并因此共享连接,您需要将这些低级对象(套接字,命名管道,共享内存部分)复制到另一个进程,然后允许它们管理它们。即使你可以把它们关掉,你也无法同时使用它们。
要做你想做的事情,你真的必须将数据访问层移动到你所有多个exes想要使用的共享空间。这通常是一个中间层,然后每个exe通过一些IPC机制(.net远程处理,com服务器,RPC,网络等)与之通信。