2014-06-17 7 views
5

Ich schreibe eine Anwendung, die sowohl in der Cloud als auch in lokalen Rechenzentren bereitgestellt wird (für Kunden, die im Wesentlichen Vertrauen Sie der Cloud noch nicht mit ihren DatenAzure-Worker-Rolle für eine On-Premise-Lösung über Windows Azure Pack oder App Fabric

Wenn ich MS Azure verwenden möchte, kann ich die neuen Cloud-Projekttypen mit ihren Rollen "Web" und "Worker" verwenden. Aber wie kann ich Premise Variante?

muss ich meine eigenen Host schreiben (zB als Windows-Dienst)? Das ist nicht ideal, da es zusätzliche Code und den Einsatz erfordert.

Gibt es einen Azure-kompatiblen Ansatz, etwa im Windows Azure Pack oder im App Fabric-Artikel (ist App Fabric immer noch aktuell?), Der nicht die vollständige Einrichtung der privaten Cloud erfordert?

Antwort

4

Dies ist in Azure Pack nicht vorhanden.

Es ist nicht notwendig, eine Worker-Rolle in der Anlage zu versuchen. Alles, was Sie tun müssen, ist eine virtuelle Maschine, auf der Sie einen Windows-Dienst installieren.

Es ist einfach, einen Windows-Dienst mit Topshelf zu erstellen.

Die Bereitstellung eines Windows-Dienstes mit Topshelf ist eigentlich viel einfacher als Bereitstellungen für Worker Roles, weil Sie einfach die .exe ausführen, die Sie mit den install und dann mit den start-Argumenten erstellen.

Aus diesem Grund benötigen Sie tatsächlich weniger Code als für eine Worker-Rolle, da Sie kein zweites Wrapper-Projekt benötigen.

+0

Wenn Sie versuchen, denselben Code in der Cloud und vor Ort auszuführen, können Sie weiterhin eine Windows Service-Konsolenanwendung erstellen und sie dann in einer Webrolle bereitstellen (wie z Arbeitsrolle für alle Absichten und Zwecke), die etwas wie [AzureWebFarm.OctopusDeploy] (https://github.com/MRCollective/AzureWebFarm.OctopusDeploy) verwenden, oder Sie können Ihre Konsolenanwendung als Web-Auftrag bereitstellen (der wahrscheinlich in AzurePack verfügbar ist , und wenn nicht, dann läuft ein TopShelf .exe als normales .exe sowieso ohne Argumente). –

+0

Das Schöne daran ist, dass Sie nie auf ServiceRuntime verweisen müssen oder RoleEnvironment oder andere Azure-spezifische Dinge verwenden müssen - der Code ist unabhängig davon, wo er bereitgestellt wird :) –

0

Obwohl ich Windows Azure Pack noch nicht verwendet habe, bevor es diese Funktionalität intern zu bieten scheint, sind die Anforderungen und Setup-Prozeduren jedoch sehr intensiv und auf Unternehmen ausgerichtet.

Eine bessere Option besteht darin, eine Konsolenanwendung zu erstellen, die die OnStart() - und Run() - Funktionen für Ihre WorkerRole basierend auf dem Taskplaner Ihres Betriebssystems auslöst.

Nicht zu viel Arbeit meiner Meinung nach und Sie erhalten Ihre WorkerRoles wie es ist, aber fügen Sie einfach die Konsolen-App für alle On-Premise-Lösungen.

+0

Normalerweise verwenden Sie RoleEnvironment in der OnStart- und Run-Methode, damit dies nicht funktioniert. –

+0

Sie können den booleschen Wert RoleEnvironment.IsAvailable verwenden, um zwischen den von Ihnen ausgeführten Aktionen zu wechseln (z. B. Azure oder Local). –

+0

Ja. Dies erfordert jedoch die Installation des Azure SDK für eine On-Premise-Installation, die Sie normalerweise nicht benötigen. –

Verwandte Themen