static void Main(string[] args)
 {
     try
     {
         Person person = new Person("John Doe");
         IChatServiceCallback callback        = new SimpleChatCallback();
         InstanceContext      instanceContext = new InstanceContext(callback);
         ChatServiceClient    serviceProxy    = new ChatServiceClient(instanceContext);
         Console.WriteLine("Endpoint:");
         Console.WriteLine("***********************************************");
         Console.WriteLine(string.Format("Address = {0}", serviceProxy.Endpoint.Address));
         Console.WriteLine(string.Format("Binding = {0}", serviceProxy.Endpoint.Binding));
         Console.WriteLine(string.Format("Contract = {0}", serviceProxy.Endpoint.Contract.Name));
         Person[] people = serviceProxy.Join(person);
         Console.WriteLine("***********************************************");
         Console.WriteLine("Connected !");
         Console.WriteLine("Online users:");
         foreach (Person p in people)
         {
             Console.WriteLine(p.Name);
         }
         Console.WriteLine("Press <ENTER> to finish...");
         Console.ReadLine();
         if (serviceProxy.State != CommunicationState.Faulted)
         {
             serviceProxy.Close();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
 static void Main(string[] args)
 {
     try
     {
         if (args.Length != 1)
         {
             Console.WriteLine("usage: clientconsole username");
         }
         else
         {
             Person user = new Person(args[0]);
             IChatServiceCallback callback        = new SimpleChatCallback();
             InstanceContext      instanceContext = new InstanceContext(callback);
             ChatServiceClient    serviceProxy    = new ChatServiceClient(instanceContext);
             Console.WriteLine("Endpoint:");
             Console.WriteLine("***********************************************");
             Console.WriteLine(string.Format("Address = {0}", serviceProxy.Endpoint.Address));
             Console.WriteLine(string.Format("Binding = {0}", serviceProxy.Endpoint.Binding));
             Console.WriteLine(string.Format("Contract = {0}", serviceProxy.Endpoint.Contract.Name));
             Person[] people = serviceProxy.Join(user);
             Console.WriteLine("***********************************************");
             Console.WriteLine("Connected !");
             Console.WriteLine("Online users:");
             foreach (Person p in people)
             {
                 Console.WriteLine(p.Name);
             }
             string msg;
             while ((msg = Console.ReadLine()) != "exit")
             {
                 serviceProxy.Say(msg);
             }
             serviceProxy.Leave();
             if (serviceProxy.State != CommunicationState.Faulted)
             {
                 serviceProxy.Close();
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }