Веб-портал, получающий данные из веб-службы или базы данных - шаблон архитектуры

Я работаю над проектом, который в настоящее время построен на следующей архитектуре:

1) Первое решение

  • Проект, который имеет всю логику базы данных (DAL) на основе Entity Framework 5
  • Проект WebAPI, отвечающий за передачу данных в клиентский веб-портал и приложения для смартфонов

2) Второе решение

  • Проект MVC4, который служит клиентским веб-порталом

Клиентский веб-портал и WebAPI находятся на одном сервере. WebAPI напрямую обращается к базе данных, а клиентский веб-портал обращается к ней через WebAPI. Причиной выбора этой архитектуры является сокращение времени разработки, поскольку веб-портал и приложения для смартфонов используют 85% тех же веб-служб. Тем не менее, я очень обеспокоен тем, насколько хорошая архитектура производительности. Я думаю, что клиентский веб-портал должен иметь прямой доступ к базе данных, и это будет более эффективным способом.

Есть мысли по этому поводу?

1 ответ

Решение

Архитектура всегда сложна, и это всегда компромисс между различными факторами, такими как скорость разработки, ремонтопригодность, производительность и масштабируемость. Итак, вам нужно взвесить все за и против.

Доступ к БД через WebAPI

1 Определенно вносит некоторые накладные расходы в производительность. А сколько? Предположим, что прохождение вашего вызова через дополнительную оболочку (WebAPI) обойдется вам примерно в 2-3 дополнительных миллисекунды на вызов и примерно в 200 МБ дополнительного ОЗУ. Я думаю, это не настоящая проблема, но вы лучше знаете все детали, и это зависит от вас.

2 Это решение может получить некоторые преимущества от использования кэша. Если вы настроите IIS для кэширования запросов к WebAPI, то оба: клиенты и портал WebAPI повысят производительность.

Доступ к БД через DAL напрямую

1 Теоретически, вы вводите две точки входа в свою БД, о которых нужно позаботиться. Что если вам нужно добавить некоторую логику, которая должна использоваться клиентом WebAPI и вашим порталом, и эта логика зависит от сети (например, что-то, связанное с пользовательскими сеансами)? Не следует добавлять его в DAL, вместо этого вам нужно добавить еще один слой с другой библиотекой, которая будет использоваться как: WebAPI, так и вашим порталом. И если ваша единственная точка доступа - это WebAPI, вы можете изменить только WebAPI, чтобы получить результат.

Подвести итоги:

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

Другие вопросы по тегам