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

.NET 4.0 與 Dublin (AppFabric) 深度解析:WCF/WF 服務的新一代裝載與管理平台

     編輯:關於.NET

歷史背景:從 .NET 3.5 到 4.0 的範式轉移

.NET 3.5 雖引入 Send/Receive 活動實現 WCF/WF 整合,但痛點明顯:

  • 配置模型分離:WCF 用 config,WF 用 XAML,部署產物碎片化
  • 基礎活動庫匱乏:缺乏實務業務活動,開發者被迫大量撰寫自訂活動
  • 純 XAML 工作流工具鏈缺失:Visual Studio 不完整支援無代碼工作流開發/除錯

.NET 4.0 核心突破

1. 豐富的基礎活動庫

  • 流程控制:Flowchart (介於 Sequence 與 StateMachine 之間)、ForEach、DoWhile、Break
  • 執行時:InvokeMethod、Assign、Persist
  • WCF 整合:SendMessage/ReceiveMessage (單向)、ClientOperation/ServiceOperation (請求/回應)、CorrelationScope、InitializeCorrelation

活動工具箱

Flowchart 設計器

2. 簡化的自訂活動開發模型

// 基於 Activity 組合現有活動 (無需覆寫 Execute)
public class CopyFile : Activity
{
    public InArgument<string> Source { get; set; }
    public InArgument<string> Destination { get; set; }

    protected override WorkflowElement CreateBody()
    {
        return new PowerShellCommand
        {
            CommandText = "copy-item",
            Parameters = {
                { "path", new InArgument<string>(Source) },
                { "destination", new InArgument<string>(Destination) },
                { "recurse", new InArgument<bool>(false) }
            }
        };
    }
}

全新 InArgument<T>/OutArgument<T>/InOutArgument<T> 類型化參數系統,徹底解決舊版 Queue 序列化痛苦。

3. 變數與運算式系統

  • Variable:命名儲存槽,支援巢狀作用域,設計時定義、執行時儲存於工作流實例
  • Expression<T>:可組合的運算式樹,可作為活動參數繫結
<Sequence>
  <Sequence.Variables>
    <Variable Name="message" Type="x:String" />
  </Sequence.Variables>
  <Assign To="[message]" Value="'Audit: something bad'" />
  <local:Audit Text="[message]" />
</Sequence>

4. 宣告式服務定義:純 XAML 實現 WCF 服務

<Service xmlns="clr-namespace:System.ServiceModel;assembly=System.WorkflowServiceModel">
  <Service.KnownProjections>
    <SoapContractProjection Name="ICalculatorSoap">
      <ServiceContract Name="ICalculator">
        <OperationContract Name="Add">
          <OperationArgument Name="Op1" Type="x:Int32" />
          <OperationArgument Name="Op2" Type="x:Int32" />
          <OperationArgument Direction="Out" Name="Result" Type="x:Int32" />
        </OperationContract>
      </ServiceContract>
    </SoapContractProjection>
  </Service.KnownProjections>
  <Service.Implementation>
    <WorkflowServiceImplementation> ... </WorkflowServiceImplementation>
  </Service.Implementation>
  <Service.Endpoints>
    <Endpoint Uri="https://localhost:8080/calc" ContractProjection="{x:Reference ICalculatorSoap}">
      <Endpoint.Binding><BasicHttpBinding /></Endpoint.Binding>
    </Endpoint>
  </Service.Endpoints>
</Service>

Dublin (Windows Server AppFabric):企業級裝載與管理

為什麼需要 Dublin?

IIS/WAS 現狀Dublin 補足
通用進程啟動/回收WCF/WF 專屬服務管理 (啟動、暫停、終止、中止實例)
無服務級監控/追蹤持久化實例儀表板、ETW 追蹤整合、自訂追蹤設定檔
配置修改需編輯 XMLIIS 管理器圖形化配置持久化、追蹤、節流、安全性
部署需開發人員操作應用程式匯出/匯入 (.zip 套件),IT 人員單獨部署
無優雅離線更新機制「停用協議」/「還原協議」原子切換流量

核心架構

Dublin 架構

  • 運行時資料庫:持久化存儲、監控資料
  • .NET 4.0 執行時元件
  • Dublin 擴展層:整合裝載、持久化、監控、路由
  • 管理介面:PowerShell Cmdlets + IIS 管理器擴展

關鍵管理功能

  1. 持久化實例管理:檢視/暫停/終止/中止卡住的工作流實例
  2. 應用程式離線更新:Disable-ApplicationMessageFlow 切斷流量 → 更新資料庫/程式碼 → Enable-ApplicationMessageFlow
  3. 追蹤與監控:內建追蹤設定檔、SQL 查詢追蹤事件、自訂追蹤設定檔
  4. 應用程式封裝部署:匯出含代碼/配置/中繼資料的 .zip,匯入時自動綁定新環境持久化資料庫

IIS 管理器 Dublin 擴展

服務配置介面

持久化實例儀表板

實例操作選單

追蹤資料檢視

與 Oslo、BizTalk 的關係

  • Oslo (M/Repository/Quadrant):建模平台,Dublin 將率先消費 Oslo 模型實現模型驅動部署
  • BizTalk Server:專注異構系統整合 (EAI),Dublin 針對純 WCF/WF 提供輕量級管理,未來 BizTalk 可能建構於 Dublin 之上
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved