poniedziałek, 3 czerwca 2013

WCF Rest - uaktywnienie cache

Dla serwisów REST w WCF możemy w łatwy sposób włączyć Cache. Większość pracy do wykonania obejmuje plik web.config.

Na początek definiujemy profil cache w gałęzi system.web:


Code:
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="Cache15Seconds" duration="15" varyByParam=""/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>

Kolejną czynnością jest sprawdzenie czy atrybut aspNetCompatibilityEnabled jest ustawiony na wartość "true". W przypadku braku ustawionej kompatybilności otrzymamy wyjątek o braku jej ustawienia:


Code:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">

Ostatnimi krokami do wykonania jest dodanie atrybutów do klasy i definicji serwisu:

Code:
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet]
        [AspNetCacheProfile("Cache15Seconds")]
        string GetTime();
    }

Code:
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class Service1 : IService1
    {
        public string GetTime()
        {
            return DateTime.UtcNow.ToString();
        }
    }

W przypadku interfejsu wskazujemy nazwę profilu cache zdefiniowanego w web.config. Klasie nadajemy wymaganą kompatybilność z asp net.

Zastosowane kroki można sprawdzić w działaniu poprzez kilkukrotne odświeżenie strony w przeglądarce. Czas będzie aktualizowany co 15 sek, a w międzyczasie użytkownicy otrzymają dane zachowane w cache.


Kod przykładu do pobrania: http://sdrv.ms/11MGhkl

Brak komentarzy:

Prześlij komentarz