웹 서비스를 이용하는 방법을 생각해 보자. 계산기능을 전문적으로 하는 서비스로의 서버를 만들수 있다. 클라이언트로부터 어떤 서비스 요청이 들어 왔을 때(ex- 두 숫자를 더하는 계산 등) 웹 사이트 서버는 웹 서비스 서버에 적재되어있는 계산함수를 호출하게 된다.(원격 프로시져의 호출 - RPC: Remoting Procedul Call) 

 호출 할 때 클라이언트로부터 받은 입력된 두 숫자는 웹 서비스 서버의 계산함수의 파라미터로 전달된다. 웹 서비스 서버에서는 계산기능을 수행하고 난 결과 값을 웹 사이트 서버로 넘겨주게 되고, 웹 서버에서는 결과치를 HTML로 변화하여 클라이언 측으로 보내주게 된다. 이때, 웹 사이트 서버에서의 서비스 함수를 호출 할 때 XML포멧으로 요청하게 되며 리턴되는 결과값도 XML형식의 값으로 전달받는다.

 즉, 웹 서비스란 어떠한 보여줌(View)의 기능보다는 계산(Calculation)적인 요소가 많이 들어가 있는 개념이며 서비스이다.

 웹 서비스는 HTTP를 통한 Remoting Method Call을 수행하는 새로운 아키텍처이다. 클라이언트는 웹 서버내에 정의된 메소드를 호출(Method Call)함으로서 서비스를 받을 수 있다. 인터넷이란 분산환경에서 그 중요성이 커지고 있는 부분은 원격지 응용프로그램과 상호 작용할 수 있어야 한다는 점이다. 이러한 종류의 이터랙션은 주로 클라이언트가 매개 변수를 전달하고 그 결과를 반환하는 프로시져 호출(RPC)로서 모텔링 된다.

 HTTP가 아주 융통성 있는 기술인 것은 사실이지만, 원격 프로시저를 호출하기 위한 프로토콜로서 설계된 것이 아니기 때문에 적절하지 못하다. 그 대신 원격지 응용 프로그램과 통신하는데 사용할 수 있는 다양한 분산객체 프로토콜이 존재한다.

 그 중에는 마이크로 소프트의 디스트리뷰트 컴퍼넌트 오브젝트 모델(Distributed Component Object : DCOM)에서 서용되는 프로토콜, 오브젝트 매니지먼트 그룹(Object Management Group)에서 정의된 Internet Inter-ORB Protocol(IIOP)등이 있다. 이러한 프로토콜은모두 클라이언트가 서버응용 프로그램에게 RPC를 전달한 다음 응답을 받게하는 서비스를 제공한다.

 보통 프로토콜에서는 서로간의 포트를 통하여 통신하게 된다. 예를 들어 HTTP는 80번 포트를, FTP는 21번 전용 포트 등을 사용하여 서로간의 메시지를 전달하게 된다. 반면에 위에서 소개한 분산객체 프로토콜들은 동적으로 할당받은 프로토콜을 사용하여 클라이언트와 서버사이에 통신을 하도록 한다.

 그러나 이부분에서 문제점이 발생한다. 만약 방화벽이 설치되어 있다면 전용프트를 사용하지 않는 포트들은 블로킹을 당해 통신할 수 없다. 따라서 위의 임으적으로 포트번호를 할당받는 분산객체 프로토콜등은 메시지를 전달할 수 없다는 결론이 나온다.

 우리는 "HTTP 프로토콜과 같이 보낼 수 있다면?"이라는 생각을 가질 수 있다. HTTP프로토콜은 전용 80번 포트를 사용하고 방화벽에 의해서 블로킹 당할 필요가 없기 때문에 분산환경에서 리모팅을 호출하는데 있어서 전혀 문제 될 것이 없다. 그래서 SOAP이 탄생하게 된다.

 SOAP(Simple Object Access Protocol)은 HTTP맨 위에 분산객체 프로토콜을 올려 전달하는 것이다. SOAP은 XML 문서를 포함할 수 있는 전용 프로토콜이라 했다. XML문서 내어에는 원격 메소드에 대한 정보(호출할 메소드 이름 등)가 실려있으며 그 정보에 의해서 원격 메소드에 대한 호출을 가능하게 만들어준다.

 클라이언트 측에서 요청한 SOAP패킥은 HTTP Post방식으로 웹 서비스에 넘어가고 웹 서비스의 ASP.NET에서 패킷을 파싱하고 객체와 매소드 이름을 분리해 내어 객체에 대해서는 인스턴스를 실행하고 생성된 객체로 하여금 네소드 호출을 실행한다.

 웹 서비스는 분산환경에서 마치 하난의 컴포넌트처럼 쓰일 수 있다. 웹 서비스는 끼워넣기식으로 하나의 또 다른 클리이언트에 부착될 수 있으며, 웹 환경뿐만아니라 웬도우 애플리케이션에도 임포트 될 수 있다. 웹 서비스는 분산환경에서 사용될 수 있는 컴포넌트라고 생각해도 좋다. 서로간의 웹 서비스들은 Xml과 SOAP을 이용해서 메소드의 정보를 전달하며 통신한다. 이렇게 웹 서비스는 커다란 거미줄 처럼 묶이변서 하나의 애플리케이션을 형성하는 것이다.

 결론을 내리면 닷넷 환경의 핵심은 XML과 SOAP을 이용한 분산 서비스의 구현이라고 볼 수 있다.

-C# & .NET Programming Bible 2nd Edition 에서

+ Recent posts