使用Silverlight的wcf服务注册表/服务定位器
我有一个silverlight应用程序,需要使用多个WCF服务。不能在silverlight应用程序或配置文件中硬编码服务的端点(URL)。它们必须从服务注册表中查询,该注册表本身就是一个WCF服务。 问题是,在创建真正的服务代理实例之前,我必须使用异步调用来查询服务端点。我想不出一个好方法来等待响应或阻止对real service的调用。 在silverlight应用程序中使用Service Registry/Service Locator模式的最佳方法是什么使用Silverlight的wcf服务注册表/服务定位器,wcf,silverlight,service-locator,Wcf,Silverlight,Service Locator,我有一个silverlight应用程序,需要使用多个WCF服务。不能在silverlight应用程序或配置文件中硬编码服务的端点(URL)。它们必须从服务注册表中查询,该注册表本身就是一个WCF服务。 问题是,在创建真正的服务代理实例之前,我必须使用异步调用来查询服务端点。我想不出一个好方法来等待响应或阻止对real service的调用。 在silverlight应用程序中使用Service Registry/Service Locator模式的最佳方法是什么 var registry = n
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();
您可以缓存注册表中的查找,也可以逐个执行查找 您希望与服务通信的时间(通常不建议) 在您提供的代码片段中,您正在订阅GetServiceCompleted事件。正是在这个偶数处理程序(在您的例子中是lambda表达式)中,您需要缓存查找和/或启动对服务的调用 嗯, --拉尔斯