Я надеюсь, кто-то может посоветовать мне, как решить мой сетевой сценарий. И клиент, и сервер должны быть на основе С#/.NET.
В основном я хочу вызывать какой-то веб-сервис от моего клиента, чтобы извлекать как двоичные данные (например, файлы), так и сериализованные объекты и списки объектов (например, результаты запроса базы данных).
На данный момент я использую страницы ASPX, используя строку запроса для предоставления параметров, и я возвращаю либо двоичные данные, либо двоичные данные сериализованных сообщений. Это дает мне большую гибкость, и я могу выбрать, как передавать данные, выполнять симуляционные запросы, отменять текущие запросы и т.д. Так как я могу управлять сериализованным форматом, я также могу десериализовать списки объектов по мере их получения, что является решающим.
Моя проблема не проблема как таковая, но это немного взломано, и я не могу не задаться вопросом, есть ли у нее лучшие способы. Я рассматриваю возможность перехода на WCF или, возможно, еще одну технологию, чтобы увидеть, помогает ли она. Однако мне нужно знать, помогает ли это в моих сценариях выше:
Может ли WCF-метод возвращать список объектов и может ли клиент получать элементы этого списка по мере их поступления, а не получать полный список после завершения (т.е. потоковая передача). Кто-нибудь знает какие-либо примеры этого?
Возможно, мне удастся получить какую-либо выгоду от этого? Я не знаю, насколько хорошо настроены страницы ASPX для этого, поскольку это, конечно же, не является их основной целью.
Есть ли какие-либо другие подходы, которые я должен рассмотреть?
Спасибо за ваше время, потраченное на чтение этого. Надеюсь, вы сможете помочь.
WCF не поддерживает потоковые коллекции. (Которые не совпадают с Передача потокового сообщения)
Однако, см. этот пост в блоге.
Я рекомендую использовать файлы ASHX (общие обработчики) вместо ASPX-страниц (Web Forms), поскольку они имеют гораздо меньшие накладные расходы.