Cuestiones de diseño avanzado
Debido a que el cliente necesita la información referente al tipo de un tipo remoto, a menudo es más fácil implementar la biblioteca de tipos remotos en el cliente para usarla como biblioteca de metadatos. No obstante, en muchos casos no le interesará que ningún cliente tenga acceso a la implementación del tipo. Hay varias formas de solucionar este problema:
Cree un cliente solitario mediante la herramienta Soapsuds (Soapsuds.exe), tal y como se describe en el tema Clientes solidarios.
Implemente en el cliente un ensamblado sólo de metadatos con la misma información de nombre y tipo que el ensamblado del servidor, y deshabilite la comprobación de la versión o deje las versiones en blanco.
Declare una interfaz en otra biblioteca e implemente esa biblioteca con el cliente. Publique una clase de servidor que implemente su interfaz; el cliente podrá usar la clase adquiriendo un proxy de la interfaz que implementa.
Nota
El cliente tendrá que llamar al método Activator.GetObject para obtener el proxy. Llamar a new (New en Visual Basic) generará un error en tiempo de compilación; no se puede crear una instancia de una interfaz.
Cree una clase de contenedor utilizable de forma remota para la clase real. Publique e implemente la biblioteca de contenedores. El cliente no tendrá acceso al objeto real.