blogs.msdn.com/architech 

Français

English

L’objet de ce billet est de décrire comment le podcast ArchiTech (cliquer sur le logo pour y accéder) est hébergé en grande partie sur le stockage Windows Azure.

Pour résumer, les flux RSS/iTunes, ainsi que les fichiers audio (WMA, MP3) sont générés localement puis stockés dans des blobs Windows Azure. Les statistiques d’accès (générées par du code ASP.NET) sont enregistrées dans des tables non relationnelles Windows Azure.
The goal of this post is to describe how ArchiTech podcast (clic on the logo to access the podcast) is mainly hosted in Windows Azure storage.

As a summary, RSS/iTunes feeds, as well as audio files (WMA, MP3) are created locally; then, they are uploaded as Windows Azure blobs. Access statistics (which are generated by ASP.NET code) are written into Windows Azure non relational tables.

image

Cette architecture permet d’héberger pour quelques euros par mois un podcast, en bénéficiant des coûts réduits et quasi illimités du stockage Windows Azure. This architecture makes it possible to host the podcast for a few euros/month by leveraging the cost effective and nearly infinite Windows Azure Storage.

 

Le principe de publication est le suivant : Publishing is done in the following way:
image

Les rushes sont enregistrés (1) puis montés via Expression Encoder (2). L’épisode WMA ainsi obtenu est également converti en MP3 (3). Les métadonnées (titres, mots clefs, durée et taille de l’épisode dans les deux formats, …) sont saisies dans InfoPath (4), ce qui met à jour un fichier XML qui, par de la transformation XSLT (5) génère les fichiers de description du podcast pour RSS et iTunes, le fichier de configuration pour les hyperliens et du code HTML contenant le lien vers les épisodes, à copier (7) dans l’article lors de sa rédaction (8) avec Windows Live Writer.
Les fichiers audio sont également chargés sous forme de blobs Windows Azure (6).

rushes are recorded (1) and edited with Expression Encoder (2). The WMA episode is then converted to an MP3 file (3). Metadata (titles, keywords, duration and size of the WMA and MP3 episodes, …) are entered thru InfoPath (4) in a XML file; this XML file is transformed with XSLT (5) into podcast description files for RSS and iTunes, as well as a configuration file containing hyperlinks, and HTML code with links to the episodes. This HTML code is copied at the bottom of the blog post (7) while it is written with Windows Live Writer (8).
Audio files are also uploaded as Windows Azure blobs (6).

 

image

L’auditeur accède au flux ou à un article du blog via un navigateur, un smart phone, iTunes, ou un lecteur de flux RSS (1). Dans tous les cas, cela redirige (2) le client vers un hyperlien chez un hébergeur où du code ASP.NET traite la demande de la façon suivante : S’il ne la trouve pas en cache, il lit (3) l’adresse réelle du media dans un fichier de configuration (winipsConfig.xml) stocké dans Windows Azure Storage sous forme de Blob, écrit dans une table Azure tous les détails de la requête HTTP qui demande le média (4), puis redirige le client vers le media (5) qui est un blob stocké dans Windows Azure, de façon publique, et peut donc être chargé directement (6).
NB: pour interdire un accès direct au fichier audio via Azure, il serait possible de faire évoluer le code ASP.NET pour qu’il génère une URL à base de “shared access signature”.
A podcast listener accesses the feed or a blog post thru his browser, a smart phone, iTunes, or a feeds reader (1). In all cases, the client his redirected (2) to an hyperlink where ASP.NET code handles the request in the following way: if actual link is not in cache, get the configuration file (winispConfig.xml) from Windows Azure storage (3), write data about the media request into a Windows Azure table (4), and then redirect client to the media file (5) which is a public Windows Azure blob and thus makes it possible for the client to dowload it directly (6).



NB: In order to enforce acces to media file thru the ASP.NET handler, it could be possible to change ASP.NET code to have it generating URLs with shared access signature.

:-)

Benjamin