Suche Buch zu (Client/)Server Entwicklung
-
hi leude,
ich suche nicht nur ein buch, sondern auch noch ne menge anregungen.
Ich möchte gern einen Server entwickeln, der ähnlich arbeitet, wie die der messenger-services (icq, msn, ...). Also weltweite Anmeldung mit eindeutigem account. über diesen server möchte ich dann games initiieren und globale user-kommunikation ermöglichen und vieles vieles mehr.
ich brauch also einen server, der sehr viele verbindungen handeln kann. ausserdem muss es möglich sein die server-last auf mehrere maschinen zu verteilen. Also alles in allem so effizient und verteilt wie möglich. Dazu noch so flexibel, dass man quasi jedes mögliche kommunikationsszenario abdeckt.
Hmm ... das sind krasse anfordereungen. Trotz meiner 12 Jährigen programmiererfahrung stellt mich das vor eine schier unüberschaubare Aufgabe.
Also ich hab kein problem damit sowas umzusetzten, nur hab ich so das gefühl, das das alles amateur-getue ist.
Daher würde mich eure meinung interessieren:
- Mit welcher Sprache würdet ihr das schreiben?
--- Ich würd gern c# nehmen (daher auch dieses forum)
------ Nachteile von c# (diesbezüglich)?
------ Vorteile von c#?
- TCP oder UDP?
- Wie die daten serialisieren?
- Gibt es da vielleicht schon ferige umsetzungen? (sprache beliebig)
- Kann DirectPlay schon was ich will?Und was mir noch mehr helfen würde: Kennt ihr Bücher die das Thema Serverprogrammierung intensiv behandeln? Gern auch in english und sprachenunabhängig. Aber kein einsteigerbuch bitte ... eher hardcore server programming.
also für tips und anregungen wär ich sehr dankbar
viele grüsse
-
Nun gut, ich bin zwarn Anfänger bei der Programmierung, habe mir aber wegen eines Chats schonmal ähnliche Skripte und Zeichnungen ausgearbeitet.
Mit welcher Sprache->
Ich würds eher mit C++ machen, bietet meiner Meinung nach mehr Optimierungsmöglichkeiten, und da es in Größe von MSN sein soll wird es mit Sicherheit zeitkritisch zugehen, ergo wäre es schlecht wenn man eine Sprache benutzt die einen Zwischencode verwendet, da dieser ja zur Laufzeit nochmal übersetzt werden muss. Zumal es hier nicht wichtig ist, ob der Server auf verschiedenen Systemen lauffähig ist.
Vielleicht für die Clients, aber der Server sollte dann doch so Hardwarenah wie möglich sein.Ob TCP oder UDP->
Hier stellt sich wohl eher die Frage was du denn so alles machen möchtest. Wenns nur Chat ist, dann doch eher TCP, da der Chat nicht zeitkritisch ist, und die Bestätigung der Pakete verhindert, das eine Nachricht verloren geht. Auch die Client Server Kommunikation über TCP.Wenn zwei Clients miteinander verbunden sind, wäre es eigentlich besser, wenn du hier den Server ausm Spiel lässt, nur um die Verbindungsdaten zu bekommen, sollen sich die Clients beim Server melden (und natürlich für die Userdaten). Danach sollen sich die Client untereinander verbinden, und ab hier würde ich den Server weglassen.
Wenn der User A nicht erreichbar ist, und eine Nachricht hinterlassen werden soll, kann sich der Client B beim Server melden, und dort eine Nachricht hinterlegen. Wenn der User A sich wieder anmeldet, schaut der Client halt einfach in das Postfach, OB neue Nachrichten da sind, und wenn, dann holt er sie eben ab. Dann muss der Server noch daran denken, die Daten zu löschen, oder der Client stößt es an. Wenn man es Clientseitig belässt, hat man die Gewissheit, dass die Nachrichten vollständig vom Client empfangen wurden.
Wie die Daten serialisieren->
Weiß nicht wo da das Problem ist, wenn du ganze Nutzerprofile handeln willst bleibt eh nur eins. Datenbank. Damit sparste wohl den meisten Platz. In einer Textdatei käm sowas ja schon fast lächerlich.
Für eine Datenbank musste natürlich entsprechende Erfahrung haben. Man kann (wenn man lustig ist) das Nutzerprofil auf 40 Tabellen aufteilen. Eher sogar mehr. 10-12 waren es schon als ich in der Schule nur Name, Nachname, Adresse und Rufnummer aufteilen sollte. Da wirste dich auf alle Fälle nochmal mit einem guten Datenbank-Buch beschäftigen müssen, bzw. du kennst dich schon so gut aus, dass du das problemlos auf die Reihe bekommst. Ansonsten brauchst halt jemanden der dir das macht, denn eine Datenbank in der Größe ist wirklich nicht ohne. Wenn die aber mal fertig ist, sind die SQL Abfragen dann dein geringstes Problem.
Ob es fertige Umsetzungen für die Größe gibt möchte ich bezweifeln, und wenn, dann sicherlich nicht ohne eine Lizenzgebühr.
Ob Directplay schon das kann was du möchtest, vielleicht. Aber bedenke, wenn es ein Chat ist, möchtest du ja möglichst viele Menschen erreichen, also solltest du weitestgehend Clients einsetzen, die davon unabhängig sind. Denn auf Linux lässt sich DirectX nur herzlich schwer installieren
.
Ich weiß dass dir meine Antwort wahrscheinlich wenig bringt. Denn die Antwort ist fast so, als würde man auf Linus Torvalds zugehen, und sagen "Ich hätte gern, das Windows Programme einwandfrei auf Linux laufen, die Treiber am besten auch noch."
Und wenn dir die Antwort wirklich nichts bringt, dann steht wenigstens der Thread wieder weiter oben. Vielleicht stolpert ja mal jemand darüber, der dir dann auch helfen kann
.
Gruß
Markus Seidl