Kann ich Architekt eines Web-App, so dass es entweder auf der Wolke oder einen dedizierten Server / VPS eingesetzt werden kann? Wie?

StackOverflow https://stackoverflow.com/questions/3049793

Frage

Gibt es eine Architektur vielseitig genug, dass es entweder zu einem Cloud-Server eingesetzt werden kann oder auf einen dedizierten (oder VPS) Server mit minimaler Veränderung? Natürlich wäre es Config-Änderungen, aber ich würde lieber den Rest der App konsistent verlassen, hält eine wartbar Code-Basis.

Die App würde ASP.NET & / oder ASP.MVC sein. Meine dev Umwelt ist VS 2010. Die Wolke kann oder nicht sein, Azure. Dedicated oder VPS würde Win Server 2008. Wahrscheinlich werden.

Es ist nicht eine öffentlich zugängliche Website. Der Web-app, die ich im Sinne haben würde ein separater Einsatz für jeden Kunden sein. Einige Kunden würden kleine, einige werden die App laufen auf einem lokalen Intranet statt auf der Web bevorzugen. Andere Kunden können den Cloud-Ansatz für eine Black-Box-Lösung bevorzugen. Die App kann für ein paar Stunden laufen oder es kann auf unbestimmte Zeit laufen, hängt es von dem Client und dem Projekt. Anders als die Apps Einsatzszenarien wäre mehr oder weniger identisch.

Wie Sie aus den Tags sehen können, ich bin eine nachrichtenbasierte Architektur unter der Annahme, wahrscheinlich ist das vielseitigste, aber ich bin auch, falsch über diese Dinge verwendet.

Alle Vorschläge und Hinweise willkommen in Bezug auf allgemeine Architekturen und auch spezifische Lösungen.

War es hilfreich?

Lösung

Ja, das ist möglich. Der Web-App istelf (MVC oder Webforms) wird wahrscheinlich die gleichen bleiben (mit Konfigurationsänderungen).

Wenn Sie Windows Azure als „Wolke“ Deployment-Option erwägen, dann die wichtigsten Dinge zu berücksichtigen sind:

Web App:

  • Management Session: Sie haben einen Web-Farm freundlichen Ansatz verwenden (zum Beispiel kann nicht Server-Seite Sitzungszustand im Speicher verwenden)
  • Bandbreite Verwendung: Wenn Sie in der Cloud bereitstellen, Latenzen sind höher als 100% auf dem Gelände, können Sie auch mehr bezahlen für mehr Bits, die Sie hin und her senden. Es gibt einen $ Anreiz für den Bau sparsamen apps.
  • Authentifizierungsmechanismus: Wenn Sie SSO anbieten wollen, müssen Sie wahrscheinlich den Ansprüchen basierten Ansatz bewegen (WIF verwenden). Dies ist vor allem etwas, das man isoliert und ändern kann (z integrierte Sicherheit von Windows auf dem Gelände, Ansprüche aus der Wolke)
  • Verwenden Sie alle Standard-Anbieter (zum Beispiel Profil, Mitgliedschaft, Tracing, etc.). Es gibt Win Azure Implementierungen von allen, so dass Sie nur sie ändern können.

Daten:

  • Der einfachste Ansatz für maximale Portabilität ist SQL Azure zu verwenden, die eine (große) Teilmenge von SQL Server ist.
  • Wenn Sie ein anderes Speichersystem verwenden (z Windows Azure-Tabellen, usw.), dann müssen Sie abstrakt, um alle Datenzugriff in der App (viel schwierige Arbeit)
  • Neben einigen Funktionen, die nicht in SQL Azure (wie SQLCLR, SQL Broker) gibt es Grenzen für die Datenbankgröße (max = 50 GB zur Zeit). Also, wenn Ihr Kunde den Datenbanken darüber hinaus gewachsen, müssen Sie die db partitionieren (die mehr Komplexität hinzufügt, aber es ist machbar)

Management:

  • Wenn Sie Standard-Methoden für die Protokollierung und Tracing (z Systems.Diagnostics, usw.) die App bleibt weitgehend gleich. Ihre Prozesse angepasst werden müssen (und Ihre Skripte, etc.)

Viel mehr Details sind verfügbar hier .

Ich weiß nicht, was Sie für die Nachrichtenwarteschlangen zu erwägen versuchen, aber das ist etwas, das man auch abstrakt (z MSMQ für lokale, Windows Azure-Warteschlange für die Cloud). Sie werden für einige semantische Unterschiede zu empfangen, aber es ist machbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top