设为首页 加入收藏

TOP

非直连方式下C语言程序与数据库的消息交互流程
2015-07-24 11:33:48 来源: 作者: 【 】 浏览:4
Tags:方式 语言程序 数据库 消息 交互 流程

【文章摘要】

在《如何在C语言里面执行SQL语句?》(http://www.zhouzhaoxiong.com/116.html)一文中,我介绍了直连方式下C语言程序与数据库打交道的过程。

本文简单介绍非直连方式下C语言程序与数据库的消息交互的流程,供大家参考。

?

一、消息交互总体流程

非直连方式,也称异步方式。顾名思义,在这种方式下,C程序不直接与数据库打交道,而是通过一个独立的第三方模块与数据库进行消息交互。消息交互的总体流程如图1所示。

\

图1 消息交互的总体流程

该方式的优点如下:

第一,C程序不必一直等待数据库的返回结果,可以继续执行后面的流程,这在一定程度上提高了程序的执行效率。

第二,C程序只需将包含SQL语句的消息发给第三方模块即可,不必实现连接数据库、在数据库中执行SQL语句等较为复杂的功能,这在一定程度上简化了C程序的操作流程。

该方式的缺点如下:

第一,系统架构较为复杂,需要准确配置C程序与第三方模块的链路,同时要保证第三方模块功能的正常性。

第二,C程序要准确定义并解析消息序列号(会话号),否则极有可能会导致第三方模块返回的结果出现混乱,这增加了C程序时序处理的复杂性。

?

二、消息交互流程

C程序向第三方模块发消息的流程如图2所示。

\

图2 C程序向第三方模块发消息的流程

从图2中,我们可以看出:

第一,C程序发给第三方模块的SQL语句必须要符合语法规则,否则,即使是消息发送成功,也不会返回正确的执行结果。

第二,为了正确接收到第三方模块返回的消息,C程序要定义好消息事件号(第三方模块在返回执行结果时会原样返回该事件号),同时也要分配好会话号(第三方模块在返回执行结果时会原样返回该会话号)。这样可以保证C程序对第三方模块返回消息的解析的正确性。

第三,当向第三方模块发消息的函数执行失败之后,不要再继续执行后续流程,同时要打印详细的失败日志,供查看问题所用。

第四,当向第三方模块发消息的函数执行成功之后,C程序可以继续执行后续流程,但分配的会话号不要释放掉了。

?

C程序接收第三方模块返回消息的流程如图3所示。

\

图3 C程序接收第三方模块返回消息流程

从图3中,我们可以看出:

第一,会话号是保证C程序处理时序的关键。在程序中,会话号一般是保存在全局的会话缓存中的。

第二,只有当向第三方模块发消息时的会话号与第三方模块返回消息时的会话号一致时,C程序才能进行对应的处理。当C程序利用SQL语句执行结果走完后续流程之后,一定要释放该会话号。

第三,C程序是根据事件号进入对应的流程进行处理的,为了确保流程处理的正确性,在向第三方模块发消息时一定要定义好清晰的、容易区分的事件号。

?

三、总结

在实际的软件开发项目中,C语言程序和数据库打交道可谓是家常便饭。是选择直连的方式?还是选择非直连的方式?这就要综合项目的实际情况、已有模块安装情况等进行合理的选择。

本文介绍了非直连方式下C语言程序与数据库交互的具体流程,为相关软件开发工作的顺利开展提供了有益的参考。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇深入理解MongoDB(一)Linux下配.. 下一篇mongodb3.0性能测试报告三

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)