共用方式為


實例存放區

實例存放區是實例的邏輯容器。 這是儲存實例數據和元數據的位置。 實例存放區並不表示專用的實體記憶體。 實例存放區可以包含 SQL Server 資料庫中的持久資訊,或記憶體中的非永久性狀態資訊。 .NET Framework 4.6.1 隨附於 SQL 工作流程實例存放區,這是實例存放區的具體實作,可讓工作流程將實例數據和元數據保存到 SQL Server 2005 或 SQL Server 2008 資料庫。 此外,Windows Server App Fabric 也提供實例存放區的具體實作。 如需詳細資訊,請參閱 Windows Server App Fabric 實例存放區、查詢和控制提供者

持續性 API 是主機與實例存放區之間的介面,可讓主機將命令要求(例如 LoadWorkflowCommandSaveWorkflowCommand) 傳送至實例存放區。 此 API 的具體實作稱為持續性提供者。 持續性提供者會接收來自主機的要求,並修改實例存放區。

主機和實例存放區是可插入的,因此主機可以搭配許多實例存放區使用,而實例存放區可以搭配許多主機使用。 實例存放區通常會針對特定主機的使用模式進行優化,不過實例存放區和主機可能會在獨立生命週期上演進。 例如, WorkflowServiceHostSqlWorkflowInstanceStore 的設計目的是在一起運作良好。 您可以建立自己的實例存放區來保存工作流程服務實例的數據和元數據,並將該實例存放區與 WorkflowServiceHost 搭配使用。 例如,您可以建立 OracleWorkflowInstanceStore,讓工作流程將資訊保存在 Oracle 資料庫中,而不是將它們儲存至 SQL Server 資料庫。

主機通常會透過擴充額外功能來修改已保存的物件。 例如,實例持續性系統可能有工作流程主機、支援「暫停」作業的擴充功能和 SQL 實例存放區。 工作流程主機可能會傳送標準命令,例如儲存或載入,以儲存或從實例存放區載入工作流程,或將工作流程儲存至實例存放區。 暫停擴充功能可能會將額外的語意新增至命令,以便儲存和載入工作流程實例,以便無法載入暫停的工作流程實例。 SQL 實例存放區的持續性提供者了解儲存和載入工作流程實例的命令,並藉由呼叫可變更 SQL Server 資料庫中永續性對象數據表的適當預存程式來實作命令。

主機會作為實例儲存庫內的實例擁有者。 主機可以同時擔任多個實例擁有者並管理多個實例存放區。 主機會為與 實例相關聯的實例索引鍵提供 GUID。 實例索引鍵是識別實例的唯一別名。 持續性系統會在執行主機所要求的命令時,建立、更新和刪除實例擁有者資訊。

下列清單包含主機與實例存放區互動所涉及的重要步驟:

  1. 從持續性提供者取得 InstanceStore

  2. 透過呼叫 CreateInstanceHandle 上的 方法以取得實例的控制代碼。

  3. Execute 上呼叫 方法,以執行針對實例句柄的命令。

  4. 檢視 InstanceView 所傳回的結果,以判斷命令的結果。