У меня есть полнофункциональный клиент .NET Winform Click-Once, который взаимодействует с тремя базами данных, двумя базами данных SQL Server и одной Oracle.
Первую базу данных SQL Server я назову Мастером. Я хотел добавить больше таблиц и столбцов в базу данных Master, но мне сказали, что мне не дадут права сделать это, потому что это не подлежит обсуждению. Итак, я решил добавить новую базу данных SQL Server, которую я назову базой данных Extensions, чтобы хранить дополнительную информацию, которую я хотел бы разместить в Master.
Поскольку у меня не было прав на размещение базы данных Extension на том же сервере, что и у Master, я создал базу данных Extension на другом сервере и создал ссылку на базу данных с сервера базы данных Extension на сервер базы данных Master. Это позволило мне выполнять запросы, которые охватывали две базы данных. У меня также была третья база данных, Oracle, к которой я иногда подключался.
Поскольку я думал, что для подключения к базе данных Oracle требуется установка драйверов Oracle, которые вряд ли будут установлены на компьютере конечного пользователя, я решил, чтобы клиент WinForm вызвал веб-службу, и веб-служба выдаст результаты. В целях обеспечения согласованности и того, что моя интуиция говорила мне, что операции доступа к базе данных должны выполняться из одного места, я использовал тот же подход, когда толстому клиенту нужно было общаться с базами данных SQL Server, а именно, они проходили через веб-сервис.
Теперь я задаюсь вопросом, слишком ли сильно я страдаю от снижения производительности, когда мне сначала приходится вызывать веб-сервер, а затем веб-сервер вызывает базу данных вместо того, чтобы открывать соединение на ПК пользователя в толстом клиенте и подключаться к нему. непосредственно в базы данных SQL Server. Обратите внимание, что приложение, о котором я говорю, является неофициальной утилитой, которой требуется доступ к этим трем рабочим базам данных, но на самом деле она не разрешена для запуска в работе, поэтому я подозреваю, что обычные высокоскоростные каналы между моим веб-сервером разработки и производственной базой данных не применимо здесь.
Для достижения наилучших результатов, должно ли мое приложение Winform устанавливать соединение непосредственно с базами данных SQL Server? Каковы компромиссы?
По-прежнему ли верно сегодня, что для подключения к базе данных Oracle необходимы дополнительные драйверы, или все это теперь в .NET Framework, и я мог бы подключиться напрямую даже к базе данных Oracle, если бы захотел?
Кроме того, я обнаружил, что использование сервера ссылок медленнее, чем создание двух отдельных соединений БД и объединение данных в пул. Мои лучшие результаты были получены, когда я инициировал два запроса a-sync, а затем объединил данные, как если бы они были возвращены одним запросом с использованием ссылки db. Однако это приводит к проблемам с обслуживанием и заставляет меня сожалеть о таком подходе, когда мне нужно было изменить объединения SQL в разных базах данных.