非直連方式下C語言程式與資料庫的訊息互動流程,語言程式流程

來源:互聯網
上載者:User

非直連方式下C語言程式與資料庫的訊息互動流程,語言程式流程

      【文章摘要】

       在《如何在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語言程式與資料庫互動的具體流程,為相關軟體開發工作的順利開展提供了有益的參考。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.