2010-11-24 11 views
0

Ich habe eine Webanwendung, mit der Benutzer das Foto hochladen können. Ich habe einen Windows-Dienst ausgeführt, der das hochgeladene Foto aufnimmt und auf verschiedene Größen zuschneidet. Dies wird in einem bestimmten Intervall ausgeführt. Das Foto wird für den Benutzer nach dem Beschneiden sichtbar. Wenn der Nutzer also das Foto hochgeladen hat und der Foto-Cropper noch nicht gestartet ist, kann er das Foto nicht sehen. Aufgrund dieses Verhaltens glaubt der Benutzer, dass beim Hochladen des Fotos ein Fehler aufgetreten ist, und es wird immer wieder hochgeladen.Best Practices zum Hinzufügen von Daten in die Warteschlange

Kann mir jemand einen Warteschlangenmechanismus vorschlagen, wo der Phototropfer sofort läuft, wenn der Benutzer die Fotos hochlädt, die in der Warteschlange stehen.

Ich benutze asp.net & C#.

Bitte lassen Sie mich wissen, wenn ich verwirre bin.

+0

Warum man ihn nicht eine Seite/a Warte zeigen Signal, und nachdem das Bild in Ordnung ist, laden Sie die Seite mit dem Bild neu? – Aristos

+0

für die meisten Fragen setze ich die Antworten durch Anklicken des Häkchens. Es gibt einige Fragen, auf die ich keine Antworten habe. Was kann ich mit diesen Fragen tun? – nimi

Antwort

2

Die Verwendung von NService-Bus ist die beste Option, denke ich.Mit NService-Bus können Sie eine Nachricht verarbeiten, sobald sie in der Warteschlange Avliable ist. Sie können Ihre NService-Anwendung auch als ein Fenster-Service hosten. NSerivice Bus

+0

Nservice vs MSMQ .. nach Ihnen wird mehr Leistung geben? – nimi

+0

schließlich entschied ich mich, Nservice Bus zu verwenden. Ich sollte in der Lage sein, die Warteschlange priorisieren zu schicken? Wie kann ich das machen? – nimi

+1

@Nimesh: Grundsätzlich ist die Idee, dass Sie eine Nachricht in einer Warteschlange mit NService-Bus aus Ihrer Web-Anwendung veröffentlichen müssen. Dann müssen Sie eine andere NService-Anwendung erstellen (im Grunde eine Klassenbibliothek, würden Sie sehen, wie das aus der Dokumentation zu tun), die die Warteschlange abonnieren wird. Diese Anwendung wird für die Verarbeitung und Verarbeitung der Nachricht verantwortlich sein, die Sie an die Warteschlange gesendet haben. – wizzardz

1

Die Microsoft Message Queue (MSMQ) ist nativ in .NET verfügbar. Sie können Ihre eigenen Typen übergeben und sie in Ihrem Windows-Dienst auslesen, solange Sie eine gemeinsame DLL haben, die eine gemeinsame Schnittstelle/die konkrete Implementierung enthält.

Offensichtlich muss es auf dem Server installiert werden, ist aber in der Regel Teil der Standardinstallation.

0

Persönlich denke ich, was Sie versuchen zu tun - ein Foto, das hochgeladen wird, zu croppen, sollte nicht zu lange dauern, und wie jemand auf den Kommentar zu der Frage vorgeschlagen, benötigen Sie den Aufwand für die Erstellung einer Infrastruktur Wo wird die Arbeit in eine Warteschlange gestellt und von einer anderen Anwendung out-of-process verarbeitet? Wird dies viel passieren (wie viele Foto-Beschneide-Anfragen pro Sekunde/Minute?). Stattdessen können Sie nicht einfach die Anfrage über AJAX an den Server senden, und eine Form von "Bitte warten" -Animation im Browser haben, bis die Anfrage schließlich zurückkommt und das Foto beschnitten ist?

Wenn Sie denken, dass Sie die Warteschlange Ansatz gehen müssen, dann würde ich MSMQ vorschlagen, weil es sehr einfach ist, mit zu arbeiten - siehe Beispielcode here

Verwandte Themen