基于Flutter框架的高校师生协同平台的设计与实现

作者: 聂昌龙 房立镇 曹鑫玉

基于Flutter框架的高校师生协同平台的设计与实现0

关键词:高校;移动应用;Flutter框架;本地化存储;协同平台

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2024)28-0037-03

0 引言

近年来信息化技术不断革新,移动办公也迅速地融入人们的日常生活中,随着网络技术的发展,个人隐私数据泄露事件也日渐增多。高校作为技术创新和人才培养的聚集地,同时也是学生接触社会的桥梁,国家也对高校信息化建设提出了更高的要求。如何更好地利用信息化技术为师生提供便利,同时保证师生的信息安全[1],是高校下一步信息化工作的重点。

1 研究背景

随着智能手机的普及和移动互联网的快速发展,人们的习惯在悄悄发生改变,传统的办公方式已无法满足人们的日常需求,而移动应用具有即时性、便捷性等优点,用户通过移动应用可以随时随地获取信息、沟通交流和处理工作。同时随着数字化转型工作的提速,人们更希望借助新的平台或工具,快速、持续地生产各种应用,并对已生产的各类业务应用统一入口,实现无缝连接,让各类应用不再是“信息孤岛”[2]。

目前主流的移动办公软件有企业微信、钉钉等[3],它们的基本功能相对简单,同时存在数据泄露的风险,无法完全满足高校现有需求,所以构建一个安全、便捷、智能的高校师生移动协同平台十分有必要。

在移动端开发方面,由于原生App可以直接访问底层操作系统,具有速度快、性能高等特点,为了保证应用性能和用户体验,基于原生操作系统开发移动端应用成为首选。由于目前主流操作系统主要是An⁃droid和iOS,如果直接基于原生应用开发,需要编写多套代码,开发成本较高,随着跨平台开发框架快速发展,运用跨平台开发框架进行移动端开发[4],可以提高开发效率,减轻运维成本,同时程序易扩展,能够更好地满足业务需求。

2 功能设计

基于Flutter框架的高校师生协同平台建设的主要目的是整合学校现有的教学资源,简化工作流程,构建一个便捷、高效、智能的数字化校园。平台以济南大学已建成的数据中心作为数据支撑,通过接口的形式获取师生人员信息,进行用户同步,用户首次进入应用无须注册可直接登录。由于平台对用户信息、沟通记录、文档传输等内容进行本地化存储,充分保障了信息安全。

平台主要功能包括协同沟通工作、协同开放和协同管理三大部分。系统功能模块如图1所示。

协同沟通工作平台为移动端应用,主要包含首页、沟通、通讯录、应用和个人中心。1) 首页:主要展示了校园一卡通、常用应用列表以及相关校园新闻,用户进入校园一卡通界面可以查看自己的个人信息、校园卡消费记录,还可以对校园卡进行挂失/解挂等操作。2) 沟通:展示了用户接收到的所有通知公告和聊天信息,用户可以查看历史聊天记录,还可以对列表中的用户再次发起聊天(包括语音、视频、文字)或进行文件传输等操作。为了给用户提供便捷的诉求渠道,在沟通列表中添加了服务号,每个服务号对应不同职能部门,用户关注服务号后即可发送消息反馈遇到的问题,发送的消息只有管理员可见,其余关注该服务号的用户无感知,这么设计是为了保护用户隐私。3) 通讯录:展示用户当前可见的所有人员信息,本平台为了保证沟通安全,同时最大程度为师生提供便利,特别设置了同一部门(班级)内所有成员都可以通过通讯录查看,不在同一部门(班级)内的用户需要通过关键词搜索。若想与非通讯录用户进行聊天,首次聊天时需要发起好友申请。4) 应用:展示当前登录用户有权限访问的应用,用户通过不同应用可以随时随地完成相关工作。5) 个人中心:展示用户部门(班级)、姓名、头像等个人信息,并允许用户进行密码修改、版本更新、字体大小设置等。

