Question

Nous nous lançons dans un nouveau service de niveau intermédiaire qui permettra des systèmes clients internes pour créer et mettre à jour les dossiers de requête et dans certains magasins de données sous-jacentes. Le service regroupera jusqu'à 3 séparés datastores sous-jacentes. Aux fins de cette question suppose:

magasin de données # 1: Base de données XML propriétaire
. Magasin de données # 2: sur l'étagère base de données relationnelle
. stocker les données # 3:. magasin de fichiers plats (fichiers stockés sous forme binaire)

Les clients ne sauront pas (ni soins) qui datastore qu'ils interrogent / udpating. Le nouveau service prendra cette décision. Ma question est la suivante: Si mon API XML ou d'exposer des objets? Par exemple. La nouvelle API aura une méthode d'ajout. En supposant que notre système est un système de stockage de voiture, la méthode d'ajout de l'API peut ressembler à ceci:

AddNewCar( CarObject car )

ou, il pourrait ressembler à ceci:

AddNewCar( string carXml )

Maintenant, même si la 2ème méthode est faiblement typé à l'entrée, le XML sera immédiatement validé par rapport au schéma minimum.

Le nouveau service va être écrit en C # (pas encore décidé sur quelle version, mais probablement 3 / 3,5 avec WCF). Les clients de l'API peuvent être C # / VBA / VB.Net / C ++ / Java).

Les plus de détails s'il vous plaît laissez-moi savoir. Merci


Mise à jour: Notez que l'API sera également édition XML sur un bus de message. Par exemple. quand une nouvelle voiture est ajouté le XML de voiture sera publiée afin que quiconque est intéressé par de nouvelles voitures seront informés.

Était-ce utile?

La solution

Je dirais exposer une API d'objet. Mais pas pour les raisons mentionnées ci-dessus dans un autre poste -. Que d'exposer XML résultant dans un format fixe qui est plus difficile à changer

On peut dire que, une API d'objets métier fortement typés est aussi difficile de changer en XML - à la fois nécessitera une nouvelle compilation et reconstruction. Donc, ce n'est pas la raison pour laquelle vous devez jeter XML.

La raison - IMNSHO - est celle du niveau d'abstraction. Au niveau de l'API, vous parlez en termes de ce que les objets métier ou les services peuvent effectuer quelles actions sur ce que d'autres objets métier. Par conséquent, l'API doit parler en termes d'objets métier.

Comme mentionné dans un autre poste ici déjà, vous pouvez toujours sauvegarder les objets métier avec des représentations XML. Garder les représentations XML de vos objets métier et services à un niveau inférieur d'abstraction que votre API vous fournira toute la souplesse du XML tout en même temps, vous permettant de créer une API de niveau supérieur qui a une bonne sémantique.

Autres conseils

Vous ne devriez pas exposer le XML comme cela résout votre format, ainsi que les futures décisions que vous pourriez rencontrer en ce qui concerne les infrastructures. Je toujours aller la route fortement typé pour vous assurer correctement abstraite votre implémentation loin de l'utilisation.

Si vous prenez la route XML et découvrir, en partie par le développement, que le XML doit changer pour une raison quelconque, il sera beaucoup plus difficile de changer toutes les utilisations de votre API pour corriger ce problème que si vous fortement typé l'API et a caché le détail XML derrière les objets.

Vous devez créer l'API à l'aide d'objets et WCF de levier pour fournir une API XML si nécessaire.

Vous devez créer une API à l'aide d'objets, puis créer une interface de service Web autour de cette API (par exemple, pour Java que vous utilisez java2wsdl sur votre interface, puis wsdl2java pour créer une mise en œuvre de la mise en œuvre côté serveur squelette ou côté client Je suis sûr qu'une méthode équivalente existe dans WCF) que tous les autres systèmes peuvent interroger.

Comme vous avez des clients en plusieurs langues, je pense un service Web est votre meilleur choix, et (en ignorant la mise en œuvre de la logique métier) est à seulement quelques minutes de travail au-dessus de votre API. Vous pouvez distribuer vos fichiers WSDL ou XSD à tous les développeurs de logiciel client qu'ils peuvent ensuite utiliser pour l'interface avec votre système simple et rapide.

Certes, l'approche stongly typée sera plus facile d'un point de vue-développeur de l'utilisateur final qui est ce que je préférerais. Cependant, en fin de compte si tout est converti en Xml dans les coulisses ou vous êtes incertain Wich l'approche de vos clients prendront, je vous recommande vivement vous soutenir à la fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top