Ok, ein bisschen Hintergrund hier. Ich habe eine große Web-Anwendung (MVC3), die alle Arten von unwichtigem Zeug macht. Ich brauche diese Webanwendung, um Ad-hoc-Quartz.NET-Jobs in einer Oracle-Datenbank einplanen zu können . Dann möchte ich, dass die Jobs später über einen Windows-Dienst ausgeführt werden. Idealerweise würde ich sie gerne in regelmäßigen Intervallen einsetzen, aber mit der Option, Jobs über die Web-App hinzuzufügen.
Grundsätzlich ist die gewünschte Architektur eine Variation davon:
Web app & lt; - & gt; Quartz.NET & lt; - & gt; Datenbank & lt; - & gt; Quartz.NET & lt; - & gt; Windows-Dienst
Was ich bisher programmiert habe:
Und ein paar wichtige Hinweise:
Nun, ein paar Fragen:
Es wird ein Kopfgeld für diese Frage geben, sobald es dazu berechtigt ist. Wenn die Frage vorher zufriedenstellend beantwortet wird, werde ich das Kopfgeld immer noch dem Plakat der Antwort zuerkennen. Also, auf jeden Fall, wenn Sie hier eine gute Antwort geben, bekommen Sie eine Prämie.
Ich werde versuchen, Ihre Fragen in der Reihenfolge zu beantworten, in der Sie sie haben.
Ja, das ist möglich. Es ist eigentlich eine übliche Art, mit Quartz.Net zu arbeiten. Sie können auch eine ASP.Net MVC-Anwendung schreiben, die Quartz.Net-Scheduler verwaltet.
Architektur. Im Idealfall und auf hoher Ebene verwendet Ihre MVC-Anwendung die Quartz.Net-API, um mit einem Quartz.Net-Server zu kommunizieren, der als Windows-Dienst irgendwo installiert ist. Quartz.Net verwendet Remoting, um remote zu kommunizieren, so dass alle Einschränkungen der Verwendung von Remoting gelten (wie es in Silverlight nicht unterstützt wird, usw.). Quartz.Net bietet eine Möglichkeit, es als Windows-Dienst sofort zu installieren. Es gibt also nicht viel zu tun, außer dass der Dienst selbst so konfiguriert wird, dass er (in Ihrem Fall) einen AdoJobStore verwendet und aktiviert Remoting. Es gibt einige Vorsichtsmaßnahmen, die bei der ordnungsgemäßen Installation des Dienstes zu beachten sind. Wenn Sie dies noch nicht getan haben, werfen Sie einen Blick auf in diesem Post .
Intern möchten Sie in Ihrer MVC-Anwendung einen Verweis auf den Scheduler erhalten und ihn als Singleton speichern. Dann planen Sie in Ihrem Code Jobs und erhalten Informationen über den Scheduler über diese einzigartige Instanz. Sie könnten etwas wie folgt verwenden:
%Vor%Dieser Code richtet Ihren Quart.Net-Client ein. Um dann auf den Remote-Scheduler zuzugreifen, rufen Sie einfach
auf %Vor%Abfrage Hier ist ein Beispielcode, um alle Jobs vom Scheduler zu bekommen:
%Vor%Sie können diesen Code auf Github
sehenTags und Links c# windows-services oracle quartz.net cron