Kategorien
Events

Event-Tipp: Cloud Developer Camp 2013, Frankfurt

Dieser Event-Tipp geht an alle Entwickler in Frankfurt und der RheinMainRocks Region. Am Samstag, 06. Juli 2013 findet im „Mövenpick Hotel Frankfurt City“ das kostenlose Cloud Developer Camp 2013 statt. Es richtet sich an alle Entwickler, die Cloud Computing für ihre Applikationen nutzen oder in Zukunft einsetzen wollen. Wer sich für die Cloud interessiert oder deren Potential für Entwickler verstehen will und mich darüber hinaus auch noch als Moderator live sehen möchte, sollte vorbeischauen.

Kein Marketing, Sales und HR!

Das englischsprachige Cloud Developer Camp konzentriert sich auf die Konzepte für die Entwicklung, das Deployment und dem Betrieb von skalierbaren Webseiten und Cloud Applikationen auf Basis von Ruby on Rails.

Das Camp möchte Entwickler in einer entspannten Atmosphäre zusammenbringen, um sich über die Entwicklung Cloud-basierter Web-Anwendungen als auch Ruby Applikationen auszutauschen. Hands-on Unterstützung können die Teilnehmer von anderen erfahrenen Cloud-Entwicklern erwarten.

Vorträge

Vorträge, Workshops und Lightning Talks über die Ruby Entwicklung in der Cloud bilden das Programm. Darunter u.a. mit den Sprechern:

  • Florian Gilcher, CEO (Asquera GmbH)
  • Constantin Gonzalez – Solutions Architect (Amazon Web Services)
  • Falk Köppe, Software Developer (Infopark)

Weitere Informationen und die Anmeldung

Das kostenlose(!) Cloud Developer Camp beginnt am 06.07.13 um 10:00 Uhr im Mövenpick Hotel Frankfurt City, Den Haager Straße 5, 60327 Frankfurt am Main. Die Teilnehmer werden neben den Vorträgen und Workshops mit Frühstück, Mittagessen und einem Barbecue am Abend versorgt.

Weitere Informationen und die kostenlose Anmeldung gibt es unter http://www.infopark.com/en/events/cloud-developer-camp/frankfurt.

Kategorien
News

Microsoft eröffnet Windows Store für Entwickler

Ungefähr ein Jahr nach der //build/ hat Microsoft nun den Windows Store offiziell für alle Entwickler in 120 Märkten weltweit für die Einreichung von Apps für Windows 8 geöffnet. Dies gab Antoine Leblond, Corporate Vice President Windows Web Services auf dem Windows Store for Developers Blog bekannt. Aktive MSDN Abonnementen erhalten über ihre Registrierung (Visual Studio Professional, Test Professional, Premium, Ultimate und BizSpark) einen kostenlosen Entwicklerzugang für 12 Monate. Für Studenten steht über DreamSpark ein ähnliches Angebot zur Verfügung. Ab Veröffentlichung von Windows 8 können Kunden in über 200 Ländern und Regionen der Welt Apps im Shop kaufen. Die Apps werden in über 109 Sprachen bereitstehen.

Microsoft eröffnet Windows Store für Entwickler

Apps als zentraler Bestandteil des Ökosystems

Der Zugang zum Internet und die Nutzung von Webangeboten unterliegen in den letzten Jahren einer enormen Veränderung. Internetservices werden immer häufiger über spezialisierte Apps benutzt – vor allem Nutzer mobiler Endgeräte wie Smartphones oder Tablets setzen auf Apps, die maßgeschneiderte Services liefern.

Auch im Desktopbereich nimmt die Bedeutung von Apps zu: Microsoft stützt diese Entwicklung in Richtung einer App-basierten Benutzung von Anwendungen mit der Einführung von Metro-Apps. In Verbund von Windows 8, Windows RT und Windows Phone 8 entsteht ein zusammenhängendes Ökosystem, in dem Apps dem Nutzer geräteübergreifend zur Verfügung stehen. Die Apps sind auf allen Formfaktoren, also auf einem Windows Phone, einem klassischen Windows PC oder einem Tablet wie dem Surface lauffähig. Gleichzeitig funktionieren sie Plattform übergreifend sowohl auf ARM-, als auch auf x86 Prozessoren.

