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