Développer en Silverlight

Introduction

Silverlight est un plugin pour navigateur internet multi-plateforme (Windows et Apple, Linux via le projet MoonLight), qui permet de développer des applications web riches dans un moteur de rendu vectoriel. Il fonctionne de façon similaire à Adobe Flash dont il se veut une alternative. Techniquement Silverlight est l'équivalent de la CLR de Microsoft mais pour les navigateurs Web. La version 2.0 apporte plus d’interactivité et permet aux développeurs d’utiliser des outils de développement et les langages Microsoft .NET en place et lieu de JavaScript de la version 1.0. La version 3 est sortie en juillet 2009. Elle ajoute de nombreuses fonctions comme par exemple le fonctionnement "out of browser" qui permet d'installer l'application sur la machine de l'utilisateur en local. On note aussi la présence de la "2.5D" qui ajoute des transformations de perspectives en 3D aux objets sans pour autant permettre l'exploitation de véritables objets 3D comme le fait WPF.

Silverlight a comme concurrents Adobe Flash, Flex, JavaFX ainsi que Quicktime d’Apple.

La technologie est utilisable dans de nombreux navigateurs via l'utilisation d'un plugin dans les systèmes d’exploitation Microsoft Windows et Mac OS X. Une version pour la communauté du libre appelée Moonlight est en cours de développement. Elle est compatible avec les environnements GNU/Linux. Les téléphones portables sous Windows Mobile 6 et les mobiles Symbian OS (Version 40 et 60) seront aussi supportés.


« SilverLight (code-name WPF / e ou encore Windows Presentation Foundation everywhere) est le nom de code d’une solution navigateur cross-plateforme basée sur XAML qui améliore les présentations à base de contenu riches (2D et 3D, animation, dessin vectoriel, vidéo et audio) en complément du code HTML »


===== Architecture du Projet =====


{{ :knowdb:images:wssf-globalstructure.jpg }}


Les applications Silverlight fonctionnent sur une architecture de type client/serveur, hebergées par IIS.


===== PréRequis =====


Le développement d'application Silverlight requiert l'installation de composants supplémentaires :


  * [[http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=1ea49236-0de7-41b1-81c8-a126ff39975b|SDK Silverlight 3]]

  * [[http://www.microsoft.com/downloads/details.aspx?FamilyId=47755838-049B-4291-AFEA-A379AE28D7B3&displaylang=en|Web Client Software Factory - February 2008]]

  * [[http://www.microsoft.com/downloads/details.aspx?familyid=df79c099-4753-4a59-91e3-5020d9714e4e&displaylang=en|Guidance Automation Extensions - February 2008 Release (GAX)]]

  * [[http://www.microsoft.com/downloads/details.aspx?FamilyID=E28205C6-BB07-401B-9A76-804784598BF0&displaylang=en&displaylang=en|Guidance Automation Extensions for Visual Studio 2008 and Visual Studio 2008 Service Pack 1 Update (GAXP1409)]]

  * [[http://www.microsoft.com/downloads/details.aspx?FamilyID=b91066b3-d1d6-4990-a45f-34cf8dbdc60c&DisplayLang=en|Guidance Automation Toolkit for Visual Studio 2008 - February 2008 Release (GAT)]]


Une fois les différentes extensions installées il faut activer le GAT.


{{:knowdb:images:activationgat.jpg|}}


{{:knowdb:images:guidancepackagemanager.jpg|}}


{{:knowdb:images:enablegat.jpg|}}


===== Structure de la Solution =====


Il faut d'abord créer la solution qui va heberger le service :


{{:knowdb:images:creationsolution.jpg|}}


Ajouter ensuite les différents modèles qui vont permettre la génération de code :


{{:knowdb:images:ajoutmodeles.jpg|}}


Il faut ajouter un exemplaire de chacun des modèles proposés :


{{:knowdb:images:servicefactorymodelingedition.jpg|}}


Exemples :


  * Name : MGZ.POC.Korgis.ServiceContractModel

  * XML Namespace : urn:MGZ.POC.Korgis


===== Service Contract Model =====


The Service Contract tools are the following:


  * **Service** Represents the implementation of the contract. Unlike class definitions, this shape is not intended to implement multiple service interfaces (contracts). This shape can only connect to a single service contract. This is the element the Host Model will reference.

  * **Service Contract** Represents the service interface that associates multiple operations (methods). This shape connects to a single service shape and can connect to multiple operation shapes.

  * **Operation** Represents a method that can be invoked on the service. This shape connects to a single service contract and one or two message contracts.

  * **Message** Represents a request or response message that contains data contracts or primitive types (not types from an XSD). This shape connects to a single operation. To make it a request message, drag the connector shape from the message shape to the operation shape. To make it a response message, drag the connector shape from the operation shape to the message shape.

  * **XSD Message** Represents a reference to an element or a complex type within an XSD file that represents a request or response message. To use this shape, you need to add a schema as an existing item to the Schemas folder of the solution. This shape connects to a single operation. To make it a request message, drag the connector shape from the message shape to the operation shape. To make it a response message, drag the connector shape from the operation shape to the message shape. 

  * **Connector** Makes valid connections between shapes on the design surface. To use the connector, click the Connector shape in the Toolbox, click the first shape, and then click the second shape. For more information about connecting message shapes, hover over the Message or XSD Message shapes in the Toolbox.


The design surface of the Service Contract Model has two properties that are significant during the design stage: 


XML Namespace. This is the same value you provide in the New Model dialog box when you created the model. It represents the default namespace for this model and will be applied to any shape added to the model. The value can be changed at any time to a valid URI, but it will only influence shapes added to the model after the change. Any shape's XML Namespace property can also be changed manually without affecting other shapes.

Serializer Type. The Service Factory supports two serializers: 


XMLSerializer. This serializer is supported by both ASMX and WCF and is also more likely to work with an existing XSD file.

DataContractSerializer. This serializer is supported only by WCF and generally provides higher levels of interoperability and performance, but is not compatible with most XSD files. 



===== Host Model =====


Pour commencer il faut ajouter une application Hote et une application Client au model hôte. Pour ce il faut cliquer-droit dans le "Host Explorer" sur le niveau max. 


Ajouter une application hôte, puis acceder à ses propriétés:

  * Implementation Project : Selectionner le projet adéquat

  * Implementation Technolgy : ASMX pour les anciens WebServices et SVC pour les services WCF


===== Liens externes =====


  * [[http://silverlight.net/|Site officiel]]

  * [[http://msdn.microsoft.com/en-us/library/cc487895.aspx|Web Service Software Factory: Modeling Edition]]

  * [[http://www.microsoft.com/silverlight/|Page d’accueil Microsoft Silverlight]]

  * [[http://tirania.org/blog/archive/2007/Jun-21.html|Article sur l’implémentation de Silverlight sous linux grâce à Mono]]

  * [[http://www.silverlight-info.fr|Blog sur Silverlight, ASP.NET 3.5 et LINQ]]

  * [[http://dotnet.developpez.com/faq/silverlight/|FAQ Silverlight sur developpez.com]]

  * [[http://www.go-mono.com/moonlight/|Téléchargement de Moonlight pour firefox]]

  * [[http://finance.millionid.com|Un exemple d'application boursière utilisant Silverlight: finance.millionid.com]]


====== Navigation ======


    * [[::homepage|HomePage]]

Commentaires

Posts les plus consultés de ce blog

Base de Données Sybase IQ

Sécurité des Applications

Principes de la Programmation Orientée Objet