Question

Nous construisons donc un système de points de vente personnalisé hébergé localement (sur le site du client), rien d’extraordinaire. C'est tout .NET, C # et SQL Server.

L’une des conditions est que le système autorise également les commandes sur Internet. Pour diverses raisons (fiabilité / vitesse de connexion, sauvegardes, stabilité, maintenance, etc.), le portail Web sera hébergé hors site, chez certains hébergeurs Web standard.

Les détails du produit se trouvent dans la base de données locale. Par conséquent, nous devons d'une manière ou d'une autre synchroniser la base de données de site Web externe avec ces données. De toute évidence, il doit être sécurisé et ne pas utiliser beaucoup de bande passante.

Nous avons mis au point une solution qui minimise l'exposition de la BD locale au monde extérieur:

  • l'application Web ne peut accéder à rien à partir de l'application locale.
  • les données ne peuvent être déplacées que par un push envoyé de l'application locale vers l'application Web.
  • la seule chose que l’application Web puisse faire est d’envoyer une notification à la base de données locale qu’une nouvelle commande a été prise. L’application locale se connecte ensuite à l’application externe et extrait les détails de la commande.

Nous pensions donc à une conception comme celle-ci, utilisant des services Web et définissant simplement des actions de base sur l'application Web, comme addProduct (id, blah blah blah)

Mais ensuite, nous devons écrire des routines pour synchroniser les éléments, comme si un produit était supprimé de l'application locale, mais que l'application externe était temporairement indisponible, etc., etc.

S'agit-il d'une approche raisonnable ou existe-t-il un meilleur moyen?

Était-ce utile?

La solution

C’est un cas où la SOA me semble applicable. J'examinerais la possibilité d'exposer certaines fonctionnalités de l'application POS utilisant WCF. Cela comporte au moins les éléments suivants:

  • vous pouvez réutiliser les fonctionnalités du système de point de vente au lieu d'en dupliquer certaines parties sur le site Web
  • En utilisant par exemple une liaison MSMQ, vous pouvez fonctionner dans des situations déconnectées
  • WCF dispose d’excellents mécanismes de sécurité, d’un support transactionnel, etc.

De cette façon, vous ajouteriez une valeur au système de point de vente au lieu de créer un couplage unique entre le point de vente et le site Web.

Pour en savoir plus sur la WCF, je vous recommande de programmer des services WCF de Juval. Lowy

Autres conseils

Ce n'est pas vraiment une réponse à votre question directement ... Je voudrais essayer d'établir un tunnel VPN entre les deux sites, et si vous ne le pouvez pas, essayez d'utiliser un tunnel SSH?

Mis à part le fait que la sécurité est simplement bonne, beaucoup d’options s’offrent une fois que le VPN est au rendez-vous, selon mon expérience, car ce qui aurait déjà été beaucoup moins sûr pour être pris en compte est une réflexion sur le travail.

@olle Cela semble prometteur. L'un des problèmes est que la connexion au portail en ligne noir et blanc et à l'application locale n'est pas fiable. Cependant, nous souhaitons toujours pouvoir prendre des commandes lorsque le lien est en panne. Je pense donc que nous allons utiliser WCF dans l'application Web pour lire les données du serveur et les mettre en cache dans des tables locales. L'application Web demandera des données via une couche intermédiaire, qui sert le contenu hors des tables mises en cache si l'appel WCF ne retourne pas dans un court délai. Si le retour est correct, le cache sera effacé et remplacé par les résultats. Cela ressemble à un plan?

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