Имитация медленного соединения с БД - PullRequest
4 голосов
/ 01 мая 2011

Мы разрабатываем толстое клиентское приложение, которое подключается к БД SQL Server с использованием Entity Framework.

Мы, очевидно, разрабатываем с использованием локальной БД, но одно из требований заключается в том, что производительность должна быть приемлемой при работе через VPN-соединения с высокой задержкой (скажем, 200 мс) *

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

Есть идеи, как этого добиться?

sidenote: Я сделал бы это по-другому, используя сервис-ориентированную архитектуру с доступом к БД на сервере приложений и более грубыми интерфейсами, но это был не мой вызов

Ответы [ 4 ]

6 голосов
/ 01 мая 2011

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

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

2 голосов
/ 01 мая 2011

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

0 голосов
/ 02 мая 2011

Купите каждому разработчику небольшой сервер (скажем, стоечный модуль с аппаратным raid1 и 16G оперативной памяти; если у вас более нескольких разработчиков, используйте блейды).В любом случае, они должны иметь его для экспериментов.Поставьте на нее свою любимую платформу виртуализации (например, Vmware).Попросите каждого разработчика запустить несколько виртуальных машин в этой среде, одну для базы данных и одну для приложения, а также любые другие необходимые вам.Затем вы можете добавить поля для одновременной настройки задержки между сервером приложений и базой данных.

Это не является необоснованным и не потребует дополнительных лицензий на программное обеспечение;каждому разработчику нужна подписная лицензия MSDN, чтобы что-то делать в мире Microsoft.Такие подписки позволяют вам запускать в значительной степени произвольное программное обеспечение Microsoft для личного непроизводственного использования.

Получение разработчикам достойной среды разработки не дорого, и, на мой взгляд, того стоит.* Конечно, разработчики не должны проводить тестирование производительности на своей обычной платформе разработки.Для тестирования производительности требуется выделенная аппаратная среда, настроенная так же, как и рабочая.

0 голосов
/ 01 мая 2011

Если вы ищете решение для программирования и используете ObjectContext API, вы также можете проверить Оболочки EF Provider .Оболочка провайдера создает экземпляр DbCommand.Команды заключены в DbCommandWrapper, поэтому вы можете ввести простые Thread.Sleep в ExecuteScalar, ExecuteNonQuery и ExecuteDataReader.Обертки провайдера можно использовать только в тестах.

Но я согласен, что решение, предлагаемое @fvu, намного лучше и также работает с DbContext API.

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