Может ли служба данных WCF использоваться для возврата файла? - PullRequest
3 голосов
/ 29 декабря 2011

Я хочу использовать Службу данных WCF для возврата файлов mp3 вместе с другими типами данных, уже обслуживаемыми WCF. Это возможно?

[12/29] У меня есть бинарные данные mp3 в формате sql (~ 10 секунд каждый). Я хотел бы использовать HTML аудио тег с ним: <audio src="/server/svc/id" type="audio/mpeg" /> Javascript изменит идентификатор. Не уверен, как это будет работать с возвращающим двоичный массив WCF ...

[12/30] Работает .... после установки mimetype в CSDL.

1 Ответ

2 голосов
/ 29 декабря 2011

Конечно, вы можете сделать это тремя возможными способами:

  1. Включить его как двоичное свойство в существующую сущность (обычно в этом случае службы размещают сущности, представляющие каждый аудиофайл,у которого было бы одно из его свойств, являющееся фактическим аудио mp3).В коде это просто для объявления свойства типа byte [] (и его заполнения).Плюс в том, что это действительно легко настроить.Недостатком является то, что когда вы получаете такую ​​сущность, весь mp3 скачивается и передается в виде BASE64-закодированного текста, поэтому он большой на проводе.

  2. Аналогично настройке, как указано выше, но вместо сохраненияmp3 в двоичном свойстве, вы делаете сущность Entry Media Resource Entry, вы делаете для нее значение потока по умолчанию.Это более подробно описано в этом сообщении: http://blogs.msdn.com/b/astoriateam/archive/2010/08/04/data-services-streaming-provider-series-implementing-a-streaming-provider-part-1.aspx и http://blogs.msdn.com/b/astoriateam/archive/2010/09/08/data-services-streaming-provider-series-part-2-accessing-a-media-resource-stream-from-the-client.aspx.

  3. В последней версии CTP WCF DS также поддерживает свойства потока.Это похоже на # 2 выше, но один объект может иметь несколько потоков, каждый из которых доступен по своему имени.

Чтобы получить доступ к необработанному значению аудиопотока, вы можете использовать URL (зависит отметод, который вы используете для предоставления потока):

  1. urltotheentity / MyBinaryProperty / $ value

  2. urltotheentity / $ value

  3. urltotheentity / StreamPropertyName / $ value

Обратите внимание, что в # 1 типом MIME-потока по умолчанию будет application / octet-stream, для его изменения необходимо добавитьатрибут MimeType для свойства (поставщик отражения) или атрибут в CSDL для этого свойства (поставщик EF).В # 2 и # 3 тип MIME определяется посредством вызова провайдера потока.

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