Hola Lluis,
Casi lo tenías listo, pero hay un par de errores/mejoras que te comento a continuación.
El método Main de la clase Program no puede ser privado, tiene que ser accesible para que pueda compilar.
Además fíjate que no estás cerrando el host una vez que cierras la aplicación, con lo que fuerzas a que el GC collector llame al finalizer de la clase, lo cual tiene un coste de rendimiento ya que no podrá liberar la memoria hasta que haga el GC haga el collect de la siguiente generación. En el ejemplo que puso Salva hacía, un "using (ServiceHost host = new ...." el cual, automáticamente al salir del ámbito llama al método Dispose, que equivaldría a llamar al método Close. VB no tiene nada equivalente a la declaración "using", con lo cual deberías hacer un Try Finally, algo parecido a:
1 Dim host As ServiceHost = New ServiceHost(GetType(MiServicio.ServicioChat))
2 Console.WriteLine("Arrancando servicio de chat...")
3 Try
4 host.Open()
5 Console.WriteLine("El servicio est? listo para recibir llamadas. Pulse una tecla para cerrar.")
6 Console.ReadKey()
7 Finally
8 Console.WriteLine("Cerrando servicio de chat...")
9 host.Close()
10 End Try
En la configuración tienes puesto que el nombre del servicio es "MiServicio.ServicioChat". El namespace no es correcto, el compilador de visual basic por defecto le añade como namespace root el nombre del proyecto, en tu caso sería "ServicioChatVB.MiServicio.ServicioChat". Puedes cambiarlo en las propiedades del proyecto, en la opción "Root Namespace". Lo mismo ocurre en la configuración del endpoint, el contract correcto es "ServicioChatVB.MiServicio.IServicioChat".
En la clase ServicioChat también hay un error, la clase no está implementando el interface "IServicioChat" que es el que se utiliza como contract. Deberías implementarlo tanto en la clase como en cada método, a continuación puedes ver como hacerlo:
Public Class ServicioChat Implements IServicioChat
Public Function RegistraUsuario(ByVal nombre As String) As Integer Implements IServicioChat.RegistraUsuario
Public Sub Chat(ByVal nombre As String, ByVal mensaje As String) Implements IServicioChat.Chat
Con esto debería ser suficiente, espero haberte sido de ayuda.
Jose Fco Bonnin
-----------------------
Coordinador Baleares on .NET
www.josefcobonnin.com