一起谈.NET技术,浅谈思路严谨的用户在线状态控制【附部分C#参考代码】

简介:   我们经常会遇到:  1:客户购买了5个用户的许可,10个用户的许可,软件需要限制用户的并发数量,我知道就是Oracle的并发用户达到20个以上,那费用是非常昂贵的。  2:一个用户只能登录一次或者是一个账号在同一时间只能登录一个,若已经是登录了就不让再登录了,需要能控制用户的并发登录问题。

  我们经常会遇到:

  1:客户购买了5个用户的许可,10个用户的许可,软件需要限制用户的并发数量,我知道就是Oracle的并发用户达到20个以上,那费用是非常昂贵的。

  2:一个用户只能登录一次或者是一个账号在同一时间只能登录一个,若已经是登录了就不让再登录了,需要能控制用户的并发登录问题。

  3:有的系统也需要能实现在线用户列表、用户的登录状态等,特别是即时消息功能的内部管理系统等。

  先把自己的思路整理图贴出来如下:

  C/S的部分参考代码如下:这里为了实现定时获取消息的平滑,利用了线程的方式,这样不影响用户的操作,是多线程实现定时获取消息的。

 
 
/// <summary>
/// 消息检测的线程
/// </summary>
private Thread MessageThread = null ;

this .MessageThread = new Thread( new ThreadStart( this .MessageCheck));
MessageThread.Start();

private void MessageCheck()
{
while ( ! this .ExitApplication)
{
if ( this .FormLoaded && ( ! this .Busyness))
{
if ( this .Tag == null )
{
// 获得新消息
// this.bwGetNewMessage.RunWorkerAsync();
this .GetNewMessage();
this .Tag = true ;
}
else
{
// 若已经是最小化、或者被隐藏起来了,就不用获取在线状态,可以提高效率
if (( this .WindowState == FormWindowState.Minimized) || ! ( this .Visible))
{
// 阅读消息状态
// this.MessageChek();
}
// 获取在线状态列表
// this.bwGetOnLineState.RunWorkerAsync();
this .GetOnLineState();
this .Tag = null ;
}
}
Thread.Sleep(
1000 );
}
}

  B/S部分的参考代码如下:

  UserOnLine.aspx 页面,专门接收,我还活着的用户的报道,统一呼叫这个页面,表示自己还活着,在线上。用了javascript 的 setTimeout 功能,定时在服务器上用 ajax 方式进行签到,这样可以正确处理B/S系统的在线情况:

 
 
< script language = " javascript " >
function ReloadSession() {

XmlPost(
" Modules/Common/User/UserOnLine.aspx " );
// 每100秒钟刷新一次
// alert("ReloadSession");
setTimeout( " ReloadSession() " , 1000 * 100 );
}

ReloadSession();
< / script>

  以上只是一个非高科技的,用最传统的方法,最说得通的方式,正确解决在线用户的状态,其中解决了B/S,C/S通用的在线方式问题,突然断电等异常情况下的事务处理在线判断,服务器上,还可以部署在线状态跟踪器等,100%完全正确做到在线状态,还是有点儿小困难,特别是B/S的项目,目前的能力,只能做到近似效果,当然根据实际需要,也可以修改向服务器报道我活着的频率,例如5秒报道一次,那就更接近真实在线情况了,当然在线客户数量很少时,1秒一次也无所谓的。

目录
相关文章
|
9天前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
17天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
36 1
|
24天前
|
人工智能 前端开发 Devops
.NET技术自发布以来,在软件开发领域发挥了重要作用
【9月更文挑战第12天】.NET技术自发布以来,在软件开发领域发挥了重要作用。本文分为三部分探讨其在现代开发中的应用:首先介绍.NET的核心价值,包括语言多样性、强大的开发工具支持、丰富的类库、跨平台能力和活跃的社区;接着分析其在企业级应用、Web开发、移动应用、云服务及游戏开发中的实际应用;最后讨论.NET面临的挑战与未来趋势,如性能优化、容器化、AI集成及跨平台框架竞争等。通过不断的技术创新和社区驱动,.NET将持续推动软件开发的进步。
28 4
|
29天前
|
算法 Java 中间件
C#/.NET/.NET Core优质学习资料,干货收藏!
C#/.NET/.NET Core优质学习资料,干货收藏!
|
29天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
29天前
|
JSON 测试技术 C#
C#/.NET/.NET Core优秀项目框架推荐榜单
C#/.NET/.NET Core优秀项目框架推荐榜单
|
29天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
28 7
|
27天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
38 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
36 0
下一篇
无影云桌面