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分別建立。