Зачем использовать веб-сервисы вместо прямого доступа к реляционной базе данных для приложения для Android?

19

Я искал в Интернете, как эффективный доступ к центральной базе данных в удаленном месте, и я встретил предложения использовать веб-сервисы вместо прямого доступа (например, JDBC и т. Д.) К базе данных. Мне интересно, причина этого и любые другие предложения ,

yesildal
источник

Ответы:

25

Добавление уровня веб-службы дает вам возможность сделать ваш клиент более легковесным как с точки зрения требуемой мощности процессора, так и пропускной способности, используемой во время обработки. Оба фактора чрезвычайно важны для конечных пользователей:

  • Использование меньшего количества ресурсов процессора увеличивает срок службы батареи,
  • Использование меньшей пропускной способности уменьшает ежемесячные платежи для пользователей с тарифными планами

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

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

Напротив, добавление веб-службы между ними позволяет развивать интерфейс для мобильных клиентов более управляемыми способами: например, вы можете сохранить старый интерфейс на месте, добавить новый, который работает «параллельно» с ним, а затем полностью реструктурируйте свою базу данных, не нарушая ни одного клиента.

Если вы будете следовать некоторым довольно базовым принципам проектирования при разработке веб-службы, вы также сможете получить значительные преимущества, повторно использовав развитую инфраструктуру на стороне сервера, которая была создана: например, вы можете получить кеш и прокси-сервисы бесплатно.

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

dasblinkenlight
источник
1
«И с точки зрения требуемой мощности процессора и пропускной способности, используемой во время обработки», я искал ключевой момент. Спасибо
yesildal
4
Кроме того, если ваше приложение напрямую связывается с базой данных, вы просто являетесь обратным компилятором, когда кто-то отбрасывает каждую таблицу в вашей базе данных. С веб-приложением вы можете использовать гораздо более детальный контроль и останавливать подобные вещи
Earlz
1
@Earlz: не то чтобы я охотно делал это для веб-приложений, но большинство серверов баз данных имеют довольно солидные и детальные разрешения. Нет оправдания для веб-пользователя с правами на удаление таблицы.
Уайетт Барнетт
1
@WyattBarnett хорошо ... без хранимых процедур и тому подобного, как бы вы позволили пользователю обновить свой профиль пользователя? разрешение на чтение / запись в таблицу USERS ... Что бы помешало им удалить или отредактировать не принадлежащие им строки ... или даже прочитать не принадлежащие им строки. Я почти уверен, что ни у одного сервера баз данных нет такого мелкого зерна без использования хранимых процедур или чего-то подобного
Earlz
@Earlz - не все, о чем я знаю, но это не главное - почему вы собираетесь напрямую общаться с вашей базой данных и намеренно игнорировать функции базы данных, чтобы сделать это вменяемым? И вы бы сделали что-то профильно-ориентированное и обновили бы таким образом?
Уайетт Барнетт
13

Он помещает слой абстракции между приложением и БД. Это дает вам много преимуществ, таких как:

  • Ограничение доступа к БД только теми частями, которые нужны приложению. Это одновременно упрощает код приложения и обеспечивает безопасность вашей БД.
  • Относится к внутренней работе БД, поэтому, если вы позже решите изменить свою схему, запросы или даже всю базу данных, ссылка на ваше приложение не будет нарушена, если вы правильно поддерживаете средний уровень.
  • Это позволяет вам добавить функциональность за пределы БД. Например, кеширование данных довольно постоянное. Бизнес-правила - это еще одна часть, которая должна быть отделена от БД.
Система не работает
источник
1
Еще одним преимуществом является то, что он позволяет вам добавлять кеш, как на стороне клиента, так и на стороне сервера (или и то и другое, для разных целей).
TMN
@ TMN - Хороший вопрос!
Система
Хорошо, но эти факты действительны и для любого типа веб-приложений, не так ли? Увеличивает ли вставка слоя (веб-сервисы) время отклика для мобильного приложения, которое должно быстро реагировать?
Yesildal
1
@yesildal - Да, они все еще в силе. На самом деле они действительны для всех типов приложений. Однако в веб-приложениях вам не нужно использовать веб-сервисы, а просто изолировать эти функции в их собственную сборку (например). Причина использования веб-служб для удаленных приложений (например, телефонных приложений) заключается в том, что сервер БД не находится в непосредственной близости.
Система
@yesildal - производительность: не совсем, если у вас 1 пользователь, тогда да, будет дополнительная задержка в возврате результата, но если у вас миллион пользователей, то все по-другому, и разделение кода на 2 сервера может сделать общая производительность быстрее.
gbjbaanb
4

Еще одна причина не выставлять БД напрямую - транспорт. Большинство реляционных баз данных, с которыми вы общаетесь с JDBC, вообще не предназначены для публичного интернета. Беспроводной интернет - ужасно ненадежный конец общедоступного интернета. Обработка исключений была бы кошмаром, и вы, вероятно, в конечном итоге написали бы обратный слой веб-сервисов внутри своего приложения, чтобы избежать потери транзакций.

Есть несколько новых видов баз данных, которые говорят на HTTP и могут быть подходящими для такого рода вещей. Они также склонны предлагать способы размещения своего рода кода приложения в базе данных. Возможно, вы захотите взглянуть на CouchDb или RavenDb - обе базы данных документов с возможностями сопоставления / сокращения, которые работают через json и http, очень похожи на многие современные веб-сервисы.

Уайетт Барнетт
источник