작성자: Dflying Chen ( http://dflying.cnblogs.com/ )
완료하는 데 시간이 오래 걸리고 실시간 요구 사항이 높지 않은 일부 복잡한 서비스의 경우 캐시를 선택하는 것이 효율성을 향상시키는 효과적인 방법인 경우가 많습니다. .NET의 웹 서비스 구현은 캐시의 필요성을 완전히 고려합니다. 캐시를 활성화하려면 간단한 설정만 필요합니다. Atlas의 웹 서비스 호출에서는 이 캐시 메커니즘을 사용하여 서버 측의 불필요한 오버헤드를 줄일 수도 있습니다.
웹 서비스의 캐시를 활성화하려면 WebMethod 선언에[WebMethod(CacheDuration = 5)]
속성만 추가하면 됩니다.
여기서 CacheDuration 값은 캐시 시간(초)을 나타냅니다.
하지만 이 Cache 메서드는 웹 서비스에서 제공되며 Atlas는 이에 대해 아무것도 모르고 각 호출은 여전히 서버로 전송됩니다. 따라서 이 캐시가 네트워크 대기 시간이 사용자에게 미치는 영향을 개선할 수 있는 방법은 없습니다.
샘플 프로그램을 통해 웹서비스의 Cache에 대해 자세히 알아봅시다.
먼저 웹 서비스를 작성하고 현재 시간을 반환하고 CacheDuration을 5초로 지정합니다.
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
공개 클래스 CachedWebService : System.Web.Services.WebService
{
[WebMethod(CacheDuration = 5)]
공개 DateTime GetGurrentTime()
{
DateTime.Now를 반환합니다.
}
}
그런 다음 Atlas 페이지를 만들고 ScriptManager를 추가한 후 이 웹 서비스를 참조하세요.
<서비스>
서비스>
이 웹 서비스를 호출하고 결과를 표시하려면 몇 가지 HTML 태그를 추가하세요.
마지막은 쉬운 분석을 위해 각 호출의 결과를 페이지에 표시하는 JavaScript 부분입니다.
function btnInvoke_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
함수 onCompleted(결과) {
$('결과').innerHTML += 결과 + "
";
}
브라우저에서 테스트해 보면, 버튼을 여러 번 클릭하면 다음과 같은 결과를 볼 수 있습니다.
동시에 Fiddler에서는 이러한 요청이 실제로 서버로 전송되고 캐시는 서버측 구현일 뿐임을 확인할 수 있습니다.
이 예제의 소스 코드는 여기에서 다운로드할 수 있습니다.