2016-03-03 3 views
1

Я надеюсь, что это простой вопрос.Возврат потока wcf из ткани сервисов/услуг

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

Благодаря

ответ

0

Это зависит от коммуникационного стека вы используете в ваших услугах. Сами услуги несовместимы с протоколами связи. Реализации сервисов могут подключаться к любому стеклу связи: Web API, WCF, сокеты, не имеет значения.

Надежные актеры - это особая реализация службы, а в качестве реализации службы она определяет стек связи. В этом стеке связи полезная нагрузка запроса/ответа должна быть DataContract сериализуемой, поэтому нет, вы не можете вернуть туда поток.

В противном случае, если вы используете WCF для связи со своими службами, то вы ограничены тем, что может сделать WCF.

Если вы используете удаленный сервис (где ваша служба реализует IService, и вы используете ServiceProxy для удаленного вызова методов на нем), то нет, вы не сможете вернуть поток для метода службы. Вам нужно вернуть что-то, что является DataContract сериализуемым.

Если вы используете Web API в своей службе, вы можете захватить поток ответов HTTP в методе действий контроллера и передать данные обратно без выделения для него байтового буфера.

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

Смежные вопросы