首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

ESFramework 4.0 檔案傳輸實戰(下):客戶端與伺服器端完整整合指南

     編輯:關於C語言

承接上篇介紹 ESFramework 檔案傳輸流程與基礎設施,本文深入剖析客戶端與伺服器端的具體整合方式,以及 Rapid 引擎 的封裝支援。

三、客戶端整合

1. IFileOutter 介面

繼承 IFileController,新增屬性與方法:

public interface IFileOutter : IOutter, IFileController
{
    DataPriority DataPriority4SendingFile { get; set; }
    void InitializeFileTransferingViewer(FileTransferingViewer viewer, string destUserID);
}

關鍵屬性

  • DataPriority4SendingFile:檔案資料封包優先級,建議設 Common 或 Low,嚴禁 設 CanBeDiscarded 導致檔案不完整

內建傳輸狀態檢視器

FileTransferingViewer 控制項即拖即用:

// 初始化檢視器
fileOutter.InitializeFileTransferingViewer(viewerControl, "targetUserID");

destUserID 參數語義:

  • 指定用戶 ID:僅顯示與該用戶相關的傳輸項目(類似 QQ 聊天視窗獨立顯示)
  • null:顯示所有進行中傳輸項目

IFileTransferingViewer 事件介面

所有事件在 UI 執行緒 觸發,可直接操作介面:

  • FileResumedTransStarted:斷點續傳開始
  • FileTransCompleted:傳輸完成
  • FileTransDisruptted:傳輸中斷(含原因類型)
  • FileTransStarted:開始傳輸
  • AllTaskFinished:所有任務完成
  • CancelFileButtonClicked:使用者取消
  • IsFileTransfering():是否有進行中傳輸

2. IFileBusinessHandler 介面

直接繼承 IFileHandler,無額外成員:

public interface IFileBusinessHandler : IBusinessHandler, IFileHandler { }

四、伺服器端整合

伺服器同樣支援接收(上傳)與發送(下載)檔案,遵循相同流程。

1. IFileTransferingController

繼承 IFileController,提供發送請求、取消傳輸等功能。

2. IFileBusinessHandler

同客戶端,直接繼承 IFileHandler。

五、Rapid 引擎對檔案傳輸的封裝支援

新版 Rapid 引擎內建檔案傳輸組件,大幅簡化整合。

客戶端:IRapidPassiveEngine

// 新增重載
void Initialize(string userID, string serverIP, int serverPort,
    IBasicBusinessHandler basicHandler,
    ICustomizeInfoBusinessHandler customizeHandler,
    IFileBusinessHandler fileHandler);

// 唯讀屬性
IFileOutter FileOutter { get; }

若 Initialize 未傳入有效 IFileBusinessHandler,FileOutter 回傳 null。

伺服器端:IRapidServerEngine

// 新增重載
void Initialize(int port,
    ICustomizeInfoBusinessHandler customizeInfoBusinessHandler,
    IFileBusinessHandler fileBusinessHandler,
    IFriendsManager friendsManager,
    IGroupManager groupManager);

// 唯讀屬性
IFileTransferingController FileTransferingController { get; }

同樣需傳入有效 IFileBusinessHandler 才會啟用。

總結

Rapid 引擎將檔案傳輸相關組件完整組裝,開發者僅需:

  1. 實作 IFileBusinessHandler
  2. 在 Initialize 傳入實例
  3. 透過 FileOutter / FileTransferingController 發起傳輸
  4. 可選擇性整合 FileTransferingViewer 顯示進度

基於 ESPlus 的檔案傳輸功能,可快速構建檔案伺服器支援上傳/下載,讓分散式通訊應用開發變得前所未有的簡單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved