пул соединений с БД по всем процессам

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

14.12.2008 00:21:06
1 ОТВЕТ

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

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

4
14.12.2008 01:14:32