Frage

Daher speichert mein Unternehmen viele Daten in einer Foxpro-Datenbank. Um den Leistungseinbruch zu umgehen, der durch die direkte Berührung entsteht, habe ich darüber nachgedacht, alles, was asynchron erledigt werden kann, für ein schnelleres Benutzererlebnis per Messaging zu versenden.Ich fing an zu schauen ActiveMQ Ich weiß aber nicht, wie gut C# damit funktioniert.Ich möchte hören, was ihr alle denkt.

bearbeiten :Es wird eine Webanwendung sein.Alles, was mit diesem Foxpro zu tun hat, ist ziemlich langsam (wahrscheinlich, weil die Person, die es vor 10 Jahren eingerichtet hat, alles völlig durcheinander gebracht hat, einige der Tabellendateien sind unglaublich groß).Wir replizieren Foxpro jede Nacht nach SQL und die meisten unserer Datenlesevorgänge sind in Ordnung, da sie einen Tag alt sind, also konzentrieren wir uns auf die Schreibvorgänge.Außerdem wirkt sich der Schreibvorgang auf einen entscheidenden Teil des Benutzererlebnisses (Kauf) aus. Wir speichern ihn in SQL und senden dann einfach eine Nachricht, damit er in foxpro übernommen werden kann, wenn dies möglich ist.Ich wünschte, wir könnten foxpro einfach loswerden, leider möchte das Unternehmen eine sehr alte Software, die sie gekauft haben und die davon abhängt, nicht loswerden.

War es hilfreich?

Lösung

ActiveMQ funktioniert gut mit C# unter Verwendung der Spring.NET-Integrationen und NMS.Ein Beitrag mit einigen Links, die Ihnen den Einstieg in diese Richtung erleichtern sollen ist hier.Erwägen Sie auch die Verwendung von MSMQ (dem System.Messaging-Namespace) oder einer .NET-basierten asynchronen Messaging-Lösung mit einige Optionen hier.

Andere Tipps

MSMQ (Microsoft Message Queueing) könnte eine gute Wahl sein.Es ist Teil des Betriebssystems und als optionale Komponente vorhanden (kann über „Programme hinzufügen/entfernen“ / „Windows-Komponenten“ installiert werden), was bedeutet, dass es kostenlos ist (vorausgesetzt, Sie haben bereits für Windows bezahlt).MSMQ bietet Win32/COM und System.Messaging APIs.Modernere Windows Communication Foundation (auch bekannt als Indigo) Kanäle in der Warteschlange Verwenden Sie auch MSMQ.Beachten Sie, dass MSMQ auf Home-SKUs von Windows (XP Home und Vista Home) nicht unterstützt wird.

Es ist erwähnenswert, dass die ActiveMQ Open-Source-Projekt definiert a C#-API für Nachrichten mit dem Namen NMS Dadurch können Sie mit einer einzigen C#-/.Net-API entwickeln, die dann verschiedene Messaging-Backends verwenden kann, z

Vielleicht möchten Sie sich MSMQ ansehen.Es kann von .NET und VFP verwendet werden, Sie müssen es jedoch neu schreiben, um sie verwenden zu können.Hier ist ein Artikel, der Ihnen erklärt, wie Sie MSMQ von VFP verwenden. http://msdn.microsoft.com/en-us/library/ms917361.aspx

Tut mir leid, wenn das nicht das ist, wonach Sie fragen ...Haben Sie über eine Art Cache hinter den Kulissen nachgedacht, der ein bisschen wie das „Bucket-System“ funktioniert, wenn asynchrone Sockets in C/C++ mit Winsock verwendet werden?Im Wesentlichen funktioniert es, indem es Anfragen akzeptiert und eine sofortige Antwort an die Web-App zurücksendet. Wenn Ihr Datensatz schließlich gefunden wird, aktualisiert er ihn in der App über AJAX oder eine andere Technologie Ihrer Wahl.Da ich kein C#-Programmierer bin, kann ich kein konkretes Beispiel liefern.Hoffe das hilft!

Verwendet die Fox-App .CDX-Indizes?In diesem Fall können Sie möglicherweise die Leistung verbessern, indem Sie Indizes hinzufügen, ohne den Programmcode ändern zu müssen.Wenn jedoch .IDX-Indizes verwendet werden, müsste die Änderung in der eigentlichen App vorgenommen werden.

Da das Problem bei Schreibvorgängen liegt, würde ich eher darauf achten, alle nicht benötigten Indizes in den Tabellen zu >entfernen<.Wie es in RDBMS üblich ist, verlangsamt jeder Index in einer FoxPro-Tabelle einen Schreibvorgang, da die Indizes aktualisiert werden müssen, und da Sie nicht direkt aus der Tabelle lesen (oder vermutlich direkt abfragen), sollten Sie nicht sehr viele Indizes benötigen .Möglicherweise möchten Sie auch auf Trigger oder Feldregeln in den Tabellen achten, da diese möglicherweise den Schreibvorgang verlangsamen.Stellen Sie jedoch sicher, dass Ihre referenzielle Integrität weiterhin erhalten bleibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top