Comment faire pour garantir qu'un & # 8220; message & # 8221; est envoyé et stocké une fois et une seule fois?

StackOverflow https://stackoverflow.com/questions/1224382

  •  11-07-2019
  •  | 
  •  

Question

Je travaille à la conception d'un système EDI pour deux sociétés: la société A et la société B. La société A existe déjà en tant que petite entreprise de fabrication et la société B est une nouvelle société constituée autour d'un produit spécifique avec la participation du propriétaire. de la société A. La société A détiendra les droits exclusifs de production du produit pour la société B.

Je suis responsable de tout ce qui concerne l'informatique et le développement chez ces deux sociétés. Je dois concevoir un système EDI pour la communication des commandes et autres informations de la société B à la société A, et inversement (pour les confirmations et les mises à jour de statut, etc.).

Ce type de contenu est relativement nouveau pour moi. Je souhaite simplement savoir comment envoyer une nouvelle commande de la société B à la société A et garantir qu'elle y parviendra, qu'elle sera stockée et qu'elle ne sera pas envoyée. plus d'une fois.

Je pense que je vais probablement le faire avec les services Web. Dois-je regarder dans les services WCF ou rester avec les services Web ASP.Net?

Je suppose que je vais envoyer un ID unique avec chaque commande afin que le système de la société A sache ne pas le sauvegarder deux fois en cas de confusion, mais comment puis-je savoir avec certitude que la société A a obtenu les informations?

Tous les autres conseils ou suggestions sont les bienvenus.

Était-ce utile?

La solution

Voir Microsoft: les services Web ASMX sont une «technologie Legacy». apprendre pourquoi ne pas utiliser les services Web ASMX.

Les commandes n'ont-elles déjà une identification unique?

Quoi qu’il en soit, le service de la société A voudra s’assurer que la commande est enregistrée de manière sécurisée (peut-être dans une base de données), et alors seulement le "Envoyer une commande" opération terminée.

À la société A, je créerais un service de traitement des commandes. Jusqu'à présent, une seule méthode serait nécessaire: AcceptOrder. Cela accepterait toutes les informations nécessaires au traitement d'une commande. Cette opération enregistre d’abord la commande dans une base de données et, une fois les données stockées en toute sécurité, renvoie une sorte de code de confirmation.

Une tentative d'envoi à nouveau du même ordre échouerait, car vous conserveriez une clé unique sur l'identificateur de commande unique de la société B.

Nous allons faire confiance à notre base de données pour qu'une fois que nous sachions que les données ont été validées, vous pouvez répondre en toute sécurité "nous l'avons!"

D'autres technologies pourraient également être utilisées. Une file d'attente transactionnelle, par exemple, à l'aide de MSMQ. Cela aurait le même avantage qu’une fois qu’il dit avoir les données, vous pouvez être sûr qu’il les a.

Autres conseils

Envoyez un ID unique avec l'appel du service Web et demandez au service Web de renvoyer un code de confirmation et un statut de commande uniques. Cela devrait vous couvrir. Si vous le souhaitez, vous pouvez ajouter une méthode d'état des requêtes dans les services Web pour vous permettre de savoir si une commande a déjà été envoyée.

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