public PipeServer(IPipeLogger logger, string pipeName, MethodStack methods)
        {
            _pipeName = pipeName;
            _methods  = methods;
            _logger   = logger;

            _servers = new ConcurrentDictionary <string, ICommunicationServer>();
        }
        private const int tryConnectTimeout = 1 * 60 * 100; // 0.5 minute

        /// <summary> Create a client to connect to a remote server </summary>
        /// <param name="serverId"> The name of the server instance to which we are connecting. </param>
        /// <param name="loggers"> Logger iplementing IPipeLogger interface </param>
        /// <param name="serverName"> The name of the remote station, in case of local use leave the default value. (např: "sql1.tmt.local" ) </param>
        public PipeClient(string serverId, IPipeLogger logger, string serverName = ".")
        {
            _logger     = logger;
            _pipeClient = new NamedPipeClientStream(serverName, serverId, PipeDirection.InOut, PipeOptions.Asynchronous | PipeOptions.WriteThrough);
        }