Apps von Drittanbietern

Entertainment-App: dailyme TV

dailyme ist ein Berliner Startup, das seine App auch für iOS und Android entwickelt hat. Die kostenlose App bietet die Möglichkeit, TV-Sendungen von ARD, ZDF, ProSieben, Kabel1 u.a. direkt auf Windows Phone und Windows 8-Geräten zu sehen. Die Sendungen werden per WLAN oder UMTS automatisch geladen und können dann jederzeit und überall ohne Internetverbindung angesehen werden.

Productivity-Apps: Doo

Die App sammelt alle Dokumente – wie Kassenzettel, Mails oder Notizen – und legt sie nach intelligenter Analyse sicher und sortiert für den Nutzer in der Cloud ab. So lassen sie sich unmittelbar finden, teilen und gemeinsam bearbeiten. Mit intelligenten Texterkennungs- und Tagging Algorithmen organisiert doo Dokumente vollautomatisch. doo nutzt dabei modernste Verschlüsselungstechnologien und strengste Sicherheitsstandards, um die Dokumente zu schützen.

Commercial Apps für Business-Kunden

Der Zugriff auf notwendige Unternehmens-Apps – von E-Mail-Programmen und Software von unabhängigen Softwareherstellern bis hin zu unternehmenseigenen Apps, die von der IT-Abteilung entwickelt wurden – ist eines der wichtigsten Anwendungsszenarien für Geräte in Unternehmen. Für Enterprise-Kunden gibt es daher eigene Prozesse, die hier beschrieben werden.

Apps Entwicklung & Tools

Expression Blend

Mit Expression Blend kann jeder seine eigene Windows 8 App entwickeln. Expression Blend ist ein Interface-Designwerkzeug mit dem auch Nicht-Programmierer Apps erstellen können. Hierbei unterstützt eine Auswahl von Bausteinen, die direkt auf Benutzeroberflächen Elemente in Expression Blend angewendet werden können. Expression Blend 5 ermöglicht es, Layouts aus Bibliotheken auszuwählen und Komponenten wie die App Bar per Mausklick zur App hinzuzufügen. Auch Visual Studio 11 enthält viele Elemente, die die Entwicklung von Apps deutlich erleichtern. So wird zum Beispiel mit Hilfe von Widgets die Gestaltung der App enorm vereinfacht.

Programmiersprachen

Bei der Wahl der Programmiersprache hat der Entwickler eine breite Auswahl. Die Apps können sowohl in C/C++ oder C#/Visual Basic in Kombination mit XAML, als auch in Javascript kombiniert mit HTML/CSS entwickelt werden.

Zertifizierung und Monetarisierung von Apps

Über 600 Millionen upgrade-fähige, installierte Windows 7 Systeme und einem Einführungspreis von nur 39,99 US-Dollar für das Upgrade auf Windows 8 – diese Zahl zeigt die enorme Reichweite, auf die Windows 8 Apps-Entwickler setzen können. Wer jetzt seine App in den Store einstellt erreicht zudem eine hohe Sichtbarkeit für seine App. Der Windows Store wird weltweit verfügbar sein und Entwickler werden ihre Apps in 231 unterschiedlichen Märkten, in mehr als 100 Sprachen vertreiben können.

Kategorien
Events

Developer Conference Hamburg 2012: Gewinnspiel [Freikarte]

Vor ein paar Wochen hatte ich mit einem Event-Tipp bereits die Developer Conference Hamburg am 7. und 8. September 2012 im OTTO Forum vorgestellt. Hier hattet ihr bereits die Gelegenheit über einen Rabattcode ermäßigt an der Konferenz speziell für Webentwickler teilzunehmen. Nun gehen wir noch einen kleinen Schritt, denn ich habe eine Freikarte für euch.

