Silverlight и WCF: стратегии оптимизации производительности для огромного количества данных

#silverlight #wcf #performance #silverlight-4.0 #timeoutexception

#серебристый свет #wcf #Производительность #silverlight-4.0 #исключение timeoutexception

Вопрос:

У меня есть приложение SL, которое связано со службой WCF. Служба WCF извлекает данные из базы данных SQL Server. И Silverlight, и WCF используют двоичное кодирование для кодирования сообщений SOAP.

WCF отправляет клиенту много данных с помощью метода OperationContract GetAllData(). GetAllData() возвращает список элементов ComplexData. Количество элементов внутри списка может быть большим. Снижение производительности начинается с 3 или 4 элементов. Каждый объект ComplexData помечен как DataContract и содержит множество свойств элемента данных (около 30). Эти свойства имеют тип int, boolean, string, enum и list.

Поскольку GetAllData() переходит в тайм-аут, я хотел бы знать, как можно найти узкое место такой архитектуры. В частности, какие инструменты или приемы я мог бы использовать для продолжения работы?

Заранее благодарю.

Комментарии:

1. Почему бы не ввести такие вещи, как подкачка страниц, в любой список, который у вас может быть, предотвращая загрузку слишком больших блоков данных?

Ответ №1:

Если вы получаете исключение тайм-аута на клиенте, узким местом, скорее всего, является код, который создает / извлекает ваши объекты ComplexData, а не WCF, который просто их сериализует.

Комментарии:

1. Спасибо вам за ваш ответ. Я тоже так думаю. Итак, считаете ли вы, что единственным способом может быть оптимизация методов извлечения / создания данных, извлеченных из базы данных? Как можно отслеживать производительность службы WCF на этом этапе (я имею в виду фазу выборки и создания)? Спасибо.

2. Я не большой специалист на стороне сервера, но вы могли бы ознакомиться со стратегиями профилирования ASP.NET приложения: msdn.microsoft.com/en-us/library/3xxk09t8(v=vs.71).aspx