웹 서비스-예

웹 서비스 아키텍처를 기반으로 웹 서비스 구현의 일부로 다음 두 가지 구성 요소를 만듭니다.

서비스 제공 업체 또는 게시자

웹 서비스 제공자입니다. 서비스 공급자는 서비스를 구현하고 인터넷 또는 인트라넷에서 사용할 수 있도록합니다.

.NET SDK를 사용하여 간단한 웹 서비스를 작성하고 게시합니다.

서비스 요청자 또는 소비자

이것은 웹 서비스의 모든 소비자입니다. 요청자는 네트워크 연결을 열고 XML 요청을 전송하여 기존 웹 서비스를 활용합니다.

또한 웹 서비스 요청자 두 개를 작성합니다. 하나는 웹 기반 소비자 (ASP.NET 응용 프로그램)이고 다른 하나는 Windows 응용 프로그램 기반 소비자입니다.

다음은 서비스 제공자로 작동하고 애플리케이션에서 사용할 웹 서비스로 두 가지 메소드 (add 및 SayHello)를 노출하는 첫 번째 웹 서비스 예제입니다. 웹 서비스에 대한 표준 템플릿입니다. .NET 웹 서비스는 .asmx 확장자를 사용합니다. 웹 서비스로 노출 된 메서드에는 WebMethod 특성이 있습니다. IIS 가상 디렉터리에이 파일을 FirstService.asmx로 저장합니다 (IIS 구성에 설명 된대로, 예 : c : \ MyWebSerces).

FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>

using System;
using System.Web.Services;
using System.Xml.Serialization;

[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
   [WebMethod]
   public int Add(int a, int b) {
      return a + b;
   }

   [WebMethod]
   public String SayHello() {
      return "Hello World";
   }
}

웹 서비스를 테스트하려면 게시해야합니다. 웹 서비스는 인트라넷이나 인터넷에 게시 할 수 있습니다. 이 웹 서비스는 로컬 컴퓨터에서 실행되는 IIS에 게시됩니다. IIS 구성부터 시작하겠습니다.

  • 시작 → 설정 → 제어판 → 관리 도구 → 인터넷 서비스 관리자를 엽니 다.

  • 기본 웹 사이트를 펼치고 마우스 오른쪽 단추로 클릭하십시오. 새로 만들기 & # rarr; 가상 디렉터리. 가상 디렉터리 생성 마법사가 열립니다. 다음을 클릭하십시오.

  • "Virtual Directory Alias"화면이 열립니다. 가상 디렉터리 이름을 입력하십시오. 예를 들어, MyWebServices입니다. 다음을 클릭하십시오.

  • "웹 사이트 콘텐츠 디렉토리"화면이 열립니다.

  • 가상 디렉터리의 디렉터리 경로 이름을 입력합니다. 예를 들어, c : \ MyWebServices입니다. 다음을 클릭하십시오.

  • "액세스 권한"화면이 열립니다. 요구 사항에 따라 설정을 변경하십시오. 이 연습에 대한 기본 설정을 유지하겠습니다.

  • 다음 버튼을 클릭하십시오. IIS 구성을 완료합니다.

  • 완료를 클릭하여 구성을 완료하십시오.

IIS가 제대로 구성되었는지 테스트하려면 위에서 만든 가상 디렉터리 (C ​​: \ MyWebServices)에 HTML 파일 (예 : x.html)을 복사합니다. 이제 Internet Explorer를 열고http://localhost/MyWebServices/x.html. x.html 파일이 열립니다.

Note− 작동하지 않으면 로컬 호스트를 컴퓨터의 IP 주소로 바꾸십시오. 그래도 작동하지 않으면 IIS가 실행 중인지 확인하십시오. IIS 및 가상 디렉터리를 다시 구성해야 할 수 있습니다.

이 웹 서비스를 테스트하려면 위에서 만든 IIS 가상 디렉터리 (C ​​: \ MyWebServices)에 FirstService.asmx를 복사합니다. Internet Explorer에서 웹 서비스를 엽니 다 (http : //localhost/MyWebServices/FirstService.asmx). 웹 서비스 페이지가 열립니다. 페이지에는 애플리케이션에서 웹 서비스로 노출 된 두 가지 메소드에 대한 링크가 있어야합니다. 축하합니다! 첫 번째 웹 서비스를 작성했습니다!

웹 서비스 테스트

방금 본 것처럼 .NET Framework에서 웹 서비스를 작성하는 것은 쉽습니다. .NET 프레임 워크에서 웹 서비스 소비자를 작성하는 것도 쉽습니다. 그러나 조금 더 복잡합니다. 앞서 말했듯이 웹 기반 소비자와 Windows 애플리케이션 기반 소비자의 두 가지 유형의 서비스 소비자를 작성합니다. 첫 번째 웹 서비스 소비자를 작성하겠습니다.

웹 기반 서비스 소비자

아래와 같이 웹 기반 소비자를 작성하십시오. WebApp.aspx라고합니다. ASP.NET 응용 프로그램입니다. 웹 서비스의 가상 디렉터리 (c : \ MyWebServices \ WebApp.axpx)에 저장합니다.

이 응용 프로그램에는 추가 할 사용자로부터 번호를 가져 오는 데 사용되는 두 개의 텍스트 필드가 있습니다. 클릭하면 Add 및 SayHello 웹 서비스를 가져 오는 Execute 버튼이 있습니다.

WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
   void runSrvice_Click(Object sender, EventArgs e) {
      FirstService mySvc = new FirstService();
      Label1.Text = mySvc.SayHello();
      Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text),  Int32.Parse(txtNum2.Text)).ToString();
   }
