.net Remoting
oder
Wie erstelle ich einen Chat Server
Seid gegrüßt,
mit diesem Tutorial möchte ich eine besondere Technik der Netzwerkprogrammierung vorstellen.
Genau, es geht um
Remoting mit dem .net Framework. [C#]
Einfach gesagt hat man mit Remoting die Möglichkeit mit einem Client zu einem Server zu verbinden und diverse Funktionen dort auszuführen.
Wozu man das braucht?
Man kann damit z.B. relativ einfach eine Chat-Application erstellen. Und wie das funktioniert zeige ich euch hier.
In VisualStudio.net erstelle ich als Erstes eine leere Solution, da wir im Laufe des Tutorials insgesamt 3 Unterprojekte erstellen werden.
Der Einfachheit halber nenne ich es RemotingTutorial.
Das erste Projekt mit dem wir uns befassen werden, ist nur ein sehr kleines, aber dennoch sehr wichtiges. Es trägt den Namen 'Interfaces'. Irgendwoher muss der Client wissen, welche öffentliche Methoden der Server anbietet, um sie auch aufrufen zu können. Da wir nicht die gesamte Server-Klasse, mit all seinen privaten Methoden etc., dem Clienten mitgeben wollen, wird der eigentliche Server von einem Interface abgeleitet, das auch dem Client zugänglich ist. (Dies gilt auch umgekehrt. Auch der Client hat ein eigenes Interface.)
Ich beginne mit den Interfaces, da wir hier schon mal überlegen müssen welche 'Dienste' der Server anbieten soll.
Für unseren Chat-Server brauchen wir folgende Methoden:
# void _login (IClient client) - Zum einloggen am Server
# void _logout (IClient client) - Wo man sich einloggt, sollte man sich auch ausloggen können
# bool _sendText (IClient client) - Man will chatten, also muss man irgendwie Text verteilen können.
Der Client erhält auch ein Interface mit diesen Methoden:
# Guid _guid { get; }
# string _nick { get; }
# void _setText (string text}
Jetzt, wo wir die Methodenrümpfe vor uns haben, sehen wir uns einmal an wie man so ein Interface erstellt.
Erstellt nun ein Klassenbibliotheken-Projekt mit dem Namen 'Interfaces', bevor ihr auf [OK] klickt, versichert euch, dass das Projekt in der aktuellen Solution erstellt wird.
Nun haben wir das frisch erstellte Projekt vor uns, und auch schon mit dem Grundgerüst einer Klasse. Das brauchen wir aber nicht.
Ihr könnt die Datei löschen, oder einfach nur umbenennen und das notwendige verändern, so wie ich es mache. Ich benenne sie nun also in 'interfaces.cs' um, und lösche die vorgegebene Klasse 'Class1' und beginne mit dem Schreiben der Interfaces.
Wenn wir unsere zuvor geplanten Interfaces erstellt haben, sollte es in der Datei so aussehen:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| 01 using System;
02
03 namespace Interfaces
04 {
05 public interface IServer
06 {
07 void _login (IClient client);
08 void _logout (IClient client);
09 bool _sendText (string text);
10 }
11
12 public interface IClient
13 {
14 Guid _guid { get; }
15 string _nick { get; }
16 void _setText (string text);
17 }
18 } |
Euch ist sicher aufgefallen, dass die Zeilen 14 und 15 ein wenig anders aussehen als die anderen. Dies liegt daran, dass dort keine Methodenrümpfe stehen, denn _guid und _nick
Webservice & Login
Hallo zusammen,
Ich habe einen Java Webservice geschrieben, der verschiedene Methoden anbietet, z.B.
- getDataOfUser(String username,
DannyP 25.05.13, 02:14