Introduction à la Technologie .NET

Slides:



Advertisements
Présentations similaires
Le struts validator – framework de validation
Advertisements

Agenda de la journée 10h00 : La place dASP.NET dans la plate-forme Microsoft 10h30 : Développement rapide dapplications Web en ASP.NET 12h00 : Construire.
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Nouveautés pour les développeurs Office System Scott Burmester Responsable des programmes PSPS.
INTRODUCTION INTRODUCTION ERGONOMIE Tri par cartes Formulaires Interface Installation Lanceur Documentation TECHNOLOGIES XML + XSL CSS Formulaires génériques.
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
Approfondissement du langage
(Classes prédéfinies – API Java)
Design Pattern MVC En PHP5.
TP 3-4 BD21.
Cours Visual Basic pour Application
Introduction aux Web Services Partie 1. Technologies HTML-XML
Sécurité Informatique
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
XML-Family Web Services Description Language W.S.D.L.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
ASP.NET un peu plus loin… Développement Rapide dApplications Web avec.NET.
Développement Rapide dApplications Web avec.NET « Mon premier site »
Programmation Approche composants Ing5 SI
Les instructions PHP pour l'accès à une base de données MySql
28 novembre 2012 Grégory Petit
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
.Net Remoting.
Microsoft .NET.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Standard Template Library
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Adaptée du cours de Richard Grin
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Agenda de la journée 10h00 : La place d’ASP.NET dans la plate-forme Microsoft 10h30 : Développement rapide d’applications Web en ASP.NET 12h00 : Construire.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Animateur : Med HAIJOUBI
PHP & My SQL.
JavaScript Nécessaire Web.
La notion de type revisitée en POO
PHP 5° PARTIE : LES COOKIES
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
« Le plaisir du chercheur : retrousser les jupes de la nature » Jean Rostand Proposer une « Interface Homme Machine » en utilisant une technologie Client.
Introduction à la plateforme .NET
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
GESTION DE COMPOSANTS ELECTRONIQUES
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Page 1Dernière mise à jour: 17 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
Module 3 : Création d'un domaine Windows 2000
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Initiation au web dynamique Licence Professionnelle.
Développement et design Web Awaves academy Stockholm 2006.
Les Java Server Pages Dans ce chapitre, nous allons :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Initiation aux bases de données et à la programmation événementielle
TWP Toolkit Formation 21/10/2009.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

Introduction à la Technologie .NET Présenté par Franck GIL franck.gil@free.fr Ingénieur .Net

© 2007 Franck GIL – franck.gil@free.fr Objectif de ce cours Introduction à la plateforme .Net Présentation de l’AGL Visual Studio Apprentissage du langage C# Création d’une Architecture 3-tiers Mise en place d’un client léger Mise en place d’un client lourd © 2007 Franck GIL – franck.gil@free.fr

Présentation

© 2007 Franck GIL – franck.gil@free.fr Un peu d’histoire 1983 : C++ 1991 : Green 1996 : Java 1 2001 : .NET 1 2005 : .NET 2 1972 : SmallTalk 1992 : Oak 1997 : J++ 2002 : Web Services 2007 : .NET 3 Une petite équipe de chez Sun dirigée par James Gosling travaillée sur le projet green (plateforme de communication pour les appareils électroniques ménagers) => OAK Naissance de JAVA 1 car la technologie basé sur OAK était polyvalente Microsoft réactif voulu standardisé et intégré ce langage dans son environnement de développement Visual studio sous le nom de J++. Anders Hejisberg créateur du turbo pascal et de delphi © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Un peu d’histoire © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Qu’est-ce que .Net Plateforme de développement qui regroupe : Un runtime pour exécuter des applications Plusieurs langages Une API complète Un environnement de développement .Net se lit dot net Runtime permet d’exécuter les applications. CLR = Common langage runtime © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Qu’est-ce que .Net Définition : .Net .NET est une plateforme complète pour développer, déployer et exécuter des Applications Web, Windows, Mobiles et serveur mais aussi des webServices. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les concurrents de .Net Application Windows Delphi Windev Anciens outils Microsoft (VB6 et C++/MFC) Application web PHP ASP et les script CGI Flash Applets JAVA Aucun concurrent pour la mobilité } Dynamique côté serveur MFC => Microsoft Foundation Class Différencier la partie serveur et client dynamique. .Net inutilisé pour faire des applets, ca va changer avec l’apparition du XAML inclus dans le framework 3.0 = APPLET JAVA. Pour la mobilité .Net est le plus utilisé à cause de Windows CE majoritaire sur le parc mondial de PDA qui est conçu principalement pour le développement à l’aide du .NET framework } Dynamique côté client © 2007 Franck GIL – franck.gil@free.fr

