2009-09-16 5 views
0

저는 여러 개의 WCF 서비스를 사용해야하는 실버 라이트 애플리케이션이 있습니다. 서비스의 종단점 (URL)은 실버 라이트 애플리케이션 또는 설정 파일 내에 하드 코딩 될 수 없다. WCF 서비스 인 Service Registry에서 쿼리해야합니다. 문제는 실제 서비스 프록시의 인스턴스를 생성하기 전에 비동기 호출을 사용하여 서비스 끝점을 쿼리해야한다는 것입니다. 나는 응답을 기다리거나 실제적인 서비스에 대한 호출을 차단하는 좋은 방법을 생각할 수 없다. 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 이벤트에 가입하고 있습니다. 조회 (lookup)를 캐시하고/또는 서비스 호출을 시작하는 데 필요한 핸들러 (경우에 따라 람다 식)도 있습니다.

HTH,

--larsw

관련 문제