电子看板自动刷新数据解决方案

本文介绍了电子看板的实现原理,包括刷新周期、客户端与数据源的设计。通过ASP.NET实现B/S架构,利用数据库视图进行数据汇总。在处理大量数据时,采用存储过程提高数据读取效率,解决看板刷新延迟问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

经常在车站看到车次、票务信息,用一个巨大的电子屏幕,显示每个车次的类型、价格、发车时间、达到时间、运行里程等。屏幕每隔一定时间刷新一次,显示紧接上一屏幕的内容。

当前,象上述的电子看板在各种场合下应用得越来越广泛,比如证券市场的股票信息、机场的航班信息、企业内部的物流信息和生产进度状态等。

笔者近来正好参与了一个企业WMS系统中的电子看板开发,现将对实现电子看板开发的心得体会作粗略描述,仅供参考。

一、电子看板刷新数据方式介绍

我们可以看到各种各样的电子看板,屏幕有大有小,其屏幕实际上就是一个显示器。而软件上的电子看板就是一个客户端去读数据库服务器中的数据,并显示在客户端。

无论哪种形式的电子看板,表现形式可能各不相同,但其实现方式都大同小异。即将所要读取的数据按一定参数(列)排序,每次从数据库中读取一定数量的数据,隔一定时间(读取数据的周期)后再去数据库中读数据,后一次读取数据从前一次所得到数据的最后一行开始------但不包括最后一行,当读取到最后一行时即从头开始读取数据。

因此,一个电子看板有几个基本要素:刷新周期、客户端(软件、硬件)、数据源。客户端与数据源可以放在同一台PC上,但现实中客户端和数据源是分离的。

刷新周期指电子看板刷新数据的时长,即客户端每隔多少时间去服务器读一次数据。客户端包括硬件和软件(以后都指软件),硬件相当于一台PC,我们经常看到的就是一个大型显示屏幕,屏幕与主机之间用类似于普通PC的数据线连接。数据源一般是在数据库中指定一个表或视图,甚至存储过程。

电子看板读取数据时都必须有个起点,即从数据源中的哪一行开始读。第一次读取数据时从第一行开始,而此后则从前一次获数据的最后一行开始,直至读到数据源的最后一行。当读取到的数据到达最后一行时,则需要从第一行开始读取数据。

二、电子看板客户端和数据源的实现

客户端要能从数据库中读取数据,又能显示出来。这就要考虑访问数据库,可以做成C/S结构,但做成B/S更方便,而一般的静态WEB页面则不能胜任。本案例中以 ASP.NET来实现其基本框架,以C#语句来完成数据的读取和显示。

数据源一般的情况都是在数据库中指定一个表,电子看板客户端直接到该表中读取数据。这样做读取速度快,但相应的就需要对这个表中的一个或多个具体字段进行操作。如果项目刚开始时就设计看板且把其需要实现的各个细节考虑进去,则这是最好的选择。但在我们的实施的WMS项目中,看板是客户后来才提出的,我们事先没考虑其需求。在我们所实现的其中一个看板中客户需要包括每种待发放物料的库存数,由于我们把物料按包/箱标识,物料的数量以包/箱来汇总,而没有专门设立表或字段来保存物料的库存数量。

因此,当客户提出需求时我们有三个选择:一是在物料表中增加一个字段,用以保存每种物料库存数量;二是增加一个表,专门保存每种物料的库存数---甚至还可以包括它们的入库数、发放数、损耗数。这两种方法意味着至少在入库和出库时需要对物料的库存状态进行加、减,牵涉面太广,而且,这个看板中的有些数据还来源于其它几个表。所以我们就用第三个方法------在数据库中用视图从相关表中读取数据,并把相应数据汇总,客户端就从视图中获取数据。

这样做可以满足客户业务上的需求,即显示客户需要的各种数据,而且,刚开始运行的时候也没出现异常。后来数据多了后就经常显示不出来,我们不得不重新考虑数据源的设置和客户端读取数据的方式。

三、客户端读取数据方式

客户端读取数据方式包括两部分:一是每页显示固定数量(行)的数据,下一次刷新时从本页最后一条数据(不包括)开始读取;二是前面提到的因数据太多而导致看板数据刷新不出来而需要优化的数据读取。

看板数据刷新时按一定顺序一页接一页的进行,当刷新到最后一页时需要跳回到第一页继续刷新。由于看板是自动刷新,不需要人工干预,因此,看板在每一次读取数据时需要知道从哪一行开始读取,以及上一次所读取数据的最后一行是否到达所有数据的末尾。

由于我们的看板数据来自于视图,没有专门的列指定每一行序号或行号,所以我们得在查询中需要增加一列,记录每行的行号,以便将每一页最后一行作为下一次刷新数据时的起点。查询语句为:SELECT TOP 10 * FROM (SELECT ROW_NUMBER() over (order by ProductNM) AS RowNumber,* FROM dbo.WMS_KBNonOutProduct) WMS_KBNon<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值