Использование реестра wcf / локатора службы от Silverlight - PullRequest
0 голосов
/ 16 сентября 2009

У меня есть приложение silverlight, которое должно использовать несколько служб WCF. Конечные точки (URL) служб не могут быть жестко закодированы в приложении silverlight или в файле конфигурации. Они должны быть запрошены из реестра служб, который сам по себе является службой WCF. Проблема в том, что мне нужно использовать асинхронный вызов для запроса конечной точки службы, прежде чем я смогу создать экземпляр реального прокси службы. Я не могу придумать хороший способ дождаться ответа или заблокировать вызовы в реальном сервисе. Как лучше всего использовать шаблон Service Registry / Service Locator из приложения Silverlight?

var registry = new ServiceRegistryClient("http://localhost/ServiceRegistry.svc");
string url;

registry.GetServiceCompleted += (s, e) => url = e.Result;
registry.GetServiceAsync("MyService");

// now I want to create MyService, but I must wait somehow until url is returned
var myService = new MyServiceClient(url);
myService.DoSomethingAsync();

1 Ответ

0 голосов
/ 03 ноября 2009

Либо вы можете кэшировать поиск из реестра, или вы можете сделать поиск каждый время, когда вы хотите общаться со службой (обычно не рекомендуется).

В предоставленном вами фрагменте кода вы подписываетесь на событие GetServiceCompleted. Именно в этом даже обработчике (в вашем случае лямбда-выражении) вам потребуется либо кэшировать поиск и / или инициировать вызов службы.

НТН,

- larsw

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