본문 바로가기

Dev.../웹서비스

[펌] ASP.NET을 사용하여 만든 XML Web services의 상태 관리

XML Web services를 구현하는 클래스가 WebService 클래스에서 파생되면 XML Web services는 다른 ASP.NET 응용 프로그램과 같은 상태 관리 옵션에 액세스할 수 있습니다. WebService 클래스에는 SessionApplication 개체를 포함한 많은 공용 ASP.NET 개체가 들어 있습니다.

Application 개체는 Web 응용 프로그램 내에서 실행하는 모든 코드에 액세스할 수 있는 데이터를 저장하기 위한 메커니즘을 제공하지만, Session 개체는 각 클라이언트 세션을 기반으로 데이터를 저장하기 위한 메커니즘을 제공합니다. 클라이언트가 쿠키를 지원하는 경우 쿠키는 클라이언트 세션을 확인할 수 있습니다. Session 개체에 저장된 데이터는 WebService에서 파생되는 클래스에 대해 WebMethod 특성의 EnableSession 속성이 true로 설정된 경우에만 사용할 수 있습니다. WebService에서 파생되는 클래스는 Application 개체에 자동으로 액세스할 수 있습니다.

특정 클라이언트 세션에 대한 상태에 액세스하고 저장하려면

  1. XML Web services를 선언합니다.

    <%@ WebService Language="VB" Class="ServerUsage" %>

  2. System.Web.Services 네임스페이스에 대한 참조를 추가합니다.

    Imports System.Web.Services

  3. WebService에서 XML Web services를 구현하는 클래스를 파생합니다.

    Public Class ServerUsage : Inherits WebService

  4. XML Web services 메서드를 선언합니다. 여기서, 이 메서드는 WebMethod 특성의 EnableSession 속성을 true로 설정합니다.

    < WebMethod(EnableSession:=True) > _Public Function PerSessionServiceUsage() As Integer

  5. 나중에 검색할 상태의 이름을 지정하는 Session에 상태를 저장합니다. 다음 예제에서는 MyServiceUsage 상태 변수에 값 1을 저장합니다.

    Session("MyServiceUsage") = 1

  6. Session에 저장된 상태 변수에 액세스합니다.

    다음 예제에서는 MyServiceUsage 상태 변수에 액세스하여 해당 값을 1씩 늘립니다.

    Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1

XML Web services를 호스팅하는 웹 응용 프로그램에 대한 상태에 액세스하고 저장하려면

  1. XML Web services를 선언합니다.

    <%@ WebService Language="VB" Class="ServerUsage" %>

  2. System.Web.Services 네임스페이스에 대한 참조를 추가합니다.

    Imports System.Web.Services

  3. WebService에서 XML Web services를 구현하는 클래스를 파생합니다.

    Public Class ServerUsage : Inherits WebService

  4. XML Web services 메서드를 선언합니다.

    < WebMethod > _Public Function PerSessionServiceUsage() As Integer

  5. 나중에 검색할 상태의 이름을 지정하는 Application에 상태를 저장합니다. 다음 예제에서는 appMyServiceUsage 상태 변수에 값 1을 저장합니다.

    Application("appMyServiceUsage") = 1

  6. Application에 저장된 상태 변수에 액세스합니다.

    다음 예제에서는 appMyServiceUsage 상태 변수에 액세스하여 해당 값을 1씩 늘립니다.

    Application("appMyServiceUsage") = _   CInt(Application("appMyServiceUsage")) + 1

다음 코드 예제는 ServerUsage PerSessionServerUage라는 XML Web services 메서드가 있는 XML Web services입니다. ServerUsage는 XML Web services 메서드와 통신하는 클라이언트와 상관 없이 ServerUsage XML Web services 메서드에 대한 액세스 횟수를 나타내는 방문 횟수 카운터입니다. 예를 들어, 세 개의 클라이언트가 ServerUsage XML Web services 메서드를 연속적으로 호출하면 마지막 클라이언트가 반환 값으로 3을 받습니다. 반면, PerSessionServiceUsage는 특정 클라이언트 세션에 대한 방문 횟수 카운터입니다. 따라서, 세 개의 클라이언트가 PerSessionServiceUsage에 연속적으로 액세스하면 각 클라이언트는 첫 호출 때와 같은 1을 반환 값으로 받습니다.

<%@ WebService Language="VB" Class="ServerUsage" %>Imports System.Web.ServicesPublic Class ServerUsage    Inherits WebService    <WebMethod(Description := "Number of times this service has been accessed.")> _    Public Function ServiceUsage() As Integer        ' If the XML Web service method hasn't been accessed, initialize        ' it to 1.        If Application("appMyServiceUsage") Is Nothing Then            Application("appMyServiceUsage") = 1        Else            ' Increment the usage count.            Application("appMyServiceUsage") = _               CInt(Application("appMyServiceUsage")) + 1        End If        Return CInt(Application("appMyServiceUsage"))    End Function        <WebMethod(Description := "Number of times a particular client session has accessed this XML Web service method.", EnableSession := True)> _    Public Function  PerSessionServiceUsage() As Integer       ' If the XML Web service method hasn't been accessed,       ' initialize it to 1.        If Session("MyServiceUsage") Is Nothing Then            Session("MyServiceUsage") = 1        Else            ' Increment the usage count.           Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1        End If        Return CInt(Session("MyServiceUsage"))    End Function    End Class

참고 항목

ASP.NET 상태 관리 | ASP.NET을 사용하여 XML Web services 빌드