2012-04-20 3 views
1

이것은 일반적인 아키텍처 질문입니다. 저는 약 10 개의 사용자 컨트롤이있는 .aspx 페이지를 가지고 있으며 각각은 웹 서비스 호출을 실행하여 내용을 렌더링합니다. 현재 웹 호출은 동 기적으로 이루어 지므로 전체 페이지 렌더링 시간이 매우 느립니다 (> 2 초).ASP.NET에서 여러 웹 서비스 호출에 사용할 패턴

비동기 호출을 사용하여 컨트롤을 렌더링하고 페이지로드 시간을 줄이려고합니다. 가급적이면 최신 TPL 라이브러리를 사용하여 저의 수행 방법에 관해 몇 가지 리소스를 가르쳐 주시겠습니까? (비동기 CTP를 사용하고 싶지 않습니다.) 작업 라이브러리를 사용하여 비동기 호출을 작성하는 방법을 알고, 전체 시나리오가 여러 사용자 컨트롤 (비동기 웹 서비스로드가 필요하지만 각 사용자 컨트롤 태스크는 페이지가 렌더링되기 전에 완료되어야 함)을 가지고 어떻게 작동하는지 확신 할 수 없습니다.

나는 충분히 명확했으면 좋겠다.

감사 Themos

답변

0

당신은 아마 각 컨트롤에서 비동기 호출이 필요하지만, 전체 페이지로드 비동기 만들기의 가능성도있다 : 페이지 비동기은하지 않습니다 만드는

http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

가 귀하의 서비스 호출이 동시에 발생하지만, 이것은 아마도 당신이 필요로하는 것입니다. 이를 위해 각 컨트롤 내에서 비동기 호출이 필요합니다.

희망이 있습니다.

+0

흥미롭게도 사용자 컨트롤 컨텍스트에서 RegisterAsyncTask를 사용하는 방법에 대해서는 설명하지 않았습니다. 같은 규칙이 적용됩니까? 또한이 기사는 2005 년으로 거슬러 올라갑니다. TPL 라이브러리는 유사하지만 더 깨끗한 구현을 제공하지 않습니까? –

+0

의심의 여지없이 TPL은 스레드 풀과 비동기 호출을 둘러싼 유용한 래퍼를 제공합니다. 비동기 페이지 또는 TPL 대상이 아닌 페이지 이벤트가 순차적으로 발생하고, init 또는 페이지로드의 모든 컨트롤에 대한 데이터를 바인드해야하며 바인딩이 완료 될 때까지 렌더링을 진행하지 않아야한다는 문제점이 있습니다. 나는 웹 서비스 호출을 컨트롤 외부로 만들고 Tasks를 사용하여 호출하고, 모든 데이터가 완료 될 때까지 기다린 다음 모든 데이터가로드 될 때 바인딩합니다. 이것은 귀하의 기존 작업에 크게 영향을 미칠 수 있습니다. – faester

관련 문제