2011-07-05 7 views
0

유사한 데이터에 대해 여러 (10 개 이상의) REST 웹 서비스를 호출하는 WP7 Silverlight (기술 또는 관련 없을 수도 있음) 응용 프로그램을 가지고 있으며 이들 모두를 단일 모음 . 데이터 그 자체는 질문과 관련이 없습니다.여러 페이지 REST 응답을 처리하는 방법

답장에 둘 이상의 페이지가있는 경우 어떻게 REST 서비스를 처리해야합니까? 제가 말하고자하는 것은 이러한 모든 서비스는 데이터로 응답하지만 가장 위에는 "1 페이지 중 1 페이지"라고 말합니다. 그래서 나는 같은 것을 반복해서 호출해야만합니다 ... & page = 1 ... & page = 2 ... 이것에 대한 커스텀 프레임 워크를 작성하는 것이 고통스럽고 약간 허약하다는 것을 알았습니다. 기본적으로 나는 처음에 모든 서비스로 나가는 스레드를 가지고 있으며, 얼마나 많은 페이지가 있는지 찾아냅니다. 거기에서 나는 어떻게 나아갈 지 모르겠다. 거기에서 스레드를 생성하는 가장 좋은 방법을 모르겠습니다.

내가 수행 할 수있는 프레임 워크 또는이를위한 모범 사례가 있습니까?

답변

1

당신은 간단한 요청을 사용해야합니다 - 그들은 비동기 있습니다 WP7에 그래서 당신은 같은 것을 할 필요가 : 페이지 수를 가져

  1. 을 TOTAL_NUM에 저장에 NUM = 1
  2. 통화 요청을 설정 페이지에서 데이터 가져 오기 == NUM ​​
  3. req가 돌아 왔을 때 구문 분석, NUM ++면 NUM! = TOTAL_NUM이면 goto pt. 이 같은 2

뭔가 :

public void FetchData(int pageNum) 
{ 
    Uri address = ...; 

    var request = WebRequest.Create(address); 
    // ... init request 

    request.BeginGetRequestStream(asyncResp => { 
                var response = (WebResponse) request.EndGetResponse(asyncRes); 
                ParseAndSave(response, pageNum); 
                NUM++; 

                if (NUM != TOTAL_NUM) 
                 FetchData(NUM); 

               }, null);                
} 

염두에 두어야

나는 그것을 또는 아무것도를 컴파일하지 않았다 ... 그것은하지 그것을 할 수있는 가장 좋은 방법이 될 수 있지만, 최소의 노력으로 작동합니다 :)

+0

이번에는 슬라이드를 풀어 보겠습니다. 그러나 앞으로 모든 코드 조각에 대한 전체 단위 테스트 및 리그 레션 테스트를 수행 할 것을 기대합니다. 감사! 즉, 나는 코드를 단순화 할 수있는 웹 요청을 어리석은 생각 (어쩌면 루핑 요청조차도)을 좋아한다. 지금은 webclient를 사용하고 있습니다.하지만 좀 더 간단한 webrequest로 전환해야한다고 생각합니다. – firebellys

+0

WebClient가 마음에 들지 않습니다 ... req/resp 압축을 할 수 없습니다 ... 간단한 일이라면 괜찮을 지 모르지만 전화로 가능한 한 작은 데이터를 갖는 것이 더 좋습니다. – argh

관련 문제