Microsoft .NET 框架提供語言中立平台,支援 C#、VB.NET、Managed C++ 等語言開發 Web 服務與應用程式。MSIL(Microsoft Intermediate Language)搭配 JIT(Just-In-Time)編譯器實現跨語言互操作。C# 為簡單、現代、物件導向、型別安全的新世代語言。
早期 MSMQ 可擴展負載平衡方案需 Visual C++ 實作智慧型訊息路由器。.NET 框架降低門檻,使 C# 即可構建同等架構。本方案展示:
AppSpecific 屬性路由訊息至目標佇列IWebMessage)核心類別層級:
ServiceControl (繼承 ServiceBase)
└─ CWorker (每輸入佇列一實例)
└─ CWorkerThread[] (依 ProcessThreads 建立多執行緒)
├─ CWorkerThreadAppSpecific (依 AppSpecific 路由)
├─ CWorkerThreadRoundRobin (循環轉發)
└─ CWorkerThreadAssembly (呼叫組件 IWebMessage)
System.ServiceProcess.ServiceBase,實作 OnStart/Stop/Pause/Continue。Exception 為基礎,CWorkerThreadException 擴充 Terminate 旗標區分訊息/系統級錯誤。WorkerFormatter 等運行時參數採 struct 而非 class,確保參數傳值語意,避免參考共享副作用。
using System; using System.ServiceProcess;
public class ServiceControl : ServiceBase {
public static void Main() { ServiceBase.Run(new ServiceControl()); }
public ServiceControl() {
CanPauseAndContinue = true;
ServiceName = "MSDNMessageService";
AutoLog = false;
}
protected override void OnStart(string[] args) { ... }
protected override void OnStop() { ... }
protected override void OnPause() { ... }
protected override void OnContinue() { ... }
}
此為整個訊息佇列處理服務的骨架,後續章節將逐層深入各組件實作細節。