APP下载

基于MVC架构的智能共享云打印服务系统设计与实现

2022-10-25徐子煌刘文果阮高飞陈灏嵘赵海峰

科技风 2022年28期
关键词:服务商文档客户端

徐子煌 刘文果 阮高飞 陈灏嵘 赵海峰

东莞理工学院 广东东莞 523000

1 打印行业的发展现状与趋势

近年来,高校在校学生保有量急剧增加,而这部分人群对打印的需求量相当大。目前高校内传统打印店运营模式,主要为学生到店与商家进行面对面的接触交流,由商家手动操控电脑、设置文件打印格式、驱动打印机进行任务印刷,学生现场确认并进行扫码或现金支付、取走打印文件并离开这一系列的动作,从而完成打印这一流程并满足需求,过程烦琐且消耗时间长。

人工操作的方式使得打印所需的时间大大增加,实际的操作中也存在信息交流和编辑操作的误差,从而使得打印效率低下,进而影响客户的使用体验。为节约开支控制租金成本,高校打印店的门面面积一般不大,可容纳的打印机及配套设施数量有限,高峰时期打印需求大而店内学生拥挤排队等候的供需不平衡,以及电脑处于待机状态的低人口流量时段,使得设备处于资源浪费的状态,不利于资源的有效利用和共享经济的实行。

同时,高校学生打印需求多样化,对排版编辑、纸张大小、纸张品质等要求众多,而打印门店提供的多数为基本服务,无法满足打印的各类需求。当下打印资料主要依靠U盘拷贝的形式进行文档的传输,而U盘是电脑病毒传播的主要途径,可能会损坏本地硬盘资料造成文件破坏,进而造成经济损失。目前提供文档编辑的软件琳琅满目,不同软件在传输和使用中存在格式兼容的问题,一旦文件拷贝到电脑中出现乱码等情况时,需要人工进行手动调节,时间花费长且服务体验较差。

2 云打印服务的特点

云打印成本小,能够灵活地在办公区域、学生宿舍、教学楼、社会上的便利店等人群密集且人流量大的场所进行投放和使用。无人值守的自主打印能够降低运营成本,云打印作为移动互联网应用,操作简单,使用便利,兼容多种格式的文档,满足用户多样化的打印需求,极大地提高校园内的打印效率。

新型云打印依托方便的小程序等媒介实现线上文档、照片打印,极大地创新了打印的方式。用户可根据入驻商家的设置,进行线下的自主提取或文件派送,打破用户在使用时间和空间上的限制,便捷而高效。

新型的云打印则采用云端储存的方式,用户将文档上传至云端服务器,待打印完成后,平台将自动删除相关文档的所有信息,整个过程自动化操作,无须人工干预。云端储存的形式也减少了U盘病毒相互交叉感染的风险,系统整体安全性高,用户信息和数据安全得到根本性的保障。

3 云打印服务系统设计

云打印系统基于MVC架构进行分层设计(见图1),在基础的展示层、控制层和数据层上,继续细分出了业务层和公共基础设施层。展示层是面向微信小程序、“Windows”服务商客户端的前端部分,负责为用户展示丰富的界面信息。控制层负责展示层请求的转发和鉴权验证,此层的Interceptor会对接收到的请求中携带的token进行验证,验证通过后方会将请求转发到Controller中进行后续处理。业务层是云打印系统中最为核心的一层,负责处理云打印逻辑,如文件管理、打印机管理、订单相关管理、服务商管理、商家客户点对点咨询模块。数据层提供用户和系统的数据持久化和缓存功能,负责数据的读取、写入操作;数据库操作通过ORM框架进行。公共基础设施层包括通用的逻辑处理模块、Spring的控制反转模块、日志模块和云印功能单元测试模块。

图1 云打印系统架构图

云打印服务系统分有两个客户端,一个为普通用户端,供需要打印的用户使用(见图4);另一个为商家客户端,供文印店或其他商家使用(见图3)。打印店商家只需安装云印客户端,再通过简单配置,即可零成本地将传统打印机接到云打印平台,实现无人值守自动打印,周围用户即可立即下单。同时商家客户端还提供了许多人性化的功能,如可同时自动监控多台打印机、收入自动提现、订单管理等功能。商家客户端的工作过程如图2所示。

图2 服务商客户端工作时序图

图3 服务商客户端界面

图4 云打印系统用户端查询打印机列表界面

4 云打印系统设计难点

