Windows NT/2000/XP Enjeux et contraintes techniques Troisième partie La GDI C. Casteyde Document diffusé sous licence GNU FDL.

Slides:



Advertisements
Présentations similaires
Projet de fin d'étude pour l'obtention du Diplôme Nationale d'Ingénieur en Informatique Conception et développement des modules de GED pour l’ indexation.
Advertisements

Outil Système Complet d'Assistance Réseau CRDP de l'académie de Lyon Documentation librement inspirée de la présentation.
Windows NT/2000/XP Enjeux et contraintes techniques Cinquième partie COM et OLE C. Casteyde Document diffusé sous licence GNU FDL.
Composants Matériels de l'Ordinateur Plan du cours : Ordinateurs et applications Types d'ordinateurs Représentation binaires des données Composants et.
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Projet tuteuré 2009 Les clients légers Alexandre Cédric Joël Benjamin.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Marid 5 décembre 2006Présentation du code parallèle – PEGASE – INRIA Sophia-Antipolis 1 Code Parallèle pour la Simulation Numérique en Mécanique des Fluides.
Windows NT/2000/XP Enjeux et contraintes techniques Septième partie Présentation de.NET C. Casteyde Document diffusé sous licence GNU FDL.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
Windows NT/2000/XP Enjeux et contraintes techniques Douzième partie La sécurité C. Casteyde Document diffusé sous licence GNU FDL.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
Février 2006X. Belanger / Guilde Introduction à. Février 2006X. Belanger / Guilde Qu'est ce que Samba ? ● Implémentation libre du protocole CIFS/SMB (client.
Un système autonomique basé sur des bases de connaissances pour améliorer les performances d’un entrepôt de données Réalisé par : OUSSAFI MOHAMMED HOURRI.
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
Windows NT/2000/XP Enjeux et contraintes techniques
Méthode « traditionnelle » : le cycle en V
Interfaçage entre Maple et du code externe
Licence Informatique DEVELOPPEUR ANDROID
Communication client-serveur
e-Prelude.com Analyse globale du flux
Environnement de développement des BD
Threads et Lightweight Processes
Ch.1 : Modélisation des systèmes par SysML
6GEN720 Réseaux d’ordinateurs
L’utilisation des formulaires pour un exemplarisateur
JavaScript.
Méthode « traditionnelle » : le cycle en V
Javadoc et débogueur Semaine 03 Version A17.
Formations CEFORA Alain Wafflard
Principes de programmation (suite)
Les fonctions.
Programmation en C++ Fonctions
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Chapitre 12 Surveillance des ressources et des performances
Outils de production de code
Présentation de JQUERY
fonctionnalités iiS iis
Outils Statistiques pour la Sémantique Décembre 2013
– La communication : notions de base. – INTRODUCTION : QU’EST-CE QUE LA COMMUNICATION ? I/ LES DIFFÉRENTS TYPES DE COMMUNICATION II/ LES COMPOSANTES DE.
Formations CEFORA Alain Wafflard
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Programmation en C++ Fonctions
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Plus de 4000 langages....
Architecture de machines Le microprocesseur Cours
– La communication notions de base. – INTRODUCTION : QU’EST-CE QUE LA COMMUNICATION ? I/ LES DIFFÉRENTS TYPES DE COMMUNICATION II/ LES COMPOSANTES DE.
Bienvenue sur Coursinfo.fr
Développement d’une application de gestion de pointage
Les classes et les objets
Transfert d’IHM de PC vers PDA
1 PROJET D’INFORMATIQUE les composants de l'ordinateur Gammoudi Rayéne 7 B 2.
Introdution  Le test appartient à l'activité de Vérification et de Validation d'une application, qui consiste à déterminer si cette dernière a été développée.
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
BIOS- OS Environnement logiciel PC / Traitement numérique / Contrôle.
PLATE FORME DE GESTION ÉLECTRONIQUE DE DOCUMENTS Présenté par: Amine LARIBI.
Threads et Lightweight Processes
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
CONTRAT DE PHASE DEFINITION Sur ce document technique destiné à l'atelier de fabrication sont portés tous les renseignements utilisés à la réalisation.
EXPOSE D’UML Licence 2 SI/GL/IM Réalisé par :Demandé par : AYITCHEME Auréane D r HOUNDJI TCHEGNON AlbertRatheil YAYA Hanane ZINSE Bienvenu.
La gestion électronique des documents Classe de terminale STG.
PAF Guillaume Martin - Fabrice Cizeron - Xavier Roulot
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
Contenu Systèmes de test parallèles Multithreading Synchronisation
Qu’est ce qu’une page web? Comment fonctionne un site web?
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Transcription de la présentation:

Windows NT/2000/XP Enjeux et contraintes techniques Troisième partie La GDI C. Casteyde Document diffusé sous licence GNU FDL

Plan ● Architecture et limitations structurelles ● Présentation de l'API ● Bibliothèques et toolkits ● Conclusion

Programmation événementielle ● Programmation avec une boucle infinie de gestion de messages – les messages sont lus et dispatchés un à un, – la notion de fenêtre est théoriquement facultative. ● Au plus une file de messages par thread – la file de messages est créée à la demande, – PeekMessage peut forcer sa création.

Les files de messages Machine File système Clavier Souris Processus while (GetMessage) { DispatchMe ssage } Thread Fenêtre switch (msg) { } Fenêtre

Les files de messages ● Une seule file de messages système – reçoit les messages clavier, souris, etc. ● Une file de message par thread – les messages sont postés en mode FIFO, – les WM_PAINT sont consolidés, – certains messages sont exécutés en synchrone (gestion du focus, du curseur, activation des fenêtres...).

Architecture GDI ● Architecture objet – procédure de traitement des messages associée à une classe de fenêtres, – plusieurs fenêtres pour une même classe, – le HWND permet de les discriminer, – possibilité de stocker des données utilisateurs dans les fenêtres, – sous-classement possible (héritage).

WindowStations et Desktops ● Pas de notion de serveur d'affichage – performance, – déport d'affichage pour l'ensemble du bureau (RDP), – extensions Terminal Server (peu souple). ● Chaque processus appartient à une WindowStation ● Chaque thread est associé à un Desktop ● Impossible de changer de WindowStation

Schéma de l'architecture GDI Machine WindowStation Processus WindowStation Desktop Processus Thread

Plan ● Architecture et limitations structurelles ● Présentation de l'API ● Bibliothèques et toolkits ● Conclusion

Structure de l'API ● Non polymorphique et hétéroclite – pas de type de type HANDLE unifié, – création spécifique des objets, – méthodes spécifiques de manipulation, – destruction spécifique. ● API à état – moins de paramètres, – notion de Device Context.

Création d'une fenêtre ATOM RegisterClass( CONST WNDCLASS *lpWndClass ); typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS, *PWNDCLASS;

Création d'une fenêtre HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam );

Notion de Device Context ● L'API de la GDI est une API à état externe ● Le Device Contexte contient tous les paramètres courants de l'appelant ● Il doit être fourni à quasiment toutes les fonctions GDI ● La manipulation des DC est lourde et omniprésente

Notion de Device Context ● Cas d'utilisation très complexes – obtenu avec GetDC, – relâché avec ReleaseDC, – créé avec CreateCompatibleDC / CreateDC, – détruit avec DeleteDC, – obtenu et relâché par BeginPaint/EndPaint lors du dessin.

Notion de ressources ● Les ressources centralisent les données hors du code : – facilitent les traductions, – prototypage facilité. ● Elles peuvent contenir : – des boîtes de dialogue, – des chaînes de messages, – des accélérateurs, – etc.

Notion de ressources ● Adaptées aux applications formulaires – conception et codage facilités, – applications statiques et peu souples. ● Gestion des ressources multilingues complexe – pas de langue par défaut, – chargement dynamique de DLL de ressources. ● Facteur de plantages nombreux – gestion des ressources de sous-systèmes complexes, – nécessité de retrouver le module tout le temps.

Modules et ressources Processus Module du programm e Ressources Code Module de DLL Ressources Code

Programmation dangereuse ● Les procédures de fenêtres doivent être réentrantes – la gestion de l'état du programme est technique, – les données globales et variables membres doivent être protégées (perturbe gravement les langages objets). ● Les communications interthread sont risquées – SendMessage est synchrone et sujette à interblocages, – marshalling non réalisé pour les messages utilisateurs, – PostMessage/PostThreadMessage requis, – appels de méthodes OLE non contrôlables.

SendMessage Thread A Thread B PostThreadMessage SendMessage Retour immédiat Attente active Exécution en parallèle Signal de fin

Plan ● Architecture et limitations structurelles ● Présentation de l'API ● Bibliothèques et toolkits ● Conclusion

Les MFC ● Encapsulation C++ de l'API : – encapsulation quasi directe des concepts GDI, – API encore une fois très vaste. ● Jeu de macros : – déclaration des messages, – déclaration utilitaires. ● Permettent d'éviter beaucoup de frais

Les Wizards ● L'environnement de développement est puissant ● Création de la structure du programme immédiate ● Cela n'est réellement utile qu'au début ● Il ne faut pas s'en priver

Les défauts ● API très complexe ● Conception peu logique ● Fonctionnement interne impénétrable ● Monothreadées pour les conteneurs OLE ● Inadaptées pour les serveurs OLE

Plan ● Architecture et limitations structurelles ● Présentation de l'API ● Bibliothèques et toolkits ● Conclusion

Conclusion ● API très complexe ● API incohérente ● Encapsulations faibles et complexes ● Gestion des états de l'application lourde et non résolue par les toolkits ● Architecture multithreadée risquée ● Ressources difficiles à gérer

Conclusion ● Les solutions (partielles) – limiter le périmètre fonctionnel, – mener à terme les spécifications fonctionnelles, – choisir un toolkit efficace, – former les développeurs, – faire une conception très détaillée, – prendre en compte la dynamique (threads, messages, diagrammes d'états), – prévoir un aléa fort.