Les principaux langages Continuité de C et C++ Ressemble au JAVA VB .NET Langage VB6 remanié Entièrement objet C++ .NET Identique au C++ Ajout des classes dites « managés » J# Se veut être compatible JAVA VB .Net est entièrement intégré à .Net contrairement a VB6 qui lui était purement orienté COM/Win32. VS fournit un convertisseur pour les vieux projets VB6 Classes managés=> gérées par un environnement d’exécution © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les autres langages .Net intégre des compilateurs pour : Fujitsu netCOBOL, Eiffel, Mercury, Active Oberon, Jscript.Net, Delta Forth, SmallScript, SmallTalk, Fortran, Perl, Mondarian, Pascal, Dynalog, Standart Ml, ANSA RPG, Python, Delphi.NET … Possibilité d’écrire directement en MSIL Windev et .NET Import et export .NET Utilise la machine virtuelle de windev MSIL => langage intermédiaire interprété par la CLR. Windev = > impossible de générer des application .Net pure exécuté à l’aide du runtime .NET (CLR) © 2007 Franck GIL – franck.gil@free.fr

Installation du Framework .NET 2.0

© 2007 Franck GIL – franck.gil@free.fr Contenu du Framework Le Common Language Runtime (CLR) Suffisant et nécessaire pour WindowsForms Les WebForms utilisent un runtime lié à IIS. Un garbage collector Gère la mémoire utilisée par les applications Une bibliothèque de classes Regroupe les briques logicielles de bases IIS => serveur web de Microsoft équivalent à Apache pour les applications php. © 2007 Franck GIL – franck.gil@free.fr

Compilation et exécution Compilation : - traduction des fichiers source dans le langage MSIL(Microsoft intermédiaire langage) - Les définitions des types (métadonnées) et les fichiers de ressources sont récupérées - Le tout abouti à la création d’un .EXE ou .DLL appelé assemby. Exécution : - Interprétation du code MSIL par le JIT - Méthodes ainsi compilé sont stockées dans le gac - Méthode compilé une seule fois sauf si le num d’assembly change Première exec très lente. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les Namespaces Les Namespaces équivalent des Packages en JAVA http://msdn2.microsoft.com/fr-fr/library/ms229335(VS.80).aspx Les Namespaces regroupent un ensemblent de classes de même nature. INSISTER SUR L’INTELLISENCE Java = Javadoc et .Net=librairie msdn © 2007 Franck GIL – franck.gil@free.fr

Les principaux Namespaces du Framework 2.0 Tout hérite de la classe System.Object System Byte, Int16, Int32, Int64, Float, Double, Decimal, Char, String, Console, … System.Collections ArrayList, Hashtable, Queue, Stack, SortedList, … System.Collections.Generics List<Type>, Queue<Type>, Stack<Type>, … System => Type de base et accès Console System.Collections => collection d’objet System.Collections.Generic => collection d’objet typé © 2007 Franck GIL – franck.gil@free.fr

