2009-07-28 15 views
13

Desidero accedere a tutti i metodi esposti nel servizio tramite l'URL. se supponiamo che l'URL sarà:Come utilizzare il servizio Web WCF tramite URL in fase di esecuzione?

http://localhost/MyService/MyService.svc 

Come posso accedere metodi:

  1. se supponiamo ho un ServiceReference
  2. e cosa devo fare se non hanno il servizio di riferimento.
+0

Si prega di chiarire la vostra domanda. Non posso dire cosa vuoi realizzare. Vuoi essere in grado di chiamare i metodi, o vuoi un elenco di loro? –

+0

John Desidero accedere ai metodi. A titolo informativo, desidero utilizzare il servizio Web tramite URL. –

+0

E perché non utilizzare il riferimento del servizio? –

risposta

18

Per utilizzare un servizio WCF, è necessario creare un proxy client WCF.

In Visual Studio, fare clic con il tasto destro del mouse sul progetto e selezionare "Aggiungi riferimento servizio" dal menu di scelta rapida. Digitare l'URL a cui si desidera connettersi e, se tale servizio è in esecuzione, è necessario ottenere un file proxy client generato per l'utente.

Questo file in genere contiene una classe denominata MyService Client - è possibile creare un'istanza di tale classe e si dovrebbero visualizzare tutti i metodi disponibili su quella classe di client a propria disposizione.

Se non si desidera aggiungere un riferimento al servizio in Visual Studio, è possibile ottenere lo stesso risultato eseguendo lo strumento da riga di comando svcutil.exe - questo genererà anche tutti i file necessari per la classe del proxy del client.

Marc

UPDATE:
se si desidera inizializzare un proxy client in fase di esecuzione, si può sicuramente farlo - è necessario decidere quale legame di utilizzare (protocollo di trasporto), e quale indirizzo per connettersi, e allora si può fare:

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

MyServiceClient serviceClient = new MyServiceClient(binding, address); 

Ma anche in questo caso, è necessario avere importato e ha creato il client proxy prima, utilizzando gli strumenti "Aggiungi riferimento al servizio", o Svcutil.exe.

+0

Ciao Marc, Grazie per la tua risposta. Sto facendo lo stesso e in grado di accedere. Ma il mio requisito è quello di fornire la stessa interfaccia (quella che otteniamo quando clicchiamo con il tasto destro del mouse per aggiungere il riferimento al servizio) al cliente in cui può visualizzare gli URL e il riferimento al servizio verrà aggiornato di conseguenza con l'url selezionato. –

+0

Come posso ottenerlo in fase di esecuzione. Come costruire il serviceclient in runtime con l'URL selezionato. –

+0

OK, quindi vuoi consentire al client di aggiungere riferimenti al servizio in fase di runtime? Che cosa ha intenzione di fare con loro? Voglio dire - puoi certamente creare un proxy in fase di runtime - ma come chiamerai lui o te? –

7

Per rispondere a come farlo senza avere un riferimento di servizio. Date un'occhiata qui (opzionale #A):

Writing your first WCF client

Hai ancora bisogno di qualche riferimento (vale a dire un riferimento a un assembly contenente il contratto/interfaccia), ma non si fanno un riferimento al servizio.

MODIFICA: Anche se quanto sopra è possibile, non lo consiglierei. Le prestazioni non sono esattamente grandi quando devi generare i proxy come questo. Di solito uso svcutil.exe e creo un assembly contenente i miei clienti e creo un riferimento a quell'assembly. In questo modo hai più opzioni per controllare come appaiono i proxy.

1

È inoltre possibile utilizzare la classe WebClient per chiamare il servizio WCF senza richiedere un proxy di servizio. In modo efficace è possibile inviare e ricevere dati di stringhe e binari e anche simulare i POST.

Lo uso estesamente per componenti riutilizzabili in cui lo sviluppatore non può mai creare i metodi proxy necessari. Un buon confronto dei modi per fare POST è disponibile here.

Problemi correlati