пул соединений с БД по всем процессам - PullRequest
2 голосов
/ 14 декабря 2008

У нас есть клиент-серверное приложение, которое состоит из нескольких EXE-файлов. Уровень доступа к данным находится на том же физическом уровне, что и клиент в библиотеке, совместно используемой нашими модулями EXE. Пулы соединений ODBC и OleDB управляются для каждого процесса; Существуют ли методы для разделения подключений к БД между процессами (кроме перемещения уровня доступа к данным на средний уровень)?

1 Ответ

4 голосов
/ 14 декабря 2008

Соединения с базой данных в OLEDB и ODBC неразрывно связаны с процессом. На самых низких уровнях соединение с базой данных sql-сервера использует механизм IPC, такой как именованные каналы, разделяемая память или сокеты tcp. Другие базы данных, вероятно, используют исключительно сетевые подключения. Если вы подумаете об этом, для совместного использования пула соединений и, следовательно, соединений вам необходимо скопировать эти низкоуровневые объекты (сокеты, именованный канал, раздел общей памяти) в другой процесс, а затем разрешить им управлять ими. Даже если вы сможете передать их, вы не сможете использовать их одновременно.

Чтобы сделать то, что вы хотите, вам действительно нужно переместить слой доступа к данным в общее пространство, которое хотят использовать все ваши несколько бывших. Обычно это средний уровень, и каждый exe-сервер затем связывается с ним через какой-либо механизм IPC (.net remoting, com-сервер, RPC, сеть и т. Д.).

...