Лучший способ обрабатывать подключения от нескольких экземпляров приложения к базе данных MS Access? - PullRequest
1 голос
/ 14 декабря 2011

У меня есть приложение, которое подключается к базе данных MS Access. Прежде чем вы скажете, что я должен избавиться от Jet Engine, я мог бы сделать это в будущем, на самом деле, я хочу, чтобы мое приложение делало выбор между несколькими установленными двигателями. Поэтому пока я хочу, чтобы мое приложение было максимально независимым от движка.

Я пытаюсь реализовать новую функцию, которая позволит нескольким экземплярам моего приложения работать на одной машине , и все эти экземпляры будут подключаться к одной и той же базе данных. Но мне нужно иметь возможность контролировать, кто обращается к базе данных каждый раз. Я не могу просто позволить всем экземплярам обращаться к нему из нескольких потоков, потому что некоторые запросы должны выполняться в строке, например, вставка строки, а затем выполнение запроса @@SELECT IDENTITY сразу, чтобы получить только что сгенерированный автоматический идентификатор.

Я не хочу, чтобы двигатель позаботился об этом, потому что все двигатели разные в этом отношении. Первым делом я подумал об использовании WCF и каналов и написал свой собственный маленький сервер баз данных, который просто оборачивался вокруг Jet Engine и базы данных. Затем используйте lock s или Mutex es вместе с некоторыми видами RequestExclusiveAccess и ReleaseExclusiveAccess, чтобы контролировать, кто может обращаться к базе данных в каждый момент.

Теперь я думаю использовать Mutex, и ни одного сервера не должно быть достаточно, но я все еще не уверен. Есть ли какая-то другая возможность, которую я здесь упускаю? Как вы думаете, что будет наиболее эффективным способом для достижения этой цели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...