webentwicklung-frage-antwort-db.com.de

Worker Role vs Web Job

Soweit ich weiß, führen beide kleine, wiederholbare Aufgaben in der Cloud aus.

Welche Gründe und in welchen Situationen möchte ich eine der anderen vorziehen?

65
orangesherbert

Einige grundlegende Informationen:

WebJobs eignen sich für einfache Arbeitselemente, die keine Anpassung der Umgebung erfordern, in der sie ausgeführt werden, und die nicht sehr viel Ressourcen verbrauchen. Sie eignen sich auch hervorragend für Aufgaben, die nur in regelmäßigen Abständen ausgeführt, geplant oder ausgelöst werden müssen. Sie sind billig und einfach einzurichten/auszuführen. Sie werden im Kontext Ihrer Website ausgeführt, dh, Sie erhalten dieselbe Umgebung, in der Ihre Website ausgeführt wird, und alle von ihnen verwendeten Ressourcen sind Ressourcen, die Ihre Website nicht verwenden kann.

Worker Roles eignen sich für ressourcenintensivere Workloads oder wenn Sie die Umgebung ändern müssen, in der sie ausgeführt werden (z. B. eine bestimmte .NET Framework-Version oder eine im Betriebssystem installierte Version). Arbeiterrollen sind teurer und etwas schwieriger einzurichten und auszuführen, bieten jedoch erheblich mehr Leistung.

Im Allgemeinen würde ich mit WebJobs beginnen und dann zu Worker Roles wechseln, wenn Sie feststellen, dass Ihre Arbeitslast mehr erfordert, als WebJobs bieten kann.

80
kwill

Wenn wir "Leistung" als Rechenleistung messen wollen, bedeutet dies in einer virtuellen Umgebung, dass sich wie viele Schichten auf der physischen Maschine (dem Metall) befinden. Der Benutzercode auf einer virtuellen Maschine wird über einem Hypervisor ausgeführt, der die physische Maschine verwaltet. Dies ist die dickste Schicht. Der Hypervisor versucht, wann immer möglich, einfach als Durchgang zum Metall zu dienen.

Es gibt grundsätzlich wenig Aufwand für WebJobs. Es ist eine Sandbox, das Betriebssystem wird gewartet und es gibt Dienste und Module, die sicherstellen, dass es ausgeführt wird. Der Anwendungscode ist jedoch im Wesentlichen so ähnlich wie in Worker-Rollen, da sie denselben Hypervisor verwenden.

Wenn Sie "Flexibilität" messen möchten, verwenden Sie Worker-Rollen, da diese nicht verwaltet oder in einer Sandbox gespeichert sind und daher flexibler sind. Sie können mehr Sockets verwenden, Ihre eigene Umgebung definieren, mehr Pakete installieren usw.

Wenn Sie "Funktionen" möchten, verfügt WebJobs über eine ganze Reihe von Funktionen. Einschließlich virtuelles Netzwerk zu lokalen Ressourcen, Staging-Umgebungen, Remote-Debugging, Triggering, Planung, einfache Verbindung zum Speicher- und Servicebus usw.

Die meisten Menschen möchten sich auf die Lösung ihres Problems konzentrieren und keine Zeit in die Infrastruktur investieren. Dafür verwenden Sie WebJobs. Wenn Sie feststellen, dass Sie mehr Flexibilität benötigen oder die Sicherheits-Sandbox Sie daran hindert, etwas zu tun, das auf keine andere Weise erreicht werden kann, wechseln Sie zu Worker Roles.

Es ist sogar möglich, hybride Lösungen zu erstellen, bei denen einige Teile in WebJobs und andere in Worker-Rollen ausgeführt werden. Dies ist jedoch nicht Gegenstand dieser Frage. (Hinweis: WebJobs SDK)

21
Jaime Espinosa

Bei der Auswahl eines Webjobs oder einer Worker-Rolle zu beachtende Punkte:

  • Eine Worker-Rolle wird selbst auf einer dedizierten VM gehostet, ein Web-Job wird in einem Web-App-Container gehostet.

  • Eine Worker-Rolle wird unabhängig skaliert, ein Web-Job wird zusammen mit dem Web-App-Container skaliert.

Web-Jobs eignen sich perfekt zum Abrufen von RSS-Feeds, zum Überprüfen und Verarbeiten von Nachrichten sowie zum Senden von Benachrichtigungen. Sie sind kompakt und kostengünstiger als Worker-Rollen, jedoch weniger leistungsfähig.

11
Karl Gjertsen