Чтение из потока WCF как объекты десериализованы? - PullRequest
1 голос
/ 18 января 2012

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

Я прочитал эту статью , которая, кажется, имеет отношение к моей цели, но, кажется, устарела. Мне было интересно, если есть более современный способ достижения этого с помощью WCF 4.0.

Обновление:

Таким образом, я реализовал операцию в своем сервисе, используя метод, описанный в статье, приведенной выше, но я столкнулся с этим исключением во время выполнения:

Операция 'GetMyDtos' не может быть загружена, поскольку она имеет параметр или тип возврата типа System.ServiceModel.Channels.Message или тип, имеющий MessageContractAttribute и другие параметры различных типов. При использовании System.ServiceModel.Channels.Message или типов с MessageContractAttribute метод не должен использовать какие-либо другие типы параметров.

Моя операция имела следующую подпись:

Message GetMyDtos( bool param1, int? param2, bool param3 );

Итак, я изменил это на:

Message GetMyDtos( GetMyDtosParameters getMyDtosParameters );

и GetMyDtosParameters выглядит следующим образом:

[MessageContract]
public class GetMyDtosParameters
{
    [MessageHeader]
    public bool Param1 { get; set; }
    [MessageHeader]
    public int? Param2 { get; set; }
    [MessageHeader]
    public bool Param3 { get; set; }
}

Теперь все нормально работает на стороне службы, но у меня есть проблема при добавлении или обновлении ссылки на службу для клиента. Метод GetMyDtos генерируется в клиенте без каких-либо параметров метода (и без перегрузок), поэтому я не могу передать какие-либо параметры в операцию службы.

Обновление 2:

Я могу получить результаты от службы, даже не передавая никаких параметров. Я предполагаю, что используются значения по умолчанию, так как они являются примитивами и / или Nullables. Однако я все же хотел бы иметь возможность совершать вызовы в службу с разными значениями параметров, но я не могу этого сделать.

1 Ответ

0 голосов
/ 18 января 2012

Идея этой статьи по-прежнему актуальна. Почему вы говорите, что это устарело? Потоковое сообщение WCF включает в себя, главным образом, работу с самим сообщением WCF, и описанная там методика должна работать. У вас есть проблемы с этим?

...