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

C# 訊息佇列應用程式開發:.NET 框架下的架構總覽(一)

     編輯:關於C語言

.NET 框架與 C# 簡介

Microsoft .NET 框架提供語言中立平台,支援 C#、VB.NET、Managed C++ 等語言開發 Web 服務與應用程式。MSIL(Microsoft Intermediate Language)搭配 JIT(Just-In-Time)編譯器實現跨語言互操作。C# 為簡單、現代、物件導向、型別安全的新世代語言。

方案背景:從 ATL 到 .NET

早期 MSMQ 可擴展負載平衡方案需 Visual C++ 實作智慧型訊息路由器。.NET 框架降低門檻,使 C# 即可構建同等架構。本方案展示:

  • Windows 服務處理多訊息佇列
  • 每佇列多執行緒接收/處理訊息
  • 循環法或 AppSpecific 屬性路由訊息至目標佇列
  • 訊息屬性呼叫組件方法(需實作 IWebMessage)
  • 錯誤訊息導向錯誤佇列

應用程式結構

核心類別層級:

ServiceControl (繼承 ServiceBase)
  └─ CWorker (每輸入佇列一實例)
       └─ CWorkerThread[] (依 ProcessThreads 建立多執行緒)
            ├─ CWorkerThreadAppSpecific  (依 AppSpecific 路由)
            ├─ CWorkerThreadRoundRobin   (循環轉發)
            └─ CWorkerThreadAssembly     (呼叫組件 IWebMessage)

關鍵技術點

  • Windows 服務簡化: 僅需繼承 System.ServiceProcess.ServiceBase,實作 OnStart/Stop/Pause/Continue。
  • 錯誤處理體系: .NET 以 Exception 為基礎,CWorkerThreadException 擴充 Terminate 旗標區分訊息/系統級錯誤。
  • 值型別結構體: WorkerFormatter 等運行時參數採 struct 而非 class,確保參數傳值語意,避免參考共享副作用。
  • ATL 遺產延續: 架構沿襲 COM+ 時代設計,以 .NET 原生類別、介面、委派、反射重構。

專案啟動入口


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() { ... }
}

此為整個訊息佇列處理服務的骨架,後續章節將逐層深入各組件實作細節。

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