Насколько дорого обходится использование MarshalByRefObject по сравнению с сериализацией?

В моем коде веб-роли Azure у меня есть класс CustomIdentity , производный от System.Security.Principal.IIdentity . В какой-то момент среда выполнения .NET пытается сериализовать этот класс , и сериализация не работает . Пытаясь решить эту проблему, я много искал и нашел этот ответ и попытался унаследовать мой класс от MarshalByRefObject .

Теперь, когда мой класс CustomIdentity наследуется от MarshalByRefObject больше нет попыток сериализации, и мой код работает. Однако я хотел бы знать, как влияет на производительность использование класса MarshalByRefObject .

Мой код работает следующим образом. Сначала запрос поступает в IIS и передается коду аутентификации, который создает экземпляр CustomIdentity и присоединяет этот экземпляр к контексту HTTP. Затем через некоторое время тот же HTTP-контекст передается обработчику ASP.NET, который обращается к этому экземпляру CustomIdentity не более одного раза. Объект CustomIdentity существует на время запроса и затем уничтожается.

Теперь с сериализацией мой CustomIdentity будет сериализован в поток, а затем десериализован из этого потока в новый объект . При использовании MarshalByRefObject сериализации нет, но создается прокси, и доступ будет маршалироваться через RPC туда, где находится фактический объект.

Насколько дорого будет использование MarshalByRefObject в этом сценарии? Что - MarshalByRefObject или сериализация - будет дороже?

7
задан Community 23 May 2017 в 11:54
поделиться