Question

Ainsi, mon entreprise stocke beaucoup de données dans une base de données Foxpro et, en essayant de contourner les problèmes de performances liés au contact direct, je pensais envoyer un message à tout ce qui peut être fait de manière asynchrone pour une expérience utilisateur plus rapide.J'ai commencé à regarder ActiveMQ mais je ne sais pas dans quelle mesure C# s'y adaptera.Je veux entendre ce que vous pensez tous.

modifier :Ce sera une application Web.Tout ce qui touche ce foxpro est un peu lent (probablement parce que la personne qui l'a configuré il y a 10 ans a tout gâché, certains fichiers de table sont incroyablement volumineux).Nous répliquons le foxpro sur SQL tous les soirs et la plupart de nos lectures de données sont correctes depuis un jour, nous nous concentrons donc sur les écritures.De plus, l'écriture affecte une partie critique de l'expérience utilisateur (achat), nous la stockons dans SQL, puis nous envoyons simplement un message pour qu'elle soit mise dans Foxpro quand cela est possible.J'aimerais que nous puissions simplement nous débarrasser de Foxpro, malheureusement, la société ne veut pas se débarrasser d'un très vieux logiciel qu'elle a acheté et qui en dépend.

Était-ce utile?

La solution

ActiveMQ fonctionne bien avec C# en utilisant les intégrations Spring.NET et NMS.Un article avec quelques liens pour vous aider à démarrer dans cette direction est là.Pensez également à utiliser MSMQ (l'espace de noms System.Messaging) ou une solution de messagerie asynchrone basée sur .NET, avec quelques options ici.

Autres conseils

MSMQ (Microsoft Message Queueing) peut être un excellent choix.Il fait partie du système d'exploitation et est présenté comme un composant optionnel (peut être installé via Ajout/Suppression de programmes/composants Windows), ce qui signifie qu'il est gratuit (à condition que vous ayez déjà payé pour Windows, bien sûr).MSMQ fournit Win32/COM et Système.Messagerie Apis.Windows Communication Foundation plus moderne (alias Indigo) canaux en file d'attente utilisez également MSMQ.Notez que MSMQ n'est pas pris en charge sur les SKU Home de Windows (XP Home et Vista Home).

Il convient de mentionner que le Projet open source ActiveMQ définit un API C# pour la messagerie appelée NMS qui vous permet de développer sur une seule API C#/.Net qui peut ensuite utiliser divers back-ends de messagerie tels que

  • ActiveMQ
  • MSMQ
  • Le SME de TibCo
  • n'importe quel fournisseur STOMP
  • n'importe quel fournisseur JMS via StompConnect

Vous voudrez peut-être consulter MSMQ.Il peut être utilisé par .NET et VFP, mais vous devrez le réécrire pour les utiliser.Voici un article qui vous explique comment utiliser MSMQ depuis VFP. http://msdn.microsoft.com/en-us/library/ms917361.aspx

Désolé si ce n'est pas ce que vous demandez...Avez-vous envisagé une sorte de cache en coulisse qui agit un peu comme le « système de compartiments » lors de l'utilisation de sockets asynchrones en c/c++ à l'aide de Winsock ?Fondamentalement, il fonctionne en acceptant les demandes et renvoie une réponse immédiate à l'application Web, et lorsqu'il parvient enfin à trouver votre dossier, il le met à jour sur l'application via AJAX ou toute autre technologie de votre choix.Comme je ne suis pas un programmeur C#, je ne peux donner aucun exemple spécifique.J'espère que cela t'aides!

L'application Fox utilise-t-elle des index .CDX ?Si tel est le cas, vous pourrez peut-être améliorer les performances en ajoutant des index sans avoir à modifier le code du programme.S'il utilise des index .IDX, la modification devra être effectuée dans l'application réelle.

Comme le problème concerne les écritures, je chercherais davantage à >supprimer< tous les index inutiles sur les tables.Comme cela est courant dans les SGBDR, chaque index d'une table FoxPro ralentit une opération d'écriture car les index doivent être mis à jour, et comme vous ne lisez pas directement (ou probablement n'interrogez pas directement) la table, vous ne devriez pas avoir besoin de beaucoup d'index. .Vous souhaiterez peut-être également examiner les déclencheurs ou les règles de champ sur les tables, car ils peuvent ralentir l'opération d'écriture.Assurez-vous cependant que votre intégrité référentielle est toujours préservée.

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