public static IUnityContainer GetContainer(FrontEndUnityContainerAvailable containerSelected)
        {
            IUnityContainer result = new UnityContainer();
            result.RegisterType(typeof(IAuthenticationProxy), typeof(AuthenticationProxy), new InjectionMember[0]);
            result.RegisterType(typeof(IMembershipProxy), typeof(MembershipProxy), new InjectionMember[0]);
            result.RegisterType(typeof(IRoleManagerProxy), typeof(RoleManagerProxy), new InjectionMember[0]);
            result.RegisterType(typeof(IRolesProxy), typeof(RolesProxy), new InjectionMember[0]);
            result.RegisterType(typeof(IProfileProxy), typeof(ProfileProxy), new InjectionMember[0]);
            result.RegisterType(typeof(ILoggingProxy), typeof(LoggingProxy), new InjectionMember[0]);
            result.RegisterType(typeof(ISyndicationProxy), typeof(SyndicationProxy), new InjectionMember[0]);
            result.RegisterType(typeof(IUserRequestContextFrontEnd), typeof(UserRequestContextFrontEnd), new InjectionMember[0]);
            result.RegisterType(typeof(IUserSessionModel), typeof(UserSessionAtHttpCookies), new InjectionMember[0]);

            switch (containerSelected)
            {
                case FrontEndUnityContainerAvailable.ProxiesToCustomHost:
                    result.RegisterType(typeof(IClientChannelInitializer<>), typeof(ClientChannelCustomHostInitializer<>), new InjectionMember[0]);
                    break;
                case FrontEndUnityContainerAvailable.ProxiesToAzure:
                    result.RegisterType(typeof(IClientChannelInitializer<>), typeof(ClientChannelAzureInternalRoleInitializer<>), new InjectionMember[0]);
                    break;
                default:
                    throw new Exception("IUnityContainer does not exist in the list of available providers");
            }

            return result;
        }
        public static IUnityContainer GetContainer(FrontEndUnityContainerAvailable containerSelected)
        {
            IUnityContainer result = new UnityContainer();
            /*Front End Interfaces begin*/
            result.RegisterType(typeof(IAuthenticationProxy), typeof(AuthenticationBL), new InjectionMember[0]);
            result.RegisterType(typeof(IMembershipProxy), typeof(MembershipBL), new InjectionMember[0]);
            result.RegisterType(typeof(IRoleManagerProxy), typeof(RoleAdminBL), new InjectionMember[0]);
            result.RegisterType(typeof(IRolesProxy), typeof(RoleAdminBL), new InjectionMember[0]);
            result.RegisterType(typeof(IProfileProxy), typeof(ProfileBL), new InjectionMember[0]);
            result.RegisterType(typeof(ILoggingProxy), typeof(LoggingBL), new InjectionMember[0]);
            result.RegisterType(typeof(ISyndicationProxy), typeof(SyndicationBL), new InjectionMember[0]);
            result.RegisterType(typeof(IUserRequestContextFrontEnd), typeof(UserRequestContextFrontEnd), new InjectionMember[0]);
            result.RegisterType(typeof(IUserSessionModel), typeof(UserSessionAtHttpCookies), new InjectionMember[0]);
            /*Front End Interfaces end*/

            /*Back End Interfaces begin*/
            if (ApplicationConfiguration.MailingSettingsSection.SmtpIsEnabled)
            {
                result.RegisterType(typeof(ISmtpClient), typeof(SmtpClientProxy), new InjectionMember[0]);
            }
            else
            {
                result.RegisterType(typeof(ISmtpClient), typeof(SmtpClientMock), new InjectionMember[0]);
            }
            result.RegisterType(typeof(IMembershipDAL), typeof(MembershipDAL), new InjectionMember[0]);
            result.RegisterType(typeof(IRoleAdminDAL), typeof(RoleAdminDAL), new InjectionMember[0]);
            result.RegisterType(typeof(IProfileDAL), typeof(ProfileDAL), new InjectionMember[0]);
            result.RegisterType(typeof(ILoggingDAL), typeof(LoggingDAL), new InjectionMember[0]);
            result.RegisterType(typeof(ISyndicationDAL), typeof(SyndicationDAL), new InjectionMember[0]);
            result.RegisterType(typeof(ITokenTemporaryPersistenceDAL<>), typeof(TokenTemporaryDatabasePersistenceDAL<>), new InjectionMember[0]);
            //result.RegisterType(typeof(IUserRequestModel), typeof(UserRequestContextBackEndNetTcp), new InjectionMember[0]);
            //result.RegisterType(typeof(IUserRequestModel), typeof(UserRequestContextBackEndHttp), new InjectionMember[0]);
            result.RegisterType(typeof(IUserRequestModel), typeof(UserRequestContextBackEndStandaloneVersion), new InjectionMember[0]);
            /*Back End Interfaces end*/

            return result;
        }