Come passare una quantità variabile di parametri al servizio web
-
09-06-2019 - |
Domanda
Stiamo cercando di creare un servizio web a cui prevediamo di trasmettergli un numero variabile di variabili.
Può essere fatto?
Fondamentalmente invece di passare tutti i parametri possibili, desideriamo passare solo i valori impostati e utilizzare i valori predefiniti impostati nel servizio web.
Ecco un esempio dell'XML che stiamo cercando di inviare, invieremo una quantità sconosciuta di funzioni a seconda del rendimento necessario.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WebMethod xmlns="http://tempuri.org/">
<domains>
<function1>
<title>Some Title</title>
<type>25</type>
</function1>
<function2 />
<function3>
<param>13</param>
</function3>
</domains>
</WebMethod>
</soap:Body>
</soap:Envelope>
Funzionerà o dovremmo agire in modo diverso?
Soluzione
Vorrei passare un documento XML invece di eseguire funzioni concreate per questo.
Il servizio web nel tuo esempio perde: il consumatore deve sapere troppo su questa interfaccia e sull'implementazione del servizio web internamente.
Documento XML e quindi collegarlo con un XSD.In questo modo puoi preconvalidare l'input nel servizio web.
Dai un'occhiata a questi
Sviluppatore IBM Forum ASP.NET
Consiglierei anche di usarlo per testare i servizi web ed è gratuitoWSStudio
Altri suggerimenti
Puoi semplicemente passare un array di lunghezza variabile come parametro.
Se non ti piace l'idea di un Array (questa non è la risposta di Konrad - potresti avere tipi di parametri diversi) puoi passare oggetti complessi (ad es.oggetti che hai realizzato tu stesso)..Lo svantaggio è che non puoi testare utilizzando la pagina ASMX, ma dovresti fare tutto nel codice (il che non è proprio una brutta cosa, soprattutto se ci sei abituato).
Sono d'accordo con littlegeek.Non rendere il tuo servizio web un metodo difficile.Rendilo un punto finale di ricezione da ricevere messaggi.In particolare, un messaggio di comando.