Limitazioni
copia linkLimitazioni attualmente presenti
Nell'utilizzo dei Web Services sono presenti delle limitazioni, siano essi creati con Instant Developer Foundation che creati da terze parti. Tali limitazioni riguardano il tipo di dati che è possibile scambiare tra Web Service e applicazione client.
Web Services creati con Instant Developer Foundation - Limitazioni
Ad oggi non è ancora possibile passare un oggetto ad un metodo pubblico di un Web Service sviluppato con Instant Developer Foundation. E' comunque possibile superare questa limitazione passando l'oggetto serializzato come stringa (o ancora meglio in XML) e deserializzandolo all'interno del Web Service. Per fare questo occorre:
- Creare una funzione nell'applicazione client che passato l'oggetto restituisca l'oggetto come stringa (se si utilizza l'XML è possibile utilizzare le librerie XMLDocument e XMLNode disponibili nei progetti Instant Developer Foundation);
- creare una procedura all'interno del Web Service (privata) che data una stringa sia in grado di restituire un oggetto del tipo che si vuole scambiare con l'applicazione client. Anche per questa procedura è possibile utilizzare le librerie XMLDocument e XMLNode se l'oggetto viene trasferito in XML.
Web Services creati con Instant Developer Foundation - Tipi complessi
In Web Services creati con Instant Developer Foundation è possibile restituire, come risultato di un metodo, un oggetto Recordset. Per fare questo occorre:
- Aggiungere una funzione il cui tipo di ritorno sia Recordset
- Includere nella procedura almeno una riga di codice di tipo Select Into Recordset non collegata ad alcuna variabile.

In figura sono mostrate le due procedure che si scambiano un recordset. La procedura in alto (contenuta nell'applicazione client) chiama il metodo RestituisceRS del Web Service e pone il risultato della chiamata nella variabile RS. Il metodo RestituisceRS (contenuto nella classe pubblica MainClass del Web Service) è mostrato in basso a destra ed esegue la query restituendo il recordset.
Web Services creati da terze parti - Limitazioni
Una prima limitazione riguarda Web Services che abbiano il NameSpace di uno o più metodi diversi dal NameSpace globale.
La maggior parte dei Web Services testati non presenta questa possibilità ma, poiché la specifica WSDL lo prevede, può capitare di trovare un Web Service così definito.
Un'altra limitazione riguarda il tipo di dati ad supportato dalla versione corrente Instant Developer Foundation (6.5.2680).
I tipi long, float, short, byte, timeInstant (sostituito dal tipo di dato dateTime in Gennaio 2001) e QName non sono supportati. Non è supportato il tipo di dato hexBinary. In entrambi i casi Instant Developer Foundation importa comunque la funzione ma poi se si tenta di utilizzarla il WebService risponde con errore alla richiesta dell'applicazione client (questo perché Instant Developer Foundation mappa il tipo di dato long con int e il tipo di dato float con double, ma SOAP richiede che il tipo di dato sia esattamente uguale a quello richiesto).
Metodi che restituiscono array di oggetti complessi (oggetti che contengono altri oggetti) non sono supportati.
Un'ulteriore limitazione riguarda l'importazione di WSDL che utilizzano la direttiva Import ovvero che richiedono, per portare a termine la procedura di creazione della libreria di interfaccia all'interno del progetto Instant Developer, il caricamento di ulteriori files WSDL.
Web Services creati da terze parti - Tipi complessi
Ci sono due tipi di dato complessi che sono comunque supportati da Instant Developer Foundation: base64Binary e array di oggetti semplici (oggetti che contengono solo tipi supportati).
Quando Instant Developer Foundation importa un WSDL che definisce un metodo che torna un array di bytes (identificato dal tipo di dato base64Binary), crea una funzione di interfaccia che restituisce una stringa. Quando, da visual code, viene chiamata la funzione del Web Service, Instant Developer Foundation effettua la chiamata al Web Service e salva l'array di bytes ottenuto all'interno di un file binario. Quindi restituisce il nome del file creato e non direttamente l'array di bytes.
Quando Instant Developer Foundation importa un WSDL che definisce un metodo che restituisce un array di oggetti semplici (che contengono solo un insieme di proprietà di tipi supportati) crea una funzione di interfaccia che restituisce un Recordset. Quando, da visual code, viene chiamata la funzione del Web Service, Instant Developer Foundation effettua la chiamata al Web Service, crea un nuovo oggetto di tipo Recordset e per ogni oggetto dell'array ottenuto dal Web Service, aggiunge un nuovo record al recordset che viene poi restituito alla chiamata visual code. Ogni colonna del recordset corrisponde ad una delle proprietà dell'oggetto facente parte dell'array restituito dalla chiamata al Web Service. Ogni riga del recordset, quindi, contiene tutti i valori delle proprietà dell'i-esimo oggetto dell'array ottenuto dal Web Service. Il numero di records creati all'interno del Recordset è uguale al numero di oggetti contenuti nell'array restituito dal Web Service.
Ultima modifica: 14/10/2021 / Validità: da 6.5.2680