图书馆日常运作对信息采集与流通速度的要求日趋严格。采用客户端/服务器(C/S)结构搭配微软基础类库(MFC)进行桌面级应用开发,是许多中小型馆舍在预算有限前提下的实际选择。这套方案将数据库事务处理集中放置在服务端,客户端专门负责界面交互与业务逻辑呈现,降低了网络拥堵概率,也便于权限集中管控。
整体架构分为三层。最底层是数据库服务层,选用SQL Server 2008 R2作为核心数据仓库,存放书目主表、读者注册表、流通记录表及系统日志表,累计设计数据字段112项。中间层为数据访问接口,使用ODBC驱动程序连接MFC应用与SQL Server数据库,通过CRecordset类完成记录集的动态绑定与滚动更新。最上层是用户交互层,采用MFC的文档视图结构(Document/View Architecture)构建主窗体,配合拆分窗口(Splitter Window)技术将界面划分为书目检索区、借还操作区与读者管理区三大模块。
功能模块围绕馆内业务痛点具体展开。编目模块支持ISBN快速扫描录入,通过Z39.50协议自动抓取国图编目数据,减少人工敲键次数;流通模块涉及借书、还书、续借与预约四项基础操作,每笔交易都在事务保护机制下写入流通日志;检索模块提供题名、作者、索书号、主题词四个检索入口,支持模糊匹配与组合筛选,检索结果以列表控件(CListCtrl)呈现,双击即可查看书目详情与在架状态。权限管理区区分系统管理员、参考咨询员与普通读者三种角色,读者仅能修改自身密码与查看借阅历史,管理员则拥有参数配置与数据备份功能。
程序设计中关键性的技术细节集中在两类问题上。一是界面与数据库的并发同步。MFC默认的CListCtrl在数据量超过两万条时,刷新操作会出现肉眼可辨的迟滞。为此程序改用虚拟列表(Virtual List)模式,仅加载当前可视区域的记录项,配合后台工作线程定时从数据库拉取更新,界面滚动流畅度得到显著提升。二是事务一致性的保障。借书操作涉及书目状态修改、读者在借量累加、流通表新增记录三个步骤,任何一步失败都要回滚全部变更。在MFC环境下使用CDatabase类的BeginTrans、CommitTrans与Rollback方法,配合异常捕获机制,确保断电或强制退出时数据库不出现半截记录。
性能测试在配置为Intel Core i5-8500处理器、8GB内存的客户端与双路Xeon E5-2620 v4服务器环境下进行。客户端与服务器通过千兆局域网互联,数据库中共存储书目数据15.7万条、读者档案2.3万条、流通历史记录68.4万条。实测单条件检索平均响应时间0.42秒,组合检索平均响应时间0.91秒。高峰时段模拟120个并发事务,服务器CPU占用率稳定在68%以下,数据库死锁发生率为零。系统连续运行96小时未出现内存泄漏导致的界面崩溃,进程占用内存在350MB至480MB区间内平稳波动。

这套系统在成本控制方面具有明显优势。MFC作为Visual Studio自带框架,无需额外授权费用,程序最终发布包仅有4.6MB,可部署在Windows 7及以上版本的操作系统上。相比B/S结构需要配套Web服务器与浏览器兼容调校,C/S结构下客户端直接调用系统API处理打印与条形码扫描枪的输入,集成度更高,外围设备响应延迟平均缩短127毫秒。对于馆舍面积在五千平方米以下、藏书量不超过五十万册的中小型图书馆,这样的技术选型能够在两至三个月内完成从数据库脚本编写到客户端功能测试的全部开发工作。同时由于所有业务操作都发生在局域网内部,不通过公网传输敏感数据,恶意注入与远程攻击的暴露面也相对收窄,安全防护重点只需放在服务器端防火墙与数据库账号密码策略上。