2009-02-03 11 views
2

La question est une spécialisation de:Service Web utilisant l'axe 2: type complexe ou type simple?

OO style parameters vs type parameters

si vous souhaitez définir une opération de service Web? Pour avoir des paramètres beeing passé en types complexes comme celui-ci

public String insertPerson(Person person); 

semble assez cool puisque vous êtes en mesure de modifier la définition de la personne sans changer la définition de l'interface. Mais que se passe-t-il si un autre client WS implémenté en C/C++ (par exemple avec gsoap ou axis2c) utilise cette définition. Serait-ce un problème pour accéder au service Web implémenté en utilisant Axis2 en Java? Peut-être qu'il est plus sûr d'utiliser l'approche paramétrée simple:

public String insertPerson(long id, String name, String personalId); 

Je ne suis pas tout à fait sûr de cela. Qu'est-ce que tu penses?

Fred

Répondre

0

Un bon cadre de services Web sera en mesure de comprendre le type complexe. Certains ajustements peuvent être nécessaires. Axis2 peut y faire face.

Je préfère généralement l'approche paramétrée, surtout si le nombre de paramètres est petit (pas plus de 4). Il a l'avantage que le fichier WSDL et le message SOAP généré sont plus faciles à écrire et à lire. Ceci est très utile pour tester et déboguer.

3

Je préfère fortement la première approche.

Mais sachez que le changement du type de personne change l'interface. L'interface (convention d'appel, ...) d'un Webservice est définie par le WSDL et le schéma XML qu'il inclut (ou références). Si vous modifiez l'un de ces éléments, vous modifiez l'interface de votre service Web.

Si vous le regardez uniquement du point de vue de Java, alors vous devriez le traiter comme si la classe Person (et toute autre classe à laquelle il fait référence!) Fait partie de l'interface du service web! La bonne chose est que vous pouvez faire des changements compatibles avec la classe Person (ou pour être plus précis: le type/élément complexe représenté par la classe Person) sans casser les anciens clients. L'ajout d'un élément ou d'un attribut optionnel est un bon exemple. Les nouveaux clients peuvent l'utiliser et les anciens clients ne le sauront pas, mais ne casseront pas (puisque le serveur n'exerce pas son existence).

Questions connexes