Announcement

Collapse
No announcement yet.

WinApp offline arbeiten, und Infos online updaten

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

  • WinApp offline arbeiten, und Infos online updaten

    ich habe eine allgemeine Frage, wie man ein solches Projekt am besten umsetzen kann:

    welche Technik ist am sinnvollsten, wenn man eine C# WinForm online updaten möchte?
    Also der User hat das Programm mit Daten (DB-Information) auf seinem Laptop
    Sobald er eine Internetverbindung herstellt, soll er die Möglichkeit haben das was geändert wurde auf den DB-Server zu laden und gleichzeittig andere Aktualisierungen werden automatisch auf das Laptop herunter geladen.

    Der User benötigt sozusagen auf dem Laptop:
    1. WinApplication (Schnittstelle für online-update und zum offline Arbeiten)
    2. DB Informationen

    Ich überlege ob eine XML Schnittstelle (Web-Service) dafür gut wäre (oder ob das funktionieren kann)
    um zum einen die Daten vom Laptop zum Server und umgekehrt, die Infos auf dem Laptop upzudaten.
    Hat jemand schon Erfahrung mit einer ähnlichen Anwendung?


    Während der User offline arbeitet,
    Wie könnte man am besten die DB-Informationen auf dem Laptop speichern?
    ...evtl. in einer XML Datei?

    Gruß
    Rayman

  • #2
    Nachfrage für die lokale Datenhaltung: Um welche Art von DB handelt es sich auf dem Server, um welche Datenmengen handelt es sich insgesamt?

    Wenn es darum geht, dass lokal eine (vollständige oder weitgehende) Kopie der Daten vorhanden ist, dann bietet sich an, die gleiche Art von DB zu verwenden (vermutlich die embedded-Version).

    Für die Struktur einer solchen Anwendung habe ich freilich keinerlei Erfahrung. Jürgen

    Comment


    • #3
      auf dem Server ist eine AS400 DB2 Datenbank,
      ich denke das wird schwierig auf dem Client zu installieren.
      Also ein Kopie der DB auf dem Client wird wohl zu groß.

      Die Menge der Daten die up/downgeloded werden werden nicht sehr groß sein.
      Ähnlich einem Bestellformular wo nur die Kundendaten für eine Bestellung eingegeben werden.
      Und die Kundendaten (die Bestellung) müssen dann zum Server geladen werden.

      Aber während der User auf dem Laptop die Bestellung aufnimmt
      benötigt er die Produktinfos um das Formular offline auszufüllen

      Comment


      • #4
        Hallo,

        Während der User offline arbeitet, Wie könnte man am besten die DB-Informationen auf dem Laptop speichern? ...evtl. in einer XML Datei?
        das DataSet ist speziell für den Offline-Modus vorgesehen. Wenn ein DiffGram beim Speichern angefordert wird (DataSet-Methode WriteXml mit der Option XmlWriteMode.DiffGram), unterstützt das DataSet auch den so genannten Briefcase-Modus: Die Änderungen "überleben" das Ausschalten und erneute Einschalten des Notebooks, so dass am Ende das DataSet den letzten Stand aller Änderungen (neue Datensätze, geänderte Datensätze und gelöschte Datensätze) erst dann über die Update-Methode in die Datenbank zurückspielt, wenn eine Verbindung zur Datenbank besteht.

        Aber während der User auf dem Laptop die Bestellung aufnimmt benötigt er die Produktinfos um das Formular offline auszufüllen
        Wenn diese Informationen relativ klein sind, können sie auch als XML-Datei gespeichert und in die jeweilige DataTable-Instanz im DataSet geladen werden. Wenn die Produktinfos sehr groß sind, macht das Ablegen in einer SQL Server 2005 Compact Edition-Datenbank mehr Sinn. Die Compact Edition kann auf Wunsch in Form einer Handvoll von DLLs mit in das eigene Programm eingebunden werden (embedded). Die Sync Services for ADO.NET stellen eine zusammen mit Visual Studio 2008 ausgelieferte Implementierung des Microsoft Synchronization Frameworks dar, um die Daten aus einer SQL-Datenbank in einer lokalen MS SQL Server Compact Edition-Datenbank abzulegen. Da der Wizard von Visual Studio 2008 die ganze Arbeit übernimmt, ist die Synchronisation im eigenen Programm mit nur 2 Programmzeilen zu haben:

        Code:
        LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
        Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();
        Ich überlege ob eine XML Schnittstelle (Web-Service) dafür gut wäre (oder ob das funktionieren kann)
        Der für die Sync Services for ADO.NET zuständige Wizard von Visual Studio 2008 generiert auf Wunsch auch den dreischtigen Weg, bei dem ein Webservice zwischen Client und SQL-Datenbank liegt. Auch für das DataSet ist es egal, ob ein TableAdapter eine direkte Verbindung zur Datenbank hat oder ob das DataSet "nur" von einem Geschäftsobjekt des Anwendungsservers bedient wird.

        Comment

        Working...
        X