天天看點

[DIOCP3/MyBean/QDAC開源項目] DataModule-DB例子基于MyBean的插件執行個體<三層資料庫方案>

【說明】

這個例子答應大家很久了,一直沒有時間弄,現在正式結合MyBean插件可以很友善的在用戶端共享操作連接配接,執行資料庫的各項工作,屏蔽了底層的通信解碼器編碼等工作,直接傳遞Variant,給了開發者足夠的領活和自由。

【服務端使用技術】

diocp3:擔當底層的通信任務。

qworker/iocpTask:擔當業務邏輯的處理工作,diocp3接受資料解碼後用qworker/iocpTask将資料包投遞出來,這樣不用占用通信線程。

qmsgpack:負責将傳遞的将variant資料打包到流,從流中解碼成variant

dataModule:對應連接配接的對象,友善進行開發。

【用戶端】

myBean:制作基于MyBean架構的插件,可以在MyBean的架構子產品中直接使用。

RawTcpClient:用于和服務端進行通信,阻塞的tcp用戶端,類似IdTcpClient的精簡版本,操作容易。

【DEMO使用】

說 明:用戶端依賴diocp_bean.dll插件與伺服器進行資料交換,DIOCP_DBDEMO.dll是示範窗體插件的宿主。

存放路徑:MyBean\samples\diocp-DBDEMO

啟動服務:SERVER_EXE\diocp3Server.exe  <點選start按鈕啟動服務>

[DIOCP3/MyBean/QDAC開源項目] DataModule-DB例子基于MyBean的插件執行個體<三層資料庫方案>

伺服器是基于DIOCP3的。可以在DIOCP3項目中找到源碼[diocp3\samples\socket-Coder\DataModuleDEMO]

啟動用戶端:打開 [simpleConsole.exe], 依次點選下面的按鈕就可以看到效果了

[DIOCP3/MyBean/QDAC開源項目] DataModule-DB例子基于MyBean的插件執行個體<三層資料庫方案>

【DEMO說明】

服務端處理:

    服務端基于DIOCP3通信,該DEMO做了簡單的封裝,使使用者可以專注于邏輯的實作,和用戶端互動使用variant類型進行。

dmMain,是和用戶端連接配接想對應的一個對象[和用戶端的連接配接是一對一的關系]。

[DIOCP3/MyBean/QDAC開源項目] DataModule-DB例子基于MyBean的插件執行個體<三層資料庫方案>

我在裡面稍微做了下邏輯處理的示範:

   vData,是用戶端傳遞過來的參數,也是傳回給用戶端的資料。vData是OleVariant可以容納任何的資料<配合qmsgPack可以達到任何的資料格式要求>, 如果還達不到你的格式要求,你可以在MyClientContext的dataReceived函數做些修改,下面代碼的處理過程依次是:

解壓收到的資料->QmsgPack解包->取出用戶端傳入的參數->調用dmMain.Execute處理邏輯->qmsgPack編碼資料->壓縮資料->回傳資料到用戶端

用戶端處理:

   編譯的 DLL 放到和EXE同一個目錄下面就可以進行自動加載。

   用戶端diocp_bean工程中

注冊的diocpRemoteSvr插件實作了IRemoteServer接口和IRemoteServerConnector接口,而且該插件為單件模式。其他任何地方調用都隻會産生一個連接配接執行個體。

示範操作窗體:<服務端是13K的成語記錄>

[DIOCP3/MyBean/QDAC開源項目] DataModule-DB例子基于MyBean的插件執行個體<三層資料庫方案>

相應按鈕代碼:

PS: 其他功能大家自己去實作,該文章寫了好幾個中午,希望對大家有用。

由于qdac開源項目 >=D2007,是以D7下面不能編譯服務端,和diocp_bean.項目(你可以在D2007中編譯好diocp_bean和服務端工程,其他插件可以在d7中完成)

-----------------------------------------------------------------------------------------------------

MyBean 輕量級配置開源架構 開源位址

<a href="https://git.oschina.net/ymofen/delphi-framework-MyBean">https://git.oschina.net/ymofen/delphi-framework-MyBean</a>

DIOCP3開源位址

<a href="https://github.com/ymofen/diocp3">https://github.com/ymofen/diocp3</a>

qdac項目資訊

官方QQ群:250530692

SVN檢出位址:

<a href="http://svn.code.sf.net/p/qdac3/code/">http://svn.code.sf.net/p/qdac3/code/</a>

svn://svn.code.sf.net/p/qdac3/code/