Les principaux Namespaces du Framework 2.0 System.Data Dataset, DataTable, DataRow, DataView, … System.Data.Common DbCommand, DbConnection, DbTransaction, … System.IO File, Directory, Stream, FileStream, TextReader, TextWriter, … System.Security Permissions, Policy, Cryptography, … System.Data => Récupération des données de la base à l’aide des classes représentant l’architecture ADO.NET. System.Data.Common => Accés aux sources de données de façon générique (connection, transaction et commande sql). Existance de namespace spécifique à chaque source de données (OracleClient,SQL Client,OleDB,Odbc, …) System.IO => Accès aux fichiers System.Security => Contrôle de la sécurité © 2007 Franck GIL – franck.gil@free.fr

Les principaux Namespaces du Framework 2.0 System.Threading Thread, Mutex, Monitor, Timer, … System.Windows.Forms Control, Form, Button, ListBox, MainMenu, StatusBar,DataGrid, … System.Web HttpRequest, HttpResponse, HttpCookie… System.Web.UI Page, Button, ListBox, HyperLink, DataGrid, … System.Threading => classes permettant la programmation multithread et la synchronisation des processus. System.Windows.Forms => classes permettant la création d'applications Windows qui tirent parti des fonctionnalités d'interface utilisateur évoluées disponibles dans le système d'exploitation Microsoft Windows. System.Web=> classes permettant la communication entre le navigateur et le serveur. Il inclut la classe HttpRequest qui fournit des informations sur la demande HTTP en cours et la classe HttpResponse qui gère la sortie HTTP vers le client. Il inclut également les classes de manipulation des cookies. System.Web.UI => fournit des classes qui permettent de créer des pages ASP.NET. © 2007 Franck GIL – franck.gil@free.fr

Maturité de la plateforme : vous n’êtes pas seul ! Les décideurs reconnaissent : Fiabilité, performance et interopérabilité Stratégie « Architecture Orientée Services » et les Services Web Productivité Les développeurs apprécient : Richesse fonctionnelle Stabilité Et … © 2007 Franck GIL – franck.gil@free.fr

Les Communautés de développeurs .NET

La gamme Visual Studio Chefs de projets Team Suite Testeurs Visual Studio Team Edition Software Developers Visual Studio Team Edition Software Architects Visual Studio Team Edition Software Testers Architectes Développeurs Entreprise Visual Studio Professional Visual Studio Tools for Office Consultants Editions Express Cinq produits d’entrée de gamme Ces outils légers à télécharger et à installer sont spécialisés par langage de développement ou par scénario. Adaptés aux amateurs et aux étudiants vu qu’il est gratuit, leur interface simplifiée permet de découvrir la programmation pour Windows et le Web. On va s’intéréser plus particulièrement à Visual Web Developer 2005 Express Edition, Visual C# 2005 Express Edition Visual Studio 2005 Standard Ce produit d’entrée de gamme regroupe en un seul produit les éditions Express plus quelques fonctionnalités comme le développement pour Pocket PC, le diagramme de classes et la possibilité de faire des composants. Visual Studio 2005 Professional Il inclut le développement et débogage pour SQL Server, une édition de Crystal Reports®, Windows Server 2003 et SQL Server utilisables à des fins de développement ainsi que des fonctionnalités XML avancées. Complété par VSTO, il vous permet de développer facilement des applications pour Office Visual Studio 2005 Team System Un ensemble d’outil pour gérer le cycle de vie des applications et le travail en équipes. 3 éditions : Et un serveur Visual Studio 2005 Team Foundation (partie serveur, toujours vendue à part) La combinaison de Team Foundation avec les autres éditions a pour objectifs : d’améliorer la productivité individuelle des architectes, développeurs, testeurs et chefs de projet ; d’améliorer la qualité du code sans perturber les habitudes des développeurs ; d’avoir à tout moment la meilleure visibilité possible sur l’état d’avancement et la qualité du projet. Professionnels Dév occasionnels Visual Studio Edition Standard Hobbyists C# VB C++ J# Web Editions Express Edudiants Passionnés Débutants

Visual Web Developper Express L’installation du framework englobe : l’installation du CLR, d’un garbage collector, d’une bibliothèque de base

Visual C# Express Edition L’installation du framework englobe : l’installation du CLR, d’un garbage collector, d’une bibliothèque de base

Le langage C#

Généralités du langage C# Reprend la syntaxe de C++ et Java Le C# est case sensitive Les mots clés : C# Java using import Console.WriteLine System.out.println Console.Write System.out.print string / String String System.Object java.lang.Object is instanceof internal protected sealed final base super ToString() toString() ... © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Types numériques Les entiers : Le type int reste le plus utilisé Alias Type Signé Valeurs stockables Taille byte System.Byte Non De 0 à 255 8bit sbyte System.Sbyte Oui De -128 à 127 ushort System.UInt16 De 0 à 65536 16bit short System.Int16 De -32768 à 32767 uint System.UInt32 De 0 à 4 milliards 32bit int System.Int32 De -2 à 2 milliards ulong System.UInt64 De 0 à 18 milliards de milliards 64bit long System.Int34 ± 9 milliards de milliards © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Types numériques Les flottants : Double => préconisé par le C# Decimal => idéal pour les monétaires Alias Type Base Valeurs stockables Taille float System.Single Binaire ±1.5×10-45 à ±3.4×1038 32bit double System.Double ±5.0×10-324 à ±1.7×10308 64bit decimal System.Decimal Décimal ±10-28 à ±7.9×1028 128bit Float tende à disparaître Double utilisé pour les constantes à virgules et par la classe math. Décimal stocke le nombre sous forme d’entier divisé par une puissance de dix. Les types numériques ne peuvent pas avoir la valeur nul © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Chaînes de caractères Affectation de null possible En java string = objet , en C# string = type Les caractères spéciaux Les concaténations Remplacer \r\n par Environment.NewLine toString() en java et ToString() en C# /*** Java ***/ String s = "salut"; String s2; s2 = s.clone(); /*** C# ***/ String s = "salut"  ; s2 = string.Copy(s) //la méthode Copy est STATIQUE!!! string chemin01 = "C:\\mon répertoire\\projet2\\csharp.cs"; string chemin02 = @"C:\mon répertoire\projet2\csharp.cs"; string texte01 = "c'est pas très\nlisible\t\tdes textes formatés\n comme ça"; string texte02 = @"c'est pas très lisible des textes formatés comme ça"; /*** Concaténation simple ***/ String s = "salut"  ; string s2= "ça va"  ; s += ", " + s2 + " !"; // s contient alors « salut, ça va ! » /**** Concaténation multiple ***/ StringBuilder s = new() StringBuilder; s.Append(" Select * "); s.Append(" From Eleve "); s.Append(" Where Eleve.Nom = ‘Toto’ "); s.ToString() ;// affiche « Select * From Eleve Where Eleve.Nom = ‘Toto’ Les chaînes peuvent avoir la valeur nulle contrairement aux numériques. Le reste des méthodes est globalement le même qu'en Java. Ainsi on retrouve avec la même syntaxe Equals (attention à la Majuscule), Substring, ... Mais Length est un attribut en C#. StringBuilder utile dans le cas de nombreuses concaténations consécutives Append() © 2007 Franck GIL – franck.gil@free.fr

Tableaux et collections Les tableaux statiques (classe Array) Les tableaux dynamiques /*** Déclaration ***/ int [ ] tab1 = new int[10]; Int[,] tab2 = new int[4,5]; Int [ ][ ] tab3 = new int [4][]; /*** Affectation ***/ tab1[1] = 4; tab2[1,1] = 4; tab3[1] = tab1; /*** Méthodes ***/ int tailleDimension = tab2.GetLength(1); // tailleDimension 5 int nbDimension = tab2.Rank; // nbDimension 2 /*** Déclaration ***/ List<int> list1 = new List<int>(); List<List<int>> list2 = new List<List<int>>(); /*** Affectation ***/ list1.Add(1); list1.Add(2); /*** Méthodes ***/ int taille = list1.Count; // taille 2 int indice = list1.IndexOf(2,0); // indice 1 list1.Insert(indice,4); Int valeur = tab[indice]; // valeur 4 Les tableaux sont des instances de la classe Array © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Le casting La classe Convert L’upcast Le DownCast Nouveau casting Decimal d = Convert.ToDecimal("10,2"); Vache maVache = new Vache(); Animal monAnimal = maVache; Animal monAnimal = new Vache(); Vache maVache = (Vache) monAnimal; Le downcast déclenche une erreur si mon animal n’est pas une vache. Le nouveau cast retourne null si monAnimal n’est pas une vache Animal monAnimal = new Vache(); Vache maVache = monAnimal as Vache; © 2007 Franck GIL – franck.gil@free.fr

