vendredi 6 février 2009

Présentation du projet

Hier, nous avons présenté notre projet devant le jury de soutenance composé de :
Les retours que nous avons obtenus sont très positifs et la présentation a eu beaucoup de succès.
Les démonstrations ont permis d'illustrer le fonctionnement et la stabilité de l'architecture.
Voici le diaporama que nous avons présenté ce jeudi : Diaporama

Nous rappelons que l'ensemble du projet est disponible sur Sourceforge et que chacun a la possibilité de télécharger librement le code pour l'étudier ou le déployer.

Nous préparons actuellement un guide de déploiement expliquant les installations nécessaires au bon fonctionnement de la solution. Il sera bientôt disponible sur ce blog.

En attendant, nous restons disponibles pour toute question sur le projet ou l'interopérabilité.

mardi 3 février 2009

Microsoft Techdays 2009 : il y aura du cloud computing

Comme vous le savez certainement, le salon des Techdays de Microsoft se tiendra du 10 au 12 février au Palais des Congrès de Paris.
Ce sera l'occasion pour Microsoft de détailler et d'expliquer le fonctionnement de la plateforme de développement Azure.
Sur le TechBlog de Microsoft, vous pouvez voir une interview de Thomas Lucchini (Microsoft France) qui annonce les différentes sessions qui toucheront au cloud computing. Pour notre part, nous assisterons au moins à celle de Steve Sfartz ainsi que celle de Ronny Kwon le mardi 10 février, car ils devraient parler de Silverlight Streaming, de Azure et ... de notre projet !

Si vous vous rendez aux Techdays pour cette édition 2009, profitez-en pour venir nous rencontrer au stand EPSI.

Faire part de naissance.

En ce beau jour que fut le 03 Février 2009, la magie de la vie a permis à

http://voditup.cloudapp.net/

qui pèse 10Mo et mesure plusieurs milliers de lignes de codes de voir enfin le jour sous le regard attendri de ses parents.

Il faudra bien sûr du temps et la patience pour qu'il grandisse et atteigne un développement adulte et mature.

Trève de plaisanterie, l'équipe clouditup est heureuse de vous présenter la version béta de notre site de VOD (Utilisant des technologies Microsoft telles que Silverlight Streaming Platform, SQL Data Services, Azure queue et table...)

Maxime, Léo , Sébastien et Mathieu.


- Consultez les nouveautés


- Consultez des fiches de film


- Consultez vos locations




- Et surtout, visionnez vos films !


lundi 2 février 2009

Windows Azure : Comment déployer un projet volumineux ?

Lorsque vous développez un projet Cloud WebRole pour Azure qui est volumineux, il se peut que vous soyez confrontés à l'erreur suivante lorsque vous essaierez de publier ("Publish") votre solution :

Error 41 The "CSPack" task failed
unexpectedly.System.IO.IsolatedStorage.IsolatedStorageException: Unable to
determine the identity of domain. at
System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence evidence,
Type evidenceType, IsolatedStorageScope fAssmDomApp, Object&
oNormalized) at
System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(Evidence evidence,
Type evidenceType, IsolatedStorageScope fAssmDomApp, String& typeName,
String& instanceName) at
etc...

Cette erreur indique que Visual Studio ne peut pas "packager" le projet.

La solution réside dans un utilitaire fournit avec Azure SDK. Ouvrez l'invité de commande du SDK, et utilisez "cspack" de la manière suivante :

- positionnez vous dans le dossier racine de votre solution (celui proposant un dossier pour le WebRole et un dossier pour la solution).
- tapez la commande suivante (avec vos valeurs bien entendu) :


cspack DossierDeLaSolution\ServiceDefinition.csdef
/role:WebRole;DossierDuWebRole /out:NomDuPackage.cspkg

Le package est publié manuellement, et vous pouvez maintenant l'uploader sur votre compte Azure afin d'effectuer vos tests.

samedi 31 janvier 2009

Silverlight Streaming : Problème lors de l'upload depuis l'interface

Il semblerait que Silverlight Streaming connaisse un problème lors de l'upload d'une vidéo depuis l'interface web (http://silverlight.live.com/).

Après renseignement, cette erreur n'est visiblement pas fréquente. Néanmoins, je vous l'expose :

Pour le développement de notre projet, nous avons mis quelques vidéos sur la plateforme Silverlight Streaming afin d'effectuer nos tests.

Nous avons uploadé une vidéo d'environ 50 Mo. Une fois sur le serveur, elle affiche plus de 5 Go. Soit environ 100 fois plus.
Un algorithme de compression ou autre ne justifie pas cette différence, puisqu'aucun algorithme de streaming ne multiplie la taille du fichier par 100. Un autre point étrange est que lorsque l'on consulte cette vidéo, nous devrions théoriquement mettre 5000 secondes (à hauteur de 1 Mo / seconde en download) pour pouvoir la télécharger entièrement, et donc la consulter jusqu'à la fin. Mais en l'occurrence, la consultation est très rapide et la lecture ne se bloque à aucun moment pour charger la suite de la vidéo.

