Neuigkeiten

FoxSQL: AccountView SQL beibringen, ohne ODBC zum Hausherrn zu machen

FoxSQL ist eine TCP/IP-SQL-Brücke für Daten aus AccountView und Visual FoxPro. C#-Anwendungen arbeiten mit vertrauten Datenbankbegriffen, während die FoxPro-Engine weiterhin ihre eigentliche Aufgabe übernimmt.

FoxSQL: AccountView SQL beibringen, ohne ODBC zum Hausherrn zu machen

Die Idee begann mit einer einfachen, aber gefährlichen Frage: Können wir AccountView-Daten wie eine normale Datenbankverbindung von C# fühlen lassen? Nicht "Exportieren Sie einen CSV und beten. " Nicht "Installieren Sie einen anderen generischen Anbieter und tun Sie so, als wäre 1998 in Ordnung". Eine echte Client-API: Öffnen Sie eine Verbindung, senden Sie SQL, binden Parameter, empfangen Sie Zeilen, Seite durch große Ergebnisse und überprüfen Sie Diagnostik, wenn die Maschine beginnt zu schwitzen.

Diese Frage ist wichtig, weil viele Geschäftssysteme voller wertvoller FoxPro-Daten sind, die das Unternehmen immer noch gut betreiben, während die Software um es herum zu Web-Dashboards, mobilen Bildschirmen, APIs, Diensten, Warteschlangen und Entwicklern übergegangen ist, die nervös werden, wenn eine Produktionsintegration von einem kartierten Laufwerk und guten Vibes abhängt.

Die erste Entscheidung war die wichtigste: FoxSQL versucht nicht, eine neue FoxPro zu werden. Es implementiert nicht wieder DBF, CDX, FPT, Verriegelung, Pufferung oder die vielen kleinen Regeln, die in AccountView leben. Stattdessen hält der Dienst Visual FoxPro im Ausführungsweg. FoxSQL bietet die moderne Brücke; Fox behält Eigentum an dem Datenverhalten. Das ist weniger glamourös als die Erfindung einer Datenbank-Engine, aber dramatisch weniger wahrscheinlich, jemandes Buchhaltungstag zu ruinieren.

Was FoxSQL heute tun kann

ADO.NET-Stil C#-ZugriffEntwickler verwenden FoxSqlConnection, FoxSqlCommand, FoxSqlDataAdapterund FoxSqlCursorDas bedeutet, es fühlt sich an wie eine Datenbank Arbeit anstelle einer archäologischen Genehmigung.
SQL über ein benutzerdefiniertes TCP-ProtokollDer Service spricht ein kleines Rahmenprotokoll über TCP, mit JSON Steuerungsnutzlasten und binären Rowset-Frame, bei denen Leistung wichtig ist. REST wurde höflich aufgefordert, außerhalb des heißen Weges zu warten.
SELECT, Paging, Parameter und kontrollierte SchriftenFoxSQL unterstützt native FoxPro unterstützte SELECTs, MySQL-style LIMIT-Formulare, servergebundene Parameter, opt-in INSERT/UPDATE/DELETE und obligatorische WHERE-Checks für UPDATE und DELETE. Es ist flexibel, aber nicht rücksichtslos.
Schnelle Wege für reale BildschirmeEinfache Browseranfragen können direktes, nur zu lesen DBF-Scannen verwenden. Wiederholtes Paging kann Ergebnis-Cache wiederverwenden. Serverseitige Cursoren halten teure Ergebnissätze offen, so dass das Scrollen eines Rasters die gesamte Abfrage nicht jedes Mal wieder ausführt, wenn der Benutzer die Maus schüttet.
Diagnosen, die die Wahrheit sagenJedes Ergebnis kann Zeiten wie Servicezeit, Fox-Abfragezeit, Exportzeit, Zeilenleszeit, COM-Anrufe, Zeilenzählung, Zellzahlen und den Ausführungsweg berichten. Es ist viel einfacher zu optimieren, wenn die Software aufhört zu schütteln.

Die Form der Brücke

Die Arbeitsarchitektur ist bewusst pragmatisch: eine C#-Anwendung spricht mit FoxSQL.Client; der Client öffnet eine gemeinsame TCP-Verbindung mit FoxSQL.Service; der Service serialisiert den Zugriff auf die Fox-Laufzeit und führt den genehmigten SQL-Route aus. Visual FoxPro bleibt die Motor für komplexe Abfragen und Datenmutationen. C++ behandelt die Niedrigstufen Windows und Fox-basierte Realität, weil 32-Bit-COM nicht elegant wird, nur weil wir nett fragen.

C# app -> FoxSQL.Client -> pooled TCP connection -> FoxSQL.Service -> Visual FoxPro / AccountView data -> binary rowset frame back to C#

Diese Trennung ist wichtig. C# mutt nie direkt DBF/CDX/FPT-Dateien. Die Brücke vermeidet einen COM-Aufruf pro Zeile. Teure Fox-Arbeit wird gemessen. Schriften befinden sich hinter Konfigurations-Türen. Und wenn ein Bildschirm Seite 17 eines großen sortierten Ergebnisses benötigt, kann FoxSQL ein Fenster aus Zeilen holen, anstatt das Universum zum siebzehnten Mal wieder aufzubauen.

