728x90
반응형

 

웹 서비스 구현

 

웹 서비스 구현

웹 서비스 만들기 ASP.NET으로 웹 서비스 개발시, 복잡한 SOAP 메시징과 HTTP 전송등의 작업을 직접 할 필요가 없습니다. 개발자는 단지 웹 서비스로 제공되는 클래스를 정의하기 위해서 필요한 메서

kkunja.tistory.com

클라이언트가 사용할 수 있는 웹 Proxy 만들기

 

클라이언트가 ShowHelloService 웹 서비스가 어떤 사이트에 위치하고 있다는 것을 안다고 가정할 때 웹 프록시는 클라이언트가 원격지에서 웹 서비스로 제공되는 객체를 마치 자신의 컴퓨터의 객체를 사용하는 것처럼 클라이언트를 구현하는 개발자에게 투명성을 제공해 주는 역할을 합니다.

 

즉, 클라이언트는 로컬의 웹 프록시에 정의되어 있는 클래스에 대한 객체를 생성하고 객체의 메서드를 호출해서 사용합니다.

  • 웹 프록시는 클라이언트가 호출된 메서드가 실제 정의되어 있는 원격지로 보내게 됩니다.
  • 이 원격지는 웹 서비스를 제공하고 있는 곳을 의미합니다.
  • 이제 웹 서비스에서 호출이 발생되고 수행된 후에 리턴값을 다시 가져옵니다
  • 그리고 웹 프록시는 클라이언트에게 마치 로컬에 있는 메서드처럼 리턴 값을 넘겨줍니다.

 

웹 프록시 생성

웹 프록시는 닷넷에서 제공하는 언어를 가지고 직접 생성이 가능합니다.

.NET에서는 명령어 한줄이면 자동으로 만들어줍니다.

WSDL.exe : 웹 프록시를 생성시키는 명령어 입니다.

WSDL /o:ShowHelloServiceProxy.cs http://localhost/CCM/Hello.asmx?WSDL

ShowHelloServiceProxy.cs 파일로 생성됩니다.

 

생성된 파일을 dll 형태로 컴파일해야 합니다.

csc /t:library ShowHelloServiceProxty.cs

ShowHelloServiceProxy.dll이 생성됩니다.

 

 

이제 웹 서비스를 제공받는 클라이언트를 구현해보겠습니다.

웹 서비스를 제공받는 클라이언트는 크게 세 가지 형태로 나눌 수 있습니다.

  • 웹 응용 프로그램
  • GUI 응용 프로그램
  • 콘솔 응용 프로그램

 

ASP.NET 웹 응용 프로그램 형태의 클라이언트 구현

ShowHelloService 웹 서비스에 대한 웹 프록시를 생성하면, 클라이언트의 개발은 웹 프록시를 참조해서 구현하면 됩니다.

 

웹 프록시는 클라이언트 파일인 .aspx파일과 동일 폴더에 둡니다.

//HelloClient.aspx
<%--HelloClient.aspx--%>
<%@ Page Language = "C#" %>
<%@ Import Namespace ="System" %>

<script runat="server">
     void myButton_Click(Object sender, EventArgs e)
     {
       
          // 웹 서비스 클래스에 대한 객체를 생성합니다.
          ShowHelloService shs = new ShowHelloService();
          
          // 웹 서비스 메서드를 호출합니다.
          myTextBox.text = shs.ShowHello();
     }
</script>
<html>
<body>
<form id="Form1" method="post" runat="server">
       </asp:TextBox>
       <asp:Button id="myButton"
       Text="웹서비스요청"
       runat="server"
       BorderStyle="Solid"
       OnClick="myButton_Click"/>
</form>
</body>
</html>

웹 프록시는 클라이언트의 호출을 자동으로  SOAP 메시지 형태로 변환해서 HTTP 프로토콜을 통해 웹 서비스가 위치한 곳으로 메서드와 인자를 넘깁니다. 원격지에서 SOAP 메시지를 통해 얻은 리턴 값은 다시 ASP.NET 웹 클라이언트가 이해할 수 있는 리턴값으로 돌려줍니다.

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기