Base class for a client involved in server-client communication.
Inheritance: System.ComponentModel.Component, IClient, ISupportInitialize, IPersistSettings
Example #1
0
        /// <summary>
        /// Creates an instance of <see cref="WindowsServiceClient"/>.
        /// </summary>
        /// <param name="connectionString">Connection information such as server ip address and port where windows service is running.</param>
        public WindowsServiceClient(string connectionString)
        {
            // Initialize status cache members.
            Dictionary<string, string> settings = connectionString.ParseKeyValuePairs();
            SerializationFormat serializationFormat;
            string setting;

            if (settings.TryGetValue("statusBufferSize", out setting) && !string.IsNullOrWhiteSpace(setting))
                m_statusBufferSize = int.Parse(setting);
            else
                m_statusBufferSize = 8192;

            m_cachedStatus = string.Empty;

            // Initialize remoting client socket.
            if (!settings.TryGetValue("enabledSslProtocols", out setting) || !setting.Equals("None", StringComparison.OrdinalIgnoreCase))
                m_remotingClient = InitializeTlsClient(connectionString);
            else
                m_remotingClient = InitializeTcpClient(connectionString);

            // Parse out desired message serialization format, if specified
            if (!settings.TryGetValue("serializationFormat", out setting) || !Enum.TryParse(setting, true, out serializationFormat))
                serializationFormat = SerializationFormat.Binary;

            // Initialize windows service client.
            m_clientHelper = new ClientHelper();
            m_clientHelper.SerializationFormat = serializationFormat;
            m_clientHelper.RemotingClient = m_remotingClient;
            m_clientHelper.ReceivedServiceUpdate += ClientHelper_ReceivedServiceUpdate;
            m_clientHelper.AuthenticationSuccess += ClientHelper_AuthenticationSuccess;
            m_clientHelper.AuthenticationFailure += ClientHelper_AuthenticationFailure;
        }
Example #2
0
        /// <summary>
        /// Releases the unmanaged resources used by the <see cref="ServiceClientBase"/> object and optionally releases the managed resources.
        /// </summary>
        /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (!m_disposed)
            {
                try
                {
                    if (disposing)
                    {
                        if ((object)m_clientHelper != null)
                        {
                            m_clientHelper.Dispose();
                            m_clientHelper = null;
                        }

                        if ((object)m_remotingClient != null)
                        {
                            m_remotingClient.Dispose();
                            m_remotingClient = null;
                        }

                        if ((object)m_errorLogger != null)
                        {
                            m_errorLogger.Dispose();
                            m_errorLogger = null;
                        }
                    }
                }
                finally
                {
                    m_disposed = true;  // Prevent duplicate dispose.
                }
            }
        }
Example #3
0
        /// <summary>
        /// Initializes the remoting client, client helper, and error logger.
        /// </summary>
        public void Initialize()
        {
            CategorizedSettingsElementCollection remotingClientSettings;

            try
            {
                remotingClientSettings = ConfigurationFile.Current.Settings["remotingClient"];
            }
            catch
            {
                remotingClientSettings = null;
            }

            if ((object)remotingClientSettings != null)
            {
                if (remotingClientSettings.Cast<CategorizedSettingsElement>().Any(element => element.Name.Equals("EnabledSslProtocols", StringComparison.OrdinalIgnoreCase) && !element.Value.Equals("None", StringComparison.OrdinalIgnoreCase)))
                    m_remotingClient = InitializeTlsClient();
                else
                    m_remotingClient = InitializeTcpClient();
            }
            else
            {
                m_remotingClient = InitializeTlsClient();
            }

            m_clientHelper = new ClientHelper();
            m_clientHelper.PersistSettings = true;
            m_clientHelper.RemotingClient = m_remotingClient;
            m_clientHelper.Initialize();

            m_errorLogger = new ErrorLogger();
            m_errorLogger.ErrorLog.FileName = "ServiceClient.ErrorLog.txt";
            m_errorLogger.LogToEventLog = false;
            m_errorLogger.LogToUI = true;
            m_errorLogger.PersistSettings = true;
            m_errorLogger.ErrorLog.Initialize();
            m_errorLogger.Initialize();
        }
        /// <summary>
        /// Initializes the remoting client, client helper, and error logger.
        /// </summary>
        public void Initialize()
        {
            CategorizedSettingsElementCollection remotingClientSettings;
            string[] args;
            string filter;

            try
            {
                remotingClientSettings = ConfigurationFile.Current.Settings["remotingClient"];
            }
            catch
            {
                remotingClientSettings = null;
            }

            if ((object)remotingClientSettings != null)
            {
                if (remotingClientSettings.Cast<CategorizedSettingsElement>().Any(element => element.Name.Equals("EnabledSslProtocols", StringComparison.OrdinalIgnoreCase) && !element.Value.Equals("None", StringComparison.OrdinalIgnoreCase)))
                    m_remotingClient = InitializeTlsClient();
                else
                    m_remotingClient = InitializeTcpClient();
            }
            else
            {
                m_remotingClient = InitializeTlsClient();
            }

            args = Arguments.ToArgs(Environment.CommandLine);

            filter = Enumerable.Range(0, args.Length)
                .Where(index => args[index].StartsWith("--filter=", StringComparison.OrdinalIgnoreCase))
                .Select(index => Regex.Replace(args[index], "^--filter=", "", RegexOptions.IgnoreCase))
                .FirstOrDefault() ?? ClientHelper.DefaultStatusMessageFilter;

            m_clientHelper = new ClientHelper();
            m_clientHelper.PersistSettings = true;
            m_clientHelper.RemotingClient = m_remotingClient;
            m_clientHelper.StatusMessageFilter = filter;
            m_clientHelper.Initialize();

            m_errorLogger = new ErrorLogger();
            m_errorLogger.ErrorLog.FileName = "ServiceClient.ErrorLog.txt";
            m_errorLogger.LogToEventLog = false;
            m_errorLogger.LogToUI = true;
            m_errorLogger.PersistSettings = true;
            m_errorLogger.ErrorLog.Initialize();
            m_errorLogger.Initialize();
        }