private static void Main()
        {
            string hostName         = DemoConfig.Default.busHostName;
            ushort hostPort         = DemoConfig.Default.busHostPort;
            bool   useSSL           = DemoConfig.Default.useSSL;
            string clientUser       = DemoConfig.Default.clientUser;
            string clientThumbprint = DemoConfig.Default.clientThumbprint;
            string serverUser       = DemoConfig.Default.serverUser;
            string serverThumbprint = DemoConfig.Default.serverThumbprint;
            ushort serverSSLPort    = DemoConfig.Default.serverSSLPort;
            ushort serverOpenPort   = DemoConfig.Default.serverOpenPort;
            string busIORFile       = DemoConfig.Default.busIORFile;

            if (useSSL)
            {
                Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false);
            }
            else
            {
                ORBInitializer.InitORB();
            }

/*
 *    ConsoleAppender appender = new ConsoleAppender {
 *      Threshold = Level.Fatal,
 *      Layout =
 *        new SimpleLayout(),
 *    };
 *    BasicConfigurator.Configure(appender);
 */
            ConnectionProperties props   = new ConnectionPropertiesImpl();
            OpenBusContext       context = ORBInitializer.Context;
            Connection           conn;

            if (useSSL)
            {
                string ior = File.ReadAllText(busIORFile);
                conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props);
            }
            else
            {
                conn = context.ConnectByAddress(hostName, hostPort, props);
            }
            context.SetDefaultConnection(conn);

            const string  userLogin    = "******";
            const string  userPassword = userLogin;
            ASCIIEncoding encoding     = new ASCIIEncoding();

            conn.LoginByPassword(userLogin, encoding.GetBytes(userPassword), "testing");

            GetService(typeof(Messenger));
            GetService(typeof(Forwarder));
            GetService(typeof(Broadcaster));

            conn.Logout();

            conn.LoginByPassword(Bill, encoding.GetBytes(Bill), "testing");
            _forwarder.setForward(William);
            _broadcaster.subscribe();
            conn.Logout();

            conn.LoginByPassword(Paul, encoding.GetBytes(Paul), "testing");
            _broadcaster.subscribe();
            conn.Logout();

            conn.LoginByPassword(Mary, encoding.GetBytes(Mary), "testing");
            _broadcaster.subscribe();
            conn.Logout();

            conn.LoginByPassword(Steve, encoding.GetBytes(Steve), "testing");
            _broadcaster.subscribe();
            _broadcaster.post(TestMessage);
            conn.Logout();

            Logger.Fatal("Esperando as mensagens propagarem.");
            Thread.Sleep(10000);
            Logger.Fatal("Pronto!");

            FillExpected();

            string[] names = { William, Bill, Paul, Mary, Steve };
            foreach (string name in names)
            {
                conn.LoginByPassword(name, encoding.GetBytes(name), "testing");
                PostDesc[] descs = _messenger.receivePosts();
                Actual.Add(name, descs.Length > 0 ? descs : null);
                _broadcaster.unsubscribe();
                conn.Logout();
            }

            conn.LoginByPassword(Bill, encoding.GetBytes(Bill), "testing");
            _forwarder.cancelForward(William);
            conn.Logout();
            CheckOutput();
            Logger.Fatal(
                "Teste de interoperabilidade Delegation executado com êxito.");
        }