Frage

Ich habe eine Multi-Tier-Anwendung in c #, die angeblich Aufgaben auf einer Datenbank (Wenn die erste Gebrauch, so können wir die Datenbank erstellen und füllen Sie es mit einigen Daten). Als ich entworfen zunächst die Anwendung, die ich nicht für eine mögliche Fortschrittsbalken Kontrolle berücksichtigen, geschweige denn jede Berichterstattung über die Fortschritte jeglicher Art. Wie kann ich das Design der Anwendung ändern zu können, melden Sie Datenbank-Operationen auf die UI-Ebene Fortschritte? Gibt es eine Lösung gibt, die wiederverwendbar ist und zwingt mich nicht alle meine Funktionen zu ändern, um zusätzliche Eingänge für die Berichterstattung zu nehmen?

War es hilfreich?

Lösung

Nein. Je nachdem, wie groß Ihre Anwendung ist, haben Sie eine Menge Arbeit vor Ihnen.

Für Fortschritte Arbeit berichten, müssen Sie den Code, um die Arbeit zu erhöhen Ereignisse ausführt, wenn eine Arbeitseinheit abgeschlossen ist. Dieses Ereignis Bedarf an den UI-Ebene und Fortschrittsindikatoren aktualisiert behandelt werden.

Ein guter Anfang wäre zu prüfen, Background mit (es ist ein Beispiel auf MSDN hier - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx ). Sobald Sie vertraut mit dem Background Sie in einer besseren Position sein sollten, zu entscheiden, welche Änderungen Sie in der Anwendung vornehmen müssen.

Andere Tipps

, sagte Als Greg, gibt es eine Menge Arbeit vor. Allerdings gibt es viele Möglichkeiten, um das Problem zu nähern, und das Beste für Sie hängt davon ab, was Kontextinformationen gehen vom Client bis zu den Anwendungs- / Datenbankschichten bereits. Zum Beispiel, wenn eine Session-Token oder Transaktions-ID von dem Client an die Anwendung im normalen Verlauf der Ausführung eine Abfrage / Transaktion oder eine Bestätigung Verweise übergab zurück asynchron von der Anwendung an den Client übergeben wird, dann für diese Abfragen / Transaktionen, für die Fortschrittsberichte notwendig war, Sie die Anwendung aktualisieren, eine Statustabelle haben könnte, dass der Client nicht abfragen. Dies könnte die Menge an Nacharbeiten erforderlich reduzieren. Grundsätzlich müssen Sie die „Middleware“ an Ort und Stelle prüfen, bereits sehen, ob irgendetwas davon kann Korrelat Transaktionen über Ebene genutzt werden.

Sie könnten den Server-Code ändern, damit es Fortschritte Informationen auf der Serverseite aktualisiert (ohne Funktionssignaturen zu ändern) und dann ein separates Verfahren haben, die diese Informationen separat abfragen kann.

Dies würde SieFormal Retrofit Unterstützung ermöglichen Fortschritt ohne irgendwelche Auswirkungen haben auch immer auf Ihre Anrufe an den Server, fügen Sie einfach einen neuen Hintergrund-Thread auf der UI-Überprüfung auf aktualisierte Fortschrittsinformationen während einer langen laufende Aufgabe im Gang ist.

Edit: Ich denke, den gleichen Ansatz für Aufgaben funktionieren würde, die in dem Client nehmen. Aber nach wie vor, eine statische Fortschrittsanzeige-Klasse verwendet auch hier werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top