Использование сообщения WCF - PullRequest
2 голосов
/ 20 ноября 2011

Я все еще в замешательстве, когда уместно использовать тип сообщения в WCF, как показано ниже

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    Message GetData();

    [OperationContract]
    void PutData(Message m);
}

Зачем вам это нужно?

Можете ли вы использовать его для потоковой передачи?

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 ноября 2011

В MSDN перечислены следующие причины непосредственного использования класса сообщений:

  1. Когда вам нужен альтернативный способ создания содержимого исходящего сообщения (например, создание сообщения непосредственно из файла вдиск) вместо сериализации объектов .NET Framework.

  2. Когда вам нужен альтернативный способ использования содержимого входящих сообщений (например, когда вы хотите применить преобразование XSLT к необработанному содержимому XML) вместо десериализации в объекты .NET Framework.

  3. Когда вам нужно работать с сообщениями в общем, независимо от содержимого сообщения (например, при маршрутизации или пересылке сообщений при построении маршрутизатора)., балансировщик нагрузки или система публикации-подписки).

См. Использование класса сообщений для получения более подробной информации.

Изменить для решения вопроса о потоковой передаче

Я не нашел однозначного ответа при быстром сканировании через Google, но в статье выше states «Все взаимодействие между клиентами и службами в конечном итоге приводит к отправке и получению экземпляров сообщения», поэтому я предполагаю, что его можно использовать непосредственно в потоковой передаче.

3 голосов
/ 21 ноября 2011

Хотя причины, указанные Тимом, являются действительными, мы используем сообщения непосредственно в наших службах для создания одной службы Uber маршрутизации. у нас есть одна служба, которая может принимать любой вызов метода, который вы добавляете, клиенты генерируются с помощью wsdls, предоставляемых из нескольких источников.

Эта служба будет принимать сообщение, проверять его содержимое и направлять его соответствующим образом. Так что, по моему мнению, если вы хотите приблизиться к проводной связи или когда вы не знаете тип входящих сообщений, вы можете напрямую использовать это сообщение в подписи.

Потоковая передача - это отдельная концепция, отличная от сигнатуры сообщения, потоковая передача поддерживается wcf при очень специфических привязках и механизме безопасности, а сигнатура метода должна быть очень конкретной (то есть она должна возвращать / принимать поток). Также при потоковой передаче фактический поток данных выходит за рамки мыльного сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...