熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET創建Web服務之管理Web服務狀態

2013-11-13 10:09:30  來源: .NET編程 

  XML Web服務在類實現派生於WebService類的XML Web服務時可以使用和其他ASPNET應用程序相同的狀態管理選項WebService類包含許多公共ASPNET對象包括Session和Application對象
  
  Application對象提供一個儲存運行在Web應用程序中的代碼可訪問的數據的機制而Session對象允許數據存儲在每客戶端會話基礎上如果客戶端支持cookies那麼可以使用cookie來識別客戶端會話
  
  Session對象中存儲的數據只有在WebMethod屬性的EnableSession屬性設置為true來使用WebService派生的類時才可用WebService派生的類自動可訪問Application對象
  
  訪問和保存特定客戶端會話的特定狀態
  
  聲明一個XML Web服務
  
  [C#]
  <%@ WebService Language=C# Class=ServerUsage %>
  [Visual Basic]
  <%@ WebService Language=VB Class=ServerUsage %>
  
  添加一個引用到SystemWebServices域名空間
  
  [C#]
  using SystemWebServices;
  [Visual Basic]
  Imports SystemWebServices
  
  從WebService類派生實現XML Web服務的類
  
  [C#]
  public class ServerUsage : WebService
  [Visual Basic]
  Public Class ServerUsage : Inherits WebService
  
  聲明一個XML Web服務方法設置WebMethod屬性的EnableSession屬性為true
  
  [C#]
  [ WebMethod(EnableSession=true) ]
  public int PerSessionServiceUsage()
  [Visual Basic]
  < WebMethod(EnableSession:=True) > _
  Public Function PerSessionServiceUsage() As Integer
  
  保存狀態在會話中為狀態指定一個名稱便於稍後的檢索 在下面的示例中被保存在一個名為MyServiceUsage的狀態變量中
  
  [C#]
  Session[MyServiceUsage] = ;
  [Visual Basic]
  Session(MyServiceUsage) =
  
  訪問保存在Session中的狀態變量
  
  在下面示例中MyServiceUsage狀態變量被訪問來遞增其值
  
  [C#]
  Session[MyServiceUsage] = ((int) Session[MyServiceUsage]) + ;
  [Visual Basic]
  Session(MyServiceUsage) = CInt(Session(MyServiceUsage)) +
  
  訪問並保存Web應用程序中的XML Web服務的特定的狀態
  
  聲明一個XML Web服務
  
  [C#]
  <%@ WebService Language=C# Class=ServerUsage %>
  [Visual Basic]
  <%@ WebService Language=VB Class=ServerUsage %>
  
  添加一個引用到SystemWebServices域名空間
  
  [C#]
  using SystemWebServices;
  [Visual Basic]
  Imports SystemWebServices
  
  從WebService類派生實現XML Web服務的類
  
  [C#]
  public class ServerUsage : WebService
  [Visual Basic]
  Public Class ServerUsage : Inherits WebService
  
  聲明一個XML Web服務方法
  
  [C#]
  [ WebMethod ]
  public int PerSessionServiceUsage()
  [Visual Basic]
  < WebMethod > _
  Public Function PerSessionServiceUsage() As Integer
  
  保存狀態在Application中為狀態指定一個名稱便於稍後的檢索在下面的示例中被保存在一個名為appMyServiceUsage的狀態變量中
  
  [C#]
  Application[appMyServiceUsage] = ;
  [Visual Basic]
  Application(appMyServiceUsage) =
  
  訪問保存在Application中的狀態變量
  
  在下面示例中appMyServiceUsage狀態變量被訪問來遞增其值
  
  [C#]
  Application[appMyServiceUsage] =
  ((int) Application[appMyServiceUsage]) + ;
  [Visual Basic]
  Application(appMyServiceUsage) = _
  CInt(Application(appMyServiceUsage)) +
  在下面示例中appMyServiceUsage狀態變量被訪問來遞增其值下面的代碼示例是一個使用兩個XML Web服務方法的XML Web服務ServerUsage和PerSessionServerUageServerUsage是一個點擊計數器用於訪問ServerUsage XML Web服務方法時計數而不管客戶端如何與XML Web服務方法通信例如如果三個客戶端連續地調用ServerUsage XML Web服務方法最後一個接收一個返回值而PerSessionServiceUsage則是用於一個特別的客戶端會話的計數器如果三個客戶端連續地訪問PerSessionServiceUsage每個客戶端都會在第一次調用的時候接收到相同的結果
  
  [C#]
  <%@ WebService Language=C# Class=ServerUsage %>
  using SystemWebServices;
  
  public class ServerUsage : WebService {
  [ WebMethod(Description=Number of times this service has been accessed) ]
  public int ServiceUsage() {
  // If the XML Web service method hasnt been accessed
  // initialize it to
  if (Application[appMyServiceUsage] == null)
  {
  Application[appMyServiceUsage] = ;
  }
  else
  {
  // Increment the usage count
  Application[appMyServiceUsage] = ((int) Application[appMyServiceUsage]) + ;
  }
  return (int) Application[appMyServiceUsage];
  }
  
  [ WebMethod(Description=Number of times a particualr client session has accessed this XML Web service methodEnableSession=true) ]
  public int PerSessionServiceUsage() {
  // If the XML Web service method hasnt been accessed initialize
  // it to
  if (Session[MyServiceUsage] == null)
  {
  Session[MyServiceUsage] = ;
  }
  else
  {
  // Increment the usage count
  Session[MyServiceUsage] = ((int) Session[MyServiceUsage]) + ;
  }
  return (int) Session[MyServiceUsage];
  }
  }
  
  [Visual Basic]
  <%@ WebService Language=VB Class=ServerUsage %>
  Imports SystemWebServices
  
  Public 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 hasnt been accessed initialize
   it to
  If Application(appMyServiceUsage) Is Nothing Then
  Application(appMyServiceUsage) =
  Else
   Increment the usage count
  Application(appMyServiceUsage) = _
  CInt(Application(appMyServiceUsage)) +
  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 hasnt been accessed
   initialize it to
  If Session(MyServiceUsage) Is Nothing Then
  Session(MyServiceUsage) =
  Else
   Increment the usage count
  Session(MyServiceUsage) = CInt(Session(MyServiceUsage)) +
  End If
  Return CInt(Session(MyServiceUsage))
  End Function
  
  End Class
From:http://tw.wingwit.com/Article/program/net/201311/12739.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.