以Delphi建立通訊與資料交換伺服器— Transceiver技術剖析(上)作者:火鳥[email protected]引言在國內常見的資訊化開發及實作專案中,大多數開發的工作量都集中在為適應不同客戶的需求差異,對特定模組進行修改,最終達到客戶期望的軟體功能特性。但對於開發廠商來說,面對不同的客戶開發不同的軟體版本,將導致重複勞動、成本上升、維護量加大、相容和穩定性下降等一系列問題。所以,開發者意識到實現軟體的產品化,才能具備較短的專案週期與較強的市場競爭力,盡可能地適應不同客戶的需求,而不會因此而泥足深陷,是客戶滿意度與商業利益的一個平衡點。 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)的互動能力
Transceiver功能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作者:火鳥
[email protected]透過C#實現集合類別縱覽.NET Collections及相關技術以Delphi建立通訊與資料交換伺服器—Transceiver技術剖析(上)以Delphi建立通訊與資料交換伺服器—Transceiver技術剖析(下)
舊東西:程式捷徑/程式刪除項目/EXE自移除DIY老東西:兒時的程式設計演算法心得筆記