Начальная производительность WCF в Silverlight 4 - PullRequest
0 голосов
/ 31 января 2011

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

Я заметил, что моя производительность при запуске была ужасной, поэтому я профилировал ее и обнаружил, что 7 секунд было потрачено на генерацию кода сериализации при первом вызове WCF.

startup profile

Я знаю, что есть способ улучшить время запуска с помощью XmlSerializer ( объяснено здесь ). Это делается путем генерации кода сериализации в отдельную сборку заблаговременно, но я не могу понять, как это сделать в Silverlight.

Кто-нибудь делал это раньше? Это вообще возможно? Любые другие идеи, которые могут помочь, также приветствуются.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 марта 2011

Оказывается, что если вы используете Advanced Developer Extensions , у вас не будет таких проблем с производительностью при запуске, как при добавлении ссылки на WCF.

0 голосов
/ 31 января 2011

В статье, на которую вы ссылались, описывается, как использовать svcutil.exe для предварительной генерации классов, но если вы используете либо диалоговое окно «Добавить ссылку на службу» в Visual Studio, либо службы WCF RIA, эта генерация кода уже сделанно для тебя. Так что это не то место, где я бы искал повышение производительности. И 7 секунд кажется слишком долгим для этого, если только у вас нет буквально тысяч различных классов, которые вы пытаетесь раскрутить. Я сильно подозреваю, что у вас совершенно другая проблема. Любая операция, занимающая семь секунд, связана либо с алгоритмом, либо с вводом-выводом. И я уверен, что это ввод / вывод: либо сетевой ввод / вывод при достижении службы WCF, либо, возможно, ввод / вывод из службы WCF в свои собственные источники данных. Загрузите какой-нибудь сниффер (Wireshark, Firebug, что-то в этом роде) и лучше посмотрите, что происходит в сети. Во всяком случае, именно с этого я и начну.

...