WEB SERVICES状态管理

services|web

WEB SERVICES状态管理

在默认情况下,.NET下的WEB SERVICES是无状态的.不过可以用ASP.NET提供的状态管理
那就是SESSION和APPLICATION.这使得WEB SERVICES下状态管理变得简单了,只需使用WEBMETHOD属性的ENABLESESSION子属性就可[WEBMETHOD(ENABLESESSION=TRUE)]

服务端代码如下:
[WebMethod(EnableSession= true)]
public client GetClientState()
{
cstate = (client)Session["clientstate"];
if (cstate == null)
{
cstate = new client();
Session["clientstate"] = cstate;
}

return cstate;
}
[WebMethod(EnableSession = true)]
public void click()
{
client c = this.GetClientState();
c.requsest++;

}

}
public class client
{
public int requsest;
}

先创建一个CLIENT类,用于表示客户端连接的次数,GetClientState()方法用于返回当前用户的状态.
客户端代码如下:
partial class Form1 : Form
{
webstate.Service ws ;
webstate.client c;
public Form1()
{
InitializeComponent();
ws = new testwebstate.webstate.Service();
ws.CookieContainer = new System.Net.CookieContainer();
//设置COOKIE容器,以便代理对象能正确使用COOKIE来提供状态信息
}

private void button1_Click(object sender, EventArgs e)
{
ws.click();//每点击一次,当前用户的CLIENT STATE的REQUEST就++
c = ws.GetClientState();//获取状态信息
MessageBox.Show("you have click" + c.requsest + "times");
}
}
以上的是SEESION的状态管理,下面介绍APPLICATION.
服务端代码如下:
[WebServiceBinding(ConformanceClaims = WsiClaims.BP10, EmitConformanceClaims = true)]
public class Service : System.Web.Services.WebService
{
ArrayList clist;

[WebMethod]
public string GetHistory()
{
StringBuilder xbuider = new StringBuilder();//要添加USING SYSTEM.TEXT;
clist = (ArrayList)Application["client"];
if (clist == null)
{
clist = new ArrayList();
Application["client"] = clist;
}
foreach (client c in clist)
{
xbuider.Append(c.name + "" + c.request +"" + "\r\n");

}
return xbuider.ToString();

}
[WebMethod]
public void click(ref client c)//这里用的是传递对象的引用
{
clist = (ArrayList)Application["client"];
if (clist == null)
{
clist = new ArrayList();
Application["client"] = clist;
}
clist.Add(c);

}

}
public class client
{
public int request;
public string name;
}
客户端代码如下:
partial class Form1 : Form
{

webstate.client c;
public Form1()
{
InitializeComponent();
c = new testwebstate2.webstate.client();
c.name = "jisiki";

}

private void button1_Click(object sender, EventArgs e)
{

c.request++;
webstate.Service s = new testwebstate2.webstate.Service();
s.click(ref c);//这里用的是传递对象的引用
this.richTextBox1.Text = s.GetHistory();

}
}
对于WEB SERVICES而言,APPLICATION属性总是可用的,APPLICATION返回HTTPAPPLICATIONSTATE类
的一个实例,它能存储来自任何客户端的可访问的"名称/值"对.

时间: 2024-11-03 07:04:48

WEB SERVICES状态管理的相关文章

在Web Services中管理Sessions

在Web service中通常采用两种公认技术来管理session,一种是借助HTTP和HTTP cookies,另一种是用SOAP headers.Axis能帮你实现这两种技术. 在Web service中没有一种管理session的标准方法,只有两种公认的技术,一种是依靠HTTP和HTTP cookies,另一种,或许也是最重要的一种方法,就是用SOAP headers.Axis能帮助开发人员实现这两种技术. 在Axis中缺省使用的是HTTP managed sessions.在一个服务器中

ASP.NET创建Web服务、管理Web服务状态