Structures de contrôles La condition : if Le switch La boucle for La boucle While La boucle foreach int maValeur; if (maValeur == 1) { Console.WriteLine("maValeur est égal à 1"); } else if(maValeur) Console.WriteLine("maValeur est égal à 2"); else Console.WriteLine("maValeur n’est ni égal à 1 ni égal à 2"); int maValeur; switch(maValeur) { case 1 : Console.WriteLine("maValeur est égal à 1"); break; case 2 : case 3 : Console.WriteLine("maValeur est égal à 2 ou 3"); default : Console.Write("maValeur est différent de 1,2 et 3"); } int maValeur; int i; for (i=0;i<mavaleur;i++) { Console.WriteLine(" i est égal à " + i.ToString()); } int maValeur; int i = 0; while (i<maValeur) { Console.WriteLine(" i est égal à " + i.ToString()); i++; } List<int> maList = new List<int>(); foreach( int i in maList) { Console.WriteLine(" i est égal à " + i.ToString()); } Switch => il faut un break dans chaque case s’il ya du code. Foreach = nouveauté du c# permet d’énumérer simplement les objets d’une listes ou tableau d’objets. Utile quand on veut parcourir l’intégralité de la collection. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les classes Les attributs Les constructeurs Les propriétés Les méthodes normales, abstraites et virtuelle Les interfaces Les classes abstraites L’héritage La documentation XML © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les exceptions Pas de vérification à la compilation (throws) Déclencher une exception Capturer une exception throw new Exception("T'as tout planté!"); try { … } catch (TypeException ex) finally Try = Placer ici les instructions susceptibles de déclencher une exception Catch = Instruction exécuter dans le cas d'une exception de Type "TypeException" Finally = Série d'instructions exécutée dans tous les cas © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Pour aller plus loin La reflection Récupérer des types dans un assembly (fichier dll) sans faire d’import Invoquer ses méthodes et ses attributs TRES LENT !!!! Les classes partielles Couper une classe en plusieurs fichiers Les traces Namespace qui permet de gérer un fichier log © 2007 Franck GIL – franck.gil@free.fr

Règles de nommage et programmation Donner des noms qui représentent au mieux les choses (préfixe de type à bannir) Méthodes, propriétés et classes commencent pas une majuscule Les champs, variables et paramètre par une minuscule Privilégier les propriétés aux attributs publics Utiliser la notation hongroise (maVariableAMoi) Utiliser la documentation XML Mettre une classe par fichier © 2007 Franck GIL – franck.gil@free.fr

Architecture 3-tiers

