@hax
junior developer

Стоит ли использовать рефлексию при вычислениях на сервере?

Привет!
Имеется сервак, написанный на ASP.NET Core 2.0. Нужно написать HTTP-GET метод, которому в теле запроса будет приходить один параметр orderColumn="Name". Этот метод будет обращаться к базе данных, получать все данные из нее, а затем будет сортировать по полю, которое пришло в теле запроса orderColumn="Name". В сети нашёл библиотеку System.Linq.Dynamic, которая расширяет интерфейс IEnumerable, добавляя метод OrderBy, который в качестве параметра принимает строку с названием поля. Т.е. предположим имеется класс:
class Person
{
      string Name { get; set; }
      int Age { get; set: }
}

И имеется список IEnumerable listOfPerson.

Значит listOfPerson.OrderBy("Age") вернет отсортированный список по полю Age.
Стоит ли использовать вот такую рефлексию на сервере или же стоит вручнуть парсить входящую строку?
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 3
  • @yarosroman
    Люблю C#
    В вашем же случае, на вашем месте, я бы сначала узнал значение слова "Рефлексия". Даже ссылочку дам вам https://metanit.com/sharp/tutorial/14.1.php. Зачем использовать слишком общий тип IEnumerable и подключать непонятные либы, когда в Linq все уже есть.
    Ответ написан
  • Используй orderColumn как параметр сортировки в запросе к БД, а не после получения всех данных в LINQ OrderBy. Это не только увеличит производительность, избавив от рефлексии, но и уменьшит размер кода.
    Ответ написан
  • mindtester
    @mindtester
    1 - System.Linq.Dynamic синтаксический сахар а не ускорение
    2 - Linq... вообще.. будете смеяться или забрасывать тухлыми яйцами... см пп1 ))

    это классная штука, но в смысле облегчения работы ))

    выигрыш в скорости реально дают:
    - массивы
    - структуры (да да, против обьектов)
    - поколоночная обработка...

    но за все это надо платить напряжением мозга... ))
    надо отметить что синтаксического сахара в C# очень много... в тч для массивов... а еще я очень люблю расширения.. (легко траснграничичить между классами объявления и применения)
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы