共用方式為


在商務程式管理解決方案中有效率地使用 SSO

如同服務導向解決方案,商務程式管理解決方案會使用企業單一 Sign-On (SSO) 來儲存設定值,例如訂單處理階段的數目。 它會使用秘密存放區,因為它會在安裝 BizTalk 時存在,SSO 會快取組態資訊,讓這些值可供使用,而且它可以保護資料庫連接字串和密碼等資訊。 基於上述所有原因,即使單一 Sign-On 未用於管理後端應用程式的連線,秘密存放區也是組態信息的絕佳位置。

為了減少延遲,解決方案會針對組態值使用本機快取。 解決方案每隔五分鐘重新整理一次快取。

本主題描述解決方案所使用的快取機制。 此解決方案對 SSO 快取採用的方式與服務導向解決方案略有不同。 如需服務導向解決方案如何快取 SSO 值的描述,請參閱 在服務導向解決方案中有效率地使用 SSO

在本機快取組態值

商務程式管理解決方案會使用單一物件上的屬性來提供 SSO 值的存取權。

備註

請回想一下,單例物件是只能有一個實例的物件。 如需有關單例物件及在 C# 中建立它們的詳細資訊,請參閱 在 C# 中實作 Singleton

在此解決方案中,協調流程會先擷取單例物件,然後透過物件的屬性來參考這些值。 以下是 OrderManager 協調流程的程式代碼:

configData = Microsoft.Samples.BizTalk.SouthridgeVideo.Utilities
                .SsoConfigHelper.Singleton;
numStages = configData.TotalStages;

協同程序會呼叫 SsoConfigHelper 物件上的 Singleton 方法,以存取該物件的唯一實例。 有了對象,協調流程會擷取處理階段 TotalStages 的數目。

此解決方案遵循建立單一方法的常見方法:讓建構函式成為私用,讓物件建立本身的實例,並將它指派給私用變數,並透過方法或屬性提供該變數值的存取權。 SsoConfigHelper 物件會使用屬性 Singleton 來提供本身單一複本的存取權。

備註

SsoConfigHelper 物件會使用靜態建構函式,從 SSO 快取取得初始值,並設定重新整理機制。 因為無法呼叫靜態建構函式,所以會保留單一設計。 如需詳細資訊,請參閱靜態建構函式(C# 程序設計手冊)。

協同流程引用的所有對象,無論是直接或間接,都必須是可序列化的。 如需詳細資訊,請參閱持續性和協調流程引擎中的「序列化」。 雖然 SsoConfigHelper 物件一定可串行化,但如果引擎解除凍結協調流程,當協調流程解除凍結時,它仍會使用該物件的單一目前實例。 如需串行化和 BizTalk Server 變數的詳細資訊,請參閱 協調流程變數類型

備註

服務導向解決方案中物件上的所有公用方法都是靜態的。 因此,協調流程不需要將實例指派給變數,而且不需要串行化 類別。

SsoConfigHelper 物件會使用與服務導向解決方案相同的機制來擷取和重新整理組態值。 也會使用相同的鎖定模式。 如需這些機制的詳細資訊,請參閱 在服務導向解決方案中有效率地使用 SSOSsoConfigHelper 的原始程式碼。

如同在服務導向解決方案中執行的單一 Sign-On 快取,商務程式管理解決方案會實作來自 Microsoft.BizTalk.SSOClient.Interop 命名空間的 IPropertyBag 介面來儲存值。 商務程式管理解決方案會使用 HybridDictionary 物件,而不是 NameValueCollection 物件。

與服務導向解決方案不同,商務程式管理解決方案會公開物件,其中包含對應至組態數據的屬性。 這可防止協調流程必須處理訊息類型的差異。

另請參閱

商務程式管理解決方案的實作重點