Entwickler-Ecke

Jobbörse - [Auftrag gegen Geld] Port-Streams, MySQL und Linux


anfragenderxy - Mo 23.06.08 17:59
Titel: [Auftrag gegen Geld] Port-Streams, MySQL und Linux
Hallo.

Ich suche einen Experten, der sich mit Port-Streams und MySQL unter Linux auskennt. Es geht um folgenden Auftrag: Ich benötige eine Art "Kommunikationsprogramm".

Auf der einen Seite steht eine Maschine, die Informationen (in Form von XML-Nachrichten) über Sockets und bestimmte IPs zu einem Server schickt und darauf eine Antwort erwartet.

Der Server nimmt die XML-Nachrichten auseinander, ermittelt daraufhin die Antwort aus einer MySQL-Datenbank und schickt diese an die Maschine zurück.

Das Programm wird beim Booten des Servers (rc.local) gestartet und bleibt ständig aktiv. Das heißt, dass es keine Ressourcen fressen oder Speicherlecks haben darf, sondern schlank bleiben muss. (Aber das versteht sich wohl von selbst, oder?)
==> Daraus sollte ersichtlich sein, dass ich keine Lösung durch eine interpretierte Sprache haben möchte, sondern eher etwas in Richtung C oder so.

IPs und Ports stehen in INI-Files, könnten aber auch beim Start einmalig aus der MySQL-Datenbank gelesen werden. Da bin ich für (fast) alles offen. Die MySQL-Zugangsdaten stehen in einer Config-Datei.

Ich brauche (natürlich) einen kommentierten Quellcode und eine kurze Anleitung, wie ich als Depp das Programm kompilieren kann. :oops:

Falls sich jemand berufen fühlt, kann er sich mit einem Angebot (Zeitaufwand und Kosten) bei mir voll@namelesshost.com melden.
(Ob Profi oder Schüler ist mir egal, solange das Programm funktioniert.)

MfG,
Andreas

P.S.: Falls es relevant sein sollte: Es handelt sich um Ubuntu Linux.


jf_stgt - Di 24.06.08 17:50

Hallo,

vielleicht kann man hier noch ein paar Infos mehr bekommen.
Grundsätzlich könnte ich das Projekt übernehmen.

Wie oft wird denn die XML Datei übermittelt?

Wie gross sind ca. die Daten die zurück kommen?

Soll nur der XML-Online Parser (Linux) programmiert werden oder auch das Delphi Programm.

Eventuell könnte man auch eine PHP Datei machen die die XML Datei parst und die DB Aufrufe macht, oder?

Ich denke das wäre deutlich weniger Aufwand, oder?!

Viele Grüße
jf_stgt


anfragenderxy - Mi 25.06.08 08:57

user profile iconjf_stgt hat folgendes geschrieben:
Wie oft wird denn die XML Datei übermittelt?

Etwa 1 Request pro Sekunde.

user profile iconjf_stgt hat folgendes geschrieben:
Wie gross sind ca. die Daten die zurück kommen?

Der XML-String ist 600-700 Zeichen lang.

user profile iconjf_stgt hat folgendes geschrieben:
Soll nur der XML-Online Parser (Linux) programmiert werden oder auch das Delphi Programm.

Ich verstehe die Frage nicht. Ich brauche EIN Programm, das die komplette Kommunikation regelt. Dieses muss unter Linux laufen (Damit fällt Delphi wohl weg, oder?) und kommunizieren, DB-Abfragen erzeugen und XML parsen können.

user profile iconjf_stgt hat folgendes geschrieben:
Eventuell könnte man auch eine PHP Datei machen die die XML Datei parst und die DB Aufrufe macht, oder?

Um der Wahrheit die Ehre zu geben: Eine PHP-Lösung haben wir bereits. Diese ist jedoch (da Streams&Co. nicht gerade das Spezialgebiet von PHP sind) in der Response-Zeit nicht zufriedenstellend.
Kurzum: Ich benötige eine Lösung in einer "richtigen" Programmiersprache und nicht in einer interpretierten Skriptsprache.

user profile iconjf_stgt hat folgendes geschrieben:
Ich denke das wäre deutlich weniger Aufwand, oder?!

