Узкие места обычно бывают нескольких форм:
- Медленная или ненадежная сеть.
- Тяжелое чтение / запись на диск, поскольку дисковый ввод-вывод в 1000 раз медленнее, чем чтение или запись в память.
- Дроссель ЦП, вызванный длительным или неэффективно реализованным алгоритмом.
На это может повлиять множество вещей, в том числе запросы и индексы базы данных, количество людей, обращающихся к вашему сайту, нехватка памяти на вашем веб-сервере, много отражений в вашем коде, просто медленное оборудование и т. Д. расскажите, почему ваш сайт работает медленно, вам нужно его профилировать.
Для какой цели вы задали вопрос об архитектуре API - с точки зрения кода она выглядит хорошо. Нет ничего плохого в копировании полей из одного класса в другой, и снижение производительности, понесенное при преобразовании класса-оболочки с object
на Guid
или bool
, вероятно, будет настолько крошечным, что его можно будет пренебречь
Поскольку вы спрашивали о производительности, не очень понятно, почему вы связываете классовую архитектуру с производительностью. Есть действительно крошечные микрооптимизации, которые вы можете применить к своим классам, которые могут или не могут повлиять на производительность, но четыре или пять наносекунд, которые вы получите с этими микрооптимизациями, уже потеряны, просто прочитав этот ответ. Сетевая задержка и запросы к БД абсолютно затормозят тонкости производительности вашего API.
В комментарии вы указали ", поэтому нет проблем со статическими классами или моей основной ошибкой ". С точки зрения производительности, нет. С точки зрения веб-приложения, наверное. В частности, статические поля являются глобальными и инициализируются один раз для каждого AppDomain, а не для каждого сеанса - переменные mCurrentCultureCode
и mcurrentSiteName
соответствуют конкретным сеансам, а не глобальным для AppDomain. Я бы дважды проверил их, чтобы они правильно отображали ваш сайт, когда пользователи с разными настройками культуры одновременно получают доступ к сайту.