2009-07-28 77 views
13

Quiero acceder a todos los métodos expuestos en el servicio a través de la URL. si supongamos que la URL será:¿Cómo consumir el servicio web WCF a través de la URL en tiempo de ejecución?

http://localhost/MyService/MyService.svc 

cómo puedo acceder a métodos:

  1. si supongamos que tengo una ServiceReference
  2. y qué debería hacer si no tienen la referencia de servicio.
+0

Por favor, aclare su pregunta. No puedo decir lo que quieres lograr. ¿Desea poder llamar a los métodos o quiere una lista de ellos? –

+0

John Quiero acceder a los métodos ... Por supuesto, quiero consumir el servicio web a través de la URL. –

+0

¿Y por qué no utilizar la referencia de servicio? –

Respuesta

18

Para utilizar un servicio WCF, deberá crear un proxy de cliente WCF.

En Visual Studio, haga clic derecho en el proyecto y seleccione "Agregar referencia de servicio" en el menú contextual. Escriba la URL a la que desea conectarse y, si ese servicio se está ejecutando, debe obtener un archivo de proxy del cliente generado para usted.

Este archivo contendrá típicamente una clase llamada MyService cliente - se puede crear una instancia de esa clase, y debería ver todos los métodos disponibles en la clase de cliente a su disposición.

Si no desea agregar una referencia de servicio en Visual Studio, puede lograr el mismo resultado ejecutando la herramienta de línea de comandos svcutil.exe; esto también generará todos los archivos necesarios para su clase de cliente proxy.

Marc

ACTUALIZACIÓN:
si desea inicializar un proxy de cliente en tiempo de ejecución, que sin duda puede hacer eso - que necesita para decidir qué unirse a usar (protocolo de transporte), y que la dirección para conectarse a, y entonces usted puede hacer:

BasicHttpBinding binding = new BasicHttpBinding(); 
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService"); 

MyServiceClient serviceClient = new MyServiceClient(binding, address); 

Pero incluso en este caso, es necesario haber importado y creó el primer cliente proxy, mediante el uso de las herramientas "Agregar referencia de servicio" o Svcutil.exe.

+0

Hola Marc, Gracias por su respuesta. Estoy haciendo lo mismo y puedo acceder. Pero mi requisito es proporcionar la misma interfaz (que obtenemos cuando hacemos clic derecho para agregar la referencia del servicio) al cliente en el que puede ver las URL y la referencia del servicio se actualizará de acuerdo con la URL seleccionada. –

+0

¿Cómo puedo lograr esto en tiempo de ejecución. Cómo construir el cliente del servicio en tiempo de ejecución con la URL seleccionada. –

+0

OK, ¿quiere permitir que su cliente agregue referencias de servicio en tiempo de ejecución? ¿Qué va a hacer con ellos? Quiero decir, ciertamente puedes crear un proxy en tiempo de ejecución, pero ¿cómo él o tú estarás llamando a métodos? –

7

Para responder a cómo hacerlo sin tener una referencia de servicio. Echa un vistazo aquí (opcional #a):

Writing your first WCF client

Todavía es necesario algún tipo de referencia (es decir, una referencia a un ensamblado que contiene el contrato/interfaz) pero usted no hace una referencia de servicio.

EDITAR: Aunque lo anterior es posible, no lo recomendaría. El rendimiento no es exactamente bueno cuando tienes que generar proxies como este. Normalmente uso svcutil.exe y creo un ensamblaje que contiene mis clientes y creo una referencia a ese ensamblaje. De esta forma, tienes más opciones para controlar cómo se ven los proxies.

1

También puede hacer uso de la clase WebClient para llamar al servicio WCF sin necesidad de un proxy de servicio. De hecho, puede enviar y recibir cadenas y datos binarios y también simular POST.

Lo uso extensamente para componentes reutilizables donde el desarrollador puede no crear los métodos de proxy necesarios. Una buena comparación de formas de hacer POST está disponible here.

Cuestiones relacionadas