2009-09-16 125 views
0

我有一個需要使用多個WCF服務的silverlight應用程序。服務的端點(url)不能在silverlight應用程序或配置文件中硬編碼。他們必須從本身是WCF服務的服務註冊表中查詢。 問題是我必須先使用異步調用來查詢服務端點,然後才能創建實服務代理的實例。我想不出有什麼好的方法來等待響應或阻止實際服務的呼叫。 使用silverlight應用程序中的Service Registry/Service Locator模式的最佳方式是什麼?使用Silverlight的wcf服務註冊表/服務定位器

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(); 

回答

0

要麼你可以從註冊表緩存查找,或者你可以做的查找你想要使用的服務進行通信的每個 時間(一般不推薦)。

在您提供的代碼片段中,您正在訂閱GetServiceCompleted事件。這就是即使處理程序(在你的情況下,lambda表達式),你將需要緩存查找和/或啓動對服務的調用。

HTH,

--larsw