Cloud Computing Anbietervergleich
Anwendungsfall ist es außerdem nötig, dass eine Nachricht über die neue Datei versendet wird. Das geschieht durch den eingangs erstellten CloudMessenger. Hierfür wird eine neue Nachricht als Klasse vom Typ ResizeImageMessage erstellt und versendet ( Listing 1.12 ).
private void InsertImageIntoTableAndSendMessage(
string imageurl)
{
ImageEntity image = new ImageEntity();
image.ImageName = DateTime.Now.
ToShortDateString();
image.ImageText = string.Format("Some randomly
inserted image on the {0}", DateTime.Now);
image.ImageUrl = imageurl;
imagesContext.AddObject(ImageServiceContext.
TableName, image);
imagesContext.SaveChanges();
ResizeImageMessage msg =
new ResizeImageMessage();
msg.ImageId = image.RowKey;
msg.ImagePartition = image.PartitionKey;
CloudMessenger messenger = new CloudMessenger();
messenger.SendMessage(msg);
}
Listing 1.12: Datenquelle
Ähnlich wie bei der MessageQueue und dem Table Storage wird auch für den Blob Storage ein Client benötigt. Hierfür steht die Klasse CloudBlobClient zur Verfügung ( Listing 1.13 ).
private CloudBlobClient bobClient;
private CloudStorageAccount account;
account = CloudStorageAccount.
DevelopmentStorageAccount;
bobClient = account.CreateCloudBlobClient();,
Listing 1.13: Der CloudBlobClient
Blobs können in Windows Azure verschiedene Einstellungen hinsichtlich der Zugreifbarkeit haben. Oft will man Dateien, die Benutzer uploaden, nicht öffentlich zugänglich machen. In anderen Fällen ist das jedoch wieder von Nutzen. Daher gibt es die Möglichkeit, Zugriffsbgeschränkungen für Blobs anzulegen, die auf den Container eingestellt werden. Für diesen Anwendungsfall wird ein öffentlicher Zugriff vergeben ( Listing 1.14 ).
public void CreatePublicBlob(string name)
{
CloudBlobContainer bobContainer = bobClient.
GetContainerReference(name);
bobContainer.CreateIfNotExist();
BlobContainerPermissions permissions = new
BlobContainerPermissions();
permissions.PublicAccess =
BlobContainerPublicAccessType.Container;
bobContainer.SetPermissions(permissions);
}
Listing 1.14: Öffentlichen Container einfügen
Als letzter Schritt soll der Blob an sich eingefügt werden. Er benötigt einige Angaben: der Container, in dem er abgelegt werden soll, der Dateiname innerhalb des Containers sowie der Content Type. Der Content Type dient dem Browser zur Identifizierung der Anzeige. In Listing 1.15 ist dargestellt, wie ein Blob eingefügt wird.
public void AddImage(string fileName, string
blobContainer, string contentType, Stream content)
{
string ext = Path.GetExtension(fileName);
string filename = Guid.NewGuid().ToString() +
ext;
CloudBlobContainer container = bobClient.
GetContainerReference(blobContainer);
CloudBlob blob = container.
GetBlobReference(filename);
blob.UploadFromStream(content);
blob.Properties.ContentType = contentType;
blob.SetProperties();
InsertImageIntoTableAndSendMessage(string.
Format("{0}/{1}/{2}", account.BlobEndpoint.
AbsoluteUri, blobContainer, filename));
}
Listing 1.15: Blob einfügen.
Wenn man .NET für Windows Azure verwendet, kann man die vielen Funktionen wie LinQ sehr schön für Windows Azure Storage verwenden. Auch in architektureller Hinsicht gibt es einige Möglichkeiten, um die Anwendung selbst hochskalierbar zu gestalten. Im Gegensatz zu anderen Anbietern betrachtet Microsoft die Bereiche aus dem Cloud Computing Storage nicht getrennt, sondern als gemeinsame Elemente. Daher vermittelt der Storage Client einen sehr ausgereiften und gut durchdachten Eindruck.
Preise
Zusätzlich zu den Preisen von ein- und ausgehendem Datentransfer fallen bei Windows Azure Storage 0,1064 € pro GB im Monat an. Für die Storage Transactions fallen 0,0071 € je 10 000 Transaktionen an. Die Kosten für den Datentransfer wurden bereits in 1.2.2 aufgelistet.
1.2.4 SQL Azure
Mit SQL Azure bietet Microsoft neben dem PaaS-Angebot „Windows Azure Compute“ eine Datenbank der Basis des SQL Servers 2008 in der Cloud an. Im Grunde genommen ist es nichts anderes als ein SQL Server, mit dem Unterschied, dass er von Microsoft verwaltet wird. Somit entfällt das komplexe Server-Housing und Verwalten, und man kann sich auf die Entwicklung der eigenen Anwendung konzentrieren. SQL Azure läuft in denselben Rechenzentren wie Windows Azure Compute. Somit ergeben sich, wenn man beide Dienste kombiniert, klare Vorteile in der Performanz der Anwendung. SQL Azure wird in die Versionen „Web Edition“ und „Business Edition“ unterteilt.
Technische
Weitere Kostenlose Bücher