WinForm(客户端)+DB(数据库)架构账号单一在线方案
与传统的C/S架构不同,Winform+DB架构只有一个客户端和一个数据库服务器,没有所谓的Server,一般这样的程序设计之初就没有考虑要在中间加个服务器。
如何在纯Winform+DB架构下实现单一在线功能呢?
一.在数据库中的某个表中 加一个字段“online”,online=“Y”表示已有用户登录,online=“N”表示没有用户登录。客户端程序每次登陆时读取字段online信息,只有online=“N”才允许登陆,并将online改为“Y”;程序结束时,再将字段改回“N”。(当一个客户端登陆,那么它将霸占这个账号,同时如果客户端非正常退出,那么这个账号就会永远处于“已登陆”状态,无法继续使用。)
二.同样是加了上述字段,但是“N”和“Y”不表示账号“是否被占用”。在客户端增加一个方法,客户端登陆立即修改online字段(假如原来为“N”)为“Y”,用一个变量存储这个“Y”。这个方法每隔一小段时间读取一次字段信息,如果字段信息与本地存储的不同则退出客户端。(读取时间间隔要够短,否则。。。。。)
三.同上,online 存储 随机生成的唯一识别码。客户端启动,生成一个 唯一识别码 ,写入数据库online字段中strA,并本地保存strB。
客户端主窗口加一个定时器事件
timer()
{
每秒读取一次对应账号的 对应的online字段值strA,
如果strA==strB,不作处理;
如果strA!=strB,程序自动结束。}