Nieuws

FoxSQL: AccountView SQL leren spreken zonder ODBC de baas te maken

FoxSQL is een TCP/IP-SQL-brug voor AccountView- en Visual FoxPro-gegevens. C#-applicaties werken met vertrouwde databasebegrippen, terwijl de FoxPro-engine het werk blijft doen waarvoor hij is ontworpen.

FoxSQL: AccountView SQL leren spreken zonder ODBC de baas te maken

Het idee begon met een eenvoudige maar gevaarlijke vraag: kunnen we AccountView-gegevens laten voelen als een normale databaseverbinding van C#? Niet "een CSV exporteren en bidden. " Niet "een andere generische provider installeren en doen alsof 1998 goed is". Een echte client API: een verbinding openen, SQL sturen, parameters binden, rijen ontvangen, pagina's door grote resultaatsets maken en diagnostics inspecteren wanneer de machine begint te zweten.

Die vraag is belangrijk omdat veel bedrijfssystemen vol zijn met waardevolle FoxPro-gegevens die het bedrijf nog steeds prima draaien, terwijl de software eromheen is overgegaan naar web dashboards, mobiele schermen, API's, diensten, wachtrij en ontwikkelaars die nerveus raken wanneer een productie-integratie afhankelijk is van een geplande schijf en goede vibes.

De eerste beslissing was de belangrijkste: FoxSQL probeert geen nieuwe FoxPro te worden. Het reimplementeert geen DBF, CDX, FPT, vergrendeling, buffering of de vele kleine regels die in AccountView leven. In plaats daarvan houdt de dienst Visual FoxPro in het uitvoeringspad. FoxSQL biedt de moderne brug; Fox houdt eigendom van het gegevensgedrag. Dit is minder glamourus dan het uitvinden van een database engine, maar dramatisch minder waarschijnlijk om iemands boekhouddag te ruïneren.

Wat kan FoxSQL vandaag doen

ADO.NET-stijl C# toegangOntwikkelaars gebruiken FoxSqlConnection, FoxSqlCommand, FoxSqlDataAdapter, en FoxSqlCursorDat betekent dat het voelt als een database werk in plaats van een archeologische vergunning.
SQL over een aangepast TCP-protocolDe dienst spreekt een klein gebraamd protocol over TCP, met JSON control payloads en binaire rowset frames waar prestaties van belang zijn. REST werd beleefd gevraagd om buiten het hot path te wachten.
SELECT, Paging, parameters en gecontroleerde schrijvenFoxSQL ondersteunt inheemse FoxPro ondersteunde SELECTS, MySQL-stijl LIMIT formulieren, servergebonden parameters, opt-in INSERT/UPDATE/DELETE, en verplichte WHERE-controles voor UPDATE en DELETE. Het is flexibel, maar niet roekeloos.
Snelle paden voor schermen in de echte wereldEenvoudige browse queries kunnen gebruik maken van directe lees-alleen DBF-scan. Herhaalde pagina's kunnen resultaat caches hergebruiken. Server-side cursors houden dure resultaat sets open zodat het scrollen van een raster de hele vraag niet opnieuw uitvoert elke keer dat de gebruiker de muis trekt.
Diagnostiek die de waarheid verteltElk resultaat kan timings zoals servicetijd, Fox querytijd, exporttijd, rijlezentijd, COM-oproepen, rijgetallen, celgetallen en het uitvoeringspad rapporteren. Het is veel gemakkelijker te optimaliseren wanneer de software stopt met schouders te schudden.

De vorm van de brug

De werkarchitectuur is opzettelijk pragmatisch: een C#-applicatie spreekt naar FoxSQL.Client; de cliënt opent een gecombineerde TCP-verbinding naar FoxSQL.Service; de service seriealiseert de toegang tot de Fox runtime en uitvoer de goedgekeurde SQL-route. Visual FoxPro blijft de motor voor complexe queries en gegevensmutatie. C++ behandelt de lage-level Windows en Fox-geconfronteerde realiteit, omdat 32-bit COM niet elegant wordt alleen omdat we vriendelijk vragen.

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

Dat scheiding is belangrijk. C# verandert nooit rechtstreeks DBF/CDX/FPT-bestanden. De brug vermijdt een COM-oproep per rij. Duurdere Fox-werk wordt gemeten. Schriften liggen achter configuratiepoorten. En wanneer een scherm pagina 17 van een groot gesorteerd resultaat nodig heeft, kan FoxSQL een raam van rijen halen in plaats van het universum voor de zeventiende keer opnieuw op te bouwen.

