블로그 이미지
kyeongkyun

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Notice

2010/01/08 18:07 WCF

.NET Framework 4.0 REST 지원

 

2. Http 캐시 사용하기

REST 서비스를 사용하면서 가장 큰 장점이라고 할 수 있는 것이 바로 HTTP 캐싱을 사용할 수 있다는 것이다. .NET Framework 4에서는 AspNetCacheProfile 어트리뷰트를 사용하여 아주 간단하게 REST 서비스를 캐시할 수 있습니다. AspNetCacheProfile 어트리뷰트는 ASP.NET output 캐시와 함께 동작하게 됩니다.

리스트 1. OutputCache 설정

<system.web>

<compilation debug="true" targetFramework="4.0" />

<caching>

<outputCacheSettings>

<outputCacheProfiles>

<add name="defaultCache" duration="60" varyByParam="postid" />

</outputCacheProfiles>

</outputCacheSettings>

</caching>

</system.web>

 

이전의 output 캐시 설정 방법 대로 postid라는 매개변수의 값에 따라 그리고 60초를 유지하도록 캐시를 설정합니다.

리스트 2. 어트리뷰트 추가

[AspNetCacheProfile("defaultCache")]

[OperationContract]

[WebGet(UriTemplate = "/GetPost/{postId}", ResponseFormat = WebMessageFormat.Json)]

Post GetPost(string postId);



 

캐시를 지정할 메서드에 AspNetCacheProfile 어트리뷰트를 추가하고 앞에서 만든 outputCacheProfile의 이름을 입력합니다. 이렇게 하면 GetPost를 호출 할 경우 postid에 대해 캐시가 만들어지며 60초 동안 그 값이 유지됩니다.

WCF REST 서비스에서 output Cache 사용하기 위해서는 ASP.NET 호환성을 true 설정해야 한다. 호환성을 설정 하는 방법은 serviceHostingEnviroment 엘리먼트를 추가하고 호환성을 설정하는 aspNetCompatibilityEnabled true 설정 해야 합니.

 

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

<system.serviceModel>

이렇게 다음 모든 것이 정상적으로 돌아가면 좋겠지만 다음과 같은 오류를 뱉어 낸다.

 

 

오류는 서비스가 ASP.NET 호환성을 지원하지 않기 때문에 활성화 없으니 호환성을 켜라~ 이런 이야기를 하고 있는데 그대로 WCF 서비스가 ASP.NET 호환 코드로 실행 되지 않기 때문에 발생하는 오류입니다. 다음 코드와 같이 서비스 클래스에 어트리뷰트를 추가하고 RequirementsMode AspNetCompatibilityRequirementsMode.Allowed 설정하면 ASP.NET호환 코드로 동작하게 됩니다. 기본 값은 NotAllowed입니다.

 

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class PostService : IPostService

{

.

.

마지막으로 Fiddler를 통해 테스트를 해보면 헤더의 캐시 부분에 우리가 설정 한 대로 1분간 캐시 되는 것을 확인 할 수 있습니다.

 

 

다음 포스트에서는 조건부 요청, 예외처리, 다양한 메시지 포멧에 대해 다뤄 보도록 하겠습니다.

감사합니다.^^

크리에이티브 커먼즈 라이선스
Creative Commons License
posted by kyeongkyun(kobukii) kyeongkyun
prev 1 ... 2 3 4 5 6 7 8 9 10 ... 48 next