Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Convert Remoting to WCF


Автор: Moid 25.8.2014, 19:04
Встал вопрос перевода большого клиент серверного проекта с Remoting на WCF.
Покопав тему уткнулся в основные проблемы: 
- передача MarshalByRefObject 
- контракты с интерфейсными объектами, о которых клиент ничего не знает(т.е. клиент видит только общие интерфейсы, классы объектов от него скрыты и ServiceKnownType не помогает (http://stackoverflow.com/questions/1376495/wcf-interfaces-generics-and-serviceknowntype)


Есть мысль написать враппер, который будет возвращать на запрос клиентом объекта с сервера endpoint.
Клиент по этому endpoint-у  получает уже объект.
В этом случае придется каждый такой интерфейс дополнить методами возврата поинта и следить за временем жизни соединений. 

Кто заморачивался на эту тему? какие проблемы встретили на пути?

Автор: mihryak 25.8.2014, 19:47
Вообще, в ссылке правильно написано: WCF работает через обмен сообщениями. Там же написано, что ServiceKnownType работает так, как он и должен работать.

А какую задачу вы решаете, переходя на WCF?
Если есть веские причины уйти от Remoting, или же просто скучно и есть свободные ресурсы, то стоит пересмотреть архитектуру и привести её в соответствие с идеологией WCF.
В обратном же случае, очень не рекомендую пытаться "натянуть" WCF на Remoting,  странная затея без шансов высоко взлететь, как мне кажется.

Автор: Moid 26.8.2014, 14:19
обнаружилась еще одна проблема: не получается создать endpoint на конкретный объект, созданный на сервере вручную.

Вопрос: поддерживает ли WCF такую возможность? Желательно с линкой на источник.

Автор: Ilya81 26.8.2014, 14:55
Такая возможность не поддерживается. Т. е. все DataContract передаются через ServiceContract. Методов внутри DataContract быть не может.

Автор: Moid 2.9.2014, 14:35
накопал, что через IServiceBehaviour можно переопределить возвращаемый инстанс объекта хостом.

Не могу понять, можно ли переопределить IEndpointBehaviour так, чтобы енд поинт указывал на нужный мне инстанс объекта?



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)