Настраиваемая потоковая передача для чтения BLOBS из MS-SQL - Как мне обрабатывать соединение? - PullRequest
0 голосов
/ 30 марта 2009

У меня есть пользовательский поток, который я использую с WCF для больших BLOB-объектов из базы данных. Он читает данные кусками.

Каков наилучший способ обработки соединения для потока? Должен ли я просто открыть его на стройке или открыть / закрыть при каждом чтении патрона?

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 марта 2009

Файловый поток в SQL Server 2008 будет сохранять файлы в файловой системе, предоставляя вам возможности потоковой передачи с использованием общедоступного API файловой системы и предпочтительную производительность по сравнению с обычным BLOB.

Из поста - Правило большого пальца:

Данные> 256 КБ - Рассмотрим файловый поток
Данные <256K - продолжайте использовать BLOB </p>

0 голосов
/ 30 марта 2009

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

[ServiceContract]
public class ContentService
{
  [OperationContract]
  public Stream GetBlob(int id)
  {
    byte[] myBlob = GetBytesFromDatabase();
    return new MemoryStream(myBlob);
  }
}

Если вы используете SQL Server 2008, попробуйте отправить поток напрямую клиенту WCF

[ServiceContract]
public class ContentService
{
  [OperationContract]
  public Stream GetBlob(int id)
  {
    return GetStreamFromDatabase(id);
  }
}

См. Эту ссылку на Потоковые сообщения с WCF

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