재우니의 블로그

C#으로 웹서비스 개발...

C#으로 웹사이트를 개발하기 위해서는 주로 ASP.NET WebForm이나 MVC를 사용한다. 웹사이트는 기본적으로 HTML 페이지를 클라이언트에 제공하고 브라우져는 이 HTML을 랜더링해서 UI 화면을 만들어 낸다. 이러한 웹사이트와 달리, 웹서비스는 UI가 아닌 API를 통해 주로 서버에 어떤 동작을 실행하거나 혹은 서버의 데이타를 (HTML이 아닌) "데이타 형태"로 가져오는 기능을 제공한다.

이러한 웹서비스로서 초창기에는 ASP.NET Web Services (.ASMX)를 사용하였는데, 이는 ASP.NET 개발자들이 서버 상의 메서드들에 [WebMethod] Attribute들을 붙여, 클라이언트가 쉽게 HTTP를 이용해 웹서버에 있는 메서드들을 호출할 수 있게 한 것이다. 이러한 ASMX 서비스는 이후 보다 유연하고 풍부한 기능을 갖춘 WCF로 대체되었다.

WCF는 SOAP을 이용하여 SOA (Service Oriented Architecture)를 가능하게 하는 풍부한 기능들을 제공하게 되었다. WCF에서는 Service Contract을 통해 해당 서비스가 어떤 종류의 서비스를 제공하는지 명시하게 되고, Data Contract을 통해 어떤 데이타 포맷들이 전달되는지를 명시하게 된다. 서비스 제공자나 이용자는 이러한 Contract만을 인식한다면 서비스를 제공/사용할 수 있게 되었다. 즉, 그것이 어떤 언어로 짜여져 있던지 상관하지 않고, 또는 HTTP, TCP/IP, MSMQ 등 어떤 프로토콜인지 신경쓰지 않는다. WCF는 실무에 상당 부분 사용된 기술이고, 최근에도 많이 사용되고 있다.

웹서비스가 발전해 가면서 최근에는 REST 서비스가 인기를 끌게 되었다. 개념적으로 REST (Representational State Transfer)는 웹서버에 존재하는 리소스를 URL과 HTTP GET, POST UPDATE, DELETE 명령어를 사용하여 엑세스 혹은 갱신 하는 것이다. 이러한 추세에 따라 WCF에서도 REST를 지원하게 되었고 개발자는 기존의 WCF 서비스에 [WebGet], [WebInvoke] Attribute를 추가하여 REST 서비스를 지원하게 되었다.

이러한 WCF REST의 발전은 한편으로 ASP.NET MVC와 접목되는 여지를 갖게 되었는데, 이는 물리적으로 Microsoft가 WCF 팀을 ASP.NET 팀에 병합시킴으로써, 기술적으로는 WCF REST를 ASP.NET MVC에 흡수/통합하여 ASP.NET Web API를 제공함으로써 실현되게 되었다. Visual Studio팀은 .NET Framework 4.0부터 REST 웹서비스로서 ASP.NET Web API를 제공하게 되었다.

C#으로 웹서비스를 개발할 때 여러 가지 고려할 점들이 있으며, 상황에 따라 다른 기술들을 사용하게 된다. 하지만, 최근의 기술적 트렌트로는 많은 회사들이 REST 서비스를 제공하려 하고 있으며, Web API 혹은 WCF REST를 활용하여 이러한 웹서비스를 제공하려 하고 있다.


펌 : https://www.facebook.com/csharpstudycom/posts/264625510358795