Подтвердить что ты не робот

Недостатки маркировки класса как Serializable

Каковы недостатки маркировки класса как сериализуемые?

Мне нужно сохранить мой сеанс asp.net в db, и это требует, чтобы объекты в сеансе были сериализованы.

Имеет смысл.

Но оказывается, что все, что мне нужно было сделать, это украсить этот класс атрибутом [Serializable], и это сработало, поэтому это означает, что у .NET уже есть базовая инфраструктура, чтобы сделать классы сериализуемыми. Так почему же он не может это сделать по умолчанию?

Что нужно отметить как таковое?

4b9b3361

Ответ 1

Так почему же он не может это сделать по умолчанию?

Автоматическая сериализация/десериализация может быть недостаточной для объекта. Например, объект может содержать поле, в котором содержится имя локального файла, указатель на память, индекс в общий массив и т.д. Хотя система может типично сериализовать эти необработанные значения без проблем, десериализация может легко привести к чему-либо это неприменимо. В целом, система не может сама это понять. Чтобы указать класс с Serializable, вы указываете, что вы учли эти соображения.

Ответ 2

С точки зрения недостатков, основным недостатком сериализации является накладные расходы на производительность (как процессор, так и диск) и возможные проблемы с задержкой при отправке по кабелю. Могут быть некоторые проблемы с безопасностью, поскольку в целом сериализация XML небезопасна, поскольку она работает только с общедоступными свойствами и классами, заставляя вас в некоторых случаях подвергаться воздействию свойств, которые могут быть иными. Конечно, если безопасность действительно вызывает беспокойство, вы, вероятно, не будете хранить слишком чувствительные данные в сеансе.

Если вы используете Silverlight, одним из потенциальных недостатков является то, что Silverlight не поддерживает атрибут [Serializable], поэтому любые классы, украшенные им, непригодны для ваших сборок Silverlight.

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