Windows NT/2000/XP Enjeux et contraintes techniques Première partie Présentation générale C. Casteyde Document diffusé sous licence GNU FDL
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
Les familles Windows DOSWin 3.1 OS/ Millenium NT 3.51NT42000XP Vista
La famille 9x/Me ● Windows 9x est multitâche préemptif ● Le noyau 32 bits, couche graphique 16 bits ● Reste basé sur DOS : – séparation des processus 32 bits, – compatibilité en mémoire conventionnelle, – système de fichiers FAT.
La famille NT/XP/Vista ● Basés sur la technologie NT ● Véritable séparation des processus ● Fiable ● Full 32 bits ● NTFS 5 (droits d'accès, moins limité, journalisation,...) ● Sécurisable mais difficilement
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
Architecture de XP Kernel32 GDI Applications /.Net Framework Applications.Net User Shell COM OLE
Le noyau : NTDLL et Kernel32 ● Conception moderne ● Fonctionnel ● Stable ● API cohérente ● Complexe ● Peu performant
API Noyau OpenProcess CreateFile CreatePipe OpenThread socket HANDLE ReadFileWriteFile CloseHandleWaitForSingleObject
La couche graphique : GDI ● API plus hétérogène ● Complexe et difficile à maîtriser ● Nécessité d'utiliser des bibliothèques tierces ● Des fonctionnalités manquantes ● Peu performante ● Extensions spécifiques (jeux, vidéo, etc.) ● Sous Vista, s'appuie sur Aero
API GDI CreateFont CreateBitmap HFONTDeleteObject SelectObject CreateWindowDestroyWindow encapsulé HBITMAP CreateCaret CreateCursorDestroyCursorHCURSOR HWND DestroyCaret CreateIconDestroyIconHICON
Services de composants ● Component Object Model est la base ● Object Linking and Embedding est l'usage ● Réutilisation de contrôles ● Extensible à l'infini mais coûteux ● Complexe et difficile à maîtriser ● Héritage de Windows 3.1 pénalisant
Objets OLE Mise à jour des liens automatique Objet OLE intégré ou incrusté
Objets OLE Intégration du document source Intégration des menus et commandes
Objets OLE Conteneur OLE IUnknown Objet OLE IUnknown IOleObjec t IDataObjec t IViewObject IOleContainer
Applications COM/DCOM Composant Processus A Processus B Réseau Machine 2 Machine 1
Les fonctionnalités de haut niveau User et Shell ● Services complémentaires aux applications ● Intégration au bureau ● Contrôles additionnels ● Fonctionnel mais reste complexe ● S'appuie sur les couches existantes
Unification et simplification :.NET ●.NET présente une API cohérente ● Hiérarchisée ● Disposant de fonctionnalités avancées ● Parfaitement intégrée ● Fortement orientée Web ● Les problèmes sous-jacents sont toujours présents
Architecture.NET C++C#VB7Perl Intermediate Language.Net Runtime Windows API CLR
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
Applications de haut niveau ● Toute une gamme de produits ● Couvrent une part importante des besoins de l'entreprise ● Excellente intégration ● Facilité au premier abord ● Complexe au final ● Licences et administration coûteuses
Intégration d'Internet Explorer ● Pas fondamental, mais ancré dans le système ● Apport des technologies XML et de scripting ● Technologie d'encryptage ● L'origine des contrôles ActiveX ● Profondément basé sur OLE ● Sécurité douteuse
Intégration d'IIS ● Internet Information Service ● Présent depuis Windows 2000 ● Serveur Web ● Scripting et pages ASP ● Intégration de.NET
Intégration de SQL Server ● SGBDR honnête ● Facilité d'utilisation ● Intégré à Access et à IIS ● Intégration à l'OS prévue ● SQL Express
Architecture des applications Web IIS ASP/.Net SGBDR SQLServer Navigateur Client Web Serveur COM Pages statiques AD O DCO M
Microsoft Office ● Suite bureautique dominante ● Panel de programmes quasi complet ● Adapté à l'entreprise ● IHM et concepts parfois incohérents ● Complexe et surdimensionné ● En fait trop pour l'utilisateur ● Dépendance forte envers Microsoft
Les applications Office ● Word est de loin le plus utilisé – lettres, – documents techniques. ● Outlook vient en deuxième – mails, avis de réunions, – calendrier, réservation de ressources. ● Excel – récapitulatifs, – administration.
Les applications Office ● PowerPoint – commercial, – vente. ● Access – suivi de projet, – suivi d'anomalies. ● MS Project (hors Office) – orienté diagrammes de Gantt, – suffisant pour la planification.
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
IDE de haut niveau ● Environnements complets ● Toutes les fonctionnalités sont intégrées ● Simplicité d'emploi ● Assistants indispensables ● Microsoft Visual Studio ● Borland Delphi et C++ Builder
Visual Studio
Rapid Application Development ● RAD efficaces ● Prise en main facile ● Indispensable pour le garbageware ● Visual Basic,.NET Framework
Visual Basic
.Net : La solution gagnante ●.NET est parfaitement intégré à l'OS ● Applications Web développées en temps record ● Indépendance du langage ● Indépendance du client ● Assistants extrêmement performants ● Technologies avancées : WCF, WPF, etc.
Outils de développement ● Compilateurs optimiseurs ICC ● Solutions de conception UML – Rational Rose. ● Gestion de sources – ClearCase, – SourceSafe, – Team System ● Déboguage – Bugtrapper, BoundChecker, Application Verifier.
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
Effet d'échelle ● Un marché gigantesque – opportunités souvent exploitables, – amortissement des coûts. ● Grosse base d'utilisateurs – public habitué à Windows, – clients semi-instruits, – nombreuses compétences externes.
Un marché dangereux ● Fortement concurrentiel ● Pas de niche durable – comblement par les concurrents, – comblement par Microsoft lui-même, – danger de rachat. ● Dépendance forte envers le(s) fournisseur(s) – course technologique, – coûts de R&D et formation importants – nécessité de suivre Microsoft aveuglément.
Sécurité du SI ● La configuration par défaut est non sûre ● Windows 2003 corrige le tir ● Mais les applications ne sont pas prêtes ● Administration complexe des droits ● Souvent, nécessité de tout désactiver ● Trous de sécurité applicatifs transverses (IE, IIS, SQL Server) ● Logique de sécurité aberrante (UAC)
Développement coûteux ● Technologies complexes – APIs touffues et complexes, – pièges innombrables, – détection tardive des bogues bloquants, –.NET corrige en partie le tir, ● Pas de plan B – une fois le projet amorcé, on ne peut pas reculer, – il n'y a qu'un seul fournisseur tout puissant, – support virtuel.
Développement coûteux ● Solutions : – formation des développeurs, – consultation d'experts, – maquettage technique poussé, – conception détaillée, – conventions de codage fortes.
Déploiement complexe ● Grand nombre de plates-formes – version de Windows, – langue du système. ● Environnement non maîtrisé – programmes annexes installés, – incompatibilité des bibliothèques systèmes. ● Dépendances difficiles à identifier – DLL Hell, – bibliothèques chargées dynamiquement.
Déploiement complexe ● Solutions : – disposer de plates-formes de test variées, – réduire le nombre de plates-formes supportées, – réduire les langues supportées, – imposer des prérequis forts sur les versions, – dédier les machines à l'applicatif.
Coût d'utilisation ● Coût des licences ● Course technologique ● Coût de développement ● Coût de déploiement ● Coût de maintenance ● Coût d'exploitation
Plan ● Historique et démystification ● Architecture XP ● Services complémentaires ● Outils de développement ● Le choix Windows ● Conclusion
Conclusion ● Les points forts – noyau bien conçu et cohérent, – intégration et offre globale, –.NET pour les applications de base (RAD), –.NET pour le Web, – masse critique largement dépassée.
Conclusion ● Les inconvénients – technologies complexes, – systèmes temps réel ou à contraintes de performances, – réseau et tolérance de panne, – sécurité, – dépendance forte envers Microsoft.
Conclusion ● Les problèmes classiques – développement coûteux, – technologies non maîtrisées, – bogues incontournables, – déploiement difficile, – prise en compte de la sécurité.
Conclusion ● Les solutions – définition stricte du périmètre fonctionnel, – définition stricte de l'environnement cible, – formation technique des développeurs, – isolation des applications et des réseaux, – expertise externe, – ne pas sous-estimer les charges.