(1)文件转码可靠性。为确保文件格式的兼容性,文件统一在文件服务器进行转码管理等操作,防止由于商家操作系统的不兼容带来文件的乱码等错误。转码模块使用国产WPS的COM组件。通过在项目工程中引入Jacob依赖,调用Jacob组件的ComThread来初始化COM资源;接着调用Dispatch的invoke方法为转换的文档打开视图,并传入name为ExportAsFixedFormat的参数来将文件转换为PDF文件;最后再调用ComThread.Release来释放COM资源。转换完成后,通过调用File.Delete方法删除原文件,以降低磁盘空间占用。

(2)打印过程可靠性。在用户创建打印任务之后,打印任务需要指派给对应的打印机进行打印。安装在打印店电脑上的服务商客户端会自动从后端拉取它对应的打印任务进行打印,打印完成之后客户端会通知后端,后端再发送小程序模板消息通知用户打印成功。服务商客户端通过使用WMI(Windows管理技术)来进行打印机的管理、打印任务的添加和管理,保证了整个打印过程的可靠性。

为了确保用户在下单之后,服务商客户端能在第一时间获取打印任务并进行打印,客户端和服务器之间使用了WebSocket进行数据交换。WebSocket是一种全双工通信的协议,客户端和服务器只需要完成一次握手,就可以进行双向数据传输。服务商在客户端登录之后,并主动带上登录凭证去与服务端建立WebSocket连接。服务端的拦截器对凭证校验通过之后,连接便成功建立。之后客户端会主动调用subscribe方法来订阅自己的频道,每个频道对于不同的服务商都是唯一的,以便服务端及时向客户端推送消息。后端对消息的发送与接收有严格的检查,会在缓存中存放接收到的消息的唯一标识,并利用LRU算法刷出过期数据,以防止某些场景下消息的重复发送而导致重复打印。

(3)打印机列表快速查询。该系统可以为用户优先推荐距离最近的打印机,让用户可以就近选择打印机。由于该功能是系统的核心功能,也是访问最为频繁的接口,因此响应时间必须要快,故通过GeoHash算法和Redis中间件来实现该功能。

周边查询的传统方式是根据经纬度坐标进行距离的计算,并将满足精度的目标筛选显示。这种查询方式不仅需要强大的数据库和服务器支持,对于查询精度以及查询效率也是一个极大的挑战。GeoHash是一种地理编码,可以把目标经纬度坐标转换为类URL的字符串编码,在保证目标位置精度的情况下,减少传统经纬度表示方法产生的冗余,因而被广泛应用于地物周边查询、地理围栏技术中,可提供更加精准的周边打印机推荐。

而Redis则为GeoHash算法提供了高效的实现,它将经纬度转化成长度为52位的整数,将该数值作为score值,然后将其存放在zset里面。首先在Redis中使用geoadd来将通过GeoHash算法转换后的打印机的经纬度添加进zset中,然后使用georadius命令,如georadius printer_list 23.12 114.2 10 km WITHDIST,即可获得纬度23.12,经度114.2所在位置的周边10km内的打印机列表。由于Redis是将元素存储在内存中,因此计算十分快速,符合为用户高效查询附近打印机的目标。

(4)系统QoS保障。云打印系统通过目前业界流行的弹性可伸缩的云计算服务以及可无缝扩展的集群架构,来提供稳定可靠的云打印服务以及应对容量需弹性变配的业务需求。小程序与服务商客户端通过https协议进行传输加密和身份认证来保证传输过程的安全性。系统使用Nginx作为Web服务器,通过配置以下信息,来为系统的多台服务器提供负载平衡和缓冲服务。

upstream cloudprintingserver {

least_conn;

server 127.0.0.1:10023;

server 127.0.0.1:10024;

}

server {

listen 80;

server_name localhost;

location/{

root html;

proxy_pass http://cloudprintingserver;

}

}

为应对数据存储规模迅速增长所带来的瓶颈问题,使用了Mycat数据库中间件进行读写分离、分库分表以及自动故障切换等,来保证系统的高可用性。

结语

云打印是以移动互联网技术为基础,将闲置打印资源进行整合接入,融合便捷的移动支付体系,提高打印设备的使用效率,促进资源的有效利用。智能共享云打印服务的低成本接入特点能够帮助商家高效进行组织打印,同时还优化了传统打印模式中烦琐的打印准备、结算等环节,摒除多余的人工,实现了更低的维护成本。在实现更好的普惠性打印服务方面,云打印平台具有良好的前景,例如能够通过与便利店等结合,推动打印行业门槛的降低和实现更便利的打印服务。为响应国家发展战略要求的号召,后续可推动云打印实现自主可控平台上办公软件的转化,实现可安全管控、安全共享的云打印服务。

猜你喜欢

服务商文档客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
轻松编辑PDF文档
2018年全球十大IaaS服务商 中国占据四席
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
Word文档 高效分合有高招
“互联网+”服务商崛起
曝阿里来往即将开放API 服务商迎新机遇