Статический метод C# и экземпляр объекта

В настоящее время я разрабатываю веб-API C# MVC REST и пытаюсь выбрать один из двух возможных вариантов для нашего проекта

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

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

Каковы соображения производительности между созданием нескольких недолговечных объектов при каждом запросе и вызовом статических методов?

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

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

Соответствующая информация об ожидаемых нагрузках:

  • Время отклика в диапазоне 300–800 мс
  • Средняя нагрузка около 2000 веб-клиентов
  • Пиковая нагрузка около 4000 клиентов
  • Клиенты выполняют запросы каждые 2–5 секунд
  • Пиковая скорость клиента: 1 запрос в секунду

Кроме того, каждый DataSourceсоздает максимум 8, в среднем 3 таких экземпляра.

5
задан Chris Case 26 May 2012 в 01:27
поделиться