程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi建立通訊與數據交換服務器—Transceiver技術剖析(下)(7)

用Delphi建立通訊與數據交換服務器—Transceiver技術剖析(下)(7)

編輯:Delphi

以下是COM的發送

Function TCarrIEr.PutCOM(COMOBJ:TCOMPort;sdata:string):Boolean;
var Com:OleVariant;
begin
PutCOM:=false;
try
Com:=CreateOleObject(COMOBJ.ComFace);//建立預定義的接口
PutCOM:=Com.PutData(sdata);//調用預定義的方法
Com:= Unassigned;
except
Com:= Unassigned;
end;
end;

其它類型的Port發送大同小異,在此不再贅述。到此為止,Source和Target的基本處理已經完成。一個基本的通訊功能已經建立,經過不同類型的Source和Target的自由匹配,就可以實現完全不同的通訊功能。建立多個Channel,就可以集中實現多個不同功用的通訊處理。

ix. 隊列處理

在上文的DataArrive方法中當數據被發送之後,Data Dispatcher會調用數據日志記錄的writeLog和隊列化處理的PutQueue方法,二者的功能類似,都是根據系統參數對數據信息進行數據庫的存儲,不是本文的重點。而隊列的Retry處理與Timer事件中按Port類型分發處理的原理類似,是依賴於Queue Timer的觸發,將緩沖的數據從數據庫中讀出,並依照Target Port ID再次調用DataSend進行數據的發送重試,如發送成功,則本次數據傳輸的事務完成,否則重新進入隊列等待下一次觸發時間進行重試,直到發送成功或達到設置的最大重試數為止。

三、 開發經驗總結

由於本文的側重點在於說明Transceiver的核心思想與設計理念,簡化和削弱了Transceiver作為後台服務應當考慮的多線程處理、對象池化以及事務支持、更為復雜強大的Source和Target的Group管理和Channel集成、收發內存對象、數據流、二進制數據的能力、系統配置信息的讀取和其封裝類的實現、系統及數據的安全性等等,希望讀者朋友們能夠拋磚引玉,理解Transceiver的設計思想,啟發實際開發工作中的靈感火花,做出更加出色強大的軟件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved