2013-07-11 3 views
1

В asp.net/c#, в качестве решения на стороне сервера, где несколько человек подключаются к сайту, у меня есть несколько классов. Однако, если они оставлены не статичными, я создаю только один из этих объектов. Я хочу знать, эффективнее ли это сделать их статические классы или оставить их нестационарными и создать объект 1 и использовать его.Насколько эффективны статические классы, чем нестатические классы в C# asp.net?

Спасибо.

+0

Вы могли бы рассмотреть возможность использования Dependency Injection. http://en.wikipedia.org/wiki/Dependency_injection – Win

+2

Они делают совершенно разные вещи, поэтому сравнение их производительности не имеет особого значения. Либо вам нужно иметь экземпляр типа, потому что вы используете поля экземпляра, а методы должны быть нестатическими или не зависят от полей экземпляра, и они должны быть статичными * независимо * от производительности, поскольку нет зависимости там. Только один из двух фактически представляет то, что вы делаете, используйте то, что есть. Использование «другого» варианта, когда это не имеет смысла, не стоило бы делать, даже если бы оно имело незначительную разницу в производительности. – Servy

+0

Более эффективен чем? Что такое «эффективность»? Другие показатели могут быть более важными. Поднимаемость, удобочитаемость и расширяемость приходят в голову. – spender

ответ

1

Статические классы будут быстрее. Слегка. Но нестатические классы дают вам огромную гибкость, и было бы позором отказаться от него. Вы, возможно, никогда не будете нуждаться в нем, но приятно знать, что это есть, если вы это сделаете.

Примеры:

Вы могли бы когда-нибудь хотите две или более копий одного из этих классов. То, что сегодня представляет собой ваша вселенная, может быть небольшой частью системы завтрашнего дня. Что сегодня является ВС, завтра, только одна из 100 000 звезд.

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

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

(И там обязательно будет много других хороших причин, тоже.)

2

Класс и статический класс не являются взаимозаменяемыми.

Ваши статические классы разделяются между запросами на ваш сервер. Они также живут до тех пор, пока домен приложений.

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

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

Смежные вопросы