Environnement .NET - Introduction à .NET

La page est créée Éric Tanguy
 
CONTINUER À LIRE
Environnement .NET - Introduction à .NET
Environnement .NET

     Par : Mme A. RETBI
           2014-2015

Introduction à .NET

     Par : Mme A. RETBI
           2014-2015

                          1
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
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
Environnement .NET - Introduction à .NET
Services du
            Common Language Runtime

A.RETBI /                             15

                  Compilation

A.RETBI /                             16

                                           8
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