用Delphi建立通訊與數(shù)據(jù)交換服務(wù)器—Transceiver技術(shù)剖析(上) 引言
在國內(nèi)常見的信息化開發(fā)及實(shí)施項(xiàng)目中,大多數(shù)開發(fā)的工作量都集中于為適應(yīng)不同客戶的需求差異,對(duì)特定模塊進(jìn)行修改,最終達(dá)到客戶期望的軟件功能特性。但是對(duì)于開發(fā)廠商來說,面對(duì)不同的客戶開發(fā)不同的軟件版本,將導(dǎo)致重復(fù)勞動(dòng)、成本上升、維護(hù)量加大、兼容和穩(wěn)定性下降等一系列問題。所以,開發(fā)者認(rèn)識(shí)到實(shí)現(xiàn)軟件的產(chǎn)品化,才能具備較短的項(xiàng)目周期與較強(qiáng)的市場(chǎng)競(jìng)爭(zhēng)力,盡可能地適應(yīng)不同客戶的需求,而不會(huì)因此而泥足深陷,是客戶滿意度與商業(yè)利益的一個(gè)平衡點(diǎn)。
Transceiver 概念
Transceiver 就是為滿足不同應(yīng)用程序和業(yè)務(wù)項(xiàng)目具有差異性的通訊需求而設(shè)計(jì)開發(fā)的通用通訊產(chǎn)品化軟件。可用于在多個(gè)應(yīng)用系統(tǒng)間進(jìn)行平臺(tái)中立應(yīng)用中立的統(tǒng)一管控的通訊和數(shù)據(jù)交換,設(shè)計(jì)初衷就是為了減少通訊模塊的重復(fù)開發(fā)與增強(qiáng)通訊軟件的集中管理。通過將發(fā)送(Send)與接收(Receive)抽象為等同的一個(gè)從信源(Source)到信宿(Target)的數(shù)據(jù)流過程,集成現(xiàn)有常用通訊方式的收發(fā)處理,及對(duì)通訊異常的容錯(cuò)緩沖處理(Queue),構(gòu)成了Transceiver 足以滿足企業(yè)級(jí)通訊需求的強(qiáng)大功能。
以下為Transceiver 應(yīng)用舉例
通訊方向 | 信源(Source) | 緩沖(Queue) | 信宿(Target) | 實(shí)現(xiàn)功能 |
C1.發(fā)送數(shù)據(jù) | S1.從本地FILE獲得 | 如信宿出現(xiàn)異常,數(shù)據(jù)可在Transceiver中緩沖,并由Transceiver負(fù)責(zé)重發(fā) | T1.提交到遠(yuǎn)端TCP端口 | 向遠(yuǎn)端傳輸文件 |
C2.接收數(shù)據(jù) | S2.從遠(yuǎn)端POP3獲得 | T2.提交到另一SMTP賬號(hào) | 郵件轉(zhuǎn)發(fā) |
C3.發(fā)送數(shù)據(jù) | S3.從本地DB獲得 | T3.提交到遠(yuǎn)端HTTP頁面 | |
C4.接收數(shù)據(jù) | S4.從遠(yuǎn)端FTP獲得 | T4.提交到本地COM進(jìn)行處理 | 從遠(yuǎn)端獲取并交由COM處理 |
C5.接收數(shù)據(jù) | S5.從遠(yuǎn)程DCOM獲得 | T5.提交到本地MSMQ隊(duì)列 | 從遠(yuǎn)程 組件獲取存入消息隊(duì)列等待處理 |
在Transceiver 中信源(Source)和信宿(Target)都被統(tǒng)一視為端口(Port),如S1~S5、T1~T5,它們都是由Transceiver在運(yùn)行時(shí)創(chuàng)建和管控的通訊組件;而類似C1~C5的幾個(gè)通訊過程定義被視為信道(Channel),一個(gè)可以完成基本通訊功能的Channel由兩個(gè)Port構(gòu)成(一個(gè)為Source,一個(gè)為Target) ,Queue為通訊異常時(shí)的容錯(cuò)處理層。
如表所示,
Transceiver 可以為發(fā)送/接收兩類通訊過程提供全程支持。并且對(duì)信源和信宿的類型、數(shù)量和對(duì)應(yīng)關(guān)系不做任何限定,可以自由設(shè)置Source與Target的匹配關(guān)系。以上表格只是列舉了Transceiver通訊功能的幾個(gè)用例,Transceiver抽象整合了
application、Data和
PRotocol三個(gè)層面的數(shù)據(jù)通訊元素,可以適應(yīng)復(fù)雜多變的通訊需求,為應(yīng)用程序的通訊需求提供最大化的靈活性和重用性。
附圖1: Transceiver 通訊端口(Port)的交互能力
1. LAN/WAN、不同
操作系統(tǒng)/應(yīng)用系統(tǒng)間的數(shù)據(jù)發(fā)送(Send)/接收(Receive)服務(wù)
Transceiver目前可支持的通訊端口(Port)有:
通訊方式 | 交互層 | 發(fā)送端 | 接收端 | 推薦環(huán)境 |
TCP | 協(xié)議 | √ | √ | 企業(yè)快速以太網(wǎng)/沒有防火墻的網(wǎng)絡(luò) |
FTP | 協(xié)議 | √ | √ | 網(wǎng)絡(luò)間的文件傳輸/具有文件服務(wù)器的環(huán)境 |
SMTP | 協(xié)議 | √ | | B2C情況/具有郵件發(fā)送服務(wù)器 |
POP3 | 協(xié)議 | | √ | B2C情況/具有郵件接收服務(wù)器 |
HTTP | 協(xié)議 | √ | √ | 跨越防火墻的網(wǎng)絡(luò)/Internet環(huán)境 |
FILE | 數(shù)據(jù) | √ | √ | 從本地文件讀取/寫入到本地文件 |
MSMQ | 數(shù)據(jù) | √ | √ | 與大型主機(jī)等其它系統(tǒng)/不同應(yīng)用間 |
DB | 數(shù)據(jù) | √ | √ | 定制的數(shù)據(jù)庫結(jié)構(gòu)下/不同應(yīng)用間 |
COM/DCOM | 應(yīng)用 | √ | √ | 業(yè)務(wù)邏輯映射到專用模塊接口/有特定數(shù)據(jù)處理需求的環(huán)境 |
正如Transceiver 應(yīng)用舉例所示,按Transceiver對(duì)Port和Channel的定義,以上Send/Receive兩端各八種Port自由組合,即可實(shí)現(xiàn)8x8共64種靈活的通訊方式,足以滿足復(fù)雜多變的企業(yè)應(yīng)用通訊環(huán)境。
注:由于UDP協(xié)議的需求環(huán)境與TCP類似而缺乏連接安全性,所以作者沒有專門實(shí)現(xiàn),如有需要可以靈活增加;而在應(yīng)用層面,用Delphi也很容易實(shí)現(xiàn)CORBA和EJB的組件接口(Port),成為Transceiver Shell的有機(jī)組成部分。
2. 用于緩沖處理的Queue機(jī)制,可對(duì)通訊異常情況進(jìn)行數(shù)據(jù)緩沖隊(duì)列跟蹤與數(shù)據(jù)重發(fā)。
3. 數(shù)據(jù)日志記錄,可對(duì)數(shù)據(jù)的時(shí)間、內(nèi)容、來源、去向、緩沖次數(shù)、當(dāng)前狀態(tài) 進(jìn)行全程記錄。
4. 多語言支持,提供數(shù)據(jù)轉(zhuǎn)換與用戶界面的多語言支持接口,用戶可根據(jù)語言需求自由添加界面語言類型和數(shù)據(jù)轉(zhuǎn)碼組件。
Transceiver 實(shí)現(xiàn)
Transceiver由Transceiver Service和Transceiver Console兩部分組成, Transceiver Service又可劃分為Transceiver Kernel和Transceiver Shell兩個(gè)邏輯層。
附圖2: Transceiver 設(shè)計(jì)架構(gòu)
一、 Transceiver Console簡(jiǎn)介
Console的功能是以控制面板應(yīng)用程序形式為Transceiver Service提供有效的Port、Channel定義與規(guī)則以及對(duì)傳輸日志、數(shù)據(jù)隊(duì)列、環(huán)境參數(shù)等進(jìn)行設(shè)置,不通過Console,用戶也可以通過直接修改Transceiver的系統(tǒng)配置庫和
注冊(cè)表對(duì)上述內(nèi)容進(jìn)行手工設(shè)置,限于篇幅,只向大家提供三幅截圖,說明界面多語言動(dòng)態(tài)支持、Transceiver Shell Port定義、Transceiver Channel定義三個(gè)方面的運(yùn)行效果,實(shí)現(xiàn)細(xì)節(jié)不做贅述。
附圖3: Transceiver Console的多語言動(dòng)態(tài)支持(附圖4、5界面語言均不同)
附圖4: 通過Transceiver Console為Transceiver Server定義通訊Port
附圖5: 組合SourcePort和TargetPort為Transceiver Server定義通訊Channel