共用方式為


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

如同服務導向解決方案,商務程序管理解決方案也使用「企業單一登入」(SSO) 來儲存組態值,例如,訂單處理階段數目。 此解決方案使用密碼存放區,因為只要安裝 BizTalk,密碼存放區就會存在,SSO 會快取組態資訊,讓組態值隨時可供使用,而且它也可以保護如資料庫連接字串和密碼等資訊。 基於這些理由,即使未使用「單一登入」來管理與後端應用程式的連線,密碼存放區仍是保存組態資訊的理想位置。

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

本主題描述解決方案使用的快取機制。 本解決方案與服務導向解決方案的 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的原始程式碼。

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

和服務導向解決方案不同的是,商務程序管理解決方案會公開具有對應至組態資料的屬性之物件。 如此,協調流程就不需處理訊息類型的差異。

另請參閱

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