2009-05-27 3 views
0

Ich habe eine verteilte Notizenanwendung in Flex erstellt, es ist im Grunde ein Notizblock, den ich in meinem Desktop-Tray behalten kann. Wenn ich Notizen hinzufüge und zu einem Server zurückkehre und ihn in einer Datenbank abspeichern.Flex Databinding Array zu Canvas als Objekte, allgemeine Client-Architektur

Um zu kämpfen, um die Anwendung richtig zu entwerfen, möchte ich einen Synchronisierungsdienst haben, der den Webserver für Änderungen und Updates ein Array von Notizobjekten abfragt. Das Problem ist, dass meine Notiz mxml-Komponente, alias SingleNote-Komponente entspricht. Es gibt vier verschiedene Fälle, wenn a. Eine Notiz wird von der Serverabfrage aktualisiert. In diesem Fall möchte ich die Aktualisierung der Einstellungen mit einem einzigen Hinweis vornehmen. b. Eine Notiz wird vom Server zum Array hinzugefügt. In diesem Fall muss eine neue SingleNote erstellt werden. c. Ein SingleNote wird vom Client hinzugefügt. In diesem Fall wird dem Array eine Notiz hinzugefügt und an den Server gesendet. d. Ein SingleNote wird vom Client geändert, in diesem Fall wird der Hinweis im Array aktualisiert und an den Server

zurück gesendet.

Die Eigenschaften sind SingleNote (Breite, X, Y, Text).

Können Sie mir empfehlen, wie Sie diese komplexe Datenbindung erreichen? Wie würdest du das gestalten?

Antwort

1

Wie sieht Ihre Datenbank aus? Gibt es eine Notiztabelle?

Ich denke, Dienste auf der Service-Seite sind bereits erledigt, wenn Sie nach einer Client-Architektur fragen. Was ist in diesem Fall die Struktur der Daten, die zwischen Ihrem Client und Server ausgetauscht werden?

Der beste Fall ist, wenn Sie bereits ein DTO/VO haben, das die Notizentität von Ihrer Datenbank auf eine Klasse abbildet. Auf der Clientseite können Sie dann das ID-Feld jedes Objekts verwenden, um zu wissen, ob es bereits in der Datenbank gespeichert ist oder nicht.

Also, was ich tun würde, ist:

einen NoteManager erstellen auf der Client-Seite, die:

  1. speichert Ihre Array von Notenobjekten
  2. Methoden, die den Zustand dieses Array verwalten: hasNote (idNote: int), addNote (Anmerkung: Note), RemoveNote (idNote: int), updateNote (idNote: note), ...

Wenn Sie den Zustand dieses Arrays ändern, müssen Sie aktualisieren Sie r Ansicht (en). Je nachdem, welches Framework verwendet wird (wenn Sie eines verwenden), kann dies auf verschiedene Arten erfolgen. Die allgemeine Idee ist jedoch, das Observable-Muster zu verwenden, um Ihre Ansicht nach einer Modelländerung zu aktualisieren. (Irgendwo haben Sie vielleicht auch eine Karte, die ein Notizobjekt auf seine Komponentenanzeige abbildet)