协同开放平台是面向应用开发者的对接平台,支持校园内部应用、第三方企业应用和第三方个人应用的接入。开发者登录应用后,通过创建应用获取该应用的授权信息(AppKey和AppSecret) ,然后根据平台提供的对接流程完成应用对接。

协同管理平台为管理端,只允许管理者登录,该平台提供组织管理、标签管理、应用管理、配置管理、服务号管理等功能。管理者可以通过平台设置用户通讯录可见范围以及修改已接入的应用信息(包括应用是否上架、应用的可见范围以及应用展示在协同沟通工作平台上的所在的分组与顺序等)。为了更好地辅助教学,协同管理平台还设计了快速建群功能,该功能可以为群聊添加特殊属性,比如禁止群成员退出群聊、禁止群主解散群聊、禁止所有成员添加或移除群成员等,不同于用户通过移动端自主创建的群聊,使用管理端创建的群聊主要用于班级群、课程群等不允许随意更改的重要群聊。同时该功能还开放了API 接口,学校教务系统每学期通过遍历学生的课表信息完成相关课程群的创建与解散。平台还提供数据与统计分析功能,从登录方式占比、用户在线次数、用户活跃度分析、应用访问详情等多个维度进行分析,方便管理者更好地掌握平台运行情况。

3 架构设计

为构建一个便捷、高效、智能的数字化校园,本文结合现有流行技术,设计出了一款基于Flutter框架的高校师生协同平台。该平台具有以下特点:1) 跨平台Flutter开发框架,融合Android和iOS双端原生服务,使应用程序可以直接与底层平台服务进行交互,具有一套代码多端运行的跨平台特性;2) 采用基于Kafka分布式流处理平台和MQTT即时通信协议的消息推送引擎,具有高吞吐量、低开销、高并发、灵活性高等特性;3) 使用微服务技术,使平台具备高内聚松耦合的特性。

3.1 Flutter开发框架

Flutter是一个跨平台的UI工具集,可以复用同样的代码在不同的操作系统(Android和iOS) 上构建高质量原生的用户界面,使开发者能够快速构建拥有原生体验的高性能应用。

Flutter具有高性能、开发效率高等优点,从上到下可以分为三层,分别为框架层、引擎层和嵌入层[5],Flutter架构图如图2所示。

框架层:Flutter框架层主要使用Dart语言编写,为用户提供编程接口,位于该框架最下方的是Foun⁃dation底层框架,定义了各类基础API,Foundation底层框架主要为上层应用提供工具类和方法接口。Animation、Painting 和Gestures 分别为Flutter 提供动画、绘图及手势识别能力,与Foundation底层框架一起构成了Dart UI层。Rendering渲染层是Flutter框架层中最核心的部分,它依赖于下面的Dart UI层,渲染层会构建一棵由可渲染对象组成的渲染树,当这些对象更新时,渲染树会对比出变化的部分,然后进行更新渲染。Widgets组件层是Flutter提供的基础组件库,在Widgets 组件层的基础上Flutter 也提供了Material 和Cupertino 两种组件库,分别实现了Android 和iOS 设计规范,开发者可以通过这些组件构建出不同功能的界面。

引擎层:Flutter引擎层是Flutter的整个框架的核心部分之一,包括Skia、文字排版引擎、Dart虚拟机、通信通道、事件通知等。Skia是一个用C++开发的开源的2D图形引擎,负责在屏幕上绘制Flutter的Widget,种类丰富包括各种图形、特效、文本段落、动画等。在这一层中还提供了Dart虚拟机,用于将Dart代码转换为本地平台可执行的代码。由于Flutter引擎层的存在,程序才能运行在不同的平台上,实现跨平台运行。

嵌入层:Flutter嵌入层是操作系统适配层,主要负责实现渲染Surface设置、线程设置以及平台插件等平台相关特性的适配。通过Flutter 嵌入层,Flutter 能够与操作系统进行紧密集成,实现跨平台的运行和适配。

3.2 消息推送引擎

本平台的消息推送引擎基于Kafka分布式流处理平台和MQTT即时通信协议,平台消息推送流程图如图3所示。

消息推送引擎使用Redis服务缓存正在推送的消息,Redis(Remote Dictionary Server) 是基于内存的可持久化的Key-Value数据库,具有性能高、读取速度快等特点[6]。用户通过协同沟通工作平台发送消息,后端微服务接收到用户发送的消息后,会将接收到的消息发送时间、发送人、接收人以及消息内容作为Key值,查询Redis缓存中是否存在。如果存在,即判定为重发信息,重发消息需要判断之前发送的消息是否已经成功送达到接收方,如果已送达,则此条消息会被丢弃不做处理。对于非重发消息和消息发送失败后需再次发送的情况,微服务会将消息处理后存入Redis 缓存中。消息发送成功后微服务会将此条消息对应的信息从Redis缓存中删除,保证Redis缓存中只存储正在推送的消息。

使用Redis缓存服务的目的为:1) 可以有效避免因网络波动等不良因素导致的消息重发;2) 如果服务因异常需要重启,存储在Redis缓存中的消息不会丢失,这些缓存的消息在重启服务后会被继续推送。这样设计既可以提高系统性能,又能有效防止因系统故障导致的数据重发、数据丢失等现象。

微服务如果判定当前接收到的消息需要被推送,则将消息存入Redis缓存后会再将消息推送至Kafka 消息队列集群。Kafka消息队列集群是一种分布式消息系统,由多个Kafka节点组成,可以同时处理大量数据,节点跨越多个服务器,保证平台消息推送具有高可用性、稳定性和高性能[7]。Kafka消息队列集群会根据消息推送人数,将推送压力平分到每个Kafka节点,最终将消息发布出去,发布出去的消息都会被推送通道订阅。

推送通道使用MQTT(Message Queuing TelemetryTransport) 消息传输协议实现与消息接收端的通信,推送通道获取到订阅的消息后,会通过MQTT的心跳机制来判断客户端是否在线。MQTT是一个基于发布/订阅模式的轻量级通信协议,具有轻量、简单、低功耗等特点,如果用户在线,通过MQTT长连接保证持续通信和实时消息传递,有效地降低网络请求和提高通信效率,消息推送引擎为保证通信安全会对所有通信内容进行AES加密[8]。如果消息接收用户离线,推送通道会调用手机厂商推送通道给用户发送离线消息,目前平台的消息推送引擎可以满足海量消息推送、高吞吐、可靠重试等要求。

3.3 微服务技术

本平台采用微服务技术架构设计,在该架构下,平台功能被拆分成多个相对独立的微服务模块,每个微服务都可以独立开发和部署,不受技术语言的影响,降低系统复杂性的同时能够很好地适应不同业务场景需求。在该架构下微服务模块可以按需扩展,如果某个服务出现故障,也不会影响其他服务,极大地提高了平台的可靠性。

4 上线部署

由于平台前后端分离,后端采用微服务架构多实例部署,前端App通过工信部备案后,上架各大应用市场。在数据存储方面,用户及沟通等数据信息存储在MySQL数据库中,并设置定时备份,Redis缓存做持久化处理,保证应用重启后数据不丢失。同时为确保数据安全,所有数据传输都进行了加密处理,平台重要的服务均部署在学校内网环境。

平台上线试运行两个月,用户日均访问量在11 000次左右,截至目前,平台共搭载了教务、迎新等40余个应用服务,整体运行良好,好评超过预期。

5 结论

为保障学校信息传输安全,加强师生沟通,提高教学质量和工作效率,本文设计的基于Flutter框架的高校师生协同平台,自上线以来获得了一致好评,通过该平台学校整合了现有教学资源,简化了办公流程,为师生搭建了一个便捷、高效、智能的数字化校园,加速了济南大学数字化转型。

上一篇 点击页面呼出菜单 下一篇