Что лучше: {REST API, веб-сайт} -> {база данных} или {веб-сайт} -> {REST API} -> {база данных}? - PullRequest
2 голосов
/ 27 июля 2011

У меня есть продукт, который собирает и отображает измерения всех видов (не буду вдаваться в него). Часть отображения, как и следовало ожидать, представляет собой базу данных + веб-сайт, построенный поверх него (с Symfony).

Тем не менее, мы, вероятно, создадим API для предоставления данных третьим сторонам.

Теперь у нас есть выбор: и веб-сайт, и API-интерфейс поверх базы данных, или просто построить API-интерфейс сверху, и веб-сайт должен реализовывать API.

Я бы предпочел последнее, поскольку в противном случае мне придется адаптировать оба слоя модели для API и веб-сайта каждый раз, когда изменяется схема (что может быть несколько раз). Если у меня есть последнее, у меня, очевидно, есть преимущество только в адаптации модели API. Если контракт API остается прежним, веб-сайт не нуждается в адаптации.

Однако, очевидно, есть недостатки в производительности. С базой данных веб-сайта <-> и базой данных веб-сайта <-> API <-> очевидно, что первая будет самой быстрой.

Мой вопрос: как вы относитесь к этому компромиссу? Я надеюсь, что производительность может быть практически выровнена, так как все машины будут в одной локальной сети + будет кеширование. Если это так, то простота разработки наверняка облегчит мне жизнь: -)

Ждем ваших мнений и опыта!

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

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

3 голосов
/ 27 июля 2011

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

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

1 голос
/ 27 июля 2011

Многие современные веб-сайты используют JavaScript (AJAX и т. Д.), А затем совершают сервисные вызовы API. Если вы воспользуетесь этим подходом, у вас просто будет тщательно разработанный, многократно используемый слой API перед вашей БД.

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

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