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
댓글 없음:
댓글 쓰기