</script>

<html>
   <head> </head>
   
   <body>
      <form runat = "server">
         <p>
            <em>First Number to Add </em>:
            <asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4<  /asp:TextBox>
         </p>
			
         <p>
            <em>Second Number To Add </em>:
            <asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
         </p>
			
         <p>
            <strong><u>Web Service Result -</u></strong>
         </p>
			
         <p>
            <em>Hello world Service</em> :
            <asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
         </p>

         <p>
            <em>Add Service</em> :
            & <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
         </p>
			
         <p align = "left">
            <asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
         </p>
      </form>
   </body>
</html>

소비자가 생성 된 후에는 사용할 웹 서비스에 대한 프록시를 생성해야합니다. 이 작업은 추가 된 웹 서비스를 참조 할 때 Visual Studio .NET에서 자동으로 수행됩니다. 따라야 할 단계는 다음과 같습니다.

  • 사용할 웹 서비스에 대한 프록시를 만듭니다. 프록시는 .NET SDK와 함께 제공되는 WSDL 유틸리티를 사용하여 생성됩니다. 이 유틸리티는 웹 서비스에서 정보를 추출하고 프록시를 만듭니다. 프록시는 특정 웹 서비스에 대해서만 유효합니다. 다른 웹 서비스를 사용해야하는 경우이 서비스에 대한 프록시도 만들어야합니다. Visual Studio .NET은 웹 서비스 참조가 추가 될 때 자동으로 프록시를 만듭니다. .NET SDK와 함께 제공되는 WSDL 유틸리티를 사용하여 웹 서비스에 대한 프록시를 만듭니다. 현재 디렉터리에 FirstSevice.cs 파일이 생성됩니다. 웹 서비스에 대한 FirstService.dll (프록시)을 만들기 위해 컴파일해야합니다.

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • 컴파일 된 프록시를 웹 서비스의 가상 디렉터리 (c : \ MyWebServices \ bin)의 bin 디렉터리에 넣습니다. 인터넷 정보 서비스 (IIS)는이 디렉터리에서 프록시를 찾습니다.

  • 이미했던 것과 같은 방식으로 서비스 소비자를 만듭니다. 웹 서비스 프록시의 개체는 소비자에서 인스턴스화됩니다. 이 프록시는 서비스와의 상호 작용을 처리합니다.

  • IE에 소비자의 URL을 입력하여 테스트합니다 (예 : http : //localhost/MyWebServices/WebApp.aspx).

Windows 애플리케이션 기반 웹 서비스 소비자

Windows 응용 프로그램 기반 웹 서비스 소비자를 작성하는 것은 다른 Windows 응용 프로그램을 작성하는 것과 같습니다. 응용 프로그램을 컴파일 할 때 프록시 (이미 수행)를 만들고이 프록시를 참조하기 만하면됩니다. 다음은 웹 서비스를 사용하는 Windows 애플리케이션입니다. 이 응용 프로그램은 웹 서비스 개체 (물론 프록시)를 만들고 여기에 SayHello 및 Add 메서드를 호출합니다.

WinApp.cs

using System;
using System.IO;

namespace SvcConsumer {
   class SvcEater {
      public static void Main(String[] args) {
         FirstService mySvc = new FirstService();
         Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
         Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
      }
   }
}

을 사용하여 컴파일하십시오 c:\>csc /r:FirstService.dll WinApp.cs. WinApp.exe가 생성됩니다. 응용 프로그램과 웹 서비스를 테스트하려면 실행하십시오.

이제 질문이 생깁니다.이 애플리케이션이 실제로 웹 서비스를 호출하는지 어떻게 확신 할 수 있습니까?

테스트는 간단합니다. 웹 서비스에 접속할 수 없도록 웹 서버를 중지하십시오. 이제 WinApp 애플리케이션을 실행하십시오. 런타임 예외가 발생합니다. 이제 웹 서버를 다시 시작하십시오. 작동합니다.