2009-11-24 3 views
1

Я написал специальный приемник для форматирования удаленных приложений для установленного приложения. Форматирует, по-видимому, работает в большинстве случаев, пока я не попытаюсь использовать его для вызова удаленного метода, к которому я передаю обратный вызов CAO. На этом этапе я получаю исключение SerializationException, указывающее, что я пытаюсь сериализовать CAO, что явно не то, что я хочу сделать. CAO наследует от MBRO, а сроки жизни объекта не вступают в игру на этом этапе..Net Remoting - Сериализация делегатов

Кто-нибудь знает, как я могу сериалировать входящий IMessage в своем форматировании таким образом, чтобы сохранить ссылку на CAO? Я предполагаю, что мне нужно пройти графический объект, преобразовывая CAO в ObjRef, который затем может быть сериализован, но моя проблема более фундаментальна, поскольку у меня нет конкретного «сообщения» для сериализации, а только для сообщения IMessage. Я бы предпочел не использовать рефлексию.

Я знаю о WCF, но не хочу переходить на него на данном этапе, так как приложение довольно велико.

ответ

1

Отличная статья о Codeproject, которая может предоставить вам answers, который вы ищете. Реализация событий/делегатов в удалении очень сложна, и обходной путь также сложно реализовать. Лучший сайт, чтобы прочитать об этом, это чувак, Ingo Rammer, который написал и создал отличную книгу о удалении. Я использовал GenuineChannels в прошлом, чтобы обойти использование ограничения обработки событий, обнаруженного в стандартном удалении .NET, и это действительно работает. Однако GenuineChannels, похоже, уже в беде ...

Надеюсь, это поможет, С уважением, Tom.

+0

Спасибо за ваш ответ. Однако моя проблема заключается не в использовании удаленного доступа. Скорее, это связано с проблемами, связанными с реализацией моего пользовательского приемника форматирования при сериализации сообщений, содержащих удаленные вызовы методов, где один или несколько аргументов являются делегатами в CAO (т. Е. Обратный вызов клиенту). У меня есть книга Инго, и хотя это хорошая рекомендация, она не содержит ответа на мой вопрос. – Roy