SQL Azure против производительности WCF - PullRequest
4 голосов
/ 10 мая 2011

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

  1. Подключается к службам WCF для доступа к данным, работающим в облаке, и подключается к локальной базе данных SQL. Для примера скажем, что это служба данных WCF с базовой моделью Entity Framework, которая подключается к базе данных SQL в Azure.

  2. Подключается напрямую к экземпляру SQL Azure с клиента. Для примера предположим, что это те же самые запросы и модель Entity Framework, что и выше, но они подключаются напрямую к экземпляру SQL Azure, а не через службу данных WCF.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Я бы определенно рекомендовал вам использовать WCF + SQL Azure.

. Одна из основных идей SOA состоит в создании более объемных, а не болтливых интерфейсов.Это особенно актуально, когда хостинг в облаке, так как ваш клиент не близко к данным.

Если у вас есть сложные бизнес-объекты для заполнения, вам может потребоваться выполнить несколько запросов.Используя службы WCF для связи с SQL Azure, вы можете выполнять все эти запросы в среде Azure и сводить к минимуму количество обращений в Интернет.

Конечно, делать это таким образом дороже, но он масштабируется лучше, поскольку уровень сервисов можно масштабировать.

Это дает ряд больших преимуществ.

  • Разделение между клиентом и базой данных (структура данных может быть обновлена ​​без изменения клиента).
  • Какследствие 1, если вам нужно огородить базу данных, которую вы можете.
  • Если вам нужно обновить позже до SQL Azure Federations (когда она выйдет), тогда вы можете.
  • У вас есть простойперехватить, если вы хотите использовать Azure Caching.
  • Безопасность (1) Ваша база данных остается за брандмауэром.
  • Безопасность (2) Вы можете аутентифицировать каждый запрос, а не просто при подключении.
  • Безопасность (3) Если вы имеете дело с хранилищем документов / блобов, вам не нужно предоставлять клиенту ключи своей учетной записи хранения.

Я управляю несколькими достаточно большимимультитенантные системы с вашей архитектурой WCF + SQL Azure на серверной части, и она работает фантастически хорошо.

Сам по себе SQL Azure хорошо работает в Интернете, и я даже рад запускать свои базы данных Dev в Azure, но я не думаю, что это хороший выбор для производственного приложения.

Надеюсь, это поможет.

1 голос
/ 10 мая 2011

Это имеет несколько аспектов:

  • Производительность
  • Стоимость
  • Безопасность

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

По стоимости Для вашего первого варианта потребуется дополнительный экземпляр для запуска служб WCF, следовательно, больше затрат.

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

1 голос
/ 10 мая 2011

Я не делал тесты сам, если мы посмотрим на это логически.

Вы спрашиваете, что быстрее SQL Azure(S) + Entity Framework (EF) + WCF или S + EF.

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

Вне зависимости от скорости, я не думаю, что это стоило бы усилий для создания роли веб / работникапросто чтобы разместить этот сервис WCF.Для базы данных объемом 10 ГБ вы бы более чем удвоили стоимость размещения базы данных и добавили бы уровень сложности, который кажется неоправданным.

Если у вас уже есть роль, которую имеет смыслпри включенном WCF это может иметь смысл с точки зрения проектирования, и я не думаю, что это слишком сильно повлияет на производительность (в зависимости от используемого метода транспорта и безопасности).

...