Was ist der Unterschied zwischen einer Azure-Website und einer Azure-Webrolle?


241

Was sind die wesentlichen Unterschiede zwischen den neuen Azure-Websites und den herkömmlichen Azure-Webrollen für eine ASP.NET MVC-Anwendung? Welchen Grund würde ich eine "Website" einer "Webrolle" vorziehen oder umgekehrt?

Nehmen wir an, ich würde in beiden Fällen die gleiche Kapazität benötigen (z. B. 2 kleine Instanzen). Die Preise scheinen vergleichbar zu sein, abgesehen von der Tatsache, dass für Websites in der Vorschau ein vorübergehender Rabatt von 33% gewährt wird.

Gibt es Dinge, die ich mit einer "Website" tun kann, die mit einer Webrolle schwierig oder unmöglich sind? Wird es beispielsweise einfach, mithilfe von "Websites" mehrere Websites in einem einzigen Satz von VMs zu platzieren? Verliere ich etwas mit einer "Website" gegen eine "Webrolle"? Fähigkeit zur Feinabstimmung von IIS? Möglichkeit, den Cache-Dienst lokal zu nutzen?


hatte die gleichen qs. Sie sollten es in ihren Dokumenten wirklich klar machen.
90abyss

Antworten:


213

Web-Rollen bieten Ihnen über Web Apps (ehemals Websites) hinaus mehrere Funktionen:

  • Möglichkeit, erhöhte Startskripts auszuführen, um Apps zu installieren, Registrierungseinstellungen zu ändern, Leistungsindikatoren zu installieren, IIS zu optimieren usw.
  • Möglichkeit, eine App in Ebenen aufzuteilen (z. B. Webrolle für das Front-End, Worker-Rolle für die Back-End-Verarbeitung) und unabhängig zu skalieren
  • Möglichkeit zum RDP in Ihre VM für Debugging-Zwecke
  • Netzwerkisolation
  • Spezielle virtuelle IP-Adresse, mit der Webrolleninstanzen in einem Cloud-Dienst auf IP-beschränkte virtuelle Maschinen zugreifen können
  • ACL-beschränkte Endpunkte (hinzugefügt in Azure SDK 2.3, April 2014)
  • Unterstützung für alle TCP / UDP-Ports (Websites sind auf TCP 80/443 beschränkt)

Web-Apps haben jedoch Vorteile gegenüber Webrollen:

  • Fast sofortige Bereitstellung mit Bereitstellungsverlauf / Rollbacks
  • Unterstützung für die Bereitstellung von Visual Studio Online, Github, lokalem Git, FTP, CodePlex, DropBox und BitBucket
  • Möglichkeit zur Einführung eines von zahlreichen CMS und Frameworks (wie WordPress, Joomla, Django, MediaWiki usw.)
  • Verwendung von SQL Database oder MySQL
  • Einfach und schnell von der kostenlosen Ebene über die gemeinsam genutzte Ebene bis zur dedizierten Ebene zu skalieren
  • Webjobs
  • Sicherungen von Website-Inhalten
  • Integrierte webbasierte Debugging-Tools (einfache Cmd / Powershell-Debug-Konsole, Prozess-Explorer, Diagnosetools wie Protokoll-Streaming usw.)

Mit den Rollouts im April 2014 und September 2014 gibt es jetzt einige Funktionen, die sowohl für Web-Apps als auch für Web-Rollen (und Worker-Rollen) gelten, darunter:

  • Staging + Produktionsslots
  • Platzhalter-DNS, SSL-Zertifikate
  • Visual Studio-Integration
  • Traffic Manager-Unterstützung
  • Unterstützung für virtuelle Netzwerke

Hier ist ein Screenshot, den ich aus dem Auswahlformular für die Website-Galerie entnommen habe: Geben Sie hier die Bildbeschreibung ein

Ich denke, Web Apps sind eine großartige Möglichkeit, schnell einsatzbereit zu sein und von freigegebenen zu reservierten Ressourcen zu wechseln. Sobald Sie darüber hinausgewachsen sind, können Sie zu Webrollen wechseln und diese nach Bedarf erweitern.


Neben Git + ftp ist PublishSettings (kann auch in WebMatrix 2 verwendet werden) ein weiteres großartiges
Kris van der Mast

18
Die Aufteilung in Ebenen ist kein Differenzierungsfaktor. Sie können Worker-Rollen mit Websites verwenden.
RickAndMSFT

4
In Bezug auf Ebenen: Bei Websites müssen Sie über einen externen Endpunkt eine Verbindung zu einem Worker herstellen, da Websites keine virtuellen Netzwerke unterstützen. Weiter: Sie müssten Ihren Code auf mehrere Bereitstellungen aufteilen (eine für Websites, eine für Cloud Service mit Worker-Rolle). Mit Cloud Service können Sie Ihren Code einfach in skalierbare Ebenen aufteilen und dann jede Ebene unabhängig voneinander skalieren und skalieren, während Sie über eine interne Kommunikation zwischen diesen Ebenen verfügen. Dies habe ich gemeint, als ich auf Ebenen als Unterscheidungsmerkmal von Cloud Services (Web / Worker) hingewiesen habe.
David Makogon

1
Ist das nicht etwas veraltet im Vergleich zu stackoverflow.com/a/10960755/56145 ?
Matt Kocaj

2
Mit der Webrolle können Sie auch Hintergrundverarbeitung auf denselben VMs durchführen
Boris Lipschitz

44

EDIT 2014: Für das, was es wert ist, sind viele Informationen in dieser Antwort nicht mehr korrekt - siehe Kommentare.

Fügen Sie der @ David-Antwort mehr hinzu:

Bei Windows Azure-Websites haben Sie keine Kontrolle über IIS oder Webserver, da Sie ein Ressourcen-Slice zusammen mit Hunderten anderer Websites auf demselben Computer verwenden und Ressourcen wie jede andere freigeben, sodass keine Kontrolle über IIS besteht.

Der große Unterschied zwischen einer freigegebenen Website und einer Azure-Webrolle besteht darin, dass eine Website als prozessgebunden betrachtet wird, während Rollen VM-gebunden sind.

Websites werden auf einer Inhaltsfreigabe gespeichert, auf die von allen "Webservern" in der Farm aus zugegriffen werden kann, sodass keine Replikation oder ähnliches erforderlich ist.

Windows Azure-Websites können keinen eigenen Hostnamen haben. Stattdessen müssen sie nur den Websitennamen .azurewebsites.net verwenden. Sie können die CNAME-Einstellung in Ihrem DNS-Anbieter verwenden, um Ihre Anforderung nur dann genau mit der vorherigen Windows Azure-Rolle weiterzuleiten, wenn sie im reservierten Modus ausgeführt werden . Die CNAME-Einstellung wird für freigegebene Websites nicht unterstützt.


AFAIK WebRoles erhalten auch keinen eigenen Hostnamen - sie sind alle rolename.cloudapp.net. Es sei denn, es gibt eine Funktion, die ich nicht kenne?
Brian Reischl

Können Sie nicht DNS verwenden, um einen CNAME-Alias ​​zu erstellen, der von www.IhreDomain.com auf websitename.azurewebsites.net verweist?
Bernard Vander Beken

Ich glaube, dass für WA-Websites nur Apps, die mit reservierten Instanzen (dedizierten VMs) ausgeführt werden, benutzerdefinierte Domänen zugeordnet werden können.
user94559

Ich denke, Scottgu hat kürzlich erwähnt, dass sie auch benutzerdefinierte Domains auf gemeinsam genutzten Instanzen unterstützen möchten.
Jeremy

19
Für das, was es wert ist, sind viele Informationen in dieser Antwort nicht mehr korrekt (obwohl es im Juni 2012 war): Websites können jetzt benutzerdefinierte Domains haben. Websites können in einem "reservierten" Modus ausgeführt werden, bei dem es sich im Wesentlichen um eine VM handelt, der jedoch vollständig verwaltet wird.
Jay Querido