Hoe de bouw echt gebeurde

Het proces was niet een rechte lijn, zoals je meestal weet dat het aan echte software raakte. De vroege fase was een haalbaarheidspike: bewijzen dat FoxPro en AccountView kon worden bereikt, bewijzen dat gegevens konden bewegen zonder OLE DB of ODBC, en bewijzen dat de dienst een runtime kon houden in leven in plaats van dure opstartwerk per statement te doen.

Vanaf daar groeide het project in lagen: eerst het protocol en C#-cliëntcontract, vervolgens de resultaatseriealisatie, vervolgens SQL-classificatie en parameterbinding, vervolgens paging, mutatie regels, RECNO-specifieke update/delete hot paths, resultaat-cache ongeldigmaking, verbindingspooling, gedeelde Fox-state scrubbing, buffer hergebruik, bulk DBF-resultatenlezen en uiteindelijk expliciete cursors aan de serverzijde. Met andere woorden: het leuke soort loodgieter, waar elke milliseconde een naam heeft.

De benchmarks vormden het ontwerp. Een naïeve WHERE RECNO() = ... update kan veranderen in een toevallige tafelwandeling als het de verkeerde route neemt. FoxSQL toegevoegd toegewijde record-nummer paden die gebruik maken van native record positionering voor de gevallen waarin de applicatie al het record kent. Dat is geen vroegtijdige optimalisatie; dat is het zien van het gat, het etiketteren, en het leggen van een kleine brug over het.

Wat gaat er dan gebeuren ?

De C#-client is de eerste serieuze interface omdat het ons een juiste database-vormige contract geeft: verbindingsstringen, commando's, parameters, adapters, lezers, cursors en voorspelbare fouthantering. Maar de brug is niet bedoeld om te stoppen bij desktop of service-to-service C#-code.

Een directe JSON-responsmodus is gepland zodat bellers FoxSQL voor gegevens kunnen vragen en schone JSON kunnen ontvangen zonder eerst alles in een DataTable te veranderen. Dat opent de deur voor lichte integraties, admin panelen, mobiele eindpunten en webgereedschap waar JSON de natuurlijke vorm is van het gesprek. Het binaire rowset pad kan snel blijven voor zware klanten; JSON kan de vriendelijke voordeur worden voor alles anders.

Dat betekent ook dat PHP-websites eersteklas consumenten kunnen worden. Een PHP-site moet in staat zijn om FoxSQL te bellen, een goedgekeurde vraag uit te voeren, parameters te binden en AccountView-gegevens op een pagina te laten zien zonder DBF-bestanden aan te raken, ODBC-drivers te installeren of de webserver oude desktop rituelen te leren. De website vraagt om gegevens; FoxSQL behandelt de FoxPro-realiteit; AccountView blijft de bron van de waarheid.

Op dat moment wordt FoxSQL waar de naam altijd naar gericht was: een echte SQL-serverlaag bovenop FoxPro en AccountView. Niet Microsoft SQL Server, geen vals database-vormig kostuum, maar een echt serverproces met een protocol, authenticatie, query validatie, uitvoeringsbeleid, diagnose, resultaatformaten en meerdere clienttypen. Oude gegevens, moderne toegang. Minder late-nacht rituelen waarbij bestuurders geïnstalleerd worden.

De punchline

FoxSQL is interessant omdat het niet doet alsof ouderwetse gegevens modern worden door ze in een modieus woordenschat te wikkelen. Het respecteert de oude motor, bevat de gevaarlijke onderdelen en biedt moderne toepassingen een gedisciplineerde manier in: pooled connecties, parameterized commands, rowsets, diagnostics, paging, cursors, JSON-ready integratiepaden, installator tooling, en een Windows service die kan worden gevalideerd in plaats van gewenste in de productie.

Het resultaat is een brug met net genoeg houding: FoxPro blijft FoxPro dingen doen, C# krijgt een juiste database-vorm API, PHP krijgt een schone route naar live business data, en ODBC kan eindelijk stoppen met worden beschuldigd van elke trage vraag in het gebouw.

Terug naar nieuws

Meer

Gerelateerde artikelen

Wilt u met ons samenwerken?

Neem contact op, dan bespreken we uw project.