Announcement

Collapse
No announcement yet.

Fragen zu Programmumsetzung (Client - Server)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fragen zu Programmumsetzung (Client - Server)

    Hallo liebes Entwicklerforum,

    ich möchte eine Anwendung schreiben die folgendes ermöglicht, sie besteht aus einer Serverkomponente und einem oder mehreren Clients:

    Server:
    Der Server soll nur eine Vollbildansicht eines ListViews anzeigen, die Einträge sollen von den Clients vorgenommen werden können.

    Client:
    Die Clients sollen Einträge in das ListView vornehmen können, es handelt sich bei den Einträgen um Ticketnummern aus einem Ticketsystem (Format (I-0123456789).
    Über eine zweite Schaltfläche sollen die Clients die Einträge auch wieder löschen können.
    Im ListView soll die Ticketnummer und Datum + Uhrzeit des Eintrages erscheinen.
    Nach dem beenden und neu starten der Serverkomponente sollen die vorherigen Einträge weiterhin verfügbar sein.

    Goodies:
    Nach einer gewissen Zeit sollen die Einträge im ListView gelb und noch etwas später rot werden...das ist aber kein muss.

    Meine Frage ist nun welches grundsätzliche Konzept bzw. welche Herangehensweise setze ich hier an um:

    a) ein Client-Server Konzept umzusetzen (das habe ich bisher nicht gemacht) und
    b) um die Daten für die Serverkomponente zentral abzulegen (Ein SQL Server steht nicht zur Verfügung)

    Für jeden Tip, Fingerzeig oder Beispiele - sei es auch nur für Teile der Anforderung - bin ich euch schon jetzt dankbar!

    Viele Grüße
    Rohabu

  • #2
    a, Du baust einen Webservice der eine Liste von den von Dir gewünschten Daten liefert. Als Protokoll würde ich hier Json over Http empfehlen, das ist relativ einfach und kann von vielen Systemen problemlos genutzt werden. Weiterhin sollte der Webservice eine Funktion zum Speichern eines neuen Objekts haben. Um die Anzeige und die Interaktion mit den Daten kümmert sich immer die Clientseite - abhängig von der vergangenen Zeit seit dem erstellen kannst Du die Einträge hier auch einfärben. Um einen Webservice zu realisieren gibt es mehrere Möglichkeiten.
    1. ASP.NET MVC mit Json serialisieren. Wenn man sich mit Web auskennt sehr einfach zu implementieren.
    2. ASP.NET Handler.
    3. WCF - für "große" Webservices gut geeignet für kleinere Geschichten ist mir das Framework schon fast zu groß, aber eigentlich DAS Framework von Microsoft für Webservices
    Für das Goodie kommt es ein bischen auf die Frequenz des benötigten Updates an. Die einfachste Lösung ist hier in bestimmten Zeitabständen einfach die Liste neu vom Server zu holen und die View neu zu erzeugen.

    b, dafür kannst Du jede beliebige Datenbank verwenden. Es muss nicht immer gleich ein riesen SQL Server sein. Du kannst z.B. auch eine NoSQL Datenbank wie MongoDB oder RavenDB verwenden. Damit lassen sich wirklich sehr einfach Daten langfristig abspeichern. Für hochsicherheitsanwendungen (wie z.B. bei Banken) sind sie allerdings nicht geeignet, aber das wird wohl bei Dir auch nicht unbedingt der Fall sein. In unserer Firma verwenden wir auch MongoDB. Der Vorteil dieser Datenbanken ist auch dass Du Dich nicht um das Schema kümmern musst und auch keinen ORMapper oder komplizierte SQL Statements bauen musst.

    Als Flow in der Applikation würde das ungefähr so laufen (ich nehme an dass der Server mit dem Webservice läuft):
    1. Die clientanwendung fordert eine Liste der bestehenden Tickets an
    2. der client rendert die Liste
    3. (Optional) der client erneuert alle x Minuten die Liste
    4. Der Benutzer erstellt einen neuen Eintrag und speichert ihn
    5. Beginne wieder bei 1

    Ich hoffe etwas geholfen zu haben

    Welche Art von Client soll es denn werden? Rich Client? Web? Web Rich Client?

    Comment


    • #3
      Hallo fanderlf,

      erstmal vielen Dank für deine ausführliche Antwwort!

      Ich denke ich habe das Szenario vielleicht schlecht beschrieben da mir die Lösung etwas überdimensioniert vorkommt (aber ich mag mich auch täuschen)

      Ich beschreibe einmal die Ist-Situation, vielleicht wird dann klarer was ich umsetzen möchte.
      Dazu sei angemerkt das ich im Client Support einer Firma arbeite und wir im Client Support Tickets per Ticketsystem erhalten die wir dann abarbeiten.
      Das Ticketsystem kann keine Prioritäten abbilden, behandelt also jeden Vorgang gleich.

      Ist:
      Erhält ein Ticket durch den Service Desk eine höhere Priorität weil z.B. ein Anwender nicht arbeiten kann, dann kommt der SD-Mitarbeiter in den Client Support und schreibt die Ticketnummer an eine Tafel. Der Client Support kümmert sich dann um das Ticket und streicht es durch wenn es bearbeitet wurde.

      Soll:
      Erhält ein Ticket durch den Service Desk eine höhere Priorität weil z.B. ein Anwender nicht arbeiten kann, dann trägt Er die Ticketnummer in eine kleine Applikation ein und klickt auf "Eintragen", die Ticketnummer erscheint daraufhin auf einem zentralen Bildschirm im Client Support.
      Der Client Support bearbeitet das Ticket, wählt es - am liebsten ebenfalls über eine kleine Applikation - aus und klickt auf "Erledigt", daraufhin verschwindet das Ticket vom zentralen Bildschirm.
      Liegt ein Ticket länger als 4 Stunden in der Liste wird der Eintrag gelb, liegt das Ticket länger in der Liste als 8 Stunden wird der Eintrag rot.

      Ich hoffe diese Beschreibung hilft die Anforderung besser zu verstehen.
      Beim Ablageort der Daten war mein erster Gedanke eine zentral liegende XML Datei, wie realistisch das ist kann ich aber schlecht einschätzen.

      Viele Grüße
      Rohabu

      Comment


      • #4
        Dann wirst du wohl einen Webserver meinen, der ein HTML-Seite aufgrund der von Clients gesendeten Daten anzeigt. Sonst müsstest du ja 3 Applikationen schreiben. Die Clients zur Aufnahme der Daten, den Server zur Datenhaltung und eine Applikation, die die Daten auf einem Bildschirm präsentiert. Die Datenhaltung in einer XML-Datei ist nicht zu empfehlen, wenn andauernd Daten geändert werden. Schließlich ist jedesmal das gesamt File zu erneuern. Es gibt auch kleine Datenbanksysteme wie SQLITE, die für die Aufgabe ausreichend sind. Sollte es nicht möglich sein, eine DB einszusetzen würde ich die Daten im Filesystem speichern. Je Ticket eine Datei.
        Zuletzt editiert von Christian Marquardt; 14.06.2012, 12:33.
        Christian

        Comment


        • #5
          Hallo Christian,

          vielen Dank für deine Antwort!

          Die Idee mit den Textdateien finde ich sehr gut, eine Datenbank halte ich einfach für überdimensioniert und bei einer Textdatei nehme ich einfach die Ticketnummer als Dateinamen - darüber kann ich das Eintragen doppelter Ticketnummern verhindern und anhand des CreateDate kann ich die gewünschte Einfärbung vornehmen.

          Ich erstelle dann eine Anwendung zur Anzeige und erweitere ein vorhandenes Service Desk Tool das ich geschrieben habe und welches alle eh nutzen um die Funktion zum erstellen (Eintragen) und löschen (Auf erledigt setzen) der Tickets.

          Klasse, vielen Dank euch beiden!

          Gruß
          Rohabu

          Comment

          Working...
          X