34

Ich habe gerade einen umfassenden Blog-Beitrag zu diesem Thema unter http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/ veröffentlicht .

Ein Auszug aus meiner Schlussfolgerung: Wenn Sie eine enorme Größe benötigen, SSL-, asiatische oder westamerikanische Rechenzentren, eine nicht standardmäßige Konfiguration (von IIS, Ports, Diagnose, Sicherheitszertifikaten oder Startskripten), RDP oder kostengünstige Worker Roles ( kombiniert mit Ihrer Webrolle), dann müssen Sie sich vorerst an die Webrollen halten.

Ansonsten sind Websites eine gute Option!


14

Die Azure-Webrolle ähnelt einem virtuellen privaten Host. Sie erhalten eine VM, die als Webserver fungiert, und Sie besitzen diese VM-Instanz.

Azure-Websites sind wie ein elastischer gemeinsam genutzter Hostingdienst. Sie stellen Ihre App auf einem Webserver bereit, der nicht von Ihnen gesteuert wird und der auch die Websites anderer Benutzer verwaltet. Sie können Ihre Site (gegen Aufpreis) vergrößern und verkleinern, um sie elastischer zu gestalten, wenn sich Ihre Ressourcenanforderungen ändern.


6

Es gibt noch ein weiteres Szenario: Nachdem diese 500 Ausnahmen beseitigt wurden, haben sie nichts über die Fähigkeit von Azure-Websites gesagt, Platzhalter-CNAME zu verarbeiten. Einige von uns verwenden Nates Web Role Accelerator in Cloud Services, da ein einzeiliger Hack Wildcard-Subdomain-Funktionen in Nates Software bereitstellt. Wir können diese Wildcard-Subdomain-Apps erst verschieben, wenn wir wissen, dass Azure-Websites damit umgehen können. Wenn dies niemals möglich sein wird, wird dies auf der Seite der Webrolle als positiv eingestuft. Bemerkenswert ist auch, dass ich bei genau gleichen Preisen (nach Ablauf des Vorschau-Rabattes) nicht sicher bin, ob ich meinen Zugriff auf RDC und Event Viewer aufgeben möchte (um nur zwei Dinge zu erwähnen).


6

Azure-WebsitesMit dieser Option können Sie schnell hochskalierbare Websites in Azure erstellen. Sie können das Azure-Portal oder die Befehlszeilentools verwenden, um eine Website mit gängigen Sprachen wie .NET, PHP, Node.js und Python einzurichten. Unterstützte Frameworks sind bereits bereitgestellt und erfordern keine weiteren Installationsschritte. Die Azure-Website-Galerie enthält viele Anwendungen von Drittanbietern wie Drupal und WordPress sowie Entwicklungsframeworks wie Django und CakePHP. Nach dem Erstellen einer Website können Sie entweder eine vorhandene Website migrieren oder eine vollständig neue Website erstellen. Websites machen die Verwaltung der physischen Hardware überflüssig und bieten mehrere Skalierungsoptionen. Sie können von einem gemeinsam genutzten mandantenfähigen Modell in einen Standardmodus wechseln, in dem dedizierte Maschinen eingehenden Datenverkehr bedienen. Mit Websites können Sie auch andere Azure-Dienste integrieren. wie SQL-Datenbank, Service Bus und Speicher. Mit der Azure WebJobs SDK-Vorschau können Sie die Hintergrundverarbeitung hinzufügen. Zusammenfassend lässt sich sagen, dass Azure-Websites die Konzentration auf die Anwendungsentwicklung erleichtern, indem sie eine Vielzahl von Sprachen, Open Source-Anwendungen und Bereitstellungsmethoden (FTP, Git, Web Deploy oder TFS) unterstützen. Wenn Sie keine speziellen Anforderungen haben, für die Cloud Services oder virtuelle Maschinen erforderlich sind, ist eine Azure-Website höchstwahrscheinlich die beste Wahl.

