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.
WebRoleIl 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é.
WorkerRoleLe 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.