#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