Cloud-ServicesMit dieser Funktion können Sie hochverfügbare, skalierbare Webanwendungen in einer umfangreichen PaaS-Umgebung (Platform as a Service) erstellen. Im Gegensatz zu Websites wird ein Cloud-Dienst zuerst in einer Entwicklungsumgebung wie Visual Studio erstellt, bevor er in Azure bereitgestellt wird. Frameworks wie PHP erfordern benutzerdefinierte Bereitstellungsschritte oder Aufgaben, mit denen das Framework beim Start der Rolle installiert wird. Der Hauptvorteil von Cloud Services ist die Fähigkeit, komplexere mehrschichtige Architekturen zu unterstützen. Ein einzelner Cloud-Dienst kann aus einer Frontend-Webrolle und einer oder mehreren Worker-Rollen bestehen. Jede Ebene kann unabhängig skaliert werden. Es gibt auch ein erhöhtes Maß an Kontrolle über Ihre Webanwendungsinfrastruktur. Sie können beispielsweise einen Remotedesktop auf den Computern ausführen, auf denen die Rolleninstanzen ausgeführt werden.

Virtuelle MaschinenMit dieser Option können Sie Webanwendungen auf virtuellen Maschinen in Azure ausführen. Diese Funktion wird auch als Infrastructure as a Service (IaaS) bezeichnet. Erstellen Sie neue Windows Server- oder Linux-Computer über das Portal oder laden Sie ein vorhandenes Image einer virtuellen Maschine hoch. Mit virtuellen Maschinen haben Sie die größte Kontrolle über das Betriebssystem, die Konfiguration sowie die installierte Software und Dienste. Dies ist eine gute Option für die schnelle Migration komplexer lokaler Webanwendungen in die Cloud, da die Computer als Ganzes verschoben werden können. Mit virtuellen Netzwerken können Sie diese virtuellen Maschinen auch mit lokalen Unternehmensnetzwerken verbinden. Wie bei Cloud Services haben Sie Remotezugriff auf diese Computer und können Konfigurationsänderungen auf Verwaltungsebene vornehmen. Im Gegensatz zu Websites und Cloud-Diensten Sie müssen die Images und die Anwendungsarchitektur Ihrer virtuellen Maschine vollständig auf Infrastrukturebene verwalten. Ein grundlegendes Beispiel ist, dass Sie Ihre eigenen Patches auf das Betriebssystem anwenden müssen.

Siehe aktualisierten und umfassenden Vergleich unter diesem Link: http://azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/


4

Azure-Websites, Web Worker und virtuelle Maschinen sind drei verschiedene Computeransätze, die unter Windows Azure verfügbar sind. Sie unterscheiden sich in der Kontrolle und in den Verantwortlichkeiten:

  • Azure-Websites verfügen über die niedrigste Kontrollebene, aber es ist Ihnen egal, ob Sie die virtuelle Maschine und IIS im Gesundheitszustand beibehalten, da Azure-Inhalte dies für Sie erledigen
  • Web-Rollen geben Ihnen mehr Kontrolle (Verkehrsmanager, Remotedesktop), aber mehr Verwaltung ist auf Ihrer Seite möglich, was bedeutet, dass Sie beispielsweise über Remotedesktop etwas kaputt machen können
  • Mit virtuellen Maschinen haben Sie die volle Kontrolle über VM, sodass Sie den größten Verwaltungsaufwand benötigen.

Es gibt keine beste Wahl, da dies davon abhängt, welche Kontrollebene Sie benötigen, welche Funktionen Sie benötigen und welche Azure-Elemente beibehalten werden sollen. Und es ist ein großes Thema ..

In diesen Artikeln finden Sie weitere Informationen, um eine fundiertere Auswahl zu treffen:

Es läuft auf einen Kompromiss zwischen Benutzerfreundlichkeit und Funktionen hinaus.


3

Zwei weitere Dinge, die ich fand, waren die Kosten für das Abrufen von SSL für eine benutzerdefinierte Domain-Site und Konfigurationen mit mehreren Mandanten.

