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