Я новичок в WCF, поэтому прошу прощения, если я пропустил лодку полностью.
Похоже, что WCF предоставляет множество функциональных возможностей для использования самого слоя "Channel".Например, чтобы создать сервер, вы можете создать прослушиватель канала из привязки и вызвать WaitForRequest, Reply и т. Д. Все эти методы имеют дело с Message объектами, так что вы должны что-то делать ссообщение.
Мой вопрос касается того, что происходит, когда мы уже получили сообщение.Предположим, у меня есть объект, который реализует службу, описанную ServiceContract и объектом Message , который, как я знаю, представляет собой вызов определенной операции.Я действительно хотел бы сделать что-то вроде:
Message requestMessage = GetMessageSomehow();
OperationDescription oc = GetContractForMessage();
Message replyMessage = Invoke(myService, oc, requestMessage);
По крайней мере, если бы я мог как-то получить доступ к IOperationInvoker и IDispatchMessageFormatter объектам, которые получаютСозданный для типа, было бы довольно просто объединить их в цепочку, чтобы получить требуемую функциональность.
В моем конкретном случае мне нужно реализовать несколько простых сервисов Soap 1.1 и 1.2 (без WS-Addressing).У меня уже есть объекты HttpListenerRequest / Response, и я могу маршрутизировать их на основе заголовка SOAPAction или ContentType.
Я думаю, что эта функциональность также была бы весьма полезна для модульного тестирования.Например, мне нужно реализовать для существующих клиентов.Было бы неплохо иметь модульные тесты, в которых я мог бы проверить, что Атрибуты класса обслуживания верны (то есть, что сообщение, которое я знаю, которое я получу, будет правильно преобразовано в вызов на моем интерфейсе службы).
Есть предложения?