Статические методы против нестатических методов в .Net - PullRequest
0 голосов
/ 28 мая 2018

Я работаю с API в .Net Core, и недавно у меня возникла ситуация, когда бизнес-уровень был со всеми статическими методами.Какие проблемы это может вызвать?

  • Когда у API есть запрос, он создает новый поток, правильно?И тогда статические методы займут вдвое больше памяти?
  • Может ли быть потеря производительности?Поскольку между потоками будет больше параллелизма, и, в зависимости от процессора машины, это будет критически важно.
  • Память будет освобождена после смерти приложения.То есть когда-либо будет занимать дополнительную часть памяти, пока приложение работает.

1 Ответ

0 голосов
/ 28 мая 2018

Для предоставления услуг через API вы не можете объявлять ваши методы (конкретные действия) статически;потому что контекст API или, точнее говоря, контроллер должен быть инициализирован (для каждого запроса) для предоставления услуги (получить входящий запрос и записать ответ обратно в http-контекст).

Но если API не тот случай, объявление статического метода на самом деле поможет вам с производительностью, так как его можно вызывать статически и без необходимости создания экземпляра объекта.Тем не менее, это не очень хороший дизайн (да и не плохой).Важно то, что вы должны хорошо проанализировать сценарий, чтобы определить, действительно ли вы можете использовать преимущества модульности, получаемой за счет функционального программирования, а не объектно-ориентированного подхода.

Чтобы разбить его более технически для вас, существует шаблон проектирования, обычно известный как шаблон Singleton, в котором объект создается только один раз в течение жизненного цикла программы, и один экземпляр используется совместно.со всеми сущностями, пытающимися получить доступ к типу.Это сказал;это совсем не плохо, но, повторюсь, вы должны хорошо проанализировать сценарий.

Например: контекст структуры одноэлементного объекта - плохая идея, потому что контекст может быть ликвидировани вы потеряете все изменения, данные отслеживания и т. д. С другой стороны, единый контекст ADO.Net является хорошей идеей, если вы следуете концепции единой ответственности за каждый из ваших статических методов.

...