#c# #wcf #asynchronous #wcf-ria-services #invocation
#c# #wcf #асинхронный #wcf-ria-services #вызов
Вопрос:
Я разрабатываю приложение с использованием служб WCF Ria и Silverlight. Производительность и масштабируемость являются обязательными в этом проекте. Проблема в том, что мне приходится вызывать несколько служб WCF из службы RIA, а вызов службы требует времени. Потоки — это ограниченный ресурс на веб-сервере, поэтому, когда я вызываю службу, выполняющийся поток просто зависает и ожидает ответа. Это неприемлемо в моей ситуации. Я помню, что был способ обойти эту проблему еще в .NET 2 days, я думаю, что есть и сейчас, но ничего не помню. Любое обновление памяти было бы неплохо 🙂
Спасибо
Комментарии:
1. И каким бы это было обходным путем? Путешествие во времени?
2. Ну, есть возможность выполнить службу wcf асинхронно, что вернет выполняющийся поток в пул thread. Клиент получит ответ от сервера, когда вызов службы будет завершен. Я имею в виду, что поток восстанавливается из пула потоков после завершения вызова службы.
3. Вы, вероятно, имеете в виду асинхронные asp.net страницы из ASP.NET 2.0, который возвращал поток в пул потоков во время внешней асинхронной обработки. WCF также предлагает асинхронные операции, но вопрос в том, как это работает со службами RIA (я никогда даже не пробовал их, поэтому не знаю): msdn.microsoft.com/en-us/library/ms731177.aspx
4. @Ladislav да, именно это я и имею в виду. Спасибо 🙂 Я посмотрю на URL, может быть, кто-нибудь опубликует, как это работает с ria-сервисами.
5. Один из способов выполнения нескольких запросов как единицы работы — создать модель представления, которая инкапсулирует несколько вызовов в один вызов. Я считаю, что это также снижает нагрузку на клиента и позволяет серверу управлять всем процессом.
Ответ №1:
Похоже, что стандартный шаблон асинхронной синхронизации — это правильный путь. Спасибо Ладиславу Мрнке за то, что указал мне правильное направление.