OK, mit 32kBit siehts mit direkten Zugriff wirklich nicht besonders rosig aus. Aber je nachdem wieviel Daten Du immer übertragen musst, wirst Du Dich auch bei einer C/S-Architektur mit Wartezeiten auseinandersetzen müssen.
Die Alternative über PHP ist in diesem Fall nicht wirklich praktikabel, da ja in beide Richtungen Daten übertragen werden müssen. Und ich gehe nicht davon aus, dass die Anwender sich mit einer reinen Text-Oberfläche begnügen wollen, da sollte es schon ein bisschen Bedienerfreundlichkeit sein

. Und ansonsten für jede Übertragung das ganze in 2 Programmiersprachen + SQL noch implementieren zu müssen halte ich nicht für besonders gut *g*.
Was mir eben noch eingefallen ist: Sollten die Daten nicht immer auf beiden Seiten absolut aktuell sein müssen und man Konflikte durch gemeinsamen Zugriff auf die gleichen Daten (also Änderungen) vermeiden können, dann gäbe es auch noch die Möglichkeit der Synchronisation. Will heißen, Du hast in A, B und der Hauptniederlassung einen SQl-Server und lässt diese sich nachts miteinander synchronisieren. Der Nachteil ist hierbei natürlich, dass Du nicht immer alle Daten absolut aktuell sind, Du musst dafür sorgen, dass Konflikte gelöst werden können und die Lizenzkosten sind höher. Dafür kannst Du aber beim Client mehr oder weniger aus dem vollen schöpfen und brauchst dort nicht viel zu optimieren.
Jetzt zur C/S: Ich bin im Moment selbst dabei so etwas in der Art zu machen, nur nicht beruflich

. Mein Virtual Village (siehe Freeware-Sparte) ist auch ein C/S-Programm, ich habe nen Client, der sich zum Server bei mir zu Hause über DSL-Leitung verbindet. Im Hintergrund steht eine mysql-Datenbank. Die ganze Übertragung habe ich mit XML und den Indy-TCP-Komponenten geregelt. Meine Anfragen werden also in XML verpackt (ein Befehl mit evtl. Parameter), vom Server geparst und das Ergebnis wieder in XML verpackt zurückgeschickt (auch wieder ein Befehl mit den Ergebnisdaten). Das läuft auch ganz gut, selbst über diese kleine Leitung. Wenn Du dann noch eine Kompression einbaust (das habe ich jetzt nicht), dann dürftest Du auch mit 32k auskommen.
Der Vorteil meiner Befehlsorientierung besteht darin, dass ich eine sehr einfache Rechteverwaltung hinbekomme, mit der aber alles möglich ist. Das Problem bei der ganzen Sache ist dann, auf dem Server jeden Client in kürzester Zeit zu befriedigen. Ich habe das dann folgendermaßen gelöst:
Ich habe 2 Threads, einer enthält die ganzen Client-Daten, die verbunden sind und stellt den TCP-Server bereit. Er empfängt die Daten, prüft sie kurz und stellt sie dann in eine Queue.
Der andere Thread stellt das Herzstück dar. Dieser fragt die Queue laufend, ob neue Daten angekommen sind, wenn ja, werden diese verarbeitet. Der Knackpunkt bei der Sache ist die Überschneidung. Denn ab und zu braucht der Verarbeitungsthread natürlich weitere Daten aus der Client-Liste. Dieses habe ich über einen MultiReadExclusiveWriteSynchronizer gelöst, er bietet erweiterte Möglichkeiten zur Critical Section.
Erweitern könnte man das jetzt um eine weitere Queue, die die Antworten an den Client enthält, damit die Überschneidung geringer wird. Ein weiterer Vorteil bei mir ist, dass ich den Server sowohl unter Windows, als auch unter Linux erzeugen und laufen lassen kann. Sollte das für Dich relevant sein und Du es auch mit XML versuchen möchtest, kann ich Dich gleich darüber aufklären, dass Du da Probleme bekommen wirst. TXMLDocument kann man schon mal vergessen, da das einen X-Server unter Linux voraussetzt (bzw. die DOM-Implementationen davon). Das einzige was unter der Konsole läuft (was ich gefunden habe) ist XDOM. Ich habe mir daraufhin eine Wrapper-Klasse dafür geschrieben, die Aufrufe, die eigentlich für MSXML gedacht sind, auf XDOM ummappt (die Syntax von MSXML hat mir einfach gefallen und ich wollte auch nicht meine Anwendung umschreiben

). Sollte das für Dich relevant sein, kann ich evtl. diese Klasse Dir zukommen lassen.
Weitere Fragen? Fragen!