Developer Conference Hamburg 2012: Gewinnspiel [Freikarte]

Developer Conference Hamburg 2012

Nach Angaben der Veranstalter – Hamburg@Work und die NetImpact Framwork GmbH – handelt es sich bei der Developer Conference Hamburg 2012 (07.-08. September 2012) um DAS Szene- und Networking Event im Norden. Im Forum der Otto GmbH haben alle Interessierten die Möglichkeit Praxiswissen und aktuelle Trends von Top-Referenten aus der Entwicklerszene zu erfahren und sich in lockerer Atmosphäre mit Gleichgesinnten austauschen.

Über 30 Veranstaltungsformaten zu abwechslungsreichen Themen wie Programmiersprachen, Mobile-Entwicklung, Performance-Optimierung, Projektmanagement, Facebook-Programmierung, IT- Management, Security, Datenbanken und vieles mehr sollen für eine volles Programm sorgen.

Weitere Informationen zum Programm, Inhalt und den Top- Speaker unter: http://www.developer-conference-hh.de

Gewinnspiel: Freikarte für die Developer Conference Hamburg 2012

Wir kommen zum Gewinnspiel und machen es kurz. Wer Interesse hat, kostenlos an der diesjährigen Developer Conference Hamburg teilzunehmen, der kommentiert einfach diesen Artikel und nennt mindestens 3 Gründe, warum er der Freikarte würdig ist. Sollte es mehr als ein Kommentar dazu geben, entscheidet das Orakel.

Kategorien
Events

Event-Tipp: Achtung Webentwickler – Developer Conference Hamburg 2012 [Rabattcode]

Nach einer erfolgreichen Premiere in 2011, findet die Developer Conference Hamburg am 7. und 8. September 2012 erneut im OTTO Forum statt. Spannenden Praxisvorträge, Workshops und Diskussionsrunden sollen Studenten, Berufseinsteiger, CTOs, IT-Leiter und Chefentwickler dazu animieren, ins Gespräch zu kommen. Die vom Unternehmen NetImpact veranstaltete Konferenz, zu der in diesem Jahr mehr als 400 Webentwickler erwartet werden, wird erstmalig vom Branchennetzwerk Hamburg@work unterstützt.

Event-Tipp: Achtung Webentwickler - Developer Conference Hamburg 2012

Von Entwicklern für Entwickler

Unter dem Motto „von Entwicklern für Entwickler“ geht es an den zwei Veranstaltungstagen um die aktuellen Entwicklungen und Trends in den Bereichen Performance-Optimierung, Programmiersprachen und Mobile-Entwicklung. Parallel zum Konferenzprogramm, das in einer feierlichen Abendveranstaltung im Mandalay im Hamburger Schanzenviertel endet, bietet der „Toolday“ am Samstag Entwicklern die Möglichkeit, neueste Software-Lösungen zu erleben.

Registrierung und Rabatt

Aktuell läuft die Anmeldung zum Early Bird von 249 Euro zzg. Mwst.. Um insbesondere jungen Talenten die Teilnahme an der Konferenz zu ermöglichen, steht Studenten ein Gratiskontingent von 75 Tickets zur Verfügung. Weitere Tickets für Studenten können für 49 Euro erworben werden.

Weitere Informationen und die Anmeldung gibt es unter www.developer-conference-hh.de und www.facebook.com/developer.conference.hamburg.

Als offizieller Medienpartner kann CloudUser seinen Lesern 10% Ermäßigung auf das Early Bird Ticket geben. Dazu nutzt ihr bei der Registrierung einfach den Code: dchh2012_CloudUser.


Bildquelle: Developer Conference Hamburg

Kategorien
News

Google liefert ebenfalls SDK für Google Drive

Mit dem Release von Google Drive und Google Drive for Google Apps steht für Entwickler ebenfalls ein SDK (Software Development Kit) bereit, mit dem auf Basis entsprechender APIs Anwendungen mit Google Drive integriert werden können

Google liefert ebenfalls SDK für Google Drive

Google Drive arbeitet vollständig integriert mit weiteren Google Services wie Google+, Docs und Gmail. Das SDK erlaubt dieses ebenfalls für andere Anwendungen von Drittanbietern. Bereits 18 Web Applikationen haben zum Start von Google Drive das SDK genutzt, um die eigene Integration in den Service vorzunehmen.

Google liefert ebenfalls SDK für Google Drive

Ganz im Google Stil gibt es natürlich ein Video, welches den Hintergrund und Nutzen des Google Drive SDK vorstellt.


Bildquelle: arstechnica.com

Kategorien
Tutorials

Amazon DynamoDB zusammen mit .NET nutzen

Amazon DynamoDB ist der aktuelle NoSQL Service der Amazon Web Services. Es handelt sich dabei um eine verwaltete, skalierbare und bei Bedarf nutzbare Datenbank inkl. bereitgestellten Durchsatz. Der Bereitgestellte Durchsatz ermittelt vorab die Anforderungen für den Lese-und Schreib-Durchsatz, auf deren Basis die Kosten berechnet werden.

Dieses Tutorial von cloudstory.in richtet sich an .NET Entwickler, die mit Amazon DynamoDB starten möchten. Es zeigt, wie eine Tabelle erstellt und darauf Operationen ausgeführt werden. Amazon DynamoDB bietet für .NET-Entwickler dazu eine Low-Level-API sowie eine Object-Persistence-API. Das Tutorial beschreibt, wie die Object-Persistence-API genutzt wird, um mit Amazon DynamoDB zu kommunizieren. Dazu wird als Beispiel eine DVD Bibliothek erstellt, mit der individuelle DVDs hinzugefügt, modifiziert, gesucht und gelöscht werden können.

Voraussetzungen

Schritt 1 – Einrichten der Umgebung

Zunächst wird in Visual Studio ein neues Projekt angelegt und die Umgebung eingerichtet.

Dazu muss eine Referenz zu der AWSSDK.dll hinzugefügt werden. Zu finden unter C:[*]Program Files[*]AWS SDK for .NET[*]bin.

[*] bitte durch einen SLASH ersetzen.

Anschließend wird eine neue Konfigurationsdatei für die Anwendung hinzugefügt. Als Standard-Dateiname kann App.config genommen werden.

Nun benötigen wir die AWS Anmeldedaten, also den AWS Access Key und Secret Key.

Wir fügen den folgenden „using“ Ausdruck hinzu.

using Amazon.DynamoDB.DataModel;

Und übernehmen den AWS Access Key und Secret Key in die App.config Datei.

Schritt 2 – Erstellen des DVD-Schema

Als Nächstes wird eine Klasse angelegt, die für das Amazon DynamoDB Schema benötigt wird.

Dazu legen wir eine neue Klasse mit dem Namen DVD.cs an.

Und fügen den folgenden „using“ Ausdruck hinzu.

using Amazon.DynamoDB.DataModel;

Wir fügen die folgenden Eigenschaften hinzu und überschreiben die ToString Methode.

public class DVD
{
    public string Title { get; set; }

    public int ReleaseYear { get; set; }

    public ListActorNames { get; set; }

    public string Director { get; set; }

    public string Producer { get; set; }

    public override string ToString(){
        return string.Format(@"{0} - {1} Actors: {2}", Title, ReleaseYear, string.Join(", ", ActorNames.ToArray()));}
    }
}

Nun müssen wir Amazon DynamoDB spezifische Attribute hinzufügen, um die Tabelle, den Hash Key und Range Key identifizieren zu können. Im Folgenden befindet sich der Code der endgültigen DVD.cs inkl. aller notwendigen Attribute.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Amazon.DynamoDB.DataModel;

namespace DVDsOnCloud
{
[DynamoDBTable("DVD")]
    public class DVD
    {
        [DynamoDBHashKey]
        public string Title { get; set; }

        [DynamoDBRangeKey]
        public int ReleaseYear { get; set; }

        [DynamoDBProperty]
        public List ActorNames { get; set; }

        public string Director { get; set; }

        public string Producer { get; set; }

        public override string ToString()
        {
            return string.Format(@"{0} - {1} Actors: {2}", Title, ReleaseYear, string.Join(", ", ActorNames.ToArray()));
        }
    }
}

Ein Hash Key ist vergleichbar mit dem Primary Key einer Tabelle. Es wird erwartet, dass dieser immer einzigartig ist und ist der am meisten genutzte Key für Anfragen. Der Range-Key ist ein sekundärer Schlüssel, der von DynamoDB verwendet wird, um einen sortierten Index-Bereich zu schaffen. Obwohl der Range Key optional ist, kann die Kombination von Hash Key und Range Key die Query-Performance optimieren.

Schritt 3 – Erstellen der DVDLibrary Hilfsklasse

Nun erstellen wir einen Wrapper für die DynamoDB API innerhalb einer Klasse, die von einem Client genutzt werden kann. Dazu erstellen wir eine neue Klasse mit dem Namen DVDLibray.cs.

Wir fügen die folgenden „using“ Ausdrücke hinzu.

using Amazon;
using Amazon.DynamoDB;
using Amazon.DynamoDB.Model;
using Amazon.DynamoDB.DataModel;
using Amazon.SecurityToken;
using Amazon.Runtime;

Schritt 4 – Hinzufügen der öffentliche Mitglieder und des Konstruktors

Nun fügen wir den Konstruktor zur DVDLibrary Klasse hinzu. Der Konstruktor verwendet den AWS Security Token Authentifizierung, um die Anmeldedaten zu überprüfen.

AmazonDynamoDB client;
public DVDLibrary()
{
    AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
    RefreshingSessionAWSCredentials sessionCredentials = new RefreshingSessionAWSCredentials(stsClient);
    client = new AmazonDynamoDBClient(sessionCredentials);
}

Schritt 5 – Initialisierung der Amazonas DynamoDB Tabelle

In diesem Schritt initialisieren wir Amazon DynamoDB Tabelle. Wir stellen sicher, dass die Tabelle nicht existiert und erstellen eine neue. Zudem konfigurieren wir die benötigten Parameter, wie den bereitgestellten Durchsatz, Hash Key und Range Key. Das Erstellen einer Amazon DynamoDB Tabelle dauert eine Weile. Zu dieser Zeit können keine weiteren Operationen durchgeführt werden. Daher wird die Methode solange blockiert, bis der Status der Tabelle in den Zustand „Active“ wechselt.

public void Init()
{
    List currentTables = client.ListTables().ListTablesResult.TableNames;
    if (!currentTables.Contains("DVD"))
    {
        CreateTableRequest reqCreateTable = new CreateTableRequest();
        CreateTableResponse resCreateTable=new CreateTableResponse();

        reqCreateTable.TableName = "DVD";

        reqCreateTable.ProvisionedThroughput = new ProvisionedThroughput();
        reqCreateTable.ProvisionedThroughput.ReadCapacityUnits=10;
        reqCreateTable.ProvisionedThroughput.WriteCapacityUnits=10;

        reqCreateTable.KeySchema = new KeySchema();

        reqCreateTable.KeySchema.HashKeyElement = new KeySchemaElement();
        reqCreateTable.KeySchema.HashKeyElement.AttributeName = "Title";
        reqCreateTable.KeySchema.HashKeyElement.AttributeType = "S";

        reqCreateTable.KeySchema.RangeKeyElement = new KeySchemaElement();
        reqCreateTable.KeySchema.RangeKeyElement.AttributeName = "ReleaseYear";
        reqCreateTable.KeySchema.RangeKeyElement.AttributeType = "N";

        resCreateTable = client.CreateTable(reqCreateTable);

        while (resCreateTable.CreateTableResult.TableDescription.TableStatus != "ACTIVE")
        {
            System.Threading.Thread.Sleep(5000);
        }
    }

}

Bei Amazon DynamoDB besteht die Möglichkeit, den Anforderungsdurchsatz festzulegen, den eine Tabelle erreichen soll. Der Service sorgt dann dafür, die Ressourcen bereitstehen, mit denen die erforderliche Durchsatzrate erreicht wird. Die Durchsatzanforderungen können in Bezug auf die Lesekapazität und Schreibkapazität in der Tabelle festgelegt werden. Dazu werden beim Erstellen einer Tabelle die erforderlichen Lese- und Schreibkapazitätsanforderungen angegeben. Auf dieser Basis partitioniert Amazon DynamoDB automatisch die entsprechende Anzahl von Ressourcen und reserviert diese, damit der Durchsatz erreicht wird.

Schritt 6 – Hinzufügen einer neuen DVD

Nun erstellen wir eine Funktion mit dem Namen AddDVD, die das DVD Objekt akzeptiert und ein Element in der Amazon DynamoDB erstellt.

public void AddDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    context.Save(dvd);
}

Schritt 7 – Ändern einer vorhandenen DVD

Als Nächstes erstellen wir eine Methode ModifyDVD, die versucht eine vorhandene DVD zu laden, diese zu modifizieren und anschließend zu speichern. Wird das Element nicht gefunden, kommt es zu einer Exception.

public void ModifyDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
    if(oDVD==null)
        new Exception("Non-existent DVD");
    context.Save(dvd);
}

Schritt 8 – Alle DVDs ausgeben

Um alle DVDs auszugeben, führen wir einen Table Scan durch.

public IEnumerable GetAllDVDs()
{
    DynamoDBContext context = new DynamoDBContext(client);
    IEnumerable alldvds=context.Scan();
    return alldvds;
}

Wie bei jeder anderen Datenbank auch, ist ein vollständiger Scan auf Amazon DynamoDB kostspielig. Diese Operation berücksichtigt nicht den Hash Key und Range Key und durchläuft jedes Element. Der Scanvorgang wird beendet, wenn die aggregierte Größe der gescannten Objekte 1MB übersteigt. Der Client muss die Operation für den Rest der Elemente dann erneut starten.

Schritt 9 – DVDs auf Basis des Titels und Erscheinungsjahrs suchen

Um nach den DVDs zu suchen, benötigen wir den Hash Key als auch den Range Key. Daher wird diese Methode beide Schlüssel nutzen, um die DVDs zu durchsuchen.

public IEnumerable SearchDVDs(string title, int releaseyear)
{
    DynamoDBContext context = new DynamoDBContext(client);
    IEnumerable alldvds = context.Query(title, Amazon.DynamoDB.DocumentModel.QueryOperator.Equal, releaseyear);
    return alldvds;
}

Schritt 10 – DVDs auf Basis des Titels suchen

Wenn das Erscheinungsjahr nicht zu den Suchkriterien gehören soll, nutzen wir nur die folgende Methode, die nur auf Basis des Titels sucht.

public List>SearchDVDByTitle(string title)
{
    DynamoDBContext context = new DynamoDBContext(client);
    QueryRequest reqQuery = new QueryRequest();
    reqQuery.TableName = "DVD";
    reqQuery.HashKeyValue = new AttributeValue() { S = title };

    QueryResponse resQuery = client.Query(reqQuery);

    return resQuery.QueryResult.Items;
}

Schritt 11 – Löschen der DVD

Mit der folgenden Methode löschen wir eine DVD.

public void DeleteDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
    if (oDVD == null)
        new Exception("Non-existent DVD");
    context.Delete(dvd);
}

Im Folgenden befindet sich der gesamte Quellcode für die DVDLibrary.cs.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Amazon;
using Amazon.DynamoDB;
using Amazon.DynamoDB.Model;
using Amazon.DynamoDB.DataModel;
using Amazon.SecurityToken;
using Amazon.Runtime;

namespace DVDsOnCloud
{
    class DVDLibrary
    {
        AmazonDynamoDB client;
        public DVDLibrary()
        {
            AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
            RefreshingSessionAWSCredentials sessionCredentials = new RefreshingSessionAWSCredentials(stsClient);
            client = new AmazonDynamoDBClient(sessionCredentials);
        }

        public void Init()
        {
            List currentTables = client.ListTables().ListTablesResult.TableNames;
            if (!currentTables.Contains("DVD"))
            {
                CreateTableRequest reqCreateTable = new CreateTableRequest();
                CreateTableResponse resCreateTable=new CreateTableResponse();

                reqCreateTable.TableName = "DVD";

                reqCreateTable.ProvisionedThroughput = new ProvisionedThroughput();
                reqCreateTable.ProvisionedThroughput.ReadCapacityUnits=10;
                reqCreateTable.ProvisionedThroughput.WriteCapacityUnits=10;

                reqCreateTable.KeySchema = new KeySchema();

                reqCreateTable.KeySchema.HashKeyElement = new KeySchemaElement();
                reqCreateTable.KeySchema.HashKeyElement.AttributeName = "Title";
                reqCreateTable.KeySchema.HashKeyElement.AttributeType = "S";

                reqCreateTable.KeySchema.RangeKeyElement = new KeySchemaElement();
                reqCreateTable.KeySchema.RangeKeyElement.AttributeName = "ReleaseYear";
                reqCreateTable.KeySchema.RangeKeyElement.AttributeType = "N";

                resCreateTable = client.CreateTable(reqCreateTable);

                while (resCreateTable.CreateTableResult.TableDescription.TableStatus != "ACTIVE")
                {
                    System.Threading.Thread.Sleep(5000);
                }
            }

        }

public void AddDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    context.Save(dvd);
}

        public void ModifyDVD(DVD dvd)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
            if(oDVD==null)
                new Exception("Non-existent DVD");
            context.Save(dvd);
        }

        public IEnumerable GetAllDVDs()
        {
            DynamoDBContext context = new DynamoDBContext(client);
            IEnumerable alldvds=context.Scan();
            return alldvds;
        }

        public IEnumerable SearchDVDs(string title, int releaseyear)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            IEnumerable alldvds = context.Query(title, Amazon.DynamoDB.DocumentModel.QueryOperator.Equal, releaseyear);
            return alldvds;
        }

        public List>SearchDVDByTitle(string title)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            QueryRequest reqQuery = new QueryRequest();
            reqQuery.TableName = "DVD";
            reqQuery.HashKeyValue = new AttributeValue() { S = title };

            QueryResponse resQuery = client.Query(reqQuery);

            return resQuery.QueryResult.Items;
        }


        public void DeleteDVD(DVD dvd)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
            if (oDVD == null)
                new Exception("Non-existent DVD");
            context.Delete(dvd);
        }
    }

 }

Der komplette Quellcode

Im Folgenden ist der vollständige Code des Clients zu finden, der auf die DVDLibrary zugreift.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DVDsOnCloud
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create the helper object
            DVDLibrary DVDLib= new DVDLibrary();

            //Initialize
            DVDLib.Init();

            //Create the DVD object
            DVD dvd = new DVD() { Title = "Businessman", ReleaseYear = 2011, ActorNames = new List { "Mahesh", "Kajal" }, Director = "Puri Jagannath", Producer = "Venkat" };

            //Add the new DVD
            DVDLib.AddDVD(dvd);

            //Print all the DVDs
            foreach (var odvd in DVDLib.GetAllDVDs())
                Console.WriteLine(odvd.Title);

            //Create a new DVD object with modified values
            DVD newdvd = new DVD() { Title = "Businessman", ReleaseYear = 2011, ActorNames = new List { "Mahesh Babu", "Kajal Agarwal" }, Director = "Puri Jagannath", Producer = "Venkat" };

            //Commit the changes
            DVDLib.ModifyDVD(newdvd);


            //Search for the DVD
            foreach (var dvd in DVDLib.SearchDVDs("Businessman",2011))
                Console.WriteLine(dvd.Director);

            //Delete the DVD
            DVDLib.DeleteDVD(newdvd);
         }
    }
}

Quelle: http://cloudstory.in