Cloud Computing: Top 10 Windows Azure Bücher

Von Jürgen Mayrbäurl  Autor Feed 12. July 2011 15:30
Auf der Suche nach guten Büchern über Windows Azure für die bevorstehenden, langen Stunden am Strand während des Urlaubs? Mein persönlicher Favorit ist “Programming Windows Azure” aus dem O’Reilly Verlag. Eine Liste der Top 10 Windows Azure Bücher wurde von MicrosoftFeed soeben veröffentlicht. Daraus sollte doch jeder etwas nach seinem Geschmack und Interesse finden können. Für weitere Buchempfehlungen zum Thema Windows Azure sind wir auch immer sehr dankbar.

VPN in die Wolke - Azure Connect (3)– Azure Role Endpunkte hinzufügen

Von Max Knor Autor Feed 10. January 2011 16:40
Im dritten Teil geht es um die Anbindung von Azure Roles an das Azure Connect VPN. [More]

VPN in die Wolke - Azure Connect (2)– Lokale Endpunkte hinzufügen

Von Max Knor Autor Feed 10. January 2011 14:47
Wie kann man nun Azure Connect umsetzen? Im zweiten Teil der Serie erfahren Sie, wie Sie ihre lokalen Rechner in das Connect VPN hinzufügen können. [More]

VPN in die Wolke - Azure Connect (1)- Theorie

Von Max Knor Autor Feed 6. January 2011 19:27
In den meisten Projekten gibt es Teile, die NICHT in Windows Azure migriert werden können oder wollen. Beispiele dafür sind:
Wie können Sie diese lokalen Computer mit Windows Azure verbinden, ohne ihnen öffentliche IP Adressen z.B. in einer DMZ zu geben?

Deshalb gibt es ein neues Service auf der Azure Plattform, das eine IPSec basierte Verbindung zwischen einem Rechner innerhalb ihres Firmennetzwerkes und AZURE herstellt – das Ganze auf OSI-Schicht 3 basierend – also transparent für ihre Software. [More]

Single-Sign on mit Facebook, Live ID, Google ID,... für die eigene Webseite mit Azure Access Control Service

Von Max Knor Autor Feed 29. December 2010 01:45
Eigene Loginsysteme sind seit längerem schon zweite Wahl bei vielen Consumer-Webseiten. Der Grund: Die BesucherInnen wollen über Single-Sign on mit bestehenden Logindaten einsteigen, anstatt schon wieder eigene Username/Passwort Kombinationen erfinden und merken zu müssen.

In der Praxis ist diese häufige Anforderung jedoch nicht immer so leicht umsetzbar wie gedacht! Abhilfe schafft da nun das Windows Azure App Fabric Access Control Service (ACS). [More]

Cloud Computing: Azure Storage im Vergleich

Von Max Knor Autor Feed 27. October 2010 12:02
Unser Azure MVP Rainer Stropek hat auf seinem Blog ein interessantes Tutorial veröffentlicht, in dem er  die unterschiedlichen STORAGE Mechanismen von Windows Azure vergleicht: Queues SQL Azure Blob Storage Table Storage Was sind die Vorteil und Nachteile der jeweiligen Technologien? Rainer erklärt es in Video und Blog Form. Text & Sample Video   knom

Cloud Computing Tutorial #17 – Abschluss der Serie

Von Mario Meir-Huber Autor Feed 20. July 2010 22:34
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ Dies ist das letzte Post der Serie “Cloud Computing”. Dies bedeutet jedoch nicht, das keine Post zu diesem Thema mehr erscheinen werden. Weitere Posts sind jedoch nicht mehr aufbauend. Ich werde mich verstärkt um das Thema Cloud Computing widmen. Abschließend möchte ich noch mit einem häufig vorkommenden Vorurteil aufräumen. In vielen Gesprächen wurde festgehalten, das die Cloud primär ein Einsparungspotential mit sich bringt. Daher wirkt sich Cloud Computing stark auf die Finanzen aus. Dies ist jedoch nur ein kleiner Vorteil, welcher durch die Cloud entsteht. Vielmehr deckt die Cloud viele Bereiche ab. Wollen wir mal mit einem zentralem Bereich in Unternehmen beginnen: der Strategie. Hier hat die Cloud auch sehr viel gutes zu bieten. Viele Unternehmen haben große IT-Abteilungen. Damit müssen sich die Unternehmen Kompetenz in einem Bereich aufbauen, welcher oft nichts mit deren Kerngeschäft zu tun hat. Mal ehrlich, was will ein Pharmaunternehmen mit einer spezialisierten Dokumentenmanagement-IT? Durch Outsourcing kann sich das Unternehmen verstärkt auf deren Kernbereich konzentrieren. Cloud Computing bietet auch eine wesentlich höhere Flexibilität – wenn ein kleines Unternehmen in der Touristikbranche stark skaliert, so hinkt die IT eventuell oft nach. Server können nicht rechtzeitig beschafft und in stand gesetzt werden, Personal ist oft kaum vorhanden, … Über dies hinaus transferiert das Unternehmen auch das Risiko. Über so genannte Service Level Agreements wird vereinbart, was der Cloud-Anbieter zu leisten hat. Wird dies nicht eingehalten, so gibt es in vielen Fällen Geld zurück (hierfür wird keine Gewähr seitens der Verfasser gegeben). Auch für Unternehmen, welche Rechenzentren und Server erbauen bzw. Verkaufen haben viele Vorteile. Die Bauweise der Rechenzentren wird standardisiert und somit kostengünstiger. Ein weiterer Vorteil besteht in der Leistung des Anbieters. Zum einem sind die Leistungen, wie bereits vorher erwähnt, klar durch SLAs (Service Level Agreements) definiert. Ein weiterer Vorteil ist, das das anbietende Unternehmen eine hohe Kompetenz in diesem Bereich aufbauen kann – eine Kompetenz, welche bei on-premise nur teilweise erreicht werden kann. Wird mehr Leistung im Unternehmen benötigt, kann diese schnell und einfach abgerufen werden. Dies ist bei on-premise Lösungen nur sehr schwer bist gar nicht lösbar. Auch hinsichtlich der Personalengpässe ergeben sich Vorteile für Unternehmen, welche auf Cloud Computing Lösungen setzen. Die Personalprobleme, welche in der IT vorherrschen, können mittelfristig gelöst werden. Durch Cloud Computing wird deutlich weniger Personal in IT-Fachabteilungen benötigt. Das Personal wird bei Dienstleistungsunternehmen sitzen, selten jedoch im Unternehmen. Hier noch einmal die Zusammenfassung der letzten Artikel: Titel Link Cloud Computing Begriffe http://www.codefest.at/post/2009/12/09/1-Cloud-Computing-IaaS-PaaS-SaaS-Co-Begriffe-verstehen.aspx Überblick über die Microsoft Cloud Plattform http://www.codefest.at/post/2010/01/08/2-Die-Microsoft-Cloud-Plattform-Ein-Uberblick.aspx Vorteile von Cloud Computing http://www.codefest.at/post/2010/01/08/3-Warum-Cloud-Computing-Was-bringts-(Teil-1).aspx Vorteile von Cloud Computing #2 http://www.codefest.at/post/2010/01/08/4-Warum-Cloud-Computing-Was-bringts-(Teil-2).aspx Vorbereitung und Testen der Entwicklermaschine für Windows Azure http://www.codefest.at/post/2010/01/09/5-Vorbereitung-und-Testen-der-Entwicklermaschine-fur-Windows-Azure.aspx Überblick über die Windows Azure Plattform http://www.codefest.at/post/2010/01/11/6-e28093-Die-Windows-Azure-Services-Plattform-im-Uberblick.aspx Überblick über SQL Azure http://www.codefest.at/post/2010/01/15/7-e28093-SQL-Azure-im-Uberblick.aspx Was ist Microsoft PinPoint? http://www.codefest.at/post/2010/01/21/Cloud-Computing-Tutorial-8-e28093-Was-ist-Microsoft-PinPoint.aspx Microsoft Codename “Dallas” http://www.codefest.at/post/2010/01/31/Cloud-Computing-Tutorial-9-e28093-Microsoft-Codename-e2809cDallase2809d.aspx Nachlese MSDN Briefing http://www.codefest.at/post/2010/02/10/Cloud-Computing-Tutorial-10-e28093-MSDN-Briefing-vom-2612010.aspx Windows Azure Storage #1 http://www.codefest.at/post/2010/02/11/Cloud-Computing-Tutorial-11-e28093-Windows-Azure-Storage-Teil-1.aspx Windows Azure SDK Tools http://www.codefest.at/post/2010/02/17/Cloud-Computing-Tutorial-12-e28093-Grundlegendes-zu-den-SDK-Tools.aspx Windows Azure Storage #2 http://www.codefest.at/post/2010/02/25/Cloud-Computing-Tutorial-11-e28093-Windows-Azure-Storage-Teil-2.aspx Windows Azure Storage #3 http://www.codefest.at/post/2010/02/26/Cloud-Computing-Tutorial-14-e28093-Windows-Azure-Storage-Teil-3.aspx Windows Azure Storage #4 http://www.codefest.at/post/2010/03/22/Cloud-Computing-Tutorial-15-e28093-Windows-Azure-Storage-Teil-4.aspx Was kostet Cloud Computing http://www.codefest.at/post/2010/05/18/Cloud-Computing-Tutorial-16-e28093-Was-kostet-es.aspx Im diesem Sinne, Viel Spass mit SaaS, PaaS und IaaS,   Mario Meir-Huber Web: www.codeforce.at Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial #16 – Was kostet es?

Von Mario Meir-Huber Autor Feed 18. May 2010 20:57
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ Bis jetzt haben wir uns primär auf die technischen Seiten des Cloud Computing beschränkt. Wir haben in 15 Beiträgen über die Hintergründe, APIs und Architekturen für die Cloud gesprochen. Nun wollen wir uns einmal überlegen, was die wirtschaftlichen Hintergründe für Cloud Computing sind. Hier stellt sich vor allem die Frage, wann Cloud Computing Sinn macht und wann man eher auf traditionelle Angebote setzen soll. Die Frage ist hierbei jedoch, welche Kosten in der Wolke nun tatsächlich anfallen. Um Kosten auszurechnen, muss man zuerst zwischen einigen verschiedenen Anwendungsszenarien unterscheiden. Cloud Plattformen können einige verschiedene Auslastungen haben. Dies wäre zum einem die Auslastung für ein gewisses Intervall. Als Beispiel kann man eine Seite für ein Event nennen. Hierbei kommt die Auslastung auf dessen Höhepunkt kurz vor dem Event. Nach dem Event nimmt diese wieder ab oder ist überhaupt nicht mehr vorhanden. Je nach Event kann die Auslastung 2 Monate vor dem eigentlichen Event starten. Ferner kann diese Auslastung auch nur auf wenige Tage begrenzt sein. Dies kann bei komplexen Berechnungen der Fall sein. Hierbei spricht man von einer zeitlich begrenzten Auslastung über das Jahr weg. Des weiteren können Anwendungen so genannte Auslastungsspitzen haben. Diese wiederum können in zwei verschiedenen Bereichen auftreten. Diese sind entweder vorhersehbar oder unvorhersehbar. Vorhersehbare Auslastungen könnten beispielsweise stärkere Zugriffe auf ein Unternehmensinternes Portal sein. Diese könnten während den Hauptarbeitszeiten auftreten. Beispielsweise zwischen 8 und 17h. Schwieriger wird es nun jedoch bei unvorhersehbaren Zugriffen. Hierbei kann tagelang kaum ein Zugriff erfolgen, dann jedoch sehr häufige Zugriffe. Dies kann im Prinzip bei allen Plattformen auftreten. Der Nachteil bei Belastungsspitzen ist, das man für diese vorbereitet sein muss. Damit man auf solche Belastungen reagieren kann, muss ausreichend Serverkapazität vorhanden sein. Dies kostet natürlich einiges. Eine weitere Auslastungsform ist die ein stetiges Wachstum. Hierbei kann eine Plattform entweder Linear oder auch exponentiell wachsen. Dies ist beispielsweise bei Plattformen wie Facebook oder Twitter der Fall. Die Popularität dieser Dienste ist schier unmöglich gewachsen. Besonders Facebook hat sich zu Beginn sehr schwer getan, Geld für den Ausbau der Infrastrukturen aufzutreiben. Server-Hardware ist sehr teuer und muss natürlich auch irgendwie finanziert werden. Durch Cloud Computing hat man es sehr einfach, zu skalieren. Teure Serverhardware ist nicht notwendig. Twitter, welches Beispielsweise in der Cloud läuft, hat es hier sehr einfach, verglichen mit Facebook. Abhängig davon kann man nun entscheiden, ob man “Cloud-ready” ist. In den nächsten Posts werden wir uns die Kosten der Plattform Windows Azure mal wesentlich genauer ansehen, damit es klar wird wie man diese auch korrekt abschätzt. Ferner werden die Kosten mit traditionellen Plattformen verglichen. Mario Meir-Huber Web: www.meirhuber.de Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial - Vorbereitung und Testen der Entwicklermaschine für Windows Azure (Aktualisiert)

