Толстый клиент WinForm:Архитектурные решения:Я сделал что-то не то?

StackOverflow https://stackoverflow.com/questions/1219659

Вопрос

У меня есть fat-клиент .NET Winform с одним щелчком мыши, который взаимодействует с тремя базами данных, двумя базами данных SQL Server и одной Oracle.

Первую базу данных SQL Server я вызову Master.Я хотел добавить больше таблиц и столбцов в основную базу данных, но мне сказали, что мне не будут предоставлены права на это, что это не подлежит обсуждению.Итак, я решил добавить новую базу данных SQL Server, которую я буду называть базой данных расширений для хранения дополнительной информации, которую я хотел бы поместить в Master.

Поскольку у меня не было прав размещать базу данных расширения на том же сервере, что и Master, я создал базу данных расширения на другом сервере и создал ссылку db с сервера базы данных расширения на сервер базы данных Master.Это позволило мне выполнять запросы, охватывающие две базы данных.У меня также была третья база данных, Oracle, к которой я время от времени подключался.

Поскольку я думал, что для подключения к базе данных Oracle требуется установка драйверов Oracle, которых вряд ли будет на компьютере конечного пользователя, я решил, что клиент WinForm вызовет веб-службу, и веб-служба вернет результаты.Ради согласованности и потому, что интуиция подсказывала мне, что операции доступа к базе данных должны выполняться из одного места, я применил тот же подход, когда клиенту fat понадобилось связаться с базами данных SQL Server, а именно, они прошли через веб-службу.

Теперь я задаюсь вопросом, не слишком ли сильно снижаю производительность, сначала вызывая веб-сервер, а затем заставляя веб-сервер вызывать базу данных вместо того, чтобы открывать соединение на КОМПЬЮТЕРЕ пользователя в fat-клиенте и подключаться напрямую к базам данных SQL Server.Обратите внимание, что приложение, о котором я говорю, является неофициальной утилитой, которой необходим доступ к этим трем производственным базам данных, но ей не разрешено фактически запускаться в рабочей среде, поэтому я подозреваю, что обычные высокоскоростные каналы между моим веб-сервером разработки и производственной базой данных здесь неприменимы.

Для достижения наилучшей производительности должно ли мое приложение Winform устанавливать соединение непосредственно с базами данных SQL Server?Каковы эти компромиссы?

Верно ли сегодня, что для подключения к базе данных Oracle требуются дополнительные драйверы или все это уже есть в .NET Framework, и я мог бы подключиться напрямую даже к базе данных Oracle, если бы захотел?

Кроме того, я обнаружил, что использование сервера ссылок происходит медленнее, чем создание двух отдельных подключений к БД и объединение данных вместе.Мои наилучшие результаты были получены, когда я инициировал два запроса a-sync, а затем объединил данные вместе, как если бы они были возвращены одним запросом с использованием ссылки на базу данных.Однако это приводит к проблемам с обслуживанием и заставило меня пожалеть об этом подходе, когда мне понадобилось изменить SQL do joins для разных баз данных.

Это было полезно?

Решение

Я занимаюсь разработкой корпоративных приложений уже пару лет, и это навело меня на мысль, что средний уровень (веб-сервисы в вашем случае) всегда имеет смысл, и прямое подключение к БД из пользовательского интерфейса всегда является НЕТ для меня.Я не думаю, что вы приняли неправильное решение.В долгосрочной перспективе наличие среднего уровня действительно имеет большой смысл.Также обратите внимание, что созданный вами веб-сервис может использоваться различными приложениями.

Другие советы

Я не знаю ваших требований к производительности, но веб-служба wcf работает быстро. Я не вижу ничего плохого в наличии среднего уровня (вашего веб-сервиса) для доступа к базе данных. Это также очень безопасно.

Я думаю, что если вы настроили сервер Oracle как связанный сервер на своем сервере SQL, вам не нужны отдельные драйверы Oracle. Вы можете просто использовать свой SQL-сервер в качестве источника данных.

Попробуйте создать хранимые процедуры, чтобы получить более быстрый результат. Если вы используете SQL Management Studio, вы можете проверить план выполнения, чтобы оптимизировать хранимые процедуры (настроить индексы).

Я не думаю, что в этом сценарии нужны веб-сервисы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top