承接上篇介紹 ESFramework 檔案傳輸流程與基礎設施,本文深入剖析客戶端與伺服器端的具體整合方式,以及 Rapid 引擎 的封裝支援。
繼承 IFileController,新增屬性與方法:
public interface IFileOutter : IOutter, IFileController
{
DataPriority DataPriority4SendingFile { get; set; }
void InitializeFileTransferingViewer(FileTransferingViewer viewer, string destUserID);
}
Common 或 Low,嚴禁 設 CanBeDiscarded 導致檔案不完整FileTransferingViewer 控制項即拖即用:
// 初始化檢視器
fileOutter.InitializeFileTransferingViewer(viewerControl, "targetUserID");
destUserID 參數語義:
null:顯示所有進行中傳輸項目所有事件在 UI 執行緒 觸發,可直接操作介面:
FileResumedTransStarted:斷點續傳開始FileTransCompleted:傳輸完成FileTransDisruptted:傳輸中斷(含原因類型)FileTransStarted:開始傳輸AllTaskFinished:所有任務完成CancelFileButtonClicked:使用者取消IsFileTransfering():是否有進行中傳輸直接繼承 IFileHandler,無額外成員:
public interface IFileBusinessHandler : IBusinessHandler, IFileHandler { }
伺服器同樣支援接收(上傳)與發送(下載)檔案,遵循相同流程。
繼承 IFileController,提供發送請求、取消傳輸等功能。
同客戶端,直接繼承 IFileHandler。
新版 Rapid 引擎內建檔案傳輸組件,大幅簡化整合。
// 新增重載
void Initialize(string userID, string serverIP, int serverPort,
IBasicBusinessHandler basicHandler,
ICustomizeInfoBusinessHandler customizeHandler,
IFileBusinessHandler fileHandler);
// 唯讀屬性
IFileOutter FileOutter { get; }
若 Initialize 未傳入有效 IFileBusinessHandler,FileOutter 回傳 null。
// 新增重載
void Initialize(int port,
ICustomizeInfoBusinessHandler customizeInfoBusinessHandler,
IFileBusinessHandler fileBusinessHandler,
IFriendsManager friendsManager,
IGroupManager groupManager);
// 唯讀屬性
IFileTransferingController FileTransferingController { get; }
同樣需傳入有效 IFileBusinessHandler 才會啟用。
Rapid 引擎將檔案傳輸相關組件完整組裝,開發者僅需:
IFileBusinessHandlerInitialize 傳入實例FileOutter / FileTransferingController 發起傳輸FileTransferingViewer 顯示進度基於 ESPlus 的檔案傳輸功能,可快速構建檔案伺服器支援上傳/下載,讓分散式通訊應用開發變得前所未有的簡單。