XML Web服务在类实现派生于WebService类的XML Web服务时,可以使用和其他ASP.NET应用程序相同的状态管理选项.WebService类包含许多公共ASP.NET对象,包括Session和Application对象. Application对象提供一个储存运行在Web应用程序中的代码可访问的数据的机制,而Session对象允许数据存储在每客户端会话基础上.如果客户端支持cookies,那么可以使用cookie来识别客户端会话. Session对象中存储的数据只有在WebMet

ASP.NET创建Web服务管理Web服务状态

ASP.NET创建Web服务管理Web服务状态 XML Web服务在类实现派生于WebService类的XML Web服务时,可以使用和其他ASP.NET应用程序相同的状态管理选项.WebService类包含许多公共ASP.NET对象,包括Session和Application对象. Application对象提供一个储存运行在Web应用程序中的代码可访问的数据的机制,而Session对象允许数据存储在每客户端会话基础上.如果客户端支持cookies,那么可以使用cookie来识别客户端会话.

ASP.NET:掌握Web窗体的生命周期与状态管理

asp.net|web 如果你具有使用 Active Server Pages (ASP) 的经验,你将认识到 ASP 是线性处理模型.ASP 页是按从上到下的顺序处理的.ASP 代码和静态 HTML 的每一行都按其在文件中的显示顺序进行处理.在往返行程中用户操作导致页被发送到服务器.因为此操作导致往返行程,所以服务器必须重新创建该页.在重新创建该页后,将通过与以前相同的从上到下的顺序对该页进行处理,因此,该页未表现出真正的事件驱动行为.若要创建事件驱动体验,你需要显式设计它.此外,你必须在最基

Web上的状态管理

web      在前面的章节中介绍了ASP提供的访问一个客户请求和产生响应的方法,本章将讨论ASP的另两个对象.就是Application和Session对象.这两个对象不是直接地与请求和响应的管理有关,而是更多地与ASP网页运行环境的管理相关.      与建立Web站点或Web应用程序有关的共同问题之一,是使用HTTP协议时没有状态.状态提供了与一个指定用户有关的变量值.对象和其他资源,并且应用程序中的任意例程都能使用它:以一种像VB或C++这样的程序设计语言编写一般的基于客户的应用程序时

掌握Web窗体的生命周期与状态管理

web     如果你具有使用 Active Server Pages (ASP) 的经验,你将认识到 ASP 是线性处理模型.ASP 页是按从上到下的顺序处理的.ASP 代码和静态 HTML 的每一行都按其在文件中的显示顺序进行处理.在往返行程中用户操作导致页被发送到服务器.因为此操作导致往返行程,所以服务器必须重新创建该页.在重新创建该页后,将通过与以前相同的从上到下的顺序对该页进行处理,因此,该页未表现出真正的事件驱动行为.若要创建事件驱动体验,你需要显式设计它.此外,你必须在最基本的级别

J2EE vs. Microsoft.NET 之 Web Services

j2ee|services|web J2EE vs. Microsoft.NET 之 Web Services             --建置XML架构的Web Services之比较作者:佚名    本文选自:CNJSP  2002年04月30日 I. 序 在本文中,我们将深入的比较两种可用来建置商业XML Web Services的平台,分别是Sun Microsystems 所提供的Java 2 Enterprise Edition (J2EE)以及Microsoft所提供的 .NET平

COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

services|web|xml|复选框|微软 SOAP 与 DCOM 的局限性和区别 .NET Remoting 的目的之一是提供丰富的分布式环境,使开发人员能够在此环境中对序列化协议(格式化程序)和网络协议(频道)进行组合与匹配..NET 框架 1.0 版本中的 COM+ Web 服务仅支持一种格式化程序 (SOAP) 和一种频道 (HTTP).这并不是说其他频道和格式化程序不能使用 ServicedComponents 或 COM+,而是说没有自动配置为这些备用频道和格式化程序提供客户端和

COM+ Web 服务:通过复选框路由到 XML Web Services (转)10

services|web|xml|复选框 另一个可以自定义的区域包括客户端激活对象的生存期管理,如下例所示: <?xml version="1.0" encoding="utf-8"?><configuration> <system.runtime.remoting>  <application>   <service>    <wellknown mode="SingleCall"