„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