Instant-messanger - über ASP.NET Webservice?



  • Hallo, und zwar hatte ich mir überlegt einen kleinen Instantmessanger zu schreiben, den ich nur für mich und einige Freunde nutzen wollte.

    Lösen wollte ich das ganze über einen Webservice, an den sich die Clienten ankoppeln, da ich diesen Instantmessanger nicht nur über den PC ansprechen möchte, sondern auch über eine Handy Applikation.

    Funktionsweise hab ich mir so vorgestellt, dass eine kleine Registrierung über eine Webseite notwendig ist, über die der Benutzer in der Datenbank erstellt wird. - Soweit kein Problem ist machbar.

    Dann der Login, dieser stellt auch kein Problem dar. Die Webmethode würde den Benutzernamen, das Passwort & die Art der Anmeldung (über Client oder Website) aufnehmen. Die Art der Anmeldung, da ich über die Website noch eine Extra Funktion hinzufügen würde, wo man Nachrichten schreiben kann, die zwischengespeichert werden in der Datenbank und auch sonst noch kleinere Spielereien.

    Als nächstes hatte ich eine Webmethode vor, die Benutzer zur Kontaktliste hinzufügt. - Stellt soweit auch kein Problem dar. - Selbiges auch zum entfernen aus der Kontaktliste.

    Kommen wir nun aber zu dem, wo mein Problem liegt.

    Das senden und empfangen der Nachrichten. - Hier stoße ich auf das Problem, dass ich die Nachrichten nicht in der Datenbank ablegen möchte. - Allein schon zum Schutz der Privatssphäre, denn ich muss (als Servicehoster) nicht wissen, worüber sich die anderen Unterhalten. - Den Versand von Nachrichten an User, die offline sind würde ich komplett unterbinden.

    Nun aber die Frage, wie könnte ich es über einen Webservice realisieren, dass die Nachricht vom einen Client über den Service direkt an den anderen Client geleitet wird?

    Dazu bräuchte ich auf jeden Fall im Client eine Funktion, die ständig eine Webmethode abfragt.

    Das Problem an der Stelle wäre nur, dass beim senden einer Nachricht nicht in der Datenbank gespeichert wird.

    Falls jemand vorschläge hat, wie ich das realisieren kann, wäre ich sehr dankbar.



  • Hallo,

    inflames2k schrieb:

    Dazu bräuchte ich auf jeden Fall im Client eine Funktion, die ständig eine Webmethode abfragt.

    Ja, die brauchst du wohl. Ist aber nicht schlimm, oder?

    inflames2k schrieb:

    Das Problem an der Stelle wäre nur, dass beim senden einer Nachricht nicht in der Datenbank gespeichert wird.

    Verstehe da dein Problem nicht. Dann speicherst du die Daten halt nicht in einer
    Datenbank sondern nur in einer String-Liste oder sowas.
    Und wenn dann alle angemeldeten Nutzer die Nachricht angfordert haben (oder zuviel Zeit verstrichen ist),
    dann löscht du die Nachricht aus der Liste.

    Gruß,
    Jockel



  • Naja, entweder hab ich das Prinzip nicht ganz verstanden oder ich denk zu verquer.

    So ein Webservice ist ja in sich eine Klasse mit Methoden. - Wenn ich nun mit einem Client die Nachricht sende & in den String schreibe, würde das doch nur für den CLienten gelten oder bleibt die Stringlist immer verfügbar?

    Sollte sie verfügbar bleiben, wäre das natürlich gut!



  • Die Stringlist muss lediglich static sein, dann bleibt sie für alle erhalten.
    Zumindest solange der Service läuft, was allerdings ein Problem sein kann,
    da der Service nach so und soviel Minuten ohne Anfrage runtergefahren wird (vom IIS, worauf du wahrscheinlich keinen Einfluss hast).
    Dann müsstest du beim runterfahren die Daten doch noch sichern.



  • Ich wollt es eben probieren, jedoch sagt mir die IDE, dass eine Membervariable nicht als Static deklariert werden kann.

    Zu der Sache mit dem Herunterfahren, da ja während ein CLient angemeldet ist dauerhaft anfragen gesendet werden ob eine neue Nachricht gesendet wurde, würde das ja kein Problem darstellen.

    // Edit
    Hab die Variable eben als Shared deklariert und siehe da, es geht. 🙂



  • inflames2k schrieb:

    Zu der Sache mit dem Herunterfahren, da ja während ein CLient angemeldet ist dauerhaft anfragen gesendet werden ob eine neue Nachricht gesendet wurde, würde das ja kein Problem darstellen.

    Stimmt. Das ist doch gut.

    inflames2k schrieb:

    Hab die Variable eben als Shared deklariert und siehe da, es geht. 🙂

    VB Shared = C# static.
    Ich wusste nicht womit du programmierst.



  • Sorry hät ich dazu sagen sollen. 😉
    Aber sollte nicht static auch static sein also in allen Sprachen?
    In VB gibt es ja auch Static aber anscheinend nicht genauso wie in C#.

    Naja ist nun Shared und es funktioniert. Danke für den kleinen Tipp, dass es so frei verfügbar bleibt.



  • Wenn ichs richtig im Kopf habe, sind Statics in VB, auch das, was sie in C sind. Sie funktionieren so, wie man es erwartet. Aber nur innerhalb einer Prozedur. Wenn man eine "Klassenvariable" machen, muss es shared sein.


Log in to reply