Für die PHP-Lösung haben wir inkl. Tests ca. 5 Stunden gebraucht. Wir würden dem Programmierer selbstverständlich mehr Zeit zugestehen, was sich aber natürlich für uns nicht negativ auswirken darf, wenn Du verstehst, was ich meine. ;-)

MfG


jf_stgt - Mi 25.06.08 09:24

Hallo!

Danke für die schnelle Antwort.

user profile iconanfragenderxy hat folgendes geschrieben:
user profile iconjf_stgt hat folgendes geschrieben:
Wie oft wird denn die XML Datei übermittelt?

Etwa 1 Request pro Sekunde.

Bei einer sekündlichen Anfrage kommt in der Tat eine PHP Lösung nicht in Frage.
Da wird zuviel "Overhead" (PHP Parsing, HTML - Seiten, Logfiles, ...) erzeugt. Ein Linux Programm für den Server scheint mir geeignet. Bedeutet allerdings, dass über den Server pro Sekunde auch eine oder mehrere Datenbankanfragen laufen. Ist für MySQL kein Problem solange der Server nicht eh schon "am Ende seiner Kräfte" ist.

user profile iconanfragenderxy hat folgendes geschrieben:
user profile iconjf_stgt hat folgendes geschrieben:
Wie gross sind ca. die Daten die zurück kommen?

Der XML-String ist 600-700 Zeichen lang.

Ich wollte eigentlich wissen wie viel da zurück kommt. Gehe aber mal auch von max. 1 Kilobyte aus.
Die Pakete müssten also nicht in mehreren Teilen geschickt werden.

user profile iconanfragenderxy hat folgendes geschrieben:
user profile iconjf_stgt hat folgendes geschrieben:
Soll nur der XML-Online Parser (Linux) programmiert werden oder auch das Delphi Programm.

Ich verstehe die Frage nicht. Ich brauche EIN Programm, das die komplette Kommunikation regelt. Dieses muss unter Linux laufen (Damit fällt Delphi wohl weg, oder?) und kommunizieren, DB-Abfragen erzeugen und XML parsen können.

Meine Frage war eher, ob ich auch ein Delphi Programm schreiben müsste das die XML Datei wegschickt oder "nur" den Server-Part?! Oder ist der Client-Part auch ein Linux Programm?

user profile iconanfragenderxy hat folgendes geschrieben:
user profile iconjf_stgt hat folgendes geschrieben:
Ich denke das wäre deutlich weniger Aufwand, oder?!

Für die PHP-Lösung haben wir inkl. Tests ca. 5 Stunden gebraucht. Wir würden dem Programmierer selbstverständlich mehr Zeit zugestehen, was sich aber natürlich für uns nicht negativ auswirken darf, wenn Du verstehst, was ich meine. ;-)

Verstehe ich teilweise. Wie schnell müsste denn die Antwort da sein? Hängt natürlich auch von der Internetgeschwindigkeit ab.

Soll TCP oder UDP als Verbindung gewählt werden? UDP ist im Allgemeinen schneller aber Fehleranfälliger. Falls Sie da nichts dazu sagen können, überlege ich mir etwas.

Eine Frage habe ich noch. Können mehrere Clients auf den Server zugreifen? Müsste man also auch so eine Art "Benutzerprüfung" machen? Oder bekommt jeder sein Ergebnis aufgrund seiner Anfrage.

Sobald ich Ihre Antworten habe, kann ich eine Preiseinschätzung machen (und würde diese dann per Mail zustellen).

Viele Grüße
jf_stgt


anfragenderxy - Mi 25.06.08 10:13

user profile iconjf_stgt hat folgendes geschrieben:
Danke für die schnelle Antwort.

Unser Anliegen ist relativ dringend. :-D

user profile iconjf_stgt hat folgendes geschrieben:
den Server pro Sekunde auch eine oder mehrere Datenbankanfragen laufen. Ist für MySQL kein Problem solange der Server nicht eh schon "am Ende seiner Kräfte" ist.

Nein, das sollte kein Problem sein. Die PHP-Lösung läuft ja jetzt auch schon zufriedenstellend. IMHO kann es eigentlich nur besser werden. Genauer gesagt muss es besser (=schneller) werden, ansonsten könnten wir gleich bei der PHP-Variante bleiben.