© 2007 Franck GIL – franck.gil@free.fr Principe Couche présentation Mobile Web Windows B2B Web Service SOAP ? UTILS Couche métier BL DAL Couche de persistance Procédures stockées SGBD © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Exemple Enoncé de l’exemple L’exemple consiste à développer une application de gestion d’un ensemble de candidats. Il faudra pour cela, réaliser un écran permettant d’afficher la liste des candidats, ainsi qu’un formulaire d’ajout et de modification d’un candidat. Il est demandé de construire un client lourd et un client léger permettant de réaliser ces actions. Les deux clients appelleront des webServices qui permettent de gérer une liste de candidats. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Modèle de données Modèle Conceptuel de Données (MCD) Modèle Logique de Données (MLD) © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) L’objet Connection http://www.connectionstrings.com Chaine de connexion Visual studio La couche d’accès aux données consiste à définir tous le codes qui exécutera tous les traitements SQL Cette couche est très importante car elle permet de séparer le code SQL (spécifique au SGBD) au code métier qui lui doit rester totalement indépendant du SGBD utilisé. .Net met à la disposition des développeurs une panoplie d’objets permettant de réaliser cette couche c’est la technologie ADO.NET Connection va permettre de définir une connexion de l’ouvrir et de la fermer. © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) L’objet Command L’objet command permet d’exécuter la requête qui lui sera affecter. Il ya trois façon d’exécuter la requête : ExecuteNonQuerry = UPDATE, INSERT, DELETE ExecuteScalar = SELECT COUNT(*) retournant un seul résultat ExecuteDataReader = SELECT * retourne un tableau d’enregistrement mais utilise un autre objet le DataReader => à Eviter car trop gourmant en mémoire et trop lié avec la base préféré la méthode suivante. © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) Les objets Dataset et DataAdapter Les dataset sont plus léger que les datareader. Mais le code est plus complex vu qu’il faut utiliser un DataAdapter qui convertira le résultat de la requête en Dataset grâce à la méthode FILL. Remarque Dataset ne commence pas par SQL donc c’est un objet générique. Structure du Dataset complexe avec table et rows © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) Command paramétré => objet Parameter Il est possible d’appelé des requêtes paramêtré ou bien des procédures stockés. Il existe donc des objets Parameter. Il faut préciser un nom , une valeur , un type, une direction © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) L’objet Transaction L’objet transaction permet de lancer un certain nombre de requête …. © 2007 Franck GIL – franck.gil@free.fr

Data Access Layer (DAL) Deux namespaces pour accéder aux données System.Data => regroupe des namespaces spécifiques pour chaque SGBD System.Data.Common => Contient des objets génériques Création d’un DAC Factoriser et rendre générique le code La classe DbFactories et la classe DbFactory Création d’une classe servant de DAC DbFactories c'est elle qui renvoie les objets des différents providers selon le paramètre qui lui est passé. C'est pourquoi les méthodes de cette classe sont statiques. Nous retourne la bonne fabrique d’objet ado en fonction du paramêtre passé = Provider DbFactory = Fabrique retourant les objets command, connection, etc …. Créer avec le bon constructeur SQL ou ect qui implemente l’interface IDB = interface pour lesquelles ont ne peut pas créer d’objet. L'utilisation d'une classe fabrique n'est pas "la" solution dans tous les cas. Effectivement, les différents systèmes de bases de données n'implémentent pas tous de la même manière le langage SQL. Il s'agit donc tout de même de réécrire les requêtes pour certaines de ces bases de données. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Business Layer (BL) Dérivation du schéma UML Aucun code SQL Chaque classe de la BL doit avoir sa propre classe dans la DAL Utilise les méthodes statiques de la DAL pour les accès aux données Evite d’instancier des classes inutilement Gain de place en mémoire Gain de performance © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Web Services SOAP Les protocoles HTTP et HTTPS servent à transporter les données sur le réseaux entre le service web et le consommateur de service web. Les données transportées utilise le formats xml associée à la technologie SOAP. La machine ou se trouve le service web devra comporté le serveur IIS pour rendre disponible de service web au reste du monde et le Framework pour exécuter le code du service web. La machine du consommateur devra quand à elle posséder IIS. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Web Services SOAP Les autres protocoles COM/DCOM (Component Object Model) Plateforme Windows en Intranet Port d’écoute statique => problèmes de sécurité CORBA Langage neutre de définition d’interface IDL Protocole commun de transport de données Architecture très lourde à déployer RMI (Remote Method Invocation) Très simple d’utilisation et très efficace Fonctionne uniquement sous JAVA COM et DCOM développé par Microsoft pour faire communiqué ces composants, il ya eu un portage UNIX. Corba facilite la communication sous n’importe qu’elle plateforme IDL = Interface definition langage © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Web Services SOAP Le fichier WSDL Décrit le fonctionnement du web service Structuré en XML Généré automatiquement par le Framework Le fichier Proxy Créé à partir du contrat WSDL Contient des objets retournés par le web service Généré lors de la création d’une référence web dans les interfaces clients Il faut savoir avant toute chose que chaque web service possède un fichier WSDL WSDL = WEB SERVICE DESCRIPTION LANGUAGE © 2007 Franck GIL – franck.gil@free.fr

