===== Module WI4 : Web Services et Mise en oeuvre avec WCF .Net ===== ---- === Synthèse des retours et évolution du cours prévue en 2017-2018 === == retours 2017 == * La Virtualisation des machines en mode DAAS très appréciée (Windows 10 accessible par RDP sur le Cloud Microsoft Azure) * La Virtualisation des machines sur un serveur local est une solution alternative intéressante * Le Sujet de Projet très intéressant * Le Contenu trop proche de la formation SI3 * Des retours plus fréquents de l'enseignant serait un plus EVOLUTIONS PREVUES EN 2017 ** Contenu ** * Dans le but d'aller plus loin, nous nous appuierons sur les acquis d'SI3 comme requis * Les principes de Windows Communication Foundation (WCF) seront introduits d'emblée * Nous explorerons des aspects plus avancées et complexes des web services et Services Logiciels tels que : * Les solutions techniques d'hébergement multiples des services WCF par différents hôtes Cf. class ServiceHost, IIS, Apache, AppFabric * Le déploiement rapidement des services logiciels complexes avec des points de terminaison multiples avec différents types d'adresse et de bindings (HTTP, HTTPs, TCP/IP, etc..) pour l'interopérabilité * La fiabilité du service en utilisant les transactions et les files de messages * Le modèle de sécurité WCF * Le modèle d'invocation asynchrone * Comment étendre le framework WCF ** Organisation ** * Dédoublement de l'offre de virtualisation pour les TDs avec mise à dispostion du Cloud Microsoft Azure dans des horaires précis, et mise à disposition de machines virtuelles sur serveurs de l'Ecole * Evaluation régulière du travail en cours de TD avec : * Note sur la progression du TD en séance * Tests et évaluation avec l'enseignant en séance * QCM de TD pour tous l'Objectif étant de donner un grand nombre de note avec des retours réguliers. === VOTRE AVIS sur le Cours et l'Utilisation du Microsoft Cloud Azure NOUS INTERESSE === **Veuillez remplir ce questionnaire en ligne et l'envoyer** [[https://docs.google.com/forms/d/1k0orTyJFVNaiSml4eiqvixBsd3gFQwAaai-16JLjer0/prefill|REMPLIR CE FORMULAIRE]] ---- === Semaine 1 :=== == mise en place et manipulation de votre environnement de travail == |||| * Utilisation du VPN Unice nécessaire : [[http://wiki.unice.fr/display/SCSIFAQ/VPN|Howto install VPN pour Unice]] * Configuration et mise en oeuvre du Cloud Microsoft Azure : {{:cours:classe_virtuelle_-_etudiant.pdf|Procédure Step by Step pour la première utilisation du Cloud Microsoft Azure}} * ** Sujet complet du TD 1 ** : {{:cours:td1_app_rep_2017_ws_-_cloud_azure_-_rappel_ws_.pdf|Travaux Dirigés : Mise en oeuvre du Cloud Microsoft Azure, Introduction à l'utilisation de Visual Studio, rappel sur le développement de clients/serveurs TCP/IP }} |||| ** ATTENTION ** [[config_onedrive_cloud_azure|ATTENTION à la synchronisation de OneDrive ! Quelques consignes et configurations à faire ....]] == Rappel SI3 du Web au Web Services == ||| Autres références : {{:cours:2.app-rep-http-cours-1h-2015-2016.pdf|Cours HTTP}} {{http://www.validome.org/doc/HTML_fr/cgiperl/introduction/variablesenvironnement.htm|Les variables d'environnement et les Cgi-Bin}} [[http://www.cs.iastate.edu/~cs104/notes/cgi.html#CR07|EXEMPLES de cgi-bin]] ---- === Semaine 2 :=== == Cours REST, ROA, et Service Web RESTFul == ||| {{:cours:2._app-rep_introduction_roa_rest-2016-2017.pdf|Présentation Cours REST, ROA, et Service Web RESTFul sous WCF}} == TD WS-REST C# WCF . Net (2h) == ||| {{:cours:td2.a_wcf_client_rest_2017.pdf|TD Introduction WS-REST et client sous WCF .Net en C#}} {{:cours:td2.b_wcf_serveur_rest_2017.pdf|TD Serveur WS-REST sous WCF .Net en C#}} ** Correction TD2.a ** {{:cours:velibclient.zip|Correction du client aux Web Service du velib parisien}} ---- === Semaine 3 : === ==Cours SOA et Service Web WS-SOAP == ||| {{:cours:4._app-rep_introduction_ws-soap-2015-2016.pdf|Présentation Cours SOA et Service Web WS-SOAP}} == TD WS-SOAP C# WCF . Net (2h) == ||| {{:cours:td3_app_rep_2016_2017_td_ws-soap_.net.pdf|TD Introduction WS-SOAP sous WCF .Net en C#}} ---- === Semaine 4 : === ==Cours / TD MetaData Exchange et Langages de Description de Service == {{:cours:3._contrats_et_description_de_web_services_-_wsdl-2016-2017.pdf| Cours Langage de Description de Services, ex. WSDL}} {{:cours:td4-td_services_metadata_exchange_.net-2016-2017.pdf| TD MetaData Exchange (wSDL pour WS-SOAP) sous WCF- Windows Communication Foundation}} ||| ---- === Semaine 5 :=== == Cours / Modèle ABC de WCF == {{:cours:6._services_-_modele_abc_-_wcf-2015-2016.pdf| Cours Modèle ABC de WCF}} {{:cours:td6-td_wsdl_puis_ws_google.pdf|TD Clients wsdl, clients Google et Chaine de services Web}} ---- === Semaine 6 :=== == Cours de Synthèse == * QCM sur le modèle ABC de WCF * Questionnaire d'enquête sur l'utilisation de Microsoft Cloud Azure * Questions de Cours * Pour aller plus loin ... [Introdution à la seconde partie du Cours Middleware of Things en SI5] * Web of Things * Semantic Web of Things * Gestion Dynamique des Web Services for Device (Recherche et Découverte mais aussi gestion de présence) * Demo Continuum (video) ==== Synthèse et TD à rendre ==== === Sujet === L'objectif de ce sujet est d'exploiter pleinement WCF .Net, tant pour des configurations standards comme WS-SOAP et WS-REST mais aussi dans les multiples "bindings" de Services, au-delà du Web d'ailleurs. Le TD à rendre porte sur plusieurs versions basées sur une approche incrémentale. Il est ambitieux. En faire qu'une partie permettra donc d'obtenir une note satisfaisante dans la mesure où le rendu est de qualité. Chaque client de test sera implémenté dans un projet Win32 Console ou un plus : * Application Windows Forms * ou ASP .Net Web Application == Question 1: Version 1.0, optimisation de l'utilisation des Velibs de la ville de Paris == Les approches SOA et en particulier WSOA (Web Service oriented Architecture) sont principalement adaptées aux développements d'applications entre différents acteurs logiciels (en général des fournisseurs de services logiciels distincts). Nous avons vu dans les TDs précédents comment accéder à différents services avec des technologies différentes. Nous allons donc utiliser les web services fournis sur la gestion des Velib de Paris, ainsi que des web services logiciels de planification de déplacement comme Google Map (vu en TD), Waze ou OpenStreetMap. // Il s'agit alors de développer un service logiciel de type Web Service SOAP qui planifiera le meilleur trajet piéton + vélo Vélib en fonction de la position de départ et d'arrivée de l'usager et de la disponibilité des vélos dans les stations. Son interface est simple. Elle fournit un trajet à suivre (sous forme textuelle ou graphique, comme indiqué ci-dessus) et indique le trajet à suivre pour atteindre la station de Vélib la plus proche, // == Question 2 sur la Tarification des services == A partir d'un modèle de coût (coûts associés à une requête sur chacun des services sont autant de variables dans votre équation, y compris le vôtre ...) donner une évaluation des tarifs pour 1 utilisation de vos services. Faite des évaluations avec les coûts que vous trouverez chez les fournisseurs pour une utilisation professionnelle de votre service. == Question 3 : Version 2.0 : multi-bindings Extranet / Intranet == WCF .Net offre la possibilité de choisir simplement les bindings qui conviennent le mieux à votre implémentation et déploiement de services. Ainsi avec le changement de quelques paramètres de configuration (Cf. fichier App.config) il est possible de choisir parmi une dizaine de configurations vues en cours. Dans la mesure où vous voulez distinguer le binding de la mise en œuvre de votre service entre votre intranet et extranet, configurez 2 point d'accès pour votre service : * un point d'accès extranet WS-SOAP sécurisé (over HTTPS) * un point d'accès intranet du type net.Tcp (over TCP/IP) Développez 2 clients de test en mode textuel ou graphique (Cf. ci-dessus). Vous simulerez votre réseau intranet avec la plage d'adresses locales : 127.168.0.x (dont localhost) et votre extranet avec votre adresse IP publique (attention, la politique de sécurité de l'établissement ne vous permet d'accéder à votre adresse que depuis une machine du même réseau local. Utilisez donc la machine de votre binôme pour les tests) === RENDU de TD6 === Ce TD se fera en groupes d'au plus 2 étudiants. Ce TD est à rendre à l'enseignant responsable du cours sous la forme suivante : - Vos solution (ex. la sous arborescence des fichiers et répertoires) doivent être regroupés dans un fichier .zip, où est votre nom (sans le prénom) tout en minuscules. Ce fichier et toute les arborescences qu'il contient doivent se "dézipper" dans un répertoire commun . - Un fichier README.txt doit être rédigé pour donner un minimum d'explications sur votre solution, son déploiement, sa mise en oeuvre. Fournir des scripts associés pour automatiser cette phase de déploiement et de test sera un plus. - Le fichier .zip et le fichier README.doc (les calculs de la question 2 nécessitent un format pour les équations) doivent être attaché à un email à l'attention de **tigli@unice.fr** - Votre email à l'attention de **tigli@unice.fr** doit comporter le sujet suivant : [TD6 APP REP SI4 2017] [], où est votre nom (sans le prénom) tout en minuscules. - La date limite de ** rendu est le Dimanche 21/05/17 à minuit **. Toute heure de retard sera pénalisée par un point de moins sur la note du TD. - Tout rendu qui ne respectera pas l'intégralité des consignes ci-dessus ne sera pas pris en compte car potentiellement intraitable et perdu lors de la collecte et le rangement automatique de mails. ---- ==== FAQ : Frequently Asked Questions ==== == Peut-on avoir plusieurs contrats pour un service ? == Dans le cadre de la définition d'un service pour WCF, il est possible de définir plusieurs contrats. Un service est en fait défini par une liste de "endpoints", eux mêmes composés des 3 éléments : une adresse, un "binding", un contrat. [[http://using-system.over-blog.com/article-20272608.html|Voici une illustration sur ce point]] == Peut-on recevoir plusieurs exceptions dans le cadre du porttype Requête/Réponse de WSDL ? == Dans le cadre d'un porttype de type requête - réponse, seuls deux messages sont envoyés. Le premier du client vers le serveur () et le second du serveur vers le client. Dans ce dernier cas il peut s'agit d'un message de retour "normal" () mais aussi d'une erreur qui déclenchera une exception (). Dans ce dernier cas il y aura autant de messages associés que d'exceptions possibles. C'est en ce sens que l'on peut distinguer différentes exceptions car différents messages. ===== Annexes du Cours ===== ||| ---- === Références === ||| {{:cours:programming_wcf_services_-_juval_lowy.jpg?direct&100 |}} [[https://books.google.fr/books?id=72P3BoIDCKEC&printsec=frontcover&hl=fr&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false|Programming WCF services de Juval Lowy]] ||| {{:cours:pro_wcf_4_pratical_microsoft_soa_implementation_-_nishith_pathak.jpg?direct&100 |}} [[https://play.google.com/books/reader?id=DW2ldput788C&printsec=frontcover&output=reader&hl=fr&pg=GBS.PA37.w.2.7.3|Pro WCF 4 pratical microsoft SOA implementation de Nishith Pathak]] ||| ||| ||| ||| ||| ||| [[http://www.remondo.net/building-simple-wcf-service-library/|Tutoriaux de base et avancés sur WCF]] ||| [[http://msdn.microsoft.com/en-US/fr/library/vstudio/ms735119%28v=vs.90%29.aspx | Pages officielles de Microsofts sur Windows Communication Foundation]] ||| ||| ---- === API web Services Google === == Utilisation des Services Web de Google appelés aussi APIs == Les APIs Google sont principalement des Services Web de type REST / GET. Les paramètres d'appel sont donc présents dans l'url. Par exemple : https://maps.googleapis.com/maps/api/streetview?size=600x300&location=43.6419409,7.0306163&heading=151.78&pitch=-0.76&key= Pour chaque API vous devez créer un projet et obtenir une Clef . Ceci se déroule en 3 étapes : - [[https://console.developers.google.com/flows/enableapi?apiid=street_view_image_backend&keyType=CLIENT_SIDE&reusekey=true|Créer ou choisir un projet]] - Activer Google Street View Image API - Créer les clés appropriées == Liste des Services Web de Google == Les Services Web de Google se trouvent sur [[https://developers.google.com/products/|Google Developers]] Selon l'APIs diverses explications vous seront fournies comme : * L'algorithme utilisé par le service (ex: deep depth) * Le type et le format des paramètres de l'url utilisée (ex pour translate : ([[https://developers.google.com/apis-explorer/?hl=fr#p/translate/v2/language.translations.list|Lien vers un formulaire de test]]) * des bibliothèques fournies par API, plateforme etlangage (ex. .Net pour implémenter un ---- === Outils logiciels pour les TDs de ce Cours === == Visual Studio version Pro ( post VS 2012) == Les prochains travaux dirigés utiliseront l'IDE Visual Studio 2013 en version professionnelle. Vous pouvez récupérer une version de Visual Studio Professional 2013. Vous devez pour cela créer un compte sur https://www.dreamspark.com/Account/SignIn.aspx depuis une adresse de messagerie d'établissement scolaire (domaine). Pour nous, le compte est attaché à l'établissement POLYTECH'NICE (et non Polytech'Nice Sophia Antipolis). Vous devez alors avoir accès à des téléchargements gratuits sur la page https://www.dreamspark.com/Student/Software-Catalog.aspx. Vous pourrez télécharger Visual Studio Professional 2013 depuis https://www.dreamspark.com/Product/Product.aspx?productid=72 Vérifiez bien que vous pouvez créer un projet du type : Projet > Visual C# > WCF Si vous n'avez pas de projet type "WCF" c'est que vous n'avez pas installé de version "Pro". ATTENTION car dans ce cas VOUS NE POURREZ PAS FAIRE LES TDS !!! En cas de Pb envoyez moi un mail avec un sujet : [PB SI4 : Visual Studio 2013 Profesionnal] == cURL == ||| Il s'agit d'un utilitaire en ligne de commandes qui permet d'accéder à toutes les commandes HTTP et idéal pour tester les API REST Voici le site de téléchargement des distributions de cURL tout OS : {{http://www.paehl.com/open_source/?CURL_7.47.1|cURL}} === Test Automatique de Web Service === * Tags: http://blog.octo.com/automatiser-ses-tests-de-web-services-grace-a-soapui/ ---- ==== Evaluations et Corrections ==== * {{:cours:doc-corrige.pdf|Correction QCM première évaluation sur le Web et Web serveur}} ---- ==== ARCHIVES ==== {{:drapeau_francais.jpg?30|}} [[:Internet et Réseaux | Cours Internet et Réseaux - SI4 - Polytech'Nice - Département Sciences Informatiques]] {{:drapeau_francais.jpg?30|}} [[:Applications Réparties | Cours Applications Réparties - SI4 - Polytech'Nice - Département Sciences Informatiques]] [[https://www.tigli.fr/doku.php?id=cours:app_rep_orientees_service_2015_2016| App Rep 2015 2016]] [[http://www.tigli.fr/doku.php?id=cours:app_rep_orientees_service_2013_2014| App Rep 2014 2015]]