user profile iconjf_stgt hat folgendes geschrieben:
Ich wollte eigentlich wissen wie viel da zurück kommt. Gehe aber mal auch von max. 1 Kilobyte aus.
Die Pakete müssten also nicht in mehreren Teilen geschickt werden.

Korrekt. Da 600 Zeichen locker in 1 KB passen, ist das wohl kein Problem. ;-)

user profile iconjf_stgt hat folgendes geschrieben:
Meine Frage war eher, ob ich auch ein Delphi Programm schreiben müsste das die XML Datei wegschickt oder "nur" den Server-Part?! Oder ist der Client-Part auch ein Linux Programm?

Moment, Missverständnis...

Also noch einmal: Der Client ist eine Maschine. Da kommen wir nicht ran und damit haben wir auch nichts zu tun. (Schwarze Box)
Diese sendet eine Anfrage an den Server (Linux) auf einem bestimmten Port X und erwartet daraufhin eine Antwort auf einem Port Y.

Für den Server muss nun ein Programm geschrieben werden, das
a) auf einen definierten Port horcht und die XML-Nachricht in Empfang nimmt
b) Daten aus der XML-Nachricht holt
c) eine MySQL-Abfrage erzeugt
d) die Antwort (aus der DB-Abfrage) an den Client zurückschickt.
e) zurück zu a) springt

user profile iconjf_stgt hat folgendes geschrieben:
Verstehe ich teilweise. Wie schnell müsste denn die Antwort da sein? Hängt natürlich auch von der Internetgeschwindigkeit ab.

Erstens sind die Rechner im Intranet über LWL verbunden und zweitens müssen die Schritte a) bis e) in weniger als 250ms-300ms erfolgen, denn in dieser Zeit schafft es die jetzige PHP-Variante. (Und da wir uns verbessern wollen, dürfte die Anforderung klar sein.)

user profile iconjf_stgt hat folgendes geschrieben:
Soll TCP oder UDP als Verbindung gewählt werden?

TCP, wird vom Client vorgegeben.

user profile iconjf_stgt hat folgendes geschrieben:
Eine Frage habe ich noch. Können mehrere Clients auf den Server zugreifen?

Nein. Das ist nur eine Maschine.

user profile iconjf_stgt hat folgendes geschrieben:
Müsste man also auch so eine Art "Benutzerprüfung" machen?

Nein.

user profile iconjf_stgt hat folgendes geschrieben:
Oder bekommt jeder sein Ergebnis aufgrund seiner Anfrage.

Ja, die Antwort richtet sich nach der Anfrage (also dem Inhalt in dem XML-String), aber es gibt nur einen Client, der diese Anfrage stellen wird.

user profile iconjf_stgt hat folgendes geschrieben:
Sobald ich Ihre Antworten habe, kann ich eine Preiseinschätzung machen (und würde diese dann per Mail zustellen).

Gerne.

MfG


jf_stgt - Mi 25.06.08 11:38

Angebot ist raus!

jf_stgt


robotics - Fr 27.06.08 14:33
Titel: Kochbuch für aufgabenstellung
man nehme die poco -librarys (auf performance und embedded optimiert in c++)opensource
und passe das XML-parsing benutzerspezifisch an. samples und doku sind dabei.
aus Erfahrung kann ich sagen das die lib auch auf einem kleinen ARM embedded(RTOS QNX) schnell läuft.
http://pocoproject.org/

Habe leider keine Zeit im Moment.
hoffe es hilft.

gibt auch eine kleine Klasse die einen http-server implementiert und CGI unterstützt.


anfragenderxy - Fr 27.06.08 16:51
Titel: Re: Kochbuch für aufgabenstellung
Nur doof, wenn man kein C++ kann. Da nutzt einem das beste OpenSource-Projekt der Welt nichts.

Aber wenn's wirklich so einfach ist, frage ich mich, wieso ich bis jetzt "nur" 4 ernsthafte Angebote bekommen habe!?

MfG


robotics - Fr 27.06.08 18:09
Titel: wenige antworten
für deine Zwecke (Linux) performance etc und daraus resultierend C/C++ suchst du warscheinlich im falschen Forum. Ich möchte hiermit keinem Delphi-Entwickler zu nahe treten, gibt schon eine Menge Delphianer die C/C++ können. War auch mehr als Tipp gemeint.

Gruß
robotics