Je suis nouveau aux services Web et je suis face à un problème de conception où nous voulons créer un service Web (de préférence SOAP base) qui recevra 2 paramètres:Est-il possible d'avoir plusieurs mappages xsd dans un webservice?
- une chaîne variable (nom du client);
- Données XML.
Il existe actuellement 2 utilisateurs différents de ce service Web, mais leur nombre augmentera. Tous les consommateurs ont des données XSD séparés qu'ils enverraient, par exemple:
Consumer1:
<ConData>
<Customer>
<FirstName>FirName</FirstName>
<LastName>LasName</LastName>
</Customer>
<Acocunt>
<Number>112971</Number>
</Account>
<Order>
<OrderNum>0092123</OrderNum>
</Order>
<ConData>
Consumer2:
<ConData>
<SysData>
<CustomerFirstName>Name</CustomerFirstName>
<CustomerLastName>Name</CustomerLastName>
<AccountNumber>Au1o2n</AccountNumber>
<OrderNum>koo912</OrderNum>
</SysData>
<ConData>
Ce service Web est censé prendre le XML données de ces clients et les stocker dans la base de données en fonction du nom du consommateur. Il n'y a pas de traitement requis de notre part pour valider le XML en tant que tel, nous le prenons simplement et le stockons dans la base de données.
Comme un bon design cependant, je voudrais définir mon service Web avec des paramètres explicites. Le problème est que, puisque leur format de données XML est différent, je ne suis pas en mesure d'utiliser un seul schéma XSD en tant que paramètre dans mon WSDL. Je peux penser à 2 options pour résoudre ce problème:
1. Laissez-les passer les données XML en tant que chaîne dans mon service Web au lieu du paramètre de mappage XSD. Bien que ce soit une approche valide, cela semble être un mauvais design basé sur ce que j'ai lu jusqu'ici sur les forums car il annule la validation et a besoin de beaucoup de marshaling manuel et d'unmarshaling et d'autres problèmes. De plus mon WSDL ne sera pas en mesure de définir à mes clients quel format devrait, etc.
2. Créer 2 services web distincts qui traiteront différents consommateurs avec leur propre de XSD. Cela semble encore moins viable puisque dans le futur si nous ajoutons plus de consommateurs nous devrons ajouter de nouveaux services Web avec le code dupliqué pour la même opération etc.
Je cherchais à voir s'il y a un moyen de définir plusieurs XSD dans un service Web unique WSDL ou peut-être une meilleure façon de résoudre ce problème. Sur une note de côté, je préférerais avoir un service Web basé sur SOAP mais si ce problème est résolu en utilisant un service web RESTful dans un meilleur sens, je peux aussi considérer cela.