2012-03-26 5 views
2

Wir haben eine Webanwendung und eine Windows-Formulare-Anwendung. Die Webanwendung enthält einen Downloadlink zum Herunterladen dieser Formularanwendung.Web und Windows Forms Anwendung mit der gleichen DB-Probleme

Diese Formularanwendung überprüft die Clientcomputer-Berechtigungen und den Laufwerksspeicher usw. und aktualisiert die Werte mithilfe einiger Webservice-Aufrufe in einer globalen Datenbank.

So überprüft die Webanwendung kontinuierlich die globale Datenbank auf den Status, dh wie viel Prüfung von der Formularanwendung abgeschlossen wurde.

Sobald das Download-Popup für die Formularanwendung zum Herunterladen angezeigt wird, beginnt die Webanwendung den Status zu überprüfen. Wenn jedoch ein Benutzer den Download abbricht oder wenn ein Benutzer die Formularanwendung schließt, kann die Webanwendung in diesen Fällen nicht mehr nach dem Status suchen.

Aber in meinem Fall wird die Webanwendung immer nach der Statusänderung suchen, auch wenn der Kunde den Download abbricht oder die Formularanwendung schließt. Wie kann man das vermeiden?

Antwort

1

Sie könnten versuchen, etwas wie einen Schalter als Teil eines Datensatzes oder etwas in der Datenbank zu haben, also das nächste Mal, wenn Ihre Webanwendung versucht, lesen Sie das Bitfeld würde es wissen, dass es aufhören sollte zu überprüfen . Sie können dieses Bitfeld als ON & OFF über Ihre Formularanwendung steuern. Dann können Sie in Ihrer Webanwendung einen Polling-Mechnismus einrichten, der die db regelmäßig überprüft, bevor sie sich alle auf Basis des Bitfeldes abmildert oder wenn nicht, dann nach einiger Zeit.

auch sagen, dass Ihre Formularanwendung in der Lage sein würde, die Außenwelt zu nennen, wo Ihre db einige ist, wo es sich und aktualisieren, kann es viele Möglichkeiten, Web-Service-Aufruf erfolgen, http, ect ...

Update:

ich Entschuldigung für die Verzögerung bei der Beantwortung aber nicht verstanden, was ich gesagt habe? Wenn Ihre Winforms-Anwendung Ihren Web-Service aufrufen kann, kann er ein Flag-Feld angeben, beispielsweise einen Datensatz in der DB, zum Beispiel, dass Ihre Web-Anwendung abfragt und prüft und dann das Flag-Feld Ihrer Web-Anwendung setzt Ich weiß, dass ich aufhören soll, irgendwas mit dieser Platte zu tun.

Wie Sie erwähnten Sie besorgt sind:

  • Benutzer klicken Abbrechen für den Download:

In diesem Szenario würden Sie nicht die Überprüfung Ihres Rekord von Ihrer Web-Anwendung, es sei denn der Benutzer heruntergeladen und führen Sie Ihre Win-Forms-Anwendung zum ersten Mal, also starten Sie nicht auf Dowload der Win-Formulare-Anwendung zu überprüfen, sondern starten Sie einmal für den ersten Mal der Benutzer hat es zu öffnen, können Sie dies beim Start der winforms-Anwendung tun indem Sie das Flag-Feld in Ihrer winforms-App setzen, indem Sie Ihren Web-Service aufrufen. Sie werden ab und zu einen Abfragemechanismus benötigen, wie einen Dienst.

  • Wenn die Benutzeranwendung die WinForms schließt

In diesem Fall würden Sie bei Beendigung/Schließen Ihrer WinForms App Ihren Web-Service aufrufen und das Flag-Feld nicht gesetzt, diesen Rekord Punkt nicht mehr zu überprüfen .

Sie werden in jedem Fall Abfragen benötigen, da ich denke, dass Sie viele Benutzer haben werden und daher müssen Sie die DB für eingehende Nachrichten von Ihrer Winforms App überwachen. Bitte beachten Sie auch, dass einige Benutzer hinter Firewalls, eingeschränkten Sicherheitsberechtigungen auf ihren Computern und in privaten Netzwerken stehen und Ihre Winforms-App möglicherweise nicht immer in der Lage ist, Ihren Web-Service aufzurufen.

Hoffnung, die geholfen hat.

+0

ja ich benutze Web-Service, um die Werte zu aktualisieren. –

+0

Bitte sehen Sie meine aktualisierte Antwort auf Ihren Kommentar hier. –

2

Ich denke, ein Timeout ist Ihre einzige echte Option hier. Grundsätzlich wird die Webseite nur für eine gewisse Zeit prüfen, bevor sie aufgibt. Ihre Statustabelle in Ihrer Datenbank sollte ein Feld "letzte Aktualisierung Zeitstempel" enthalten. Wenn der Status nicht "abgeschlossen" ist und die aktuelle Uhrzeit um X Sekunden größer ist als dieser Zeitstempel, geht der Webserver davon aus, dass der Prozess abgelaufen ist.

Verwandte Themen