En passant XML en tant que paramètre à un service web
Dans un réponse à une autre question, il a été mentionné que l'adoption de XML comme un paramètre de chaîne à un service web est une mauvaise pratique. Quelle est la raison?
OriginalL'auteur Alex Angas | 2010-04-08
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé de nombreux web services XML simples valeurs d'un paramètre ou le retour de la sortie, donc je ne sais pas exactement pourquoi quelqu'un serait il considère être une mauvaise pratique, mais je pourrais décrire quelques-unes des faiblesses.
Le principal inconvénient que je vois à l'aide de XML arbitraire comme un paramètre d'entrée n'est que par lui-même, il ne fournit pas de typage fort. Si vous utilisez un SAVON à base de services web avec un fichier WSDL qui décrit le service web d'entrée et de sortie des variables puis à l'aide de base de XML comme une variable ne donner à l'utilisateur une très grande quantité d'information. C'est particulièrement le cas si vous avez une base de la chaîne de valeur d'entrée pour lesquelles vous assumez l'utilisateur d'entrer des données XML. Une meilleure approche est d'utiliser un XMLElement ou XMLNode type, au lieu d'un standard de la chaîne, de sorte qu'il y a au moins un niveau de base de la vérification de type pour XML valide dans le service web. L'idée avec SOAP et WSDL sont cependant à créer fortement typé paramètres, de sorte que les objets peuvent être transmis en arrière à travers le fil entre les applications. En gros, vous pouvez créer un objet et de l'utiliser comme base pour votre entrée ou de sortie de valeurs et de SAVON se charge de la création d'un schéma pour la sérialisation et la désérialisation pour vous automatiquement.
Le problème est que l'utilisation des types de données complexes peuvent augmenter considérablement la complexité requis pour l'appel du service web. Web services sont offerts dans une variété de saveurs de simples RESTE services d'un réseau complexe de WS - * protocoles pour fortement typé messages. À l'aide de De simples données XML avec aucun schéma serait vraiment une mauvaise idée si vous êtes à la construction d'une Entreprise pour les Entreprises de service web basé sur WS - *, mais si vous êtes à la création d'un simple service REST puis VARICELLE peut s'adapter à vos besoins parfaitement.
OriginalL'auteur Greg Bray
Cette question est au moins en partie, par un commentaire de la mine sur les paramètres de chaîne de caractères contenant le XML est une mauvaise pratique dans le web design de service. Voici pourquoi:
Si le service web de l'auteur voulait que son service à accepter XML, avec ou sans schéma, alors qu'il devrait avoir défini le paramètre de type de Schéma XML
<xs:any/>
. Qui permet à l'arbitraire d'un élément XML. Il est possible de restreindre le permis XML à l'aide de<xs:any namespace="xml namespace" processContents="strict" />
. Cela permettra de limiter le XML à partir de l'espace de noms particulier, et permettra de valider le XML à l'encontre des schémas. Le destinataire de ce message sera en mesure de le traiter comme un pur XML, ou peut-être comme le typeobject
ouXmlElement
ou de la plate-forme équivalent.En revanche, si XML est passé comme une chaîne de caractères, alors le bénéficiaire doit prendre des mesures pour le retransformer en XML. Cela suppose que XML a été encodés correctement dans la chaîne.
Du passage d'une chaîne perd également vous les avantages de XML. Par exemple, l'encodage XML ne peut pas être facilement transformé en XML outils, tels que XSLT.
OriginalL'auteur John Saunders
Sa mauvaise pratique, car elle ouvre votre serveur web afin de potentiel d'injection ou XSS ou URI empoisonnement types d'attaques. La plupart des serveurs web ne sont jamais mis à jour ou patché, même lorsqu'ils sont identifiés comme vulnérables à des attaques.
OriginalL'auteur