(Précisons que cet évènement est apparu à chaque upload de vidéo que nous avons fait par l'interface web de Silverlight Streaming)


Une image étant plus probante que de longues palabres, je vous laisse juger de cette "bizarerie" :


vendredi 30 janvier 2009

Service Azure de gestion des URL temporaires pour Silverlight Streaming

Le service de gestion des URL temporaires pour Silverlight Streaming est maintenant terminé.

Il permet de récupérer une URL temporaire (le temps est paramétrable. Il est pour l'instant initialisé à 400 secondes) donnant accès à une vidéo copiée. L'intérêt est d'empécher la lecture de la vidéo une fois le temps de location expiré.

Pour ce faire, on utilise un projet Cloud contenant un WebRole et un WorkerRole. Le schéma suivant montre les appels effectuaient par notre service vers d'autres services.



WebRole

Il expose un service REST contenant l'opération doCopy(string upc). Cette opération va lancer une recherche sur SQL Server Data Services (accès en SOAP) de toutes les locations concernant la vidéo en question. Notre nouvelle vidéo portera comme nom la concaténation de l'upc et du dernier identifiant de location de cette vidéo + 1.
Ainsi, si la vidéo dont l'upc est 123 est louée pour la première fois, le nom du FileSet dans Silverlight Streaming sera 123_0. Pour la seconde location de cette vidéo, ce sera 123_1. Ainsi de suite. Ainsi, on assure que tout nos FileSets aient des noms différents.

Une fois cet identifiant trouvé, nous effectuons l'ajout en base de données de notre nouvelle location. Ensuite, nous lançons la copie de la vidéo d'origine (toujours cachée à l'utilisateur par sécurité) vers le nouveau FileSet. Cette copie s'effectue en REST (voir lab précédent).

Enfin, le service retourne l'URL de la vidéo accessible à l'utilisateur (donc "http" et pas "https").

Notre service de copie est ici terminé.


WorkerRole

Le WorkerRole est désigné pour un traitement constant, isolé du reste du système. En l'occurence, il s'agit de l'évaluation de validité de nos locations.
Le WorkerRole possède donc une référence vers le service SOAP de SQL Server Data Services. La chose déroutante dans l'utilisation que l'on en fait est que l'on ne l'instancie pas. On possède juste cette référence comme un point de sortie vers SSDS. Cela, dans le but d'éviter de dupliquer le code. Pour ce faire on intègre aussi une référence vers notre WebRole, afin de bénéficier des classes de gestion de notre base de données et de Silverlight Streaming. Si l'on ne rajoute pas notre référence de SSDS dans le WorkerRole (en imaginant qu'on bénéficiera de celle du WebRole), alors le Proxy ne parvient pas à récupérer les informations nécessaires à son instanciation.

Au niveau de la vérification de validité, nous récupérons toutes nos locations, chaque minute. Nous vérifions celles qui sont encore valides (dont le champs "duree_valid" > 0). Nous décrémentons 60 (le nombre de secondes expirées) ou mettons ce champs à 0 (si le champs <>
Au final, ce service manipule SQL Server Data Services en SOAP, Silverlight Streaming en REST, et offre une opération publiée en REST.
L'ensemble est un peu complexe, mais tout à fait fonctionnel.

Vous pouvez retrouver les sources au sein du projet disponible sur Sourceforge.

dimanche 25 janvier 2009

SQL Data Services

A travers ce lab, vous allez pouvoir utiliser une base de données dans les nuages (SDS) et récupérer les données pour les afficher dans votre page web.

Dans SDS :

Tout d'abord, commençons par créer votre base de données.
Connectez vous à l'adresse suivante : lien pour administrer vodre sds en ligne. Login et mot de passes sont ceux de votre solution Azure.

A savoir 3 notions essentielles dans SDS :
- Authority : il représente le nom de votre base de données
- Container : il représente une table
- Entity : C'est une ligne que l'on peut retrouver dans tout SGBD comprenant divers attributs. Une chose essentielles dans SDS vient du fait que dans chaque Container, on peut inserer différentes entity, j'entends pas là que chaque entity peut avoir des attributs différents.

Sélectionnez votre "authority" et ajouter lui un container.
Dans notre exemple, nous allons créer un container "video"

Dans ce container video, nous allons lui ajouter uen entity :
-titre (string) : "mon titre"
-url (string) : "monURL"
-description (string) : "maDescription"
-format (string) : "monFormat"
-duree (decimal) : "maDuree"

Dans notre Web Site :
1) Créer un projet "web site" sous Visual Studio
2) Modifiez le fichier "web.config" et ajouter les lignes suivantes, en donnant le nom de votre "authority", et login et mot de passe de votre solution



3) Créer un client SOAP dans une classe SOAPMethod.cs



4) Créer votre classe "video"



5) Ajouter la méthode pour récupérer vos vidéos



6) Récupérer vos vidéos du coté behind et les afficher dans un listview



7) Afficher le résultat dans votre page .aspx