Я начинаю экспериментировать с использованием 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 задействованы.
У кого-нибудь есть указатели? Объяснение верхнего уровня и/или направления к классам были бы блестящими.
Спасибо.
Несомненно, какой формат («как») появится после этого шага? DataContractSerializer, который используется в большинстве привязок по умолчанию, просто действует против сериализуемых POCOs. Итак, мой вывод заключался в том, что WCF преобразует контракт Service/Operation в сериализуемые объекты сообщения/ответа под капотом, а затем может зайти в сериализатор? –
WCF делегирует это. Он зависит от протокола. Классы привязки делают это, каждый по-своему. Вы можете спросить, как SOAP сериализует сообщение, но не как это делает WCF. –
Хорошо, это справедливо и имеет смысл. Вы знаете, какой класс на самом деле делает это для одного из стандартных привязок, чтобы я мог его отразить и посмотреть? Приветствия. –