Domanda

Quindi la mia azienda memorizza molti dati in un database foxpro e cercando di aggirare il problema delle prestazioni derivante dal toccarlo direttamente, stavo pensando di inviare messaggi a tutto ciò che può essere fatto in modo asincrono per un'esperienza utente più scattante.Ho iniziato a guardare ActiveMQ ma non so quanto bene C# si collegherà ad esso.Voglio sentire cosa ne pensate tutti voi.

modificare :Sarà un'applicazione web.Tutto ciò che tocca questo foxpro è piuttosto lento (probabilmente perché la persona che lo ha configurato 10 anni fa ha incasinato tutto, alcuni file della tabella sono incredibilmente grandi).Replichiamo FoxPro su SQL ogni notte e la maggior parte delle nostre letture di dati vanno bene essendo vecchie di un giorno, quindi ci concentriamo sulle scritture.inoltre la scrittura influisce su una parte critica dell'esperienza utente (acquisto), la memorizziamo in SQL e quindi inviamo semplicemente un messaggio per inserirla in FoxPro quando possibile.Vorrei che potessimo semplicemente sbarazzarci di foxpro, sfortunatamente l'azienda non vuole sbarazzarsi di un software molto vecchio che ha acquistato e che dipende da esso.

È stato utile?

Soluzione

ActiveMQ funziona bene con C# utilizzando le integrazioni Spring.NET e NMS.Un post con alcuni link per iniziare in quella direzione è qui.Considera anche l'utilizzo di MSMQ (lo spazio dei nomi System.Messaging) o di una soluzione di messaggistica asincrona basata su .NET, con alcune opzioni qui.

Altri suggerimenti

MSMQ (Microsoft Message Queueing) può essere un'ottima scelta.Fa parte del sistema operativo ed è presente come componente opzionale (può essere installato tramite Aggiungi/Rimuovi programmi/Componenti di Windows), il che significa che è gratuito (a condizione che tu abbia già pagato per Windows, ovviamente).MSMQ fornisce Win32/COM e System.Messaging API.Windows Communication Foundation più moderno (noto anche come Indigo) canali in coda utilizzare anche MSMQ.Tieni presente che MSMQ non è supportato sugli SKU Home di Windows (XP Home e Vista Home)

Vale la pena ricordare che il Progetto open source ActiveMQ definisce a API C# per la messaggistica denominata NMS che ti consente di sviluppare con una singola API C#/.Net che può quindi utilizzare vari back-end di messaggistica come

  • ActiveMQ
  • MSMQ
  • L'EMS di TibCo
  • qualsiasi fornitore STOMP
  • qualsiasi provider JMS tramite StompConnect

Potresti voler dare un'occhiata a MSMQ.Può essere utilizzato da .NET e VFP, ma sarà necessario riscriverlo per utilizzarli.Ecco un articolo che spiega come utilizzare MSMQ da VFP. http://msdn.microsoft.com/en-us/library/ms917361.aspx

Scusa se non è quello che stai chiedendo...Hai considerato una sorta di cache dietro le quinte che agisce un po' come il "sistema bucket" quando si utilizzano socket asincroni in c/c++ utilizzando Winsock?Fondamentalmente, funziona accettando le richieste e invia una risposta immediata all'app Web e, quando finalmente riesce a trovare il tuo record, lo aggiorna sull'app tramite AJAX o qualsiasi altra tecnologia di tua scelta.Poiché non sono un programmatore C# non posso fornire alcun esempio specifico.Spero che questo ti aiuti!

L'app Fox utilizza indici .CDX?In tal caso, potresti essere in grado di migliorare le prestazioni aggiungendo indici senza dover modificare il codice del programma.Se utilizza gli indici .IDX, tuttavia, la modifica dovrebbe essere apportata nell'app vera e propria.

Poiché il problema riguarda le scritture, cercherei di più di > rimuovere < eventuali indici non necessari sulle tabelle.Come è comune in RDBMS, ogni indice su una tabella FoxPro rallenta un'operazione di scrittura poiché gli indici devono essere aggiornati e poiché non stai leggendo direttamente (o presumibilmente interrogando direttamente) la tabella non dovresti aver bisogno di molti indici .Potresti anche voler esaminare eventuali trigger o regole di campo sulle tabelle poiché potrebbero rallentare l'operazione di scrittura.Assicurati però che la tua integrità referenziale sia ancora preservata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top