728x90
반응형

웹 서비스 만들기

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

 

웹 서비스 선언

  • .asmx 파일 확장자를 가진 파일로 정의됩니다
  • 실제 코드는 .asmx 파일이나 미리 컴파일된 클래스(.dll파일)로 되어 있습니다.
  • .asmx 파일에 WebService 지시어를 추가해서 웹 서비스를 선업합니다.
    <%@ WebService Language = "C#" Class = "클래스 이름" %>

 

웹 서비스 클래스 만들기

.asmx 파일로 작성

//Hello.asmx

 // 프로그래밍 언어와 클래스 이름에 대한 선언
 <%@ WebService Language="C#" Class="ShowHelloService" %>
 using System;
 using System.Web.Services;
 
  // WebService 클래스에서 파생시켜 사용자 클래스 정의
  public class ShowHelloService : WebService
  {
  
     [WebMethod] // 웹 메서드 속성을 가진다는 것을 명시
     public string ShowHello()
     {
        return "Hello WebService!!";
     }
  }

 

웹 폴더에 저장하고 실행

-테스트 초기화면

-메서드 호출화면 : 작성한 문자열이 XML 형식의 값으로 표시되는 것 확인 가능

 

개발한 부분

  • "Hello WebService" 문자열을 주는 웹 메서드를 가진 ShowHelloService 클래스 정의
  • .asmx 파일로 저장
  • 적당한 웹 폴더에 넣어둡니다
  • 클라이언트가 웹 서비스를 호출해서 리턴 값을 XML 형태로 얻은것 입니다.

개발하지 않는 부분

  • 클라이언트가 ShowHelloService 웹 서비스를 어떤 웹 사이트에서 제공하는지를 알려주지 않음(UDDI)
  • 이 웹서비스를 제공하는 웹 사이트의 어떤 위치에 있는지 알려주지 않음(DISCO)

자동으로 작성된 작업

  • 이 웹 서비스가 제공하는 우베 서비스에 대한 XML 형식의 설명 문서 자동 생성(WSDL)
  • 실제 클라이언트가 메서드 호출하는 메시징 형식과 이 웹 서비스를 제공하는 서버가 리턴 값을 돌려줄 때의 메시징 형식 직접 구현 필요 없음(SOAP)

WSDL : 브라우저 화면 상단의 "서비스 설명" 클릭

  • XML 형식으로 변환되어 있습니다.
  • 클라이언트가 ShowHello() 라는 이름의 메서드를 호출하려면, 그 메서드가 인자를 갖지 않고, string 타입을 리턴한다는 것을 알려주는 역할을 수행합니다
  • ASP.NET에서 자동 수행합니다.

SOAP

  • ShowHello() 웹 메서드를 호출한 화면 아래 부분에 나와있습니다.
  • XML로 구현되어 있고 SOAP 요청과 응답에 대한 정보를 보여주게 됩니다.
  • SOAP는 HTTP 와 같은 일반 전송 프로토콜에 표준 데이터 형식인 XML을 이용해 데이터를 교환하는 프로토콜입니다.

SOAP는 단지 문자열로 마샬링된 XML로써 POST를 통해 HTTP 메시지의 본문으로 전송되는 데이터입니다.

 

웹 서비스 만들기 2

코드-비하인드를 사용해서 ShowHelloService 서비스 만들기

웹 서비스 개발은 UI가 없으므로, .asmx파일 수정을 통해 쉽게 할 수 있습니다.

//Hello.asmx
 <%@ WebService Language="C#" Codebehind="Hello.asmx.cs"
     Class="ShowHelloService" %>

//Hello.asmx.cs

using System;
using System.Web.Services;

public class ShowHelloService : WebService
{
   [WebMethod] // 웹 메서드 속성을 가진다는 것을 명시
   public string ShowHello()
   {
      return "Hello WebService!!";
   }
}

1. 정의된 .cs 파일을 .dll 파일로 컴파일해서 어셈블리로 만듬

csc /t:library Hello.asmx.cs -> c://Documents and Settings\Administrator\Hello.asmx.dll

2. .asmx 파일이 있는 위치에 bin 폴더를 생성해서 저장

3. Web Browser에서 접근

 

코드

  • 비하인드를 사용하면 소스 코드가 어셈블리로 저장되므로 코드가 유출될 우려가 없습니다.
  • 이미 컴파일되어 있으므로 초기 요청에 빠르게 동작합니다.
  • 다른 응용 프로그램에서 재사용 가능합니다.
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기