22 RIA 104 : Développement Web avec l’outillage Microsoft 9 Février 2010 Florent SANTIN Jeune développeur Access it Stéphane GOUDEAU Architecte très très mature Microsoft
33 Le Web : Un peu d’histoire…
44 L’histoire de Stéphane et le Web : Je découvre le développement Web, HTML et CGI 1997 : Ma première application ASP et Visual Interdev 1999 : Ajax est né ! A l’époque il s’appelle [ASP+DHTML+JScript +XMLHTTP] Dépendance forte vis-à-vis du browser 2001 : ASP.NET 1.0 Programmation drag & drop 2006 : ASP.NET AJAX Le retour… 2007 : Silverlight October 2007 : ASP.NET MVC! En parallèle : La techno a mûri Moi aussi : Patterns Tests unitaires
55.NET et le Web JSON SOAP REST TEST MVVM RIA
66 Agenda Un peu d’historique…... Et un état des lieux! Eclaircissons… ASP.NET, MVC et Dynamic Data Ajax et Silverlight WCF et Ria Services Les outils dans tout ça!
77 ASP.NET Webforms, Webforms, Webforms Plus grand chose a voir avec ASP.NET au service du Web Quelques concepts Gestion de l’état dans la page (viewstate) Aller / retour serveurs (PostBack) Modélisation par blocs possible (contrôles serveurs, contrôles utilisateurs…) Support du DataBinding Framework de page: MasterPage, Skin, Themes… Globalisation simplifiée Système de provider extensibles: gestion des droits, rôles, profiles, navigation… Designer.aspx Designer.aspx « Code Behind ».aspx.cs « Code Behind ».aspx.cs
88 ASP.NET MVC Un nouveau type de Projet Visual Studio pour la construction d’application Web Fondé sur ASP.NET Optionnel, ne remplace pas ASP.NET Extensible Structuration des développements ASP.NET MVC par le respect de conventions Séparation des responsabilités Testabilité Maintenabilité Contrôle total des éléments d’affichage URLs Lisibles : REST et SEO Modèle Contrôleur Vue
99 ASP.NET MVC : Le principe Le navigateur effectue une requête « /Series/ » La « Route » est évaluée Le « contrôleur » est activé La méthode du Contrôleur est invoquée Le « Contrôleur » prend la main La « Vue » est affichée à partir des données qui lui sont spécifiques. Ces données sont fournies par le « Contrôleur » à partir des données du « Modèle » Modèle Contrôleur Vue
10 Dynamic Data Génération de modèles automatique (scaffolding) Peu ou pas de code requis Développement très court, très rapide! Gère opérations CRUD, tri et pagination Validation des données Simplifie l’écriture du back office (scénario simple) … … mais utile dans des scénarios complexes ou le schéma de la table évolue (utilisation de templates) Basé sur le modèle de données ADO.NET Entity Framework ou LINQ to SQL Utilise le routage d’URL d’ASP.NET
11 Démo ASP.NET, MVC et Dynamic Data
12 L’un, l’autre ou les deux? ASP.NET Dynamic Data ASP.NET Dynamic Data ASP.NET WebForms ASP.NET WebForms ASP.NET MVC ASP.NET MVC Presentation Runtime ASP.NET Core ASP.NET Core
13 Couche de présentation Logique de présentation server : ASP.NET Logique de présentation côté client : Ajax Silverlight ApplicationNavigateur Rich Internet Application BDDBDD ServiceService Autres applications Accès aux données Couche applicative ServicesServices HTMLHTML Couche de présentation RéseauRéseau
14 Microsoft Ajax System.Web.Ajax AjaxControlToolkit Server MicrosoftAjax MicrosoftAjax.Extended Client ASP.NET Web Forms ASP.NET MVC 100% Html Php, Ruby on Rails… Code source disponible Intégration JQuery
15 Silverlight Expérience utilisateur riche et multi-plateformes RIA (Rich Internet Application): Interactivité Contenu multimédia (vidéos, images) Animations Installation rapide pour les utilisateurs (plugin à installer la première fois) Multi-plateformes (Windows, Mac OS X, Windows Mobile, Linux) Multi-navigateurs (Internet Explorer, Firefox, Safari) Modèle de programmation riche et outils de collaboration Intégration avec les technologies Web Basé sur le Framework.NET 3.5 (Linq,…) Design et développement séparés
16 Démo Ajax et Silverlight
17 L’un, l’autre ou les deux? June 27, 2007 Rich Internet Apps Move Beyond The Browser by Jeffrey Hammond and Michael Goulde for Application Development & Program Management Professionals
18 Framework de communication et exposition des données Comment exposer des données? Protocole: Monde du web = doit reposer sur HTTP Odata : Open Data Protocole Données: Consommables simplement: Navigateur, silverlight/flash, javascript, etc… Auto-descriptives pour minimiser les dépendances avec les clients. Quelques attentes: Posséder une solution de mise en cache La montée en charge doit reposer sur l’infrastructure Possibilité de réutiliser un mécanisme existant Requêtage effectué côté serveur Confidentialité/performance/etc.
19 WebClient : Bof System.Net.WebClient DownloadStringAsync OpenReadAsync streamed data text data DownloadStringCompleted OpenReadCompleted DownloadProgressChanged Une seule requête en même temps (GET ou POST) L’événement s’exécute sur le Thread de l’IHM Une seule requête en même temps (GET ou POST) L’événement s’exécute sur le Thread de l’IHM
20 System.Net.HttpWebRequest HttpWebRequest : Bof, Bof BeginGetResponse data EndGetResponse Le Callback s’exécute sur un thread en background Ne supporte que POST et GET Le Callback s’exécute sur un thread en background Ne supporte que POST et GET AllDone() AsyncCallback(AllDone) Doit désérialiser les données en retour vers le thread UI!
21 WCF : Socle de communication Windows Communication Foundation Framework unifié pour créer des applications orientées services sur la plate-forme Windows Introduit avec le Framework.NET 3.0 Unification Unification des technologies middleware Architecture modulaire et composable Interopérabilité Interopérabilité avec les autres plateformes Interopérabilité avec les technologies courantes Support natif de l'ensemble des protocoles de la pile WS-* Orientation service Modèle de programmation orienté service Service exposé par un contrat Service imposant des règles de fonctionnement
22 WCF : Comment ça marche ? Consiste essentiellement à définir une liaison (Binding) particulière Par configuration ou par code Description du protocole (technique) d’échange de message à utiliser sous forme d'éléments configurable constituant la liaison Transport, Sécurité, Encodage, Fiabilité, (personnalisé : ex. fragmentation) ET LE WEB dans tout ça ? SOAP ? REST ? [OperationContract] [WebGet(UriTemplate=“/Image/{artist}/{album}”)] Stream GetAlbumImage(String artist, String album); [OperationContract] [WebGet(UriTemplate=“/Image?name={artist})] Stream GetMainImage(String artist); [OperationContract] [WebGet(UriTemplate=“/Image/{artist}/{album}”)] Stream GetAlbumImage(String artist, String album); [OperationContract] [WebGet(UriTemplate=“/Image?name={artist})] Stream GetMainImage(String artist);
23 WCF : Quel parfum ? Programming Model
24 WCF REST & WCF REST Starter Kit.NET 3.0 No REST support.NET 3.5 WebServiceHost WebHttpBinding WebHttpBehavior WebGet WebInvoke UriTemplate REST Starter Kit WebServiceHost2 WebHelp WebCache WebProtocolException RequestInterceptor Extensions to Serialization Syndication Web operation context Microsoft.ServiceModel.Web Templates Visual Studio
25 WCF Data Services Nouveau nom de ADO.NET Data Services Nom de code « Astoria » Fondé sur WCF V3.5 Accès CRUD sur une interface REST XML (ATOM format) & JSON Syntaxe de requête prédéfinie Sélection, Filtrage, Pagination, Tri Création de services directement depuis Visual Studio Support de multiples source de données Entity Framework LINQ providers Approche « Model-driven » Description structurée dans l’Entity Data Model Les métadonnées définisse l’interface du service Data Access Layer Entity Framework Custom LINQ provider Base de données relationnelles Autres sources Service Runtime Hosting/HTTP listener HTTPHTTP IQueryable [+ IUpdatable]
26 WCF Data Services et RIA Services Couche d’accès aux données Logique applicative (serveur) Base de données View (contrôles et source de données SL Web Service Logique applicative (client) Frontière de confiance Framework, outils et services pour structurer les applications n-tier WCF Ria Services WCF Data Services
27 WCF RIA Services : Mode Design Client project Server project Domain Service Data Access Layer (DAL) Entities Solution (Application) Views Domain Context Entities Build, reflect & code-gen
28 WCF RIA Services : Mode Runtime Silverlight Web server Domain Service Data Access Layer (DAL) Application Views Domain Context Load Query Entities Results Submit Entities Submit Results context.Load(GetRestaurantsQuery(…). Skip(10).Take(10)) context.SubmitChanges() GetRestaurants(…).Skip(10).Take(10) Submit(changeSet)
29 Démo WCF, WCF et WCF
30 L’un, l’autre ou les deux? Il va falloir changer ce titre… Un même socle pour la même fonction WCF Services (WCF SOAP) WCF WebHttp Services (WCF REST) Construction de services accessibles en mode REST avec le contrôle de l’URI, du format et du protocole WCF Data Services (ADO.Net Data Services) Exposion de modèles de données avec une interface REST WCF RIA Services (.NET RIA Services) Construction end-to-end d’une application Silverlight
31 Boite à outils! Visual Studio + Expression The professional Web design tool The professional Interactive design tool The professional Graphic design tool The professional Asset Management tool
32 Synthèse WCF REST WCF RIA Service DLL + XAML Data (XML,JSON,…) HTML + Javascript Data (XML,JSON,…) ApplicationsAJAX ApplicationsSilverlight Framework de communication et d’exposition des données ASP.NET ApplicationASP.NET (WebForms ou MVC) HTML WCF SOAP WCF Data Service
33 Liens Sites officiels Coach ASP.NET + AJAX Silverlight Session sur les nouveautés 16h en Amphi bleu
34 Q&A