2015-01-08 3 views
1

EWS Managed API를 사용하여 단일 EWS 통화에서 여러 항목에 바인딩하는 방법을 알고 있습니까? 해당 항목의 ItemIds 만 제공됩니까?EWS Managed API : 항목 ID 만 주어지면 하나의 EWS 통화로 여러 항목의 속성을로드 할 수 있습니까?

가 여기 내 응용 프로그램이 순간에 작동하는 방법은 다음과 같습니다

  • 통화 ExchangeService.FindItems() 반복 항목의 가능성이 매우 큰 목록 (수천 개 이상의 수백)를 생성한다.
  • 데이터베이스에 ItemId를 (문자열로) 저장하십시오.
  • 데이터베이스에서 차례대로 각 ItemId를 읽고, Item.Bind()를 사용하여 항목에 바인딩하고 처리합니다 (중요하지 않은 처리 세부 정보).

문제는 각 항목을 처리하는 데 그리 오래 걸리지 않으므로 내 코드는 Item.Bind()에서 시간의 절반 정도를 소비합니다. Exchange 사서함 서버가 대단히 만족스럽지 않을 수도 있습니다. 한 번에 100 개 정도의 항목에 대해 속성을로드하는 것이 요청을 "일괄 처리"하는 것이 훨씬 더 효율적일 것입니다.

지금 당장은 데이터베이스를 건너 뛰고 각 FindItems() 호출 후에 ExchangeService.LoadPropertiesForItems()를 호출하는 것이 좋습니다. 음 ... 모든 항목을 처리하기 전에이 일이 중단 될 가능성이 있습니다. 다시 시작할 때 (몇 시간 또는 며칠 후), 중단 된 지점부터 다시 시작할 수 있어야합니다. FindItems()를 사용하는 코드는 이후의 재개를 위해 상태를 저장하는 방법을 찾는 것이 완전히 악몽 일 정도로 충분히 중요하지 않습니다.

LoadPropertiesForItems()가 배후에서 EWS GetItem 호출을 사용하고 있다고 설명하는 Loading Properties for Multiple Items with One Call to Exchange Web Services을 발견했습니다. ItemIds 목록을 허용하지만 해당 기능이 Managed API를 통해 공개되지 않는 것 같습니다 (LoadPropertiesForItems()는 ItemIds뿐만 아니라 이미 바인딩 된 Item 객체의 목록이 필요함).

그래서 몇 가지 질문 정말이 :

  1. 나는 뭔가를 놓치고 있습니까? 실제로 EWS Managed API의 어딘가에 내가 원하는 것을 수행하는 메소드가 있습니까?
  2. 그렇지 않다면 Managed API 세션이 시작되면 원시 인증 EWS SOAP 호출을 "피기 백 (piggy back)"할 수있는 방법이 있습니까?
  3. 나는 그저 일부 멋진 방식으로 잘못 되었습니까? :-)

답변