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

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

編輯:Delphi

ii. 創始滿足特定需求的Port類

要使用運行處理機制統一的Transceiver Kernel,就要求Transceiver Shell中的Port有統一的處理規則,Shell中有些Port是Delphi開發環境中已有的組件類(如TCP、FTP等),而有些則不是(如MSMQ、File等)這時就需要自己動手建立一個可以滿足需要的類。如:

type//由於沒有用戶界面,所以繼承自TComponent而非TControl

TFilePort=class(TComponent)
private
FilePath:string;//獲取或保存文件的文件夾位置
Prefix:string;//文件前綴
suffix:string;//文件後綴
end;

建立TFilePort類以後,Transceiver Kernel就可以使用統一的類處理方式引用和管理對象,達到從FilePath指定的文件夾下存取特定文件的目的。如果用於信源(Source),將從特定文件夾下獲取滿足條件的文件,如果用於信宿(Target),將把從相應信源(Source)得到的數據寫入到指定文件中(事實上每一個Port對象的實際參數都來源於系統配置庫中Port表的定義)。

另一個例子:

type
TCOMPort=class(TComponent)
private
ComFace:string;//獲取或提交數據的COM接口
end;

TCOMPort將用於從指定COM組件接口中獲取數據或將數據提交到指定的COM組件接口上進行後續處理。在Delphi中OleVariant類是實現COM組件調用的途徑之一,使用TCOMPort類的必要性在於,Transceiver在必要的數據存取時才會將TCOMPort定義的COM接口實例化為OleVariant對象,使用結束即釋放對象,這樣能減少Transceiver和COM服務器的負載壓力。其它類似組件也有相同考慮。作者此處的類舉例只是一種模型,必要時應加入適當的方法與事件。在開發中作者實現的類有:TCOMPort、TMSMQPort、TDBPort、TFilePort等

iii. 多Channel的支持—聲明Port的對象數組

Transceiver把一個通訊過程看作是源(Source)到目標(Target)的數據流過程,這樣一個過程是Transceiver中的一個Channel,而這個Channel又是由至少兩個Port構成的(一個用於Source,一個用於Target),所以要定義不定數量並且Source、Target自由組合的多個Channel,必須分別聲明用於Source 和Target 的多種Port類的對象數組(並為他們建立對應的關聯關系,稍後您將看到)。如:

private
{ Private declarations }
TCPSource:array of TServerSocket;// 用於TCP Source的對象數組
TCPTarget:array of TClIEntSocket;//用於TCP Target的對象數組
MailSource:array of TIdPOP3; //用於Mail Source的對象數組
MailTarget:array of TIdSMTP; //用於Mail Target的對象數組
fileSource:array of TFilePort; //用於File Source的對象數組
fileTarget:array of TFilePort; //用於File Target的對象數組
comSource:array of TCOMPort;//用於COM Source的對象數組
comTarget:array of TCOMPort; // 用於COM Target的對象數組

注:由於同一類型的用於Source和Target的Port運行規則的也完全不同,在Transceiver概念中被視為是完全不同並且無直接關系的對象。所以同一類型的Port,對象數組也按Source和Target分別建立。

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