Von Mario Szpuszta Autor Feed 23. April 2010 12:58
In den ersten Teilen des Tutorials haben wir uns einen Überblick über die Möglichkeiten der Microsoft Cloud-Plattform und der Windows Azure Services Plattform verschafft. Nun ist es an der Zeit, die ersten praktischen Schritte zu beginnen. Als erstes nehmen wir uns die Vorbereitung der Entwickler-Maschine vor. Die Entwicklermaschine können Sie ohne zusätzlich anfallende Kosten vorbereiten. Sämtliche Werkzeuge und SDKs für Windows Azure funktionieren neben den kommerziellen Versionen auch mit den frei Verfügbaren Entwicklungswerkzeugen von Microsoft. Nachfolgende Schritt-für-Schritt Anleitung hilft bei der Einrichtung einer Entwicklungsmaschine zur Entwicklung von Cloud-Anwendungen für die Windows Azure Plattform! 1. Einrichten des Betriebssystems Sie benötigen Windows 7, Windows Server 2008 oder Windows Vista inklusive Service Pack 1 als Basisbetriebssystem. Installieren Sie eines dieser Betriebssysteme auf Ihrem Rechner (bei Vista nicht auf das Service Pack 1 vergessen). 2. Installation von IIS 7.0 (Web Server) Für die Entwicklung muss der Windows-eigene Web- und Application-Server IIS 7.x installiert sein. Sie können IIS über die Systemsteuerung unter dem Punkt "Turn Windows features on or off" installieren - siehe nachfolgende Screenshots. Stellen Sie sicher, dass die Feature-Liste genauso wie in nachfolgender Abbildung unter dem Punkt Internet Information Services dargestellt ausgewählt ist. Wichtig dabei ist, auch die WCF-Activation unter dem Punkt "Microsoft .NET Framework 3.5.1" nicht zu vergessen. Diese wird benötigt, um ordnungsgemäß WCF-Services in der Development Fabric laufen lassen zu können. 3. Installation von Visual Studio 2008 oder Visual Studio 2010 Zum Entwickeln benötigen Sie eine Entwicklungsumgebung. Wir empfehlen die Verwendung von Visual Studio 2010 Professional Edition oder höher zur Entwicklung von Cloud Anwendungen. Selbstverständlich können Sie für einfachere Anwendungen auch die frei verfügbare Visual Web Developer 2010 Express Edition verwenden. Auch die ältere Version von Visual Studio, Visual Studio 2008 inkl. SP1 wird für die Entwicklung von Cloud-Anwendungen mit Windows Azure unterstützt. Haben Sie eine der Vollversionen von Visual Studio 2008 installiert, vergessen Sie nicht auf das Visual Studio 2008 Service Pack 1. 4. Installation von SQL Server 2005 Express Edition oder höher - Empfohlen SQL Server 2008 R2 Um den Azure-Storage auf der lokalen Entwickler-Maschine simulieren zu können, benötigen Sie zur Entwicklung von Azure-Anwendungen den SQL Server in der frei verfügbaren Express Edition. Unterstützt werden alle Versionen ab dem SQL Server 2005. Wir empfehlen jedoch, die neueste Version des SQL Severs (2008) zu installieren. Am Besten, Sie installieren Sich SQL Server 2008 R2 inklusive den Management Tools zu SQL Server 2008 R2. 5. [optional] Nur für Visual Studio 2008 nötig - Installation einiger Hotfixes Verwenden Sie Visual Studio 2008 als Entwicklungsumgebung, empfehlen wir die Installation nachfolgender Hotfixes um einige kleine, aber lästige Fehler in der IDE auszubessern und die Stabilität zu verbessern. Für Visual Studio 2010 sind diese Hotfixes nicht erforderlich. Hotfix für den Visual Studio 2008 SP1 Debugger [nicht benötigt auf Windows 7 oder neuer] Hotfix zur Verbesserung der Visual Studio Stabilität [nur benötigt wenn CGI verwendet wird; z.B. mit PHP oder C++] Hotfix für das FastCGI-Modul von IIS 7.0 6. Installation des Windows Azure SDK und der Windows Azure Tools für Visual Studio Haben Sie alle Voraussetzungen installiert, dann ist es endlich soweit. Sie können die Tools und den SDK für Windows Azure installieren. Sie finden den Windows Azure SDK und die Tools hier als frei verfügbaren Download. Mit diesem wird die gesamte Dokumentation für Azure als auch neue Projektvorlagen für Visual Studio installiert. Außerdem wird eine sogenannte Development Fabric und ein Development Storage installiert. Diese simulieren die Windows Azure Umgebung auf ihrer lokalen Entwicklermaschine für die Entwicklung und für lokales Debugging. 7. [optional] Installation des Windows Azure AppFabric SDK Wenn Sie die Windows Azure AppFabric verwenden möchten, um verschiedene Cloud- und On-Premise-Systeme zu verbinden und zu integrieren, so empfehlen wir auch die Installation des AppFabric SDK. Den AppFabric SDK finden Sie hier zum Download - dieser installiert neuen WCF-Bindings und Behaviors sowie Dokumentation, sodass Sie die Azure AppFabric nutzen können. 8. Einrichtung des lokalen Development Storage Bevor Sie nun mit der Entwicklung starten können, müssen Sie den lokalen Development Storage konfigurieren. Visual Studio versucht dies zwar beim ersten Start eines Projektes automatisch, kann den Vorgang allerdings nicht abschließen, wenn sie keine Standardkonfiguration auf Ihrer Entwicklermaschine haben (z.B. eine andere Version von SQL Server außer SQL Server Express Edition). Daher ziehen wir eine manuelle Konfiguration des Development Storage Accounts vor. Der Development Storage wird mit dem Werkzeug dsinit.exe im Verzeichnis <system-drive>:\Program Files\Windows Azure SDK\v1.0\bin\devstore eingerichtet. Standardmäßig verwendet dsinit.exe jenen SQL Server mit dem Instanznamen SQLEXPRESS. Dieser wird standardmäßig für SQL Server Express Edition vergeben. Haben sie also die Express Edition installiert, reicht der gewöhnliche Aufruf von dsinit.exe in einem Visual Studio 2008 Command Prompt wie nachfolgende Abbildung zeigt: Haben Sie einen SQL Server unter einem anderen Instanznamen installiert, so müssen Sie den Schalter /sqlinstance:<ihr-instanzname> beim Aufruf von dsinit.exe verwenden. Meist haben Entwickler eine Developer Edition der Vollversion des SQL Severs installiert. In diesem Falle ist bei einer Standardinstallation kein Instanzname vergeben. Dann muss der Aufruf wie folgt lauten: dsinit.exe /sqlinstance:. (der Punkt hier ist kein Fehler;)). 9. Anlegen eines Testprojektes Endlich kann es losgehen - starten Sie Visual Studio als Administrator, wählen Sie aus dem Menü "File - New - Project" aus und selektieren Sie aus der Kategorie Cloud Service den einzig verfügbaren Eintrag Windows Azure Cloud Service wie nachfolgend dargestellt. Im nächsten Dialog müssen Sie auswählen, welche Anwendungsrollen in ihrem Projekt enthalten sein sollen. Wir möchten lediglich testen, ob unsere Konfiguration auch funktioniert. Daher fügen Sie im nachfolgenden Dialog eine ASP.NET Web Role (genauere Erklärungen dazu folgen in den nächsten Posts des Tutorials) zu Ihrer Solution hinzu (Auswahl links, Hinzufügen über die Pfeil-Buttons in der Mitte): Fügen Sie in dem erscheinenden Code ein paar HTML-Tags ein wie z.B. ein Header-Tag. Die Inhalte spielen im Moment keine Rolle, da wir lediglich die Konfiguration testen möchten. Ein Header-Tag in der Default.aspx Page des angelegten Projektes reicht vollkommen aus. 10. Testen des angelegten Projektes Kompilieren und straten Sie nun die Lösung durch Drücken der Taste F5. Ist alles korrekt konfiguriert, so startet Visual Studio automatisch den Development Storage und die Development Fabric. Damit wird eine Mini-Azure-Umgebung auf Ihrer Entwicklungsmaschine simuliert - Zugriff auf diese Simulationsumgebung haben Sie über entsprechende Symbole im System-Tray wie nachfolgend dargestellt. Mit einem Doppelklick öffnet sich eine einfache Management-Console für diese Simulationsumgebung mit Darstellung aller simulierten Instanzen (mehr dazu in den nächsten Tutorial-Einträgen). Öffnet sich ein Browser und sehen Sie in diesem erfolgreich ihre Anwendung dargestellt, so ist alles korrekt installiert und konfiguriert und sie können mit den richtigen Projekten loslegen! Liebe Grüße Mario Szpuszta http://www.mszcool.at/blog