Für Websites müssen Sie monatlich zusätzlich zur Standardinstanz bezahlen (kleine Instanz ist die billigste Option). Dies bedeutet, dass https ~ 70 / Monat für eine kleine Instanz plus ~ 41 / Monat für SSL kostet, das alle Browser unterstützt, um eine benutzerdefinierte Domain zu erhalten.

Für WebRole können Sie eine XS-Instanz herunterladen und kostenlos Ihr eigenes SSL hinzufügen. Dies bedeutet ~ 15 US-Dollar pro Monat und Sie haben eine benutzerdefinierte Domain mit SSL.

Informationen zur Website mit mehreren Mandanten finden Sie unter CNure Dynamic Wildcard CName für mehrere Mandanten


1

Eine Webrolle ist eine virtuelle Maschine, die mehrere Websites hostet


2
Nicht ganz genau. Sie können mehrere Websites in einer Webrolle hosten, aber Webrollen gehen weit darüber hinaus, da es sich um Windows Server-VMs handelt. Sie können festlegen, dass überhaupt keine Websites ausgeführt werden und nur Hintergrundaufgaben, REST-Endpunkte, Datenbankserver usw. ausgeführt werden (IIS muss nicht verwendet werden, und Sie können es sogar deaktivieren). Und vergessen Sie nicht, dass sie staatenlos sind, wodurch sie sehr einfach zu skalieren sind.
David Makogon

@DavidMakogon Also kann ich auch sagen, dass Webrollen tatsächlich einige Aufgaben ausführen, aber da sie das HTTP-Protokoll verwenden, wird es als "WEB" -Rolle bezeichnet, und da es dieses Protokoll unterstützt, unterstützt es auch Websites, aber das ist nicht das primäre Ziel so wie?
Aditya Bokade

@AdityaBokade Versuchen Sie nicht, mehr darüber zu lesen: Der Name ist ein Relikt aus der Zeit, als Azure zum ersten Mal gestartet wurde, als Webrollen die einzige Möglichkeit waren, eine nach außen gerichtete Anwendung zu hosten (Worker-Rollen hatten keine externen Endpunkte und es gab nichts anderes - keine VMs, keine Web Apps). Web- (und Worker-) Rollen sind zustandslose virtuelle Windows-Maschinen mit einer speziellen Verpackung für Ihren Code und Ihre Startskripte. Es wird nicht durch die Unterstützung von http definiert: Sie können mit externen Ressourcen über http (s), tcp, udp oder gar nichts kommunizieren. Das ist wirklich alles.
David Makogon

0

Dies ist eine häufig gestellte Frage, und ich möchte einen Auszug aus msdn herausgeben.

Zugriff auf Dienste wie Caching, Service Bus, Speicher, SQL Azure-Datenbank - Website: Ja WebRole: Ja

Unterstützung für ASP.NET, klassisches ASP, Node.js, PHP-WebSite: Ja WebRole: Ja

Freigegebener Inhalt und Konfiguration - Website: Ja Webrolle: Nein

Stellen Sie Code mit GIT, FTP-WebSite bereit: Ja WebRole: Nein

Fast sofortige Bereitstellung - WebSite: Ja WebRole: Nein

Integrierte MySQL-as-a-Service-Support-Website: Ja WebRole: Ja

Mehrere Bereitstellungsumgebungen (Produktion und Staging) - Website: Nein WebRole: Ja

Netzwerkisolation-WebSite: Nein WebRole: Ja

Remotedesktopzugriff auf Server-WebSite: Nein WebRole: Ja

Möglichkeit zum Ausführen von Programmen mit erhöhten Berechtigungen - WebSite: Nein WebRole: Ja

Möglichkeit zum Definieren / Ausführen von Startaufgaben - Website: Nein WebRole: Ja

Möglichkeit zur Verwendung nicht unterstützter Frameworks oder Bibliotheken-WebSite: Nein WebRole: Ja

Unterstützung für Windows Azure Connect / Windows Azure-Netzwerkwebsite: Nein WebRole: Ja

Weitere Informationen finden Sie unter folgendem Link: http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to -use-which.aspx

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.