WCF가 예전에 REST 지원한다는 이야기가 생각나서, SDP 플랫폼 구현 가능성 체크해볼라고 간략하게 체크해봤다.
WCF에서 REST개발은 별도의 라이브러리가 필요하다. VS2010환경에 낮선 나로써는 좀 더 쉬운 방법을 찾아야 했는데, Project Template이 REST용으로 세팅되어 있는게 있다.
New > Project에서 Online Template을 선택한후에, WCF REST C# 템플릿을 선택하면 된다.
자동으로 생성된 코드를 체크하고, 간단하게 테스트를 해봤는데... 일단 잘된다.
프로그래밍 모델도 자바의 Jersey나 Apache CXF와 비슷하다 (JAX-RS 스펙과 유사)
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
// NOTE: If the service is renamed, remember to update the global.asax.cs file
public class Service1
{
// TODO: Implement the collection resource that will contain the SampleItem instances
[WebGet(UriTemplate = "")]
public List<SampleItem> GetCollection()
{
// TODO: Replace the current implementation to return a collection of SampleItem instances
return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
}
코드가 이런데, 테스트를 해보면 다음과 같은 결과가 나온다.
일단은 합격점인데.. 조금더 살펴보아야할점이 Annotation이 얼마나 다양하냐이다.
1. 위의 결과값처럼 List에 대한 리턴 XmlElement가 ArrayOf로 시작한다. 실제 REST에서는 이걸 마음대로 바꿀 수 있어야 하고
2. Namesapce역시 scheme를 여기 넣는 디자인이 있을 수 있기 때문에, name space를 마음대로 지정할 수 있는지.
3. 그리고 HTTP Header에 얼마나 데이타를 쉽게 조작할 수 있는지가 관건이다.
개발환경이나 세팅이 자바에 비해서 쉽기는 한데.. (WAS설치나 Library 설치). 이상하게도 WCF 4.0에 REST 프레임웍이 기본 번들이 안되어 있어서 찜찜하기는 하다...
그리고 MS의 장점이겠지만, 문서화는 진짜 잘되어 있다.
http://msdn.microsoft.com/en-us/library/dd203052.aspx 참고 자료.
예전 Jersey가지고 REST설계할때 SPEC때문에 고민도 많이하고 스터디도 많이 했는데, 참 잘나와 있는듯...
참고자료
http://techsavygal.wordpress.com/2009/03/10/getting-started-with-rest-in-wcf/
'프로그래밍 > C# & .NET' 카테고리의 다른 글
WCF REST 구현시 URL Rewriting (0) | 2010.06.28 |
---|---|
WCF REST 프레임웍에서 Http Header Control하기 (0) | 2010.06.28 |
WCF가 몬가 했더니.. (0) | 2010.06.25 |
WCF (Windows Communication Foundation) Quick Tutorial (0) | 2010.06.25 |
Windows 7에서 IIS 설치하기 (1) | 2010.05.13 |