Environnement .NET - Introduction à .NET
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Qu’est ce que .NET ? Définition : [dot-net] .NET est une plateforme complète pour développer, déployer et exécuter des Applications Web, Windows, Mobiles et serveur .Net Framework Un Modèle de programmation unifié Une plate-forme de déploiement et d’exécution Framework .NET : Gratuit & intégré à Windows A.RETBI / 3 Un Modèle de programmation unifié Différents types de clients : − Web-HTML, Windows, Smartphone Un Serveur d’Application − Services transactionnels, Services Web Le choix des langages : − Le choix des langages : VB.NET, C#, C++, J#, … A.RETBI / 4 2
Le modèle de programmation unifié .NET Disponibilité d’une API cohérente quel que soit le langage unifiant le modèle de programmation .NET Framework RAD, Stateless, Composition et Héritage, Code embarqué dans des délégation Contrôle, Performance pages HTML Modèle objet VB MFC/ATL ASP API Windows 5 Une plate-forme de déploiement et d’exécution Mécanismes de copie simple, de partage de composants et de versionning − Simplicité de déploiement et de configuration Mécanismes de sécurité intégrés, code « managé » et de gestion de mémoire − Une fiabilité des applications et des bonnes performances A.RETBI / 6 3
Principes fondateurs de la plate- forme .NET Intégration − homogénéisation des solutions et produits Microsoft − Faciliter les scénarios d’intégration pour les clients qui choisissent la plate-forme Microsoft Interopérabilité avec le monde extérieur − Reposer sur les Standards au maximum − Délivrer de la valeur sur la productivité A.RETBI / 7 L’achitecture .NET VB C++ C# J# … Common Language Specification Visual Studio .NET Web Forms Mobile Forms (ASP.NET) Web Services Windows Forms ADO.NET : Données et XML Base Class Library Common Language Runtime Common Language Infrastructure (CLI) 8 4
La gamme Visual Studio Visual Studio Chefs de projets Team Suite Testeurs Architectes Visual Studio Visual Studio Visual Studio Team Edition Team Edition Team Edition Développeurs Software Software Software Entreprise Developers Architects Testers Consultants Visual Visual Studio Professionnels Studio Tools for Office Professional Dév occasionnels Visual Studio Edition Standard Hobbyists Edudiants Editions Passionnés C# VB C++ J# Web Express Débutants A.RETBI / 9 .Net : pour quelles applications? Conçu pour faciliter le développement d’applications n-tiers − Utilisation/création facile d’objets distribués et de services Web − Accès facile aux données (ADO.NET) − Présentation par page Web dynamiques (ASP.NET) A.RETBI / 10 5
Les langages .Net • Le langage "dédié" : C# – proche de java • Les classiques – VB.NET, C++, J# • Mais aussi : – ADA, Scheme, Python, Fortran, … • En tout une vingtaine de langages supportés A.RETBI / 11 Les langages .Net et MSIL • Un langage .NET – est compilé vers du MSIL – est conforme à la CLS • MSIL = CIL – Microsoft Intermediate Language – Common Intermediate Language – Byte code Java Interprété par un moteur d’exécution (machine virtuelle) A.RETBI / 12 6
Common Language Specification Contient la spécification d’écriture des compilateurs « syntaxiques » Chaque langage utilise et étend le framework.net Les langages .net sont interopérables A.RETBI / 13 Common Language Runtime Le “moteur d’exécution” de .NET Les caractéristiques : Conversion IL -> code natif Gestion Mémoire (garbage collection) Vérifie et applique la sécurité Charge et exécute les programmes A.RETBI / 14 7
Compilation Just In Time A.RETBI / 17 JIT La CLR utilise la compilation Just-In-Time Chaque méthode appelée est compilée en code natif Appels suivants n’ont pas à être recompilés Qq problèmes : exige des resources mémoire processeur A.RETBI / 18 9
Managed Code Code qui cible .NET Contient des informations supplémentaires (metadonnées) pour se décrire => CLR peut garantir la sécurité, l’interopérabilité… A.RETBI / 19 Unmanaged Code .NET peut utiliser du code sans métadonnées : 1. non « géré » peut utiliser la bibliothéque de .NET peut compiler en IL ne peut bénéficier du GC 2. natif pour de meilleures performances par exemple WinForms A.RETBI / 20 10
Principaux composants du CLR Système de type : Common Type System “CTS” Système de métadonnées : Metadata Système d’exécution : Virtal Exécution System “VES” A.RETBI / 21 Common Type System sert à décrire les types indépendamment du langage => types "valeur" (value types) • de base ou construits par le programmeur – types "référence" (reference type) • objet – Tous les objets héritent de la classe object – Méthodes : equals, finalize, getHashCode, getType, memberwiseClone, ToString • interfaces • pointeurs A.RETBI / 22 11
Les méta-données Description de l’unité de déploiement (Assembly) Les compilateurs stockent des infos sur les types (nom, visibilité, classe de base, etc.) – pour l'interopérabilité – pour le moteur d'exécution (gestion mémoire par exemple) Extension des métadonnées possible (attributs personnalisés par exemple definis par utilisateur) A.RETBI / 23 Assemblies Briques des programmes .NET unité fonctionnelle atomique Collection de code et de métadonnées Contient un Manifest, qui décrit son nom sa version la liste des types et l’endroit où ils sont dans l’assembly Informations de dépendances A.RETBI / 24 12
Système d’exécution Un compilateur .NET Code source .NET écrit dans un Assembly DLL ou EXE langage .NET (MSIL et métadonnées) Moteur d’exécution .NET Bibliothèque de Chargeur de classes classes de base Compilateur Just in Time (JIT) Instructions spécifiques à la plate-forme Exécution de l’application! 25 A.RETBI / La bibliothéque de Classes Namespace : ensemble de classes La racine des namespaces est System Contient les types basiques comme Byte, Double, Boolean, and String, Object… Tous les objets dérivent de System.Object value types ≠ objets Moyens efficace de convertir des value types en objets A.RETBI / 26 13
L’espace de noms System A.RETBI / 27 ASP MVC .NET Par : Mme A. RETBI 2014-2015 14
Vue globale de MVC “Dans le paradigme MVC l’entrée utilisateur, la modélisation du monde extérieur, l’aspect visuel présenté l’utilisateur sont explictement séparés et gérés par trois types d’objet, chacun spécialisé dans sa tâche.” [Burbeck 92] A.RETBI / 29 MVC- Présentation globale L’architecture Model-View-Controller permet d’organiser une application interactive en séparant : les données la représentation des données le comportement de l ’application A.RETBI / 30 15
Structure de MVC Le modèle représente la structure des données dans l’application et les opérations spécifiques sur ces données. Une Vue présente les données sous une certaine forme à l ’utilisateur, suivant un contexte d ’exploitation. Un Controller traduit les interactions utilisateur par des appels de méthodes (comportement) sur le modèle et sélectionne la vue appropriée basée sur l’état du modèle. A.RETBI / 31 ASP.net MVC- BUT Cette séparation permet de coupler faiblement chacune de ces parties entre elles. Elle permet : De faciliter le développement de l’application, De bien structurer l’application, afin de faciliter son développement, ainsi que sa maintenance. De faciliter les tests de l’application. A.RETBI / 32 16
Architecture du modèle MVC A.RETBI / 33 ASP.net MVC- Fonctionnement A.RETBI / 34 17
ASP.net MVC- Fonctionnement Le DLL System.Web.MVC contient un http module: UrlRoutingModule. Global.asax. routes.MapRoute("Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults); http://www.monsite.com/Home/Index/1 A.RETBI / 35 ASP.net MVC- Fonctionnement A.RETBI / 36 18
ASP.net MVC- Création A.RETBI / 37 TP1 : Controllers et Actions Répondre aux requêtes de l'utilisateur Rédiger les actions du contrôleur Utiliser des paramètres Transmettre des informations aux vues 19
Répondre aux requêtes When an MVC web application receives a user request, the following events occur: MVCHandler creates a controller factory. Controller factory creates a Controller object and MVCHandler calls the Execute method. ControllerActionInvoker examines RequestContext and determines the action to call. ControllerActionInvoker determines the values to be passed to the action as parameters. ControllerActionInvoker runs the action. Ecrire Controller Actions : Créez méthode publique Retourne une classe qui dérive de ActionResult Ajouter des paramètres à la méthode Insérer le code pour effectuer l'opération et retourner le résultat 20
Utilisation des paramètres http://www.adventureworks.com/session/getsessionbytitle?title=MVC101 DefaultModelBinder public ActionResult GetSessionByTitle(string title) { var query = from s in context.Sessions where s.Title == title select s Photo session = query.FirstOrDefault(); return View("Details", session); } Transmettre les informations à la vue Modèle □ Vue (données) □ Fortement typée (vue partial) ViewBag □ un objet aux propriétés dynamiques (avec des données persistantes). □ Alias for ViewData □ Parfait pour l’envoi de message à la vue □ Disponible seulement pour l’action en question □ Redirects cause the ViewBag to be emptied TempData □ Fonctionne comme le ViewBag, mais disponible pour la page suivante (page de réponse) 21
TP2 : Vues avec la syntaxe Razor □ Ajout de vues □ Syntaxe Razor □ Liaison avec le modèle pour afficher ses propriétés Adding Views 22
Razor Syntax Exemple : @* Some more Razor examples *@ Price including Sale Tax: @Model.Price * 1.2 Price including Sale Tax: @(Model.Price * 1.2) @if (Model.Count > 5) { @foreach(var item in Model) { @item.Name } } Ajout de code au niveau des vues Technique Utilisation Utiliser des morceaux autonomes de vue logique, comme if et foreach. C’est Inline code l’outil fondamental pour la création de contenu dynamique dans les vues Générer des éléments HTML simples ou des collections, généralement basés HTML helper sur la vue modèle. Le MVC Framework inclut des méthodes d’assistance HTML methods utiles, et il est facile de créer votre propre Helper. Créer des sections de contenu qui seront insérées dans le layout aux endroits Sections souhaités. Partager des vues entre les vues, la vue partielle peut Partial views contenir du code inline, les méthodes d’assistance HTML, et les références à d’autres vues partielles. Créer des contrôles d’interface utilisateur réutilisables ou des widgets qui doivent Child actions gérer de la logique. Lorsque vous utilisez une action de l’enfant, il invoque une méthode d’action, rend un visuel à afficher, et injecte le résultat. 23
Action Helpers • Html.ActionLink() @Html.ActionLink("Click here to view photo 1", "Display", new { id = 1 }) Click here to view photo 1 • Url.Action()
Lier la vue au modèle A travers l’utilisation de vue partiel fortement typée (créer dynamiquement) Liaison par les listes énumérables: @model IEnumerable Product Catalog @foreach (var Product in Model) { Name: @Product.Name } Entity Framework Par : Mme A. RETBI 2014-2015 25
TP3: MVC Models Développer le modèle Utiliser des annotations d’affichage des données Validation des entrées des utilisateurs par des annotations de données Développer le modèle Photo Comment -PhotoID : int -CommentID : int -Title : string 0..* -User : string 1 -PhotoFile : byte -Subject : string -Description : string -Body : string -CreatedDate : object -PhotoID : int -Owner : string public class Photo { public int PhotoID { get; set; } public string Title { get; set; } public byte[] PhotoFile { get; set; } public string Description { get; set; } public DateTime CreatedDate { get; set; } public string Owner { get; set; } public virtual List Comments { get; set; } } 26
Annotations d’affichage des données public class Photo { // other properties excluded [DisplayName("Picture")] public byte[] PhotoFile { get; set; } [DataType(DataType.MultilineText)] public string Description { get; set; } [DataType(DataType.DateTime)] [DisplayName("Created Date")] [DisplayFormat(DataFormatString = "{0:dd/MM/yy}"] public DateTime CreatedDate { get; set; } } Validation des données public class Person { public int PersonID { get; set; } [Required(ErrorMessage="Please enter a name.")] public string Name { get; set; } [Range(0, 400)] public int Height { get; set; } [Required] [DataType(DataType.EmailAddress)] public string EmailAddress { get; set; } } 27
TP3 (suite): Entity Framework Définition Les différentes approches d’Entity Framework Qu’est ce que Entity Framework? Définition Entity Framework est la solution de mapping objet-relationnel proposée par Microsoft. But : − fournir la couche d'abstraction nécessaire aux développeurs pour qu'ils n'accèdent plus directement à la base de données. − Applications libérées des dépendances codées en dur BD 28
Les différentes approches Database First vs Model First Database first (BD existante) se fonde sur une base de données existante Utilisation de EF Designer pour générer les classes en VB ou C# Model first (BD inexistante) modèle des entités via EF Designer Génération base de données et classes en VB ou C# 29
Database First vs Model First Code First Création simple des classes du domaine d’application ( que la BD soit existante ou pas) Permet : Développer sans avoir besoin du Designer ni fichier XML de mapping Définir les objets du modèle selon la méthode « Plain Old CLR Objects » sans nécissiter les classes de base 30
Synthèse Designer Centric Code Centric Model First Code First • Create .edmx model in designer • Define classes & mapping in code New • Generate database from .edmx • Database auto-created at runtime • Classes auto-generated from .edmx Database Database First Code First • Reverse engineer .edmx model • Define classes & mapping in code • Classes auto-generated from .edmx (Reverse engineer tools available) Existing Database 31
Vous pouvez aussi lire