2010-07-18 7 views
0

대 누군가가 내 왜 WCF 한 계약 말할 수 : 내가하려고 할 때 내가 할 수있는 콘솔 응용 프로그램에서 소비차이는 WCF 서비스를 소비 - 콘솔 실버

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string TestGetName(); 
} 

및 구현

public string TestGetName() 
    { 
     return "Kasia"; 
    } 

: 실버 라이트에서 그 방법을 사용해야합니다

Service1Client client = new Service1Client(); 
    Console.WriteLine((client.TestGetName())); 

하지만 : 그냥

  Service1Client clientTest = new Service1Client(); 
      clientTest.TestGetNameCompleted += new EventHandler<TestGetNameCompletedEventArgs>(clientTest_TestGetNameCompleted); 
      clientTest.TestGetNameAsync(); 
    void clientTest_TestGetNameCompleted(object sender, TestGetNameCompletedEventArgs e) 
    { 
      this.dataGridChild.DataContext = e.Result; 

    } 

왜 SL에서는이 첫 번째 간단한 해결책이 보이지 않지만 이벤트 처리기에서만 볼 수 있습니까? 이상 ... 콘솔 응용 프로그램에서 동기 연산 생성을 선택할 수있는 이유와 비동기 연산 생성을 사용해야하는 이유는 무엇입니까?/

답변

2

동기 호출은 Silverlight UI 스레드와 실행 환경, 즉 브라우저를 중지시킵니다. 이를 방지하기 위해 비동기 호출 만 허용됩니다.

물론 이것은 처음에는보기 드문 것이지만 장기적으로보기와 서비스 계층을 분리하는 것이 실제로 도움이됩니다.