XML Web services를 구현하는 클래스가 WebService 클래스에서 파생되면 XML Web services는 다른 ASP.NET 응용 프로그램과 같은 상태 관리 옵션에 액세스할 수 있습니다. WebService 클래스에는 Session 및 Application 개체를 포함한 많은 공용 ASP.NET 개체가 들어 있습니다.
Application 개체는 Web 응용 프로그램 내에서 실행하는 모든 코드에 액세스할 수 있는 데이터를 저장하기 위한 메커니즘을 제공하지만, Session 개체는 각 클라이언트 세션을 기반으로 데이터를 저장하기 위한 메커니즘을 제공합니다. 클라이언트가 쿠키를 지원하는 경우 쿠키는 클라이언트 세션을 확인할 수 있습니다. Session 개체에 저장된 데이터는 WebService에서 파생되는 클래스에 대해 WebMethod 특성의 EnableSession 속성이 true로 설정된 경우에만 사용할 수 있습니다. WebService에서 파생되는 클래스는 Application 개체에 자동으로 액세스할 수 있습니다.
특정 클라이언트 세션에 대한 상태에 액세스하고 저장하려면
- XML Web services를 선언합니다.
[C#]<%@ WebService Language="C#" Class="ServerUsage" %>
[Visual Basic]<%@ WebService Language="VB" Class="ServerUsage" %>
- System.Web.Services 네임스페이스에 대한 참조를 추가합니다.
[C#]using System.Web.Services;
[Visual Basic]Imports System.Web.Services
- WebService에서 XML Web services를 구현하는 클래스를 파생합니다.
[C#]public class ServerUsage : WebService
[Visual Basic]Public Class ServerUsage : Inherits WebService
- XML Web services 메서드를 선언합니다. 여기서, 이 메서드는 WebMethod 특성의 EnableSession 속성을 true로 설정합니다.
[C#][ WebMethod(EnableSession=true) ]public int PerSessionServiceUsage()
[Visual Basic]< WebMethod(EnableSession:=True) > _Public Function PerSessionServiceUsage() As Integer
- 나중에 검색할 상태의 이름을 지정하는 Session에 상태를 저장합니다. 다음 예제에서는
MyServiceUsage
상태 변수에 값 1을 저장합니다.[C#]Session["MyServiceUsage"] = 1;
[Visual Basic]Session("MyServiceUsage") = 1
- Session에 저장된 상태 변수에 액세스합니다.
다음 예제에서는
MyServiceUsage
상태 변수에 액세스하여 해당 값을 1씩 늘립니다.[C#]Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
[Visual Basic]Session("MyServiceUsage") = CInt(Session("MyServiceUsage")) + 1
XML Web services를 호스팅하는 웹 응용 프로그램에 대한 상태에 액세스하고 저장하려면
- XML Web services를 선언합니다.
[C#]<%@ WebService Language="C#" Class="ServerUsage" %>
[Visual Basic]<%@ WebService Language="VB" Class="ServerUsage" %>
- System.Web.Services 네임스페이스에 대한 참조를 추가합니다.
[C#]using System.Web.Services;
[Visual Basic]Imports System.Web.Services
- WebService에서 XML Web services를 구현하는 클래스를 파생합니다.
[C#]public class ServerUsage : WebService
[Visual Basic]Public Class ServerUsage : Inherits WebService
- XML Web services 메서드를 선언합니다.
[C#][ WebMethod ]public int PerSessionServiceUsage()
[Visual Basic]< WebMethod > _Public Function PerSessionServiceUsage() As Integer
- 나중에 검색할 상태의 이름을 지정하는 Application에 상태를 저장합니다. 다음 예제에서는
appMyServiceUsage
상태 변수에 값 1을 저장합니다.[C#]Application["appMyServiceUsage"] = 1;
[Visual Basic]Application("appMyServiceUsage") = 1
- Application에 저장된 상태 변수에 액세스합니다.
다음 예제에서는
appMyServiceUsage
상태 변수에 액세스하여 해당 값을 1씩 늘립니다.[C#]Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1;
[Visual Basic]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을 반환 값으로 받습니다.
[C#]<%@ WebService Language="C#" Class="ServerUsage" %>using System.Web.Services;public class ServerUsage : WebService { [ WebMethod(Description="Number of times this service has been accessed.") ] public int ServiceUsage() { // If the XML Web service method hasn't been accessed, // initialize it to 1.if (Application["appMyServiceUsage"] == null)
{Application["appMyServiceUsage"] = 1
; } else { // Increment the usage count.Application["appMyServiceUsage"] = ((int) Application["appMyServiceUsage"]) + 1;
} return (int)Application["appMyServiceUsage"]
; } [WebMethod
(Description="Number of times a particualr client session has accessed this XML Web service method.",EnableSession=true
) ] public int PerSessionServiceUsage() { // If the XML Web service method hasn't been accessed, initialize // it to 1.if (Session["MyServiceUsage"] == null)
{Session["MyServiceUsage"] = 1;
} else { // Increment the usage count.Session["MyServiceUsage"] = ((int) Session["MyServiceUsage"]) + 1;
} return (int)Session["MyServiceUsage"];
}}
[Visual Basic]<%@ 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
참고 항목
'Dev... > 웹서비스' 카테고리의 다른 글
[펌] WebService Behavior (0) | 2005.01.29 |
---|---|
[펌] WebService의 간략한 소개 (0) | 2005.01.29 |
[펌] webservice (0) | 2005.01.29 |
[펌] WebService를 위한 표준 (0) | 2005.01.29 |
[펌] SOAP 인코딩이 웹 서비스 퍼포먼스에 미치는 영향 (0) | 2005.01.29 |