Yo tengo una aplicación que se conecta al servidor mediante un puerto específico, este es el código:
SERVIDOR:
TcpChannel tcp = new TcpChannel(9000);
ChannelServices.RegisterChannel(tcp);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteLibrary.Utilidades), "Utilidades", WellKnownObjectMode.Singleton);
CLIENTE:
IUtilidades u = (IUtilidades)Activator.GetObject(typeof(IUtilidades), "tcp://servidor:9000/Utilidades", null);
Es una conexión Tcp pero se puede crear un HttpChannel. Lo que hago aqui es establecer una conexión con mi aplicación en el servidor para usar un objeto (RemoteLibrary.Utilidades) desde la aplicación cliente. A través de los métodos de Utilidades puedes pasar cualquier objeto que sea serializable, yo por ejemplo lo trabajo todo con strings y ArrayList.
Espero que te haya servido de algo. En el libro "La Bilia de C#" hay mas sobre este tema.