Wie das Bauwerk tatsächlich geschehen ist

Der Prozess war keine gerade Linie, wie man normalerweise weiß, berührte er echte Software. Die frühe Phase war ein Machbarkeitsspike: Beweisen, dass FoxPro und AccountView erreicht werden konnten, beweisen, dass Daten ohne OLE DB oder ODBC bewegt werden konnten, und beweisen, dass der Service eine Laufzeit am Leben halten könnte, anstatt teure Startarbeiten pro Statement zu leisten.

Von dort an wuchs das Projekt in Schichten auf: zunächst das Protokoll und C# Client-Vertrag, dann die Serialisierung des Ergebnisses, dann die SQL-Klassifizierung und Parameterbindung, dann Paging, Mutationsregeln, RECNO-spezifische Update/Delete-Hotpaths, Ergebnis-Cache-Invalidation, Verbindungspooling, Shared Fox-State-Scrubbing, Puffer-Wiederverwendung, Bulk-DBF-Ergebnislesung und schließlich explizite Server-Seiten-Curser. Mit anderen Worten: die lustige Art von Sanitation, wo jede Millisekunde einen Namen hat.

Die Benchmarks haben das Design geprägt. Ein naives WHERE RECNO() = ... Update kann sich in einen zufälligen Tischgang verwandeln, wenn es die falsche Route nimmt. FoxSQL fügte dedizierte Rekord-Nummer-Pfaden hinzu, die native Rekord-Positionierung für die Fälle verwenden, in denen die Anwendung bereits die Aufzeichnung kennt. Das ist keine vorzeitige Optimierung; das ist das Sehen des Grußes, das Etikettieren und eine kleine Brücke darüber.

Was kommt als Nächstes?

Der C#-Client ist die erste ernsthafte Schnittstelle, da er uns einen ordnungsgemäßen Datenbank-förmigen Vertrag gibt: Verbindungsstrings, Befehle, Parameter, Adapter, Leser, Kurser und vorhersehbare Fehlerbehandlung. Aber die Brücke soll nicht an Desktop oder Service-to-Service C#-Code stoppen.

Ein direkter JSON-Antwort-Modus ist geplant, so dass Anrufer FoxSQL nach Daten fragen und saubere JSON empfangen können, ohne zuerst alles in einen DataTable zu verwandeln. Das öffnet die Tür für leichte Integrationen, Admin-Panels, mobile Endpunkte und Web-Tooling, wo JSON die natürliche Form des Gesprächs ist. Der binäre Rowset-Pfad kann für schwere Kunden schnell bleiben; JSON kann die freundliche Haustür für alles andere werden.

Das bedeutet auch PHP-Websites können erstklassige Verbraucher werden. Eine PHP-Website sollte FoxSQL anrufen, eine genehmigte Abfrage ausführen, Parameter binden und AccountView-Daten auf einer Seite live rendern können, ohne DBF-Dateien zu berühren, ODBC-Treiber zu installieren oder dem Webserver alte Desktop-Rituale zu unterrichten. Die Website bittet um Daten; FoxSQL behandelt die FoxPro-Realität; AccountView bleibt die Quelle der Wahrheit.

An diesem Punkt FoxSQL wird das, was der Name seit jeher zielt: eine echte SQL-Server-Schicht auf der Spitze von FoxPro und AccountView. Nicht Microsoft SQL Server, nicht ein gefälschtes Datenbank-Form-Kostüm, sondern ein echter Server-Prozess mit einem Protokoll, Authentifizierung, Abfragevalidierung, Ausführungsrichtlinien, Diagnostik, Ergebnisformate und mehrere Client-Typen. Alte Daten, moderner Zugriff. Sinnvolle Grenzen. Weniger späten Ritualen mit Fahrerinstallern.

Die Schlagzeile

FoxSQL ist interessant, weil es nicht so tut, als würden veraltete Daten durch ein modernes Vokabular modern werden. Es respektiert den alten Motor, enthält die gefährlichen Teile und bietet modernen Anwendungen einen disziplinierten Weg in: pooled Verbindungen, parametrierte Befehle, Rowsets, Diagnose, Paging, Cursoren, JSON-bereite Integrationswege, Installationswerkzeuge und einen Windows-Dienst, der validiert werden kann, anstatt in die Produktion gewünscht.

Das Ergebnis ist eine Brücke mit nur ausreichender Einstellung: FoxPro macht FoxPro Dinge weiter, C# bekommt eine ordnungsgemäße Datenbank-API, PHP bekommt einen sauberen Weg zu Live-Geschäftsdaten und ODBC kann endlich aufhören, für jede langsame Abfrage im Gebäude verantwortlich zu werden.

Zurück zu den Neuigkeiten

Mehr

Ähnliche Beiträge

Möchten Sie mit uns zusammenarbeiten?

Nehmen Sie Kontakt auf und sprechen wir über Ihr Projekt.