Application Web

Fonctionnement général L’utilisateur envoie une requête HTTP Le serveur construit la réponse La réponse est affichée sur le navigateur Appli traditionnelle on fait un post du formulaire => le serveur n’a que des données Aplli ASP.NET le contexte de la page est transmis au serveur avec tout les composants. Une page web ASP.NET n’est plus un tas de code HTML avec des parties dynamiques à l’intérieur, mais un ensemble d’objets structurés ayant des champs, des méthodes et des événements. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Côté serveur L’action du client provoque un Post Back Un rechargement de la page Déclenché par les événements associés aux contrôles A chaque post Back de la page une instance est recrée donc aucun attribut de la page n’est conservé. Par contre tout les contrôles sont réaffectés avec leurs valeurs d’avant Post Back. © 2007 Franck GIL – franck.gil@free.fr

Les variables de l’ASP.NET Les variables d’applications Stockent la valeur tant que le serveur web marche Communes à tous les utilisateurs Les variables ViewState Conservent des données entre 2 Post Back Pour la même page Pour le même utilisateur Dans la même fenêtre du navigateur © 2007 Franck GIL – franck.gil@free.fr

Les variables de l’ASP.NET Les variables de session Conservent des données d’une page à l’autre Pour le même utilisateur Dans la même fenêtre du navigateur Les cookies Stockent des données sur la machine du client © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les fichiers spéciaux Le fichier Web.Config Gestion des utilisateurs, rôles et droits d’accès Configuration de l’application Configuration de fournisseur Le fichier Global.asax Evénements liés aux serveurs Evénements liés aux sessions Les fichiers de ressources Fichier XML Standard pour stocker les messages d’erreur © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les contrôles Les contrôles HTML (client) Indépendant s du serveur Le littéral permet d’ajouter du HTML dynamiquement Les contrôles ASP.NET (serveur) Instances de classes .NET Ajout d’événements Les contrôles utilisateurs (réutilisable) Pages au format ASCX Permet de définir le code propre au contrôle © 2007 Franck GIL – franck.gil@free.fr

Conseils ergonomiques Position de la fenêtre après un Post Back Cas particulier Cas général Gestion du focus Par défaut sur la page Pour un champ particulier Messages d’alerte OnClientClick est une nouveauté d’ASP.NET 2.0 LinkButton, Button et ImageButton Pour le focus => Chaque contrôle de saisie ASP.NET 2.0 dispose de cette méthode focus(). Pour les contrôles composites, ex le contrôle Login, c’est la première TextBox qui reçoit le focus. © 2007 Franck GIL – franck.gil@free.fr

Conseils ergonomiques Ordre de tabulation Propriété TabIndex Respecté par les navigateurs Raccourci clavier Propriété AccessKey à combiner avec ALT http://blog.alsacreations.com/2005/09/27/191-accesskey-le-grand-echec-de-laccessibilite-du-web Taille des champs de saisie Propriété Columns: nombre de caractères affichés Propriété MaxLength : nombre maximal de caractères autorisés De nombreux utilisateurs utilisent la touche Tab pour se déplacer entre les champs d’un formulaire. Les raccourci clavier peuvent être utiles pour accéder à une fonction spéciale présente sur toutes vos pages, une zone de recherche avec ALT+4 par exemple. Attention certaines touches sont réservées au navigateur, ex : ALT+F pour ouvrir le menu Fichier sous Internet Explorer. Rester cohérent avec la taille définit en base de données, il faut que la taille de la textbox soit égal à la taille du champ dans la base. © 2007 Franck GIL – franck.gil@free.fr

