WCF передает данные в двоичном виде - PullRequest
2 голосов
/ 12 октября 2010

Мне нужно быстро передать данные из моей службы wcf клиенту.Как помогает SO, это означает хороший двоичный сериализатор \ derializer и данные через List, но у меня есть только XML-текст DataTable, сериализованный в службу.Это большие накладные расходы.

Хорошо, я должен перейти к двоичному кодированию List.У меня нет DTO, только XML DataTable.Не могли бы вы помочь мне с лучшей практикой

PS: На клиенте мне снова нужны данные для обработки PSS: Http, Tcp привязок службы wcf.

Ответы [ 2 ]

4 голосов
/ 12 октября 2010

Первое, что нужно попробовать - это сжать xml и aend с помощью BLOB-объекта mtom - просто байт [] через wcf

Если XML является фиксированной схемой, я бы тогда подумал о написании некоторого перевода DTOкод и отправка через protobuf-net и MTOM (обратный перевод на другом конце).

У меня есть идея упаковать таблицы данных adhoc через protobuf-net , но у меня не было возможности реализовать егопока что , о котором я расскажу здесь: DataTable - жизнь у старого зверя? .

2 голосов
/ 12 октября 2010

Действительно, первым шагом в оптимизации является избавление от DataTables и представление объектов модели. Как только это будет сделано, вы можете настроить конечную точку службы для использования netTcpBinding для оптимизированной двоичной передачи. Помните, что эта привязка не совместима с клиентами, отличными от .NET, поэтому вы можете также указать конечную точку basicHttpBinding на случай, если вам это понадобится.

В конце дня должны быть только объекты модели, задействованные в предоставляемых сервисных методах (без DataTables и DataSets):

[ServiceContract]
public interface IMyServiceContract
{
    [OperationContract]
    SomeModel[] GetModels();
}

При этом я рекомендую вам выполнить нагрузочные тесты и доказать, что это узкое место для вашего приложения, прежде чем пытаться преждевременно оптимизировать его.

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