Почему парадигма «прямого подключения к базе данных» не приветствуется платформой Android? - PullRequest
3 голосов
/ 28 января 2011

Когда я говорил «прямое соединение с базой данных», я имел в виду использовать JDBC-подобный драйвер для вызова и выполнения запроса к удаленной базе данных в контексте действия, точно так же, как использование базы данных SQLite для хранения локальных параметров.

Пока я не понял, что едва могу найти какие-либо учебные пособия или документы в Интернете относительно этого способа подключения к базе данных, я думал, что независимо от нестабильной сети Wi-Fi / 3G, которую используют большинство, если не все устройства Android, для подключенияк базе данных должно быть сделано так.

Даже в Android SDK, только локальный доступ к базе данных (он же android.database.sqlite) поддерживается внутренне.И в описании java.sql API указано, что вы должны предоставить свой собственный драйвер JDBC для использования этого API.

Тогда я начал понимать, еслиМое намерение напрямую подключить базу данных неверно, во-первых, в области Android.

Я прочитал много книг, вики и форумов, включая многочисленные ответы, представленные на Переполнение стека.Мне кажется, что многие люди сосредотачиваются на том, чтобы что-то сделать, и обсуждения начинались с «Как я могу разработать веб-сервис RESTful для моего устройства Android?».Тем не менее, мне нужно полное понимание!И мне также нужны авторитетные цитаты из оригинальных разработчиков Android.

Ответы [ 2 ]

9 голосов
/ 28 января 2011

Несколько причин (но не почти все):

  1. Не существует: на Android нет (поддерживаемых) драйверов JDBC.

  2. Аутентификация: вы хотите, чтобы пользователи в публичной сети проходили аутентификацию:

    A.Каждый пользователь должен иметь свои собственные учетные данные (в той или иной форме) при общении с вашими серверами.Если в вашем приложении запечено одно имя пользователя / пароль, возникнут проблемы.

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

  3. Стандартный протокол: если вы хотите убедиться, что ваше приложение работает во всех сетях (особенно в закрытых корпоративных сетях), вам нужно использовать HTTP/ HTTPS.Это единственный протокол, который работает (почти) везде.

  4. Разделение на бизнес-логику: если вы поддерживаете разные платформы устройств (Android, iPhone и т. Д.), То разумно вести весь бизнеслогика на сервере.Вместо того, чтобы вызывать JDBC и затем выполнять бизнес-логику на устройстве, вы должны сделать это на сервере.Таким образом, вы будете соответствовать DRY (не повторяйтесь), а также вам будет проще провести модульное тестирование.

3 голосов
/ 28 января 2011

Я думал, что независимо от нестабильной сети Wi-Fi / 3G, которую использует большинство, если не все устройства Android, подключение к базе данных должно быть сделано следующим образом.

Выдобро пожаловать на ваше мнение.Я категорически не согласен с вами.JDBC и аналогичные протоколы предназначены для надежных локальных сетей с низкой задержкой, а не для ненадежных мобильных сетей с высокой задержкой.Более того, вам нужно, чтобы ваша база данных была видна в общедоступном Интернете, а это значит, что она будет подвержена хакерам.

...