我前端用的是winform,中间用的是webservice,求各位高手指点下

解决方案 »

  1.   

    有点晕,首先WebService应该是无状态的,这才满足面向服务的设计思路。
    大概只有你对每个WebService请求的时候记录该用户的ID以及请求时间,在后台维护一个静态的DataTable来记录你的在线用户,最后一次请求时间超过XX分钟算是离线。
      

  2.   

    你的描述太简单了!后台需要对所有用户建立数据库(广义概念,DataSet对象、SortedDictionary<T>对象、Cache、文件、mp3设备都是数据库的例子),其中至少要记录用户的唯一标识(例如用户编号、昵称)以及最后一次登记入系统的SessionID及其登记时间。编写WebService需要打开“允许Session”的开关,然后WinForm首先要向后台登录自己(说明自己是谁),这样WebService内部就将此SessionID与客户的具体信息的对应关系记录/刷新下来。然后要求WinForm客户端一定时间要报到一次(不用传递数据,因为 WebService可以知道客户端的sessionID),例如每隔10秒钟调用一次WebService。后台就像v192(人都是環境逼出來的,所以往死裏逼我吧)所说那样在查询“在线用户”时对最后一次访问时间进行判断,超时(例如超过30秒钟)的算作“离线”。注意,用户登记与用户报到是WebService中两个不同的方法。这样,当有不同的WinForm使用同一个用户身份登录系统之后,后登记的用户就可以把前边登记的用户“踢下来”。
      

  3.   

    记住,单点登录系统的关键是:用户ID 与 SessionID 是不同的。