SSO as a Configuration Store, retrieve configuration

As I said in  a previous article, stores configuration in SSO is really great for configuration storage,

Now let me explain you how to implement in your solution this architecture.

First you need to include Microsoft.BizTalk.SSOClient.

public class ConfigurationPropertyBag : Microsoft.BizTalk.SSOClient.Interop.IPropertyBag

    {

        private HybridDictionary properties;

        internal ConfigurationPropertyBag()

        {

            properties = new HybridDictionary();

        }

        public void Read(string propName, out object ptrVar, int errLog)

        {

            ptrVar = properties[propName];

        }

        public Object ReadOut(String propName)

        {

            object itemreturn;

            this.Read(propName,out itemreturn, 0);

            return itemreturn;

        }

        public void Write(string propName, ref object ptrVar)

        {

            properties.Add(propName, ptrVar);

        }

        public bool Contains(string key)

        {

            return properties.Contains(key);

        }

        public void Remove(string key)

        {

            properties.Remove(key);

        }

 

        public HybridDictionary Properties

        {

            get { return properties; }

        }

    }

Next here is  the implementation for read Method :

  public static class SSOConfigHelper

    {

        private static string identifierGUID = « ConfigProperties »;

 

        /// <summary>

        /// Read method helps get configuration data

        /// </summary>        

        /// <param name=« appName »>The name of the affiliate application to represent the configuration container to access</param>

        /// <param name=« propName »>The property name to read</param>

        /// <returns>

        ///  The value of the property stored in the given affiliate application of this component.

        /// </returns>

        public static string Read(string appName, string propName)

        {

            try

            {

                SSOConfigStore ssoStore = new SSOConfigStore();

                ConfigurationPropertyBag appMgmtBag = new ConfigurationPropertyBag();

                ((ISSOConfigStore) ssoStore).GetConfigInfo(appName, identifierGUID, SSOFlag.SSO_FLAG_RUNTIME, (IPropertyBag) appMgmtBag);

                object propertyValue = null;

                appMgmtBag.Read(propName, out propertyValue, 0);

                return (string)propertyValue;

            }

            catch (Exception e)

            {

                System.Diagnostics.Trace.WriteLine(e.Message);

                throw;

            }

        }

 

        /// <summary>

        /// Write method helps write configuration data

        /// </summary>        

        /// <param name=« appName »>The name of the affiliate application to represent the configuration container to access</param>

        /// <param name=« propName »>The property name to write</param>

        /// <param name=« propName »>The property value to write</param>

        public static void Write(string appName, string propName, string propValue)

        {

            try

            {

                SSOConfigStore ssoStore = new SSOConfigStore();

                ConfigurationPropertyBag appMgmtBag = new ConfigurationPropertyBag();

                ((ISSOConfigStore)ssoStore).GetConfigInfo(appName, identifierGUID, SSOFlag.SSO_FLAG_RUNTIME, (IPropertyBag)appMgmtBag);

                object tempProp = propValue;

                try

                {

                    appMgmtBag.Remove(propName);

                }

                catch

                {

 

                }

                appMgmtBag.Write(propName, ref tempProp);

                ((ISSOConfigStore)ssoStore).SetConfigInfo(appName, identifierGUID, appMgmtBag);

            }

            catch (Exception e)

            {

                System.Diagnostics.Trace.WriteLine(e.Message);

                throw;

            }

        }

    }

You can retrieve this class on MSDN.

I made some load test, any call take more than 6ms on my dev computer with 10 000 calls.

Publicités

Une réflexion sur “SSO as a Configuration Store, retrieve configuration

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s