Разумно ли подключать настольный клиент напрямую к MySQL? - PullRequest
6 голосов
/ 25 июня 2009

Я пишу клиентское приложение на рабочем столе Java, которое извлекает данные с удаленного сервера MySQL. В целях разработки у меня было подключение к серверу MySQL напрямую (то есть с DriverManager.getConnection (databaseURL) и т. Д.), Но я собирался перейти на использование веб-службы (после того, как она была построена). У меня вопрос, не могу ли я просто продолжить прямое соединение?

Что веб-сервис даст мне, кроме как написать больше кода? Я должен был бы реализовать мою собственную аутентификацию; что плохого в том, чтобы полагаться только на MySQL?

(Я формулирую этот вопрос скорее отрицательно, потому что я понимаю, что в наши дни эта парадигма несколько не одобряется; вот почему я действительно спрашиваю об этом, потому что мне кажется, что это совершенно нормально делать.)

Спасибо за любую информацию, которую вы можете мне дать!

Ответы [ 6 ]

3 голосов
/ 25 июня 2009

Несколько причин (в произвольном порядке):

  • Изменение бизнес-логики только в одном месте, изменения схемы базы данных не влияют на клиентов (только на службу)
  • Система авторизации MySQL довольно грубая
  • Более безопасный, поскольку вам не нужно открывать свою БД для внешнего мира
  • Веб-службы работают через стандартные HTTP-порты, меньше проблем с брандмауэрами
  • Нет необходимости устанавливать драйверы ODBC

Конечно, веб-сервисы не являются универсальной панацеей. Некоторые из вышеперечисленных могут не применяться в вашем конкретном сценарии, используйте то, что лучше для вас.

2 голосов
/ 25 июня 2009

Ну, пока вы предоставляете клиенту пользователя только с правильными правами доступа, я не вижу ничего неправильного с подключением напрямую к MySQL. Возможно, если у вас будет много и много запущенных этих клиентов, которые будут поддерживать множество соединений с MySQL открытыми, в то время как веб-служба может использовать одно соединение и обрабатывать нагрузку со всех клиентов.

Истинная полезность веб-службы - это когда у вас много бизнес-логики, которой нет в базе данных. Поместить эту логику в клиент - очень плохая идея, потому что пользователи могут запускать устаревшие версии и так далее. Кроме того, веб-служба позволяет вам иметь различные типы клиентов (например, клиент Windows, веб-клиент и т. Д.) Без необходимости переписывать какую-либо логику, кроме представления.

0 голосов
/ 24 января 2010

Больше вопроса, чем ответа, каковы значения скорости между двумя подходами? то есть прямое подключение к MySQL или использование веб-службы

0 голосов
/ 25 июня 2009

Подключение напрямую к базе данных влечет за собой, очевидно, наличие интерфейса к вашей базе данных, напрямую доступного из Интернета. Это означает, что, если вы не будете очень осторожны с настройкой своих разрешений, вы можете сделать всю базу данных уязвимой для атаки. Принимая во внимание, что с веб-службой единственный доступ, который любой пользователь может иметь к базе данных, является доступом / функциональностью, которая доступна через веб-службу. Я бы сказал, что надлежащая защита и поддержка базы данных MySQL, открытой в сети, - это больше хлопот, чем дополнительный код, связанный с созданием уровня аутентификации веб-службы.

Плюс, если вам нужно каким-либо образом изменить таблицы, вам придется обновлять клиентские приложения вместо простого обновления веб-службы, если ваши запросы генерируются клиентом.

0 голосов
/ 25 июня 2009

Это относится к другим ответам, но учтите, что если вы разрешите клиентам подключаться напрямую к центральному серверу, это даст им необходимые учетные данные для запуска любого запроса в базе данных, в которой они работают. Я не уверен, как хорошо, в MySQL есть поддержка для ограничения использования ресурсов, но я держу пари, что прямо сейчас определенный клиент может подключиться к вашему серверу баз данных и запустить настолько плохо написанный запрос, что он поставит ваш сервер БД на колени. Они не обязательно делают это со злым умыслом, возможно, они просто пытаются реализовать дополнительную функцию, о которой вы не задумывались.

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

0 голосов
/ 25 июня 2009

Веб-сервис позволит вам кэшировать данные, уменьшая нагрузку на базу данных. Это также облегчит передачу данных из вашей системы в другие системы. Другое дело, гибкость - с веб-сервисом в качестве другого уровня вы можете изменить строку подключения / изменения схемы для всех клиентов в одном месте, вам не нужно будет распространять клиент.
Вам когда-нибудь понадобится что-нибудь из этого? Как вы говорите, я обычно не хожу за парадигмами, но думаю, что веб-сервис может иметь смысл. Тем не менее, только вы знаете дизайн вашего приложения: сколько людей будет использовать этот клиент? Требуется ли для подключения к серверу MySQL какое-либо специальное программное обеспечение / конфигурации на клиентском компьютере? (Oracle, например).

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