Conseils ergonomiques Premier élément dans les listes Propriété AppendDataBoundItems Aides à la saisie Signalez les champs obligatoires Propriété ToolTip Cohérence des interfaces Balise HTML <fieldset> suivie de <legend> pour définir un titre Contrôle serveur Panel et propriété GroupingText pour que ces éléments statiques ne soient pas écrasés lors du databinding avec votre source de données. ToolTip pour indiquer une aide lors du passage de la souris sur le champ. Il s’agit aussi d’informations sur le format attendu, par exemple précisez « JJ/MM/AAAA » pour une date. Aucune aide n’est superflue et cela limitera les hésitations des utilisateurs. Une bonne ergonomie passe aussi par une interface soignée et efficace. Veillez à ce que vos formulaires soient clairs, bien présentés, les zones bien délimitées, et l’ensemble doit être cohérent sur toutes les pages du site. © 2007 Franck GIL – franck.gil@free.fr

Conseils ergonomiques © 2007 Franck GIL – franck.gil@free.fr

Harmonisation des interfaces Utilisez la notion de thèmes Les fichiers Skin Les fichier CSS Contenus dans le dossier App_Themes Appliquer un thème à une page dans l’événement Appliquer un thème à toute l’application Vous pouvez complètement décrire comment s’afficheront vos contrôles serveur dans un fichier externe. Cela vous permet de dissocier totalement le contenu de la mise en forme dans vos pages. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr La Master Page Permet de décrire les éléments qui seront présent sur toutes les pages du site web © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Les validateurs RequiredFieldValidator Pour les champs obligatoires RangeValidator Limite la saisie à un intervalle de valeurs RegularExpressionValidator Saisie contrôlée par une expression régulière CompareValidator Compare la valeur de 2 contrôles Contrôle le type saisi dans un contrôle CustomValidator La saisie est Contrôlée par une fonction Les vérifications se font coté client si javascript est activé sinon coté serveur. Il est important de vérifié si la page est valide avant de réaliser le code d’une action par la syntaxe suivante If (Page.IsValid) © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Web 2.0 vers AJAX Pas une techno mais un ensemble de techno HTML,XHTML et CSS pour le design Le javascript, le DOM et le Flash pour le dynamisme sur la page XML, XSLT et l’objet XMLHttpRequest pour échanger et manipuler les données de manière asynchrone avec le serveur web (sans rechargement de page). © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Web 2.0 vers AJAX Avantages Gain de bande passante Délais d’attente pour l’utilisateur diminués Surcharge du serveur http diminuée Un plus grand dynamisme des pages pour l’utilisateur, dû à une réponse instantanée Inconvénient Une connaissance poussée du JavaScript Des tests importants afin de vérifier le bon fonctionnement (compatibilité des navigateurs…) Le support du JavaScript doit être activé dans le navigateur du client Les applications Ajax permettent donc de ne pas gaspiller de bande passante. On  obtient alors une réactivité plus importante, puisque les requêtes http sont réduites. Les applications sont moins lentes pour l’utilisateur puisque la requête côté serveur est réduite. En effet, une grande partie du traitement se fera du coté client. © 2007 Franck GIL – franck.gil@free.fr

© 2007 Franck GIL – franck.gil@free.fr Le projet Atlas Microsoft Ajax Library ScriptManager UpdatePanel UpdateProgress AJAX Control ToolKit Les Extender http://ajax.asp.net/ajaxtoolkit/. ScriptManager : permet d’inclure les bons fichiers JavaScripts par rapport au navigateur. Obligatoire pour utiliser le Framework Microsoft Ajax Library. Vous ne devez mettre qu’un seul script manager par page. UpdatePanel : Tout ce qu’il y’a à l’intérieur de cet objet sera traité en asynchrone. C’est un peu l’Ajax du feignent. Il suffit d’y glisser vos composants asp.net 2.0 pour qu’ils deviennent asynchrones. Merci Microsoft. UpdateProgress : Permet d’afficher une image pendant le traitement de la requête. Il fonctionne associé avec un UpdatePanel. © 2007 Franck GIL – franck.gil@free.fr

Application Windows