Передать DataSet из службы WCF в приложение Silverlight - PullRequest
2 голосов
/ 27 августа 2011

У меня есть DataSet около 20000 строк, которые я конвертирую в IEnumerable<Dictionary<string, object>> с этим кодом:

IEnumerable<Dictionary<string, object>> IEnu = ds.Tables[0]
    .AsEnumerable()
    .Select(r => ds.Tables[0]
        .Columns.Cast<DataColumn>().Select(c => new {
            Column = c.ColumnName,
            Value = r[c]
        }).ToDictionary(
            i => i.Column,
            i => i.Value != DBNull.Value ? i.Value : null
        )
    );

, но размер объекта IENU слишком велик (около 7–8 МБ). Это очень большой размер для прохождения через сервис. Другой вариант - сгенерировать XML из набора данных (он занимает от 1 до 2 МБ), но все еще существует проблема, заключающаяся в том, что я не распознаю тип данных данных узла XML, а также не создаю класс, содержащий свойство узла XML и создать список, потому что мой запрос выбора является базой критериев, поэтому генерировать на стороне клиента после передачи в sql

Так как я могу передать тип данных в XML или есть какой-либо другой способ передачи данных из службы WCF в приложение Silverlight?

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Сервисы должны возвращать строго типизированные объекты, которые сериализуются в объект или массив объектов в SOAP, POX (обычный старый xml rest) или json (нотация объекта javascript). Если вы используете REST, WCF может возвращать формат XML или JSON, просто приписывая объекты атрибутам DataContract.

DataSets (или DataReaders) возвращаются из баз данных. Сервисы предоставляют абстракцию механизма хранения, которая может со временем меняться.

Передавая сериализованные объекты обратно, Silverlight (или любой другой клиент) может десериализовать их в объекты, с которыми гораздо проще иметь дело.

Кроме того, я добавляю комментарий о том, что не нужно возвращать строки по 20 КБ. Найдите способы размещения ваших данных (запрос в виде кусков).

Поиск REST и WCF или веб-служб и WCF.

Надеюсь, это поможет.

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

Это может быть интересный пост для вас http://weblogs.asp.net/sweinstein/archive/2009/01/03/creating-high-performance-wcf-services.aspx

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