В моем коде веб-роли Azure у меня есть класс CustomIdentity
, полученный из System.Security.Principal.IIdentity
.В какой-то момент .NET runtime пытается сериализовать этот класс , и сериализация не будет работать .Пытаясь решить, что я много искал и нашел этот ответ и попытался унаследовать свой класс от MarshalByRefObject
.
Теперь, когда мой CustomIdentity
класс наследует отMarshalByRefObject
больше нет попыток сериализации, и мой код работает.Однако я хотел бы знать о влиянии на производительность использования класса MarshalByRefObject
.
Мой код работает следующим образом.Сначала запрос поступает в IIS и передается в код аутентификации, который создает экземпляр CustomIdentity
и присоединяет этот экземпляр к контексту HTTP.Затем через некоторое время тот же HTTP-контекст передается обработчику ASP.NET, который обращается к этому экземпляру CustomIdentity
не более одного раза.Объект CustomIdentity
живет в течение запроса и затем уничтожается.
Теперь при сериализации мой CustomIdentity
будет сериализован в поток, а затем десериализован из этого потока в новый объект.С MarshalByRefObject
нет сериализации, но создается прокси, и доступ будет перенаправлен через RPC туда, где находится реальный объект.
Насколько дорого будет использование MarshalByRefObject
в этом сценарии?Какой - MarshalByRefObject
или сериализация - будет дороже?