2010-08-04 6 views
0

Я начинаю экспериментировать с использованием ActiveMQ (в сочетании с привязками ActiveMQ.NMS) для поддержки обмена сообщениями RPC с перекрестной платформой, которые мы рассматриваем.Как WCF превращает ServiceContract/OperationContract в сообщение, которое может быть сериализовано?

В качестве части этого я хотел бы иметь возможность определять наши контракты на RPC в соответствии с WCF - например.

[ServiceContract] 
public interface IUsers 
{ 
    [OperationContract] 
    IEnumerable<IUser> void GetByEmail(string email); 
} 

И я смотрю на свой вклад в проект ApackeMQ.NMS.WCF, чтобы это работало, и у меня есть некоторый опыт в написании пользовательских привязок, так что я уезжаю с этим.

Однако у меня возникают проблемы с концептуальной проблемой в первую очередь с тем, как работает WCF. Очевидно, что на каком-то уровне вызов через прокси-сервер на клиентском канале для «GetByEmail» должен быть преобразован в объекты сообщения и ответа, чтобы они могли быть сериализованы. Я хотел бы знать, как это работает, чтобы получить лучшее общее понимание WCF.

Я не могу найти никакой документации относительно того, как это делается, и действительно, какие классы в довольно массивной инфраструктуре WCF задействованы.

У кого-нибудь есть указатели? Объяснение верхнего уровня и/или направления к классам были бы блестящими.

Спасибо.

ответ

0

Существует еще один шаг: как (какой формат) использовать для сериализации?

WCF соединяется через Bindings, а конфигурация привязки выбирает формат/протокол.

И «как» команда передается для каждого протокола? Я не знаю, и я не думаю, что будет очень полезно копаться в этом (низкоуровневом) материале.

+0

Несомненно, какой формат («как») появится после этого шага? DataContractSerializer, который используется в большинстве привязок по умолчанию, просто действует против сериализуемых POCOs. Итак, мой вывод заключался в том, что WCF преобразует контракт Service/Operation в сериализуемые объекты сообщения/ответа под капотом, а затем может зайти в сериализатор? –

+0

WCF делегирует это. Он зависит от протокола. Классы привязки делают это, каждый по-своему. Вы можете спросить, как SOAP сериализует сообщение, но не как это делает WCF. –

+0

Хорошо, это справедливо и имеет смысл. Вы знаете, какой класс на самом деле делает это для одного из стандартных привязок, чтобы я мог его отразить и посмотреть? Приветствия. –