Servizio WCF che accetta file XML

2

Ho un requisito del cliente in cui ho bisogno di esporre un servizio web che prende XML. Il cliente consumerà il mio servizio Web e invierà XML.

Questo servizio web deve essere asincrono.

Potresti suggerire un buon approccio comprovato? con vantaggio / svantaggio

    
posta vinsha 25.07.2011 - 18:47
fonte

2 risposte

2

Sei sicuro che il payload effettivo sia XML o che il formato di serializzazione sia XML?

Normalmente, quando le persone usano i servizi WCF, definiscono un oggetto (in C #, ad esempio) per passare attraverso il filo. Uno stile valido consiste nel passare un singolo oggetto C # come parametro al servizio (FooRequest) e fare in modo che il servizio restituisca un singolo oggetto (FooResponse). Questi oggetti conterranno tutti i dati che è necessario spostare. Naturalmente, possono fare riferimento ad altri oggetti, ecc. Non si vuole passare sopra strutture dati specifiche di .NET (come un oggetto dizionario o un DataSet); idealmente passerai oggetti generici che hanno senso in qualsiasi piattaforma.

Dovrai assicurarti che i tuoi oggetti siano serializzabili, ma di solito non è difficile.

Si dà il caso che WCF scelga di serializzarlo in XML mentre viaggia attraverso il filo, ma non è necessario farlo esplicitamente. Non devi necessariamente nemmeno saperlo. Ci sono anche altri formati possibili, come JSON.

Esegui praticamente qualsiasi tutorial su WCF (ad esempio questo ) per vedere cosa intendo Concentrati su interfacce pulite, logica chiara, buoni nomi - non sul formato wire. Puoi leggere i principi SOA .

[modifica] Per quanto riguarda ASync: se si importa il WSDL con Visual Studio, verrà generato un proxy sul lato client. Questo è il modo in cui accedi al servizio dal codice cliente. Ciò includerà i metodi che consentono di chiamare il servizio in modo asincrono. Vedi il link tutoriale di cui sopra.

Anche se per caso il tuo requisito è quello di includere un codice XML arbitrario, puoi comunque utilizzare questo approccio. È sufficiente posizionare l'XML come stringa in un membro stringa negli oggetti richiesta / risposta.

Buona fortuna! -Bill

    
risposta data 19.02.2012 - 04:27
fonte
0

Dovrai utilizzare un oggetto XMLDocument come parametro per il tuo contratto operativo. Nient'altro deve essere fatto in modo speciale.

Puoi prendere qualsiasi esempio standard per scrivere un servizio. Utilizzare la classe XMLDocument come parametro del contratto operativo. Questo servizio può essere consumato in modo asincrono utilizzando metodi standard. È possibile fare riferimento a Procedura: chiamare le operazioni di servizio WCF in modo asincrono

    
risposta data 25.07.2011 - 20:28
fonte

Leggi altre domande sui tag