Cloud Computing Tutorial #15 – Windows Azure Storage Teil 4

Von Mario Meir-Huber Autor Feed 22. March 2010 21:58
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ Nachdem wir uns nun bereits um den Zugriff auf den Tabellen Storage und jenen der Blobs gekümmert haben, wird es nun Zeit eine fertige Plattform zu erstellen. Hierfür wollen wir zuerst eine Datenquelle für das Projekt erstellen. Diese hat als Typ die DataSource von “FotoAlbumService.FotoAlbumDataSource”. Die Anzeige geschieht über eine DataList, wo zwei Labels für den Namen und der Beschreibung des Albums dienen.  <asp:ObjectDataSource ID="albumData" runat="server" TypeName="FotoAlbumService.FotoAlbumDataSource" SelectMethod="Albums" /> <asp:DataList ID="DataList1" runat="server" DataSourceID="albumData"> <ItemTemplate> <h1> <asp:Label ID="AlbumNameLabel" runat="server" Text='<%# Eval("AlbumName") %>' /> </h1> <br /> Description<br /> <asp:Label ID="AlbumDescriptionLabel" runat="server" Text='<%# Eval("AlbumDescription") %>' /> <p /> </ItemTemplate> </asp:DataList> Als nächstes wird der Upload für die Datei, welche an die Seite gesendet wurde, gestartet. Wichtig ist dann auch noch, das die Datenquelle wieder gebunden werden muss.  protected void Page_Load(object sender, EventArgs e) {     string album = string.Empty;     if(Request.QueryString.AllKeys.Contains("albumId"))     {         BtnAdd.PostBackUrl = "Uploader.aspx?albumId="+ Request.QueryString["albumId"];     }     if (Page.IsPostBack)     {         if (ImageAdder.HasFile && Request.QueryString.AllKeys.Contains("albumId"))         {             FotoAlbumService.FotoAlbumDataSource source = new FotoAlbumService.FotoAlbumDataSource();             album = source.AddImage(ImageAdder.FileName, Request.QueryString["albumId"],                 ImageAdder.PostedFile.ContentType, ImageAdder.FileContent);             source.Insert(new ImageEntity()             {                 Album = Request.QueryString["albumId"],                 Description = TxtDesc.Text,                 FotoName = TxtName.Text,                 Link = album             });             imageList.DataBind();         }     } } Damit man neue Alben erstellt, müssen diese über einen Namen und einer Beschreibung verfügen. Hierfür werden zwei Textfelder und ein Button eingefügt. <div> <table> <tr> <td>Name</td> <td> <asp:TextBox ID="TxtName" runat="server" Width="300px"></asp:TextBox> </td> </tr> <tr> <td>Description</td> <td> <asp:TextBox ID="TxtDescription" runat="server" Width="300px"></asp:TextBox> </td> </tr> <tr> <td></td> <td> <asp:Button ID="Button1" runat="server" Text="Create" /></td> </tr> </table> </div> In der Page_Load der Seite, welche für das Erstellen des Albums notwendig ist, wird noch ein Code eingefügt, welcher eine neue Entität für das Album erstellt. Ferner muss noch der Blob-Container für das Album erstellt werden.   protected void Page_Load(object sender, EventArgs e) { FotoAlbumDataSource source; FotoalbumEntity entity; if (Page.IsPostBack) { source = new FotoAlbumDataSource(); entity = new FotoalbumEntity() { AlbumDescription = TxtName.Text, AlbumName = TxtDescription.Text }; source.CreateAlbum(entity); source.CreatePublicBlob(entity.RowKey); Response.Redirect("Uploader.aspx?albumId=" + entity.RowKey); } } Schlussendlich soll die Übersichtsseite für für die Alben so aussehen: Auf dieser Seite kann man neue Alben erstellen: Hier fügt man ein neues Bild im Album ein: Diese Seite ist die Album-Übersichtsseite. Ich werde in den nächsten Tagen das ganze Sample noch aus SkyDrive veröffentlichen. Viele Grüße aus New York, Mario Meir-Huber Web: www.meirhuber.de Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial #14 – Windows Azure Storage Teil 3

Von Mario Meir-Huber Autor Feed 26. February 2010 09:00
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ In diesem Teil wollen wir uns um das Datenmodell kümmern, welches auch in ASP.NET als Datenquelle mit Datenbindung verwendet werden kann. Zu Beginn müssen wir in die “WebRole.cs” Code in die “OnStart”-Methode einfügen. Dies ist notwendig, damit die Konfigurationseinstellungen gelesen werden. Der Hintergrund ist nämlich das der Windows Azure Storage Client auch mit anderen Projekttypen zusammen arbeiten kann. Hierfür wird folgende Region eingefügt: #region Role Definition CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => { configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); RoleEnvironment.Changed += (sender, arg) => { if (arg.Changes.OfType<RoleEnvironmentConfigurationSettingChange>().Any ((change) => (change.ConfigurationSettingName == configName))) { if (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))) { RoleEnvironment.RequestRecycle(); } } }; }); #endregion Nun erstellen wir eine neue Klasse vom Typ “FotoAlbumDataSource”. Als erster werden die beiden Datenkontexte, “ImagesContext” und “FotoalbumContext” angelegt. Ferner wird auch noch ein “CloudStorageAccount” und ein “CloudBlobClient” benötigt. Im Konstruktor wird der “CloudStorageAccount” aus der Konfiguration geladen. Diese wurde bereits in einem früheren Post angelegt und trägt den Namen “DevStore”. Nun generiert man sich den CloudBlobClient, die Kontexte und erstellt den TableClient. Mit den TableClient werden nun die Tabellen erstellt, sofern diese noch nicht vorhanden sind. public class FotoAlbumDataSource { private ImagesContext imagesContext = null; private FotoalbumContext albumContext = null; private CloudBlobClient blobClient = null; private CloudStorageAccount account = null; public FotoAlbumDataSource() { account = CloudStorageAccount.FromConfigurationSetting("DevStore"); blobClient = account.CreateCloudBlobClient(); imagesContext = new ImagesContext(account.TableEndpoint.ToString(), account.Credentials); albumContext = new FotoalbumContext(account.TableEndpoint.ToString(), account.Credentials); CloudTableClient client = account.CreateCloudTableClient(); client.CreateTableIfNotExist(ImagesContext.TableName); client.CreateTableIfNotExist(FotoalbumContext.TableName); } Nun ist es auch notwendig, das Bilder in einem Container upgeloaded werden können. Hierfür erstellen wir eine Methode “CreatePublicBlob”. Hierbei wird ein neuer Container im Blob Storage mit einem bestimmten Namen erstellt. Zu Beginn fragen wir diesen Container ab und erstellen diesen, sofern der Container nicht bereits vorhanden ist. Danach werden noch die Zugriffseinstellungen mittels “BlobContainerPersmissions” gesetzt. Hierbei wird “PublicAccess” gewählt. Diese Regeln werden dann dem Container zugewiesen. public void CreatePublicBlob(string name) { CloudBlobContainer blobContainer = blobClient.GetContainerReference(name); blobContainer.CreateIfNotExist(); BlobContainerPermissions permissions = new BlobContainerPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; blobContainer.SetPermissions(permissions); } In weiterer Folge soll es auch möglich sein, Bilder in einem Container einzufügen. Hierfür brauchen wir eine Funktion, welche den Dateinamen, den Container, den Content-Type und den Stream bekommt. Zu beginn erstellen wir einen neuen Dateinamen mithilfe einer GUID, damit der selbe Dateiname nicht öfter vorkommen kann. Dann wird dem Container der Stream mit der Methode “UploadFromStream” eingefügt. Ferner müssen auch noch die Properties gesetzt werden. Als Rückgabewert verwenden wir nun den Pfad der Datei. public string AddImage(string fileName, string blobContainer, string contentType, Stream content) { string ext = Path.GetExtension(fileName); string filename = Guid.NewGuid().ToString() + ext; CloudBlobContainer container = blobClient.GetContainerReference(blobContainer); CloudBlob blob = container.GetBlobReference(filename); blob.UploadFromStream(content); blob.Properties.ContentType = contentType; blob.SetProperties(); return string.Format("{0}/{1}/{2}", account.BlobEndpoint.AbsoluteUri, blobContainer, filename); } Damit man auch Daten aus der Datenquelle abfragen kann, erstellen wir eine Funktion welche einen Select auf die Images ausführt. Hierbei müssen diese jedoch den Album-Key haben, damit diese auch tatsächlich zum Album gehören. doch ist hier Vorsicht geboten, wenn man die “Where”-Funktion verwendet. Wurde die Tabelle nämlich noch nicht benutzt, so würde hier eine Exception geworfen, da “Album” für die Entität nicht bekannt ist. Daher muss vorher überprüft werden, ob sich Entitäten in der Tabelle befinden. Dies geschieht mit einer Hilfsmethode “ContainsImages”, wo das erste Element der Tabelle abgefragt wird. Wenn dieses null ist, wird false zurück geliefert und es kann kein Vergleich erstellt werden. public IEnumerable<ImageEntity> Select(string key) { CloudTableQuery<ImageEntity> result; if (ContainsImages()) { result = (from r in imagesContext.Fotos where r.Album == key select r).AsTableServiceQuery<ImageEntity>(); } else { result = (from c in imagesContext.Fotos select c).AsTableServiceQuery<ImageEntity>(); } return result.Execute(); } private bool ContainsImages() { ImageEntity ent = imagesContext.Fotos.FirstOrDefault(); return ent != null; } Nun sollen noch die Alben abgefragt werden. Dies gestaltet sich wesentlich einfacher als die vorherige Methode. Hierbei werden alle Entitäten aus der Tabelle “Albums” abgefragt. public IEnumerable<FotoalbumEntity> Albums() { var results = (from c in albumContext.Albums select c).AsTableServiceQuery<FotoalbumEntity>(); return results.Execute(); } Der Vollständigkeit halber sollen auch noch Methoden fürs Löschen, Einfügen und erstellen von Alben angegeben werden. Hier muss man die Entität “attachen” und dann die Aktion auf jene durchführen. Wichtig ist auch noch, dies am Ende zu speichern. public void Delete(ImageEntity item) { imagesContext.AttachTo(ImagesContext.TableName, item, "*"); imagesContext.DeleteObject(item); imagesContext.SaveChanges(); } public void Insert(ImageEntity item) { imagesContext.AddObject(ImagesContext.TableName, item); imagesContext.SaveChanges(); } public void CreateAlbum(FotoalbumEntity album) { albumContext.AddObject(FotoalbumContext.TableName, album); albumContext.SaveChanges(); } Im nächsten Schritt können wir uns auch bereits der ASP.NET Seite widmen.   Mario Meir-Huber Web: www.meirhuber.de Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial #13 – Windows Azure Storage Teil II

Von Mario Meir-Huber Autor Feed 25. February 2010 20:31
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ Dies ist nun der Folgepost zu der Windows Azure Storage Einführung, welche ich bereits letzte Woche geschrieben habe. Nun wollen wir eine kleine Anwendung mithilfe des Table Storages und des Blob Storages schreiben. Hierfür erstellen wir uns eine Fotoalbum-Engine. Damit wir los legen können brauchen wir zu allererst ein neues Windows Azure Projekt. Hier fügen wir eine ASP.NET Rolle ein. Nun sind 2 Projekte im Explorer zu erkennen: Das erste Projekt (idealerweise mit dem Namen “PictureAlbum”) ist hierbei für die Service Einstellungen und die Service Definitionen zuständig. Das zweite Projekt ist die eigentliche Website. Hierbei gibt es jedoch zusätzlich noch die WebRole.cs. diese werden wir in einem späteren Post noch ansehen. Zu beginn benötigen wir gleich mal die WebRole1 im Ordner “Roles”. Dieser Ordner befindet sich im Projekt “CloudService1”. Da wir mit der lokalen Datenbank arbeiten wollen, müssen wir hier einige Einstellungen treffen. Durch Rechtsklick auf “WebRole1” können wir hierbei zu den Einstellungen gelangen. Hier wählen wir den Tag “Settings” aus und erstellen ein neues “Setting”. Dieses bezeichnen wir nun mit dem Namen “DevStore” und geben als Typ “Connection String” an. Nun müssen wir nur noch auf den neu erscheinenden Button klicken und die Standardeinstellung bestätigen. Damit ist die Development Storage verwendbar. Dies ist in Abbildung 2 und 3 ersichtlich.   Wenn dies erfolgreich durchgeführt wurde, können wir uns an die Erstellung der Entitäten machen. Eine Entität stellt hierbei eine einzelne Zeile in der Datenbank dar. Zu beginn wollen wir uns eine Entität für die Fotoalben erstellen. Entitäten erben stets von “TableServiceEntity”. Wir erstellen 2 Konstruktoren. Der erste, welche keine Paramter hat ruft den 2. Konstruktor auf. Dieser hat als Parameter den partitonKey und den rowKey. Beide Werte sorgen dafür das der Datensatz eindeutig ist. Wenn keine Daten geben sind, verwenden wir das Datum als PartionKey (man könnte auch eine Guid oder eine Kombination aus Guid und Datum verwenden). Jedoch soll die Partitionierung eher zusammenhängend sein. Dies erreichen wir durch das Datum. Als Rowkey verwenden wir einen Guid. Nun werden auch noch zwei Eigenschaften benötigt. Diese sind der Name des Albums und dessen Beschreibung. public class FotoalbumEntity : TableServiceEntity { public FotoalbumEntity() : this(DateTime.Now.ToShortDateString(), Guid.NewGuid().ToString()) { } public FotoalbumEntity(string partitionKey, string rowKey) : base(partitionKey, rowKey) { } public string AlbumName { get; set; } public string AlbumDescription { get; set; } } Nun wollen wir eine weitere Entität für die Bilder erstellen. Hier werden sämtliche Bilder angegeben, welche einem Album zugeordnet sind. Es wäre an sich nicht notwendig, die Bilder einzeln anzugeben da man über Blobs Metadaten verwenden kann. Jedoch wollen wir in diesem Beispiel vorerst die Tabellen für alles verwenden. Im ImageEntity brauchen nun das Album, den Namen des Fotos, die Beschreibung und den Link dafür. HINWEIS: Die “Verlinkung” auf das Album könnte man sich an sich auch sparen indem man als PartitionKey das den RowKey des Albums verwendet public class ImageEntity : TableServiceEntity {      public ImageEntity()          : this(DateTime.Now.ToShortDateString(), Guid.NewGuid().ToString())      {      }      public ImageEntity(string partitionKey, string rowKey)          : base(partitionKey, rowKey)      {      }      public string Album { get; set; }      public string FotoName { get; set; }      public string Description { get; set; }      public string Link { get; set; } } Nun wollen wir den Datenkontext entwickeln. Hierfür benötigen wir zu erst den Verweis auf “System.Data.Services.Client”. Im TableServiceContext werden unter anderem die Queries erstellt. Die Klasse “ImagesContext” (diese ist für die einzelnen Images zuständig) erbt hierbei von “TableServiceContext”. Im Konstruktor übergeben wir die Adresse des Storage Accounts und die Storage Credentials an die Basisklasse. Ferner benötigen wir auch noch eine Bezeichnung für unsere Tabelle. Hierbei verwenden wir “Pictures”. Um LinQ-Abfragen auf die Bilder durchführen zu können, erstellen wir einen Getter auf die Images. Dieser ist vom Typ “IQueryable<ImageEntity>” und ruft die Funktion “CreateQuery” auf. Ferner wird auch noch ein statischer getter auf den Tabellennamen benötigt. public class ImagesContext : TableServiceContext { private const string tableName = "Pictures"; public ImagesContext(string baseAdress, StorageCredentials credentials) : base(baseAdress, credentials) { } public IQueryable<ImageEntity> Fotos { get { return CreateQuery<ImageEntity>(tableName); } } public static string TableName { get { return tableName; } } } Und genau das selbe führen wir nun auch für den FotoalbumContext aus. Hierbei wird das jedoch auf “Albums” ausgeführt. public class FotoalbumContext : TableServiceContext { private const string tableName = "Albums"; public FotoalbumContext(string baseAdress, StorageCredentials credentials) : base(baseAdress, credentials) { } public IQueryable<FotoalbumEntity> Albums { get { return CreateQuery<FotoalbumEntity>(tableName); } } public static string TableName { get { return tableName; } } } Im nächsten Post werden wir dann eine Datenquelle erstellen, welche wir auch in ASP.NET einfach verwenden können. Mario Meir-Huber Web: www.meirhuber.de Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial #12 – Grundlegendes zu den SDK Tools

Von Mario Meir-Huber Autor Feed 17. February 2010 00:34
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ Mit dem Windows Azure SDK kann man Anwendungen für Windows Azure entwickeln. Hierfür gibt es verschiedene Anwendungstypen, welche erstellt werden können. Will man Windows Azure Anwendungen in Visual Studio erstellen, so müssen die Windows Azure Tools for Visual Studio installiert sein. Mit dem SDK kommen auch verschiedene Tools mit. Diese sind die Development Fabric und die Development Storage. Erstere ist für das verwalten der Rollen zuständig und simuliert eine Windows Azure Umgebung am lokalen Rechner. Mit der Development Fabric kann man die eigenen Anwendungen debuggen bevor man diese live schaltet. Die Development Storage ist nun für das speichern der Daten zuständig. Wenn wir uns zurück errinnern, gibt es drei verschiedene Möglichkeiten: Blobs, Tables und Queues. Für den Development Account ist eine SQL Server oder SQL Server Express Installation notwendig. Windows Azure erfordert eine Anmeldung am Storage Account. Hierfür ist der Account Name und der Account Key für den Windows Azure Development Storage Account notwendig. Diese sind: Account name: devstoreaccount1 Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw== Für jede mögliche Speicherart (Blob, Queue, Tabelle) gibt es nun einen gewissen Endpunkt. Dies ist eine URI in einem definierten Format. Zu Beginn kommt entweder http oder https, gefolgt von dem Kontonamen und dem Servicenamen. Danach kommt „.core.windows.net/“ gefolgt von dem Ressourcen-Pfad. Einfach dargestellt sieht dies folgendermaßen aus: <http|https>://<accountname>.<servicename>.core.windows.net/<ressourcenpfad> Hierbei ist der „accountname“ der Name des eigenen Services, „servicename“ entweder „blob“, „queue“ oder „table“. Der Ressourcenpfad ist auch wieder unterschiedlich, je nach Verwendungszweck. Bei einem Fotoalbum könnte das folgendermaßen aussehen: http://photostore.blob.core.windows.net/brasil/carnaval.jpg Diese Endpunkte müssen wir für die Development Storage jedoch nicht per Hand eingeben. Im nächsten Posting werden wir sehen wie das einfach konfiguriert werden kann. Wenn man nun ein neues Windows Azure Service erstellt und dieses startet, so werden die Development Fabric und Development Storage gestartet. Im Systray wird nun ein bläuliches Windows Zeichen angezeigt, mit wessen Hilfe man zu den Management Tools der Storage und Fabric kommt. In der Development Storage kann man die einzelnen Services deaktivieren, neustarten oder beenden. In der Development Fabric UI hat man die Möglichkeit, die einzelnen Rollen zu überwachen. Das SDK ist nun in drei Hauptbereiche gegliedert: Diagnostics kümmert sich hierbei um die Rollendiagnose. Dies ist vor allem bei Abstürzen, Memory Leaks und so weiter wichtig. Hierfür gibt es zwei wichtige Namespaces: Microsoft.WindowsAzure.Diagnostics und Microsoft.WindowsAzure.Diagnostics.Management. Im Namespace „Microsoft.WindowsAzure“ befinden sich allgemeine Klassen für den Storage Account und die Credentials (welche für die Verbindung notwendig sind). Storage deckt im SDK die Blobs, Tabellen und Queues ab. Hierfür sind zwei Namespaces wichtig: Microsoft.WindowsAzure.StorageClient und Microsoft.WindowsAzure.StorageClient.Protocol. ServiceRuntime ist nun für die Rollen und die Umgebung dessen zuständig. Hier befinden sich Klassen wie „RoleEntryPoint“ und „RoleEnvironment“. Nun sind auch die wichtigsten Grundlagen für die Arbeit mit dem Client geklärt und wir können uns im nächsten Post !!!ENDLICH!!! an den Quellcode wagen :) Mario Meir-Huber Web: www.meirhuber.de Twitter: www.twitter.com/mario_mh

Cloud Computing Tutorial #11 – Windows Azure Storage Teil 1

Von Mario Meir-Huber Autor Feed 11. February 2010 22:25
„Dieser Blog Post ist Teil der Serie „Cloud Computing mit Windows Azure“, alle bisher erschienenen Artikel finden Sie im ersten Posting der Serie!“ In ersten Teil zu Windows Azure Storage geht es um die Definition der Windows Azure Storage Konzepte und der Einführung in dem darauf aufbauendem Beispiel. Wie bereits im Überblick zu Windows Azure Services erwähnt gibt es drei wichtige Storage Konzepte. Diese sind Blobs, Queues und Tabellen. Bei Blobs handelt es sich hierbei um Binäre Objekte wie zum Beispiel Bilder oder Dokumente. Queues dienen zur Kommunikation zwischen zwei Rollen und Tabellen sind nicht-relationale Tabellenspeicher. Tabellen werden mit einem Subset der ADO.NET Data Services realisiert. Tabellen Wie bereits eingangs erwähnt sind die Windows Azure Tabellen nicht relational und basieren ferner auf den ADO.NET Data Services. Tabellen haben einzelne Zeilen, welche auch als Entitäten bezeichnet werden. Diese Entitäten haben nun wiederum Felder. Diese werden als Eigenschaft bezeichnet. Man kann mit den Tabellen zum Einem low-level über REST arbeiten, zum anderen gibt es jedoch eine Storage Library, welche bereits eine einfache API zur Verfügung stellt. Hierbei kann man auch einige LINQ-Abfragen verwenden. Aktuell werden jedoch nur die Operationen “FROM”, “WHERE” und “TAKE” unterstützt. Wichtig ist auch, das stets eine Entität selektiert wird, nicht jedoch eine einzelne Eigenschaft. Eine einzelne Entität kann bis zu 255 Eigenschaften haben. Hier sind jedoch bereits die drei Systemeigenschaften “PartitionKey”, “RowKey” und “Timestamp” inkludiert. Ferner darf eine Entität nicht mehr als 1 MB überschreiten. Ein PartitionKey dient der Verteilung der Tabelle. Daher sollte diese Eigenschaft für zusammenhängende Entitäten gewählt werden. Je mehr Entitäten den selben PartitionKey verwenden, umso schwieriger gestaltet sich die Verteilung der Datenbank im Hintergrund. Dies hat dann Auswirkungen wenn viele User auf die Tabelle zugreifen. Je besser man anhand des PartitionKey’s verteilt, umso schneller wird die Anwendung reagieren. Bei einem Fotoalbum-Service könnte man die Fotos anhand der Alben partitionieren. Ein RowKey dient der Identifizierung einer Entität. Eine Entität ist durch den RowKey und dem PartitionKey eindeutig. RowKey ist ein String, welcher bis zu 1 KB groß sein kann. Typischerweise wird hier ein GUID verwendet. Der Timestamp dient dem Server für Datumsinformationen. Dieser sollte nicht ausgelesen werden und kann auch nicht verändert werden. Eine Tabelle unterstützt verschiedene Datentypen. Diese sind in folgender “Tabelle” dargestellt: Datentyp Beschreibung byte[] Bytes bis zu einer maximalen Größe von 64 KB bool Boolean DateTime 64-bit UTC Time double 64-bit Guid 128-bit identifier int 32-bit Integer long 64-bit Integer String UTF-16 Es ist zwar möglich, bis zu 64KB an binären Daten in einer Entität zu speichern, jedoch sind hier klare Grenzen gesetzt. Will man etwa Bilder oder Dokumente speichern stößt man hier schnell an seine Grenzen. Um dies zu erreichen gibt es den Blob Storage. Blob Der Begriff “Blob” hört sich zu Beginn vermutlich etwas komisch an. Tatsächlich steht dieser für “Binary large object” und macht daher auch sinn. Als Blobs kann man nun verschiedenste Dinge behandeln. Dies können Bilder, Videos oder auch Dokumente sein. Ein Blob befindet sich immer in einem Container. Man kann für den Container die Zugriffsbestimmungen setzen. Somit kann man gewisse Daten frei zugänglich machen und andere wiederum nur bestimmten Personen zugänglich machen. Dies könnten zum Beispiel Fotoalben für registrierte Benutzer sein. Ein Blob kann ferner auch noch Metadaten enthalten. Diese sind im Form von Key-Value Paaren gespeichert. Dies könnten zum Beispiel Informationen über den Fotografen, Aufnahmedatum usw. sein. Queues Queues sind die einfachste Art des StorageClients. Diese haben eine einfache Kommunikationsaufgabe. Ein Anwendungsfall wäre zum Beispiel, wenn der Benutzer Bilder uploaded. Diese sollen dann in einer WorkerRole verkleinert werden. Die WebRole (ASP.NET) würde dann die WorkerRole benachrichtigen. Beispiel In den kommenden Posts wird hierzu ein einfaches Beispiel durchgespielt. Hierbei handelt es sich um einen Cloud-basierten Fotodienst. User haben die Möglichkeit, Alben zu erstellen und Fotos in diese Alben einzufügen. All dies wird mit einigen Entitäten und Blobs geregelt.

Cloud Computing Tutorial #10 – MSDN Briefing vom 26.1.2010

Von Mario Szpuszta Autor Feed 10. February 2010 10:52
Am 26.1.2010 haben wir in der MSDN-Briefing-Serie das neue Kalenderjahr mit einem Briefing zum Thema Cloud-Computing und Windows Azure eröffnet. Im Rahmen dieses MSDN Briefings haben wir unsere Sichtweise auf Cloud-Computing vorgestellt und haben einen teilweise tiefen Einblick in Aspekte der Windows Azure Plattform gegeben. Im Rahmen der Demos, die Sie unter nachfolgenden Links zum Download finden, haben wir Schritt-für-Schritt eine einfache, klassische ASP.NET Anwendung für einen Betrieb auf Windows Azure in der Cloud vorbereitet und auch um nützliche Funktionalität unter Nutzung von Cloud-Features wie Blob- und Table-Storage zwecks Skalierbarkeit erweitert. Die Präsentationsunterlagen zum Download finden Sie hier! Die Demo (schrittweise aufbereitet) finden Sie hier! Hier geht's zu den Aufzeichungen: Teil 1 (download), Teil 2 (download) und Teil 3 (download) Wer kostenlos und damit ohne gleich zahlen zu müssen selbst mal Live in der Windows Azure Cloud ausprobieren möchte, der sollte sich das Promotional Offer, welches es noch bis Juni geben wird, nicht entgehen lassen: 25 compute Hours / Monat gratis Wichtig: nachdem Sie getestet haben, entfernen Sie unbedingt ihre deployed Services alle vollständig sodass nicht automatisch verrechnet wird, wenn Sie die 25h überschreiten!!! 500 MB Storage pro Monat und 10.000 Storage Transactions pro Monat gratis 1 SQL Azure Web Database für 3 Monate gratis 500MB Transfer in unsere Data Center und aus unsere Data Center heraus (zwecks Datenmigration etc.) im Monat gratis Für das Promotional Offer können Sie sich auf http://www.microsoft.com/windowsazure/offers/ registrieren – siehe nachfolgender Screen-Shot (klicken Sie auf das Image um direkt auf das Microsoft Online Shopping Portal zu gelangen, um das Offer zu ersteigern – bitte beachten Sie, dass Sie eine Kreditkartennummer angeben müssen, um das Offer zu erlangen – diese wird NUR verwendet, wenn Sie die Gratis-Angebote wie oben und auf der Azure Home Page angeführt überschreiten, also z.B. mehr als 25 compute hours in einem Monat konsumieren):

Entwickler Wettbewerbe:

Wettbewerbe

Entwickler Events:

Developer Events

App für Windows 8, Windows Phone oder/und Azure? Diese Events zeigen Dir, wie es geht:

Mehr Information

Aktuelle Downloads

Visual Studio Downloads
 
Windows Azure Free Trial
Instagram
CodeFest.at on Facebook

Datenschutz & Cookies · Nutzungsbedingungen · Impressum · Markenzeichen
© 2013 Microsoft. Alle Rechte vorbehalten · BlogEngine.NET 2.7.0.0 · Diese Website wird für Microsoft von atwork gehostet.
powered by atwork