Partager via


Introduction

 

Introduction

Brent Rector
Wise Owl Consulting

Octobre 2003

Contenu

Présentation de ce livre
    Modèle d’application « Longhorn »
    Informatique et sécurité dignes de confiance
    Stockage enrichi et accès aux données
    Communication et collaboration
    Présentation et média enrichis
Ce que vous trouverez dans ce livre

En tant que développeur de logiciels depuis de nombreuses années, j’ai écrit des programmes pour de nombreuses plateformes et systèmes d’exploitation, qui ont tous leurs avantages et leurs inconvénients. En règle générale, la plupart des plateformes et systèmes d’exploitation étaient similaires à leurs prédécesseurs avec des améliorations incrémentielles.

À ce jour, Microsoft® Windows® lui-même a évolué de cette façon. Initialement, l’écriture d’une application Windows signifiait programmation sur l’API Microsoft Win32®. (En fait, il s’agissait de l’API Win16 à un moment donné, mais elles sont conceptuellement identiques.) Microsoft a conçu l’API Win32 comme une API plate et procédurale pouvant être appelée par les programmes C. À un moment donné, le livre programmation windows de Charles Petzold, qui a introduit cette API, était obligatoire lecture pour tout développeur d’applications Windows.

L’avantage de l’API Win32 est qu’elle vous permet de faire à peu près tout ce que vous voulez. (La chose la moins agréable est que vous devez faire à peu près tout ce que vous voulez.) Vous obtenez d’abord le crack de tous les messages Windows et pouvez répondre aux événements qu’ils signalent de toute manière appropriée (ou inappropriée). Vous pouvez modifier la mémoire de votre propre processus ou même celle d’un autre processus, comme vous le souhaitez, si la sécurité le permet. Vous pouvez dessiner une fenêtre comme vous le souhaitez. Votre travail consiste simplement à obtenir les bits appropriés à l’écran aux emplacements appropriés au bon moment.

La conception de Windows lui-même est en fait assez orientée objet. Vous manipulez des objets de fenêtre, utilisez des stylets graphiques, etc. Toutefois, vous effectuez ces opérations en appelant les API correctes (parmi les milliers disponibles) dans le bon ordre et en transmettant les types de données appropriés, la plupart du temps sans aide du compilateur lorsque vous vous trompez.

Lorsque Microsoft a publié Windows pour la première fois et pendant un certain nombre d’années après, les développeurs de logiciels écrivent généralement des applications monolithiques et isolées. Les développeurs n’avaient aucun composant à partir duquel composer des applications et aucun mécanisme prenant en charge la composition ; de plus, les applications n’ont pas tenté de communiquer avec d’autres applications sur le même système, et encore moins avec une application sur un autre ordinateur.

En 1993, Microsoft a introduit le modèle COM (Component Object Model). Microsoft a conçu COM pour tenter de résoudre les deux problèmes suivants. COM a introduit une norme binaire afin que les composants, produits par différents compilateurs de langage source, puissent interagir à l’aide de définitions d’interface immuables. Le protocole réseau COM distribué (DCOM) a permis à ces composants d’interagir entre les limites du processus et de l’ordinateur.

La plupart des API Windows introduites par Microsoft après 1993 sont des API com. Les API d’extensions Microsoft DirectX® et Shell en sont deux exemples. Aujourd’hui, Windows a plus de 10 000 API conçues par de nombreux développeurs différents sur de nombreuses équipes différentes avec des objectifs différents. Par conséquent, Windows expose certaines DES API en tant que points d’entrée plats en langage C dans une bibliothèque de liens dynamiques (DLL). Il expose d’autres API sous la forme d’un ensemble d’interfaces COM complexes en interaction. Il existe d’autres API auxquelles vous accédez à l’aide d’autres technologies.

Dans la pratique, vous, le développeur, voulez un système d’exploitation pour vous protéger de la plupart de cette complexité. Par conséquent, de nombreuses équipes différentes, à l’intérieur de Microsoft et à l’extérieur, ont développé différentes bibliothèques d’infrastructure pour simplifier le développement d’applications. Certaines bibliothèques d’infrastructure populaires sont les classes MFC (Microsoft Foundation Classes), la bibliothèque de modèles Microsoft ActiveX (ATL), la bibliothèque dans Microsoft Visual Basic®, la bibliothèque d’objets Windows (OWL) de Borland et sans aucun doute beaucoup d’autres.

MFC, par exemple, tente d’encapsuler les différentes idiosyncrasies de l’API Win32 avec un ensemble cohérent et orienté objet de classes C++. Lorsque le langage de programmation de votre choix est C++ et que les bibliothèques MFC prennent directement en charge ce que vous voulez faire, votre travail est facile. Toutefois, lorsque vous voulez quelque chose d’un peu en dehors du courant courant, vous êtes principalement seul à nouveau et, en fait, en pire forme qu’avant, car vous devez maintenant trouver comment utiliser les API Win32, et faire en sorte que votre travail interopére avec les classes MFC existantes.

ATL vous permet d’écrire des objets COM extrêmement efficaces et, dans une moindre mesure, des applications Windows à l’aide de classes basées sur des modèles C++ obscures et (pour de nombreux développeurs) mal comprises. Il n’est pas très long de dire que vous pourriez facilement vous retrouver avec des objets très efficaces que personne ne pourrait comprendre.

L’équipe Visual Basic de Microsoft a pris une approche différente. Ils ont encapsulé l’accès à l’API Win32 dans un langage et une bibliothèque faciles à apprendre et à utiliser, mais au détriment de la suppression des fonctionnalités et des options. Visual Basic rend extrêmement simple la production de composants pour les applications et les applications qui utilisent de tels composants. Toutefois, Visual Basic ne vous permet pas d’accéder à tout ce qu’offre l’API Win32. Parfois, le développeur Visual Basic ne peut tout simplement pas accomplir une tâche en raison de restrictions imposées par l’environnement de développement choisi.

Entre le début et le milieu des années 1990, le World Wide Web a pris son envol. Les ordinateurs ont commencé à devenir de plus en plus connectés. Initialement, un navigateur Web rendait simplement du code HTML statique, et la navigation sur le Web ressemblait beaucoup à regarder une page de magazine.

Lorsque Microsoft a publié Internet Explorer 4 en 1997, d’autres possibilités se sont offertes. Les développeurs peuvent créer des fichiers HTML contenant un script plus un balisage. Les objets du modèle objet HTML ont obtenu des comportements, et vous pouvez écrire un script qui répondait aux événements et fournissait un comportement personnalisé. Les pages HTML peuvent désormais réagir aux événements utilisateur sur le client et répondre beaucoup plus rapidement que les applications web précédentes qui nécessitaient un aller-retour vers le serveur pour chaque mise à jour d’écran.

L’un des principaux avantages des applications web était que vous pouviez facilement déployer l’application en copiant simplement sur un ensemble de fichiers sur un serveur. La prochaine fois qu’un client a consulté l’application, il a interagi avec la dernière version.

Un autre grand avantage des applications web était la prise en charge intégrée de l’intégration de médias enrichis. La mise en page basée sur les flux et la prise en charge de plusieurs polices, graphiques et contenu multimédia sont beaucoup plus faciles à fournir via une application web qu’actuellement via une application Win32, quelle que soit l’infrastructure que vous utilisez.

Dans l’ensemble, cependant, il est toujours difficile d’écrire des applications web aujourd’hui, car la prise en charge du langage de programmation et de la bibliothèque pour ces applications est limitée. Le débogage d’applications web est souvent un cauchemar. À bien des égards, l’expérience utilisateur cliente n’est toujours pas aussi riche que celle fournie par les applications clientes basées sur l’API Win32 en raison de l’ensemble limité de contrôles disponibles pour les applications web.

À la fin des années 1990, un développeur Windows a souvent dû se spécialiser. Vous étiez un programmeur d’API Win32 et vous pouviez écrire n’importe quel type d’application cliente lentement. Vous étiez également développeur Visual Basic et pouviez écrire rapidement des applications d’interface utilisateur basées sur des formulaires relativement riches, mais vous ne pouviez pas écrire certains autres types d’applications. Un développeur MFC a quelque peu chevauchant ces deux extrêmes, bien que dans la pratique, vous deviez être un développeur C++ compétent qui connaissait l’API Win32 pour être un bon développeur MFC. Les développeurs d’objets ATL et COM étaient souvent les plombiers d’un système et fournissaient des composants à réutiliser pour ces autres développeurs.

En 2000, Microsoft a introduit .NET. La définition de ce qu’est exactement .NET diffère en fonction de la personne à qui vous demandez. À mon avis, .NET est une plateforme de développement logiciel moderne qui permet de produire, plus rapidement qu’auparavant, des applications Windows correctes et sécurisées qui utilisent les dernières technologies, telles que XML et les services Web, tout en autorisant l’accès à votre code d’héritage.

.NET en général, et le code managé en particulier, offre un certain nombre d’avantages au développeur de logiciels :

  • Modèle objet orienté objet, indépendant du langage et sûr du type.
  • Réduction des conflits entre les différentes versions des composants.
  • Réduction du nombre de bogues et de failles de sécurité en raison d’erreurs de programmation courantes. Par exemple, il n’y a plus de dépassements de mémoire tampon et plus d’erreurs de gestion de la mémoire.
  • Infrastructure unique et ensemble de bibliothèques que tous les développeurs peuvent utiliser. Les bibliothèques de classes .NET Framework encapsulent les API Win32 les plus couramment utilisées, ainsi que de nombreuses API supplémentaires fournies par de nombreux SDK dans un package unifié.
  • Abstractions supérieures à celles disponibles précédemment.

À certains égards, .NET est simplement une nouvelle infrastructure orientée objet et indépendante du langage qui encapsule de nombreux aspects des API Win32. Personnellement, je préfère considérer .NET comme un remplacement à la pointe de la technique pour les API Win32, incomplètes pour l’instant, mais de plus en plus complètes au fil du temps.

Par exemple, .NET version 1.0 fournit des classes de développement d’applications clientes orientées objet basées sur des formulaires. Vous pouvez les considérer comme de simples wrappers sur les API de fenêtrage Win32 de base. Toutefois, .NET fournit également des classes ASP.NET qui encapsulent le développement d’applications web et la génération de comportement HTML plus. Ces classes étendent en effet l’API Windows et ne sont pas vraiment un wrapper pour quoi que ce soit dans les API Win32. . La prise en charge complète de NET pour les services Web et XML en général est deux autres exemples de nouvelles fonctionnalités fournies avec .NET plutôt que de simples wrappers autour des fonctionnalités Win32 existantes.

Présentation de ce livre

Ce livre se concentre sur les fonctionnalités de Microsoft « Longhorn » pour le développeur. Du point de vue d’un développeur, « Longhorn » fournit de nouvelles fonctionnalités que nous pouvons catégoriser dans cinq domaines :

Modèle d’application « Longhorn »

« Longhorn » définit les applications de manières nouvelles et plus puissantes.

  • Les API « Longhorn » sont des classes managées qui gèrent une grande partie de la gestion de la programmation et réduisent la charge de travail du développeur. Tous les compilateurs et outils de développement tiers qui prennent en charge le CLR (Common Language Runtime) .NET prennent automatiquement en charge les nouvelles API « Longhorn ».
  • Le modèle d’application « Longhorn » prend en charge à la fois les applications de navigation basées sur les formulaires traditionnels et les nouvelles applications de navigation basées sur les pages. La prise en charge de la navigation basée sur les pages d’application est fournie par le système d’exploitation.
  • Un nouveau modèle de sécurité et de confidentialité « Longhorn », qui est le résultat d’une combinaison d’API managées et d’identité numérique, assure la sécurité des applications dès le début du processus de développement. Les applications et les composants « Longhorn » sont approuvés en raison de leur utilisation du code managé.
  • Les API « Longhorn » représentent les meilleurs concepts de développement d’une variété de technologies contemporaines. À bien des égards, le développeur n’est plus limité par les décisions de conception prises il y a plus d’une décennie.
  • Gestion et rétention automatiques de l’état des applications pour faciliter le développement d’applications.
  • La technologie de déploiement ClickOnce prend en charge des fonctionnalités de déploiement sophistiquées telles que l’installation dans Program Files, le contrôle de version, l’installation côte à côte et drizzle download.
  • Les interfaces utilisateur inductives guident les utilisateurs à travers une tâche.
  • Les fonctionnalités d’accessibilité et d’automatisation sont intégrées à la plateforme. Vos applications bénéficient automatiquement d’un tel support.

Informatique et sécurité de confiance

« Longhorn » base la sécurité d’une application sur le modèle CAS (Common Language Runtime Code Access Security), mais avec des extensions significatives.

  • « Longhorn » reconnaît que certaines applications sont entièrement approuvées et que d’autres n’ont qu’une confiance partielle. Les applications qui participent pleinement au modèle de sécurité « Longhorn » auront un accès complet aux fonctionnalités de « Longhorn ». Les applications qui ne participent qu’en partie au modèle auront certains avantages, bien qu’avec des restrictions.
  • « Longhorn » fournit un environnement d’exécution ultra sécurisé, avec code managé, appelé Environnement d’exécution sécurisée (SEE), qui protège l’utilisateur contre les comportements « incorrects » des applications.
  • Le Gestionnaire de confiance fournit un système de scoring pour les applications « Longhorn » qui détermine un niveau de confiance suggéré que les utilisateurs peuvent accorder à l’application.
  • « Longhorn » fournit un centre de gestion de la confidentialité de sécurité qui permet à un utilisateur de gérer les correctifs à chaud et d’accéder aux mises à jour Windows. En outre, un conseiller de sécurité informe l’utilisateur des risques et des violations en matière de sécurité.
  • Digital Rights Management fait partie du code managé, offrant une protection solide de la propriété intellectuelle. Cela permet de stocker et de transmettre en toute sécurité la propriété intellectuelle auparavant vulnérable dans l’environnement de « Longhorn ».
  • « Longhorn » identifie de manière unique les utilisateurs et les ordinateurs à l’aide de signatures numériques. Lorsqu’il est combiné avec une autorité de signature pour la vérification, « Longhorn » peut identifier de manière sécurisée et fiable les utilisateurs individuels dans les scénarios informatiques.

Stockage enrichi et accès aux données

« Longhorn » offre un stockage et un accès des données d’application considérablement améliorés via un nouveau système de fichiers.

  • La nouvelle ADO.NET offre un accès amélioré aux données.
  • Les schémas courants pour les informations quotidiennes, telles que les contacts, les organisations, les adresses et bien plus encore, permettent d’accéder aux informations partagées par les applications, le système d’exploitation et l’interpréteur de commandes. En fait, la nouvelle interface utilisateur de l’interpréteur de commandes est l’un des utilisateurs les plus lourds du nouveau système de stockage.
  • Une application peut joindre des métadonnées supplémentaires à des objets dans le système de fichiers, ce qui permet une recherche et une récupération plus rapides d’objets de fichiers qu’avec un système de fichiers traditionnel.
  • Les modifications apportées aux objets dans l’environnement « Longhorn » sont automatiquement propagées à d’autres instances de ces objets à l’aide de la liaison de données dynamiques.

Communication et collaboration

Les applications « Longhorn » disposent désormais d’une grande variété de fonctionnalités de communication et de collaboration.

  • Les fonctionnalités telles que les sessions et les canaux fournissent des services de collaboration enrichis aux participants.
  • Les fonctionnalités de communication et de collaboration peuvent fonctionner en toute sécurité via des pare-feu et la traduction d’adresses réseau (NAT), ce qui permet de traverser les limites de l’entreprise.
  • La communication standardisée basée sur les services Web permet aux applications héritées et nouvelles de participer à la collaboration.
  • Les fonctionnalités de communication basées sur le serveur/sur les pairs peuvent fonctionner sur une infrastructure centralisée ou directement pour les clients utilisateurs.
  • La prise en charge de la présence virtuelle permet aux utilisateurs de collaborer avec d’autres utilisateurs par le biais de fonctionnalités de messagerie instantanée (notification commune, invitation, etc.).
  • La sécurité intégrée fait partie intégrante de ces fonctionnalités.
  • La prise en charge de l’extensibilité de l’interpréteur de commandes, comme les verbes ** collaboratifs (utilisation d’un client de conversation par défaut, etc.), peut être identifiée pour utiliser des outils familiers dans la communication en temps réel « Longhorn ».
  • Les contrôles courants tels que le nouveau contrôle sélecteur de Personnes fournissent une prise en charge générale des applications de communication.

Présentation et média enrichis

Les développeurs peuvent plus facilement produire des applications fournissant des interfaces utilisateur enrichies à l’aide des services de présentation et de médias disponibles dans « Longhorn ».

  • « Longhorn » fournit au développeur des classes graphiques riches qui fournissent des animations, des effets et des images visuellement excitantes qui exploitent l’accélération matérielle.
  • Les graphiques vectoriels déclaratifs et dynamiques puissants permettent une présentation et une mise à l’échelle flexibles pour les périphériques de sortie haute résolution tout en économisant des ressources, car les graphiques sont générés à partir d’un langage descriptif.
  • Les animations faciles à appliquer améliorent la facilité d’utilisation et la continuité de l’interface utilisateur.
  • La prise en charge des graphiques utilise des cartes vidéo DirectX/3D accélérées par le matériel pour créer un environnement plus immersif et plus fluide.
  • Votre application peut intégrer en toute transparence toutes les formes d’interface utilisateur : images, vidéo, audio, graphiques vectoriels, contrôles, texte, etc.
  • Un nouveau modèle de disposition permet d’afficher du texte enrichi et des médias en raison d’une infrastructure qui ajuste automatiquement la pagination, la position, etc., à la taille de l’écran.
  • Les nouveaux services de texte tels que l’inclusion du rendu de sous-pixels (ClearType) permettent d’obtenir une interface graphique graphique visuellement attrayante sur n’importe quel PC avec un accélérateur 3D indépendamment des résolutions d’écran possibles.
  • Vous pouvez fusionner des éléments de données disparates dans des conteneurs, qui peuvent être déplacés dans l’interface utilisateur.
  • Les transformations conditionnelles de données basées sur le type, la valeur ou d’autres règles permettent aux outils de développement de créer une interface utilisateur plus facile.
  • Une plateforme multimédia étendue permet une lecture sans problème de l’audio et de la vidéo; expériences A/V distribuées entre les PC et les appareils électroniques grand public ; codecs audio et vidéo de qualité supérieure; hautes performances pour la capture et la modification de contenu en temps réel et haute définition ; services de métadonnées de CD, DE DVD et de télévision enrichis.

Ce que vous trouverez dans ce livre

Chacun de ces sujets peut facilement remplir un livre seul. Par conséquent, je ne vais pas décrire toutes les différentes API dans « Longhorn ». Je ne vais pas non plus plonger dans une description détaillée de chaque technologie. Il ne s’agit pas d’une API ou d’un livre de référence. Je suis sûr qu’il ne faudra pas longtemps avant que vous puissiez trouver de nombreuses copies légèrement modifiées et régurgitées de la documentation disponible dans les librairies.

Ce que je vais faire, c’est vous montrer comment commencer à développer pour « Longhorn ». Au minimum, vous devez vraiment lire les chapitres 1 et 2, car ils couvrent les bases absolues que vous devez connaître pour développer des applications pour la plateforme « Longhorn ».

Dans le chapitre 1, j’aborde le nouveau modèle d’application. Ne passez pas Go. Ne collectez pas 200 $. Vous devez vraiment lire le chapitre 1 ou vous obtiendrez un carte Aller en prison par la poste. Je vous présente également un nouveau langage de balisage/programmation dans le chapitre 1. Que vous soyez développeur VB.NET, développeur C# ou l’un des développeurs COBOL.NET mythiques, vous devez apprendre ce nouveau langage de balisage/programmation. Lisez chapitre 1 : Le modèle d’application « Longhorn ». Je ne plaisante pas. En fait, allez le faire maintenant et revenez. J’attendrai.

Ok, maintenant que vous avez lu le Chapitre 1 et que vous êtes heureux de créer vos propres applications, vous devriez probablement lire le Chapitre 2. Dans celui-ci, je vous montre comment compiler, déployer et exécuter une application « Longhorn ». Le chapitre 2 est donc également important, mais il n’est pas nécessaire de s’y précipiter. C’est un chapitre très patient et attendra que vous terminiez cette introduction.

Les chapitres restants présentent les différentes technologies que j’ai référencées dans cette introduction. Le chapitre 3 est une introduction fantastique à la création d’interfaces utilisateur à l’aide du nouveau langage de balisage et vous donne une idée de sa puissance. Le chapitre 4 présente les nouvelles API de système de fichiers et vous fera probablement abandonner les API de système de fichiers Win32.

Dans le chapitre 5, je vous montre comment utiliser la liaison de données pour déplacer des données de pratiquement n’importe quel objet .NET vers votre interface utilisateur et revenir en arrière sans écrire de code procédural. Je vous montre comment créer des applications de communication puissantes, sécurisées et fiables dans le chapitre 6. Enfin, le dernier chapitre décrit certaines recommandations pour la création d’applications mobiles modernes et connectées.

Merci d’avoir traîné jusqu’à la fin de cette longue introduction. Il est maintenant temps pour vous de lire le chapitre 2. (Vous avez lu le chapitre 1 plus tôt, n’est-ce pas ?) Amusez-vous avec « Longhorn ». Je l’ai certainement fait !

Passez au chapitre 1 : Le modèle d’application « Longhorn »

Brent Recteur

Brent Rector est président et fondateur de Wise Owl Consulting (www.wiseowl.com), et a plus de trois décennies d’expérience dans le développement de logiciels. Brent a conçu et implémenté des systèmes d’exploitation ainsi que de nouveaux langages de programmation informatique et leurs compilateurs. Brent a commencé à développer des applications Windows à l’aide de Windows 1x bêta en 1985 et a été impliqué dans le développement Windows depuis. Il est l’auteur et le co-auteur de nombreux livres de programmation Windows, notamment ATL Internals et Win32 Programming. Brent est également l’auteur de Demeanor pour .NET, le premier obfuscateur de code pour les applications .NET.

© 2003 Microsoft Corporation. Tous droits réservés.

IntelliSense, Microsoft, MSDN, MS-DOS, Visual Basic .NET et Visual Studio .NET sont des marques déposées ou des marques commerciales de Microsoft Corporation dans le États-Unis et/ou dans d’autres pays. D’autres noms de produits et de sociétés mentionnés dans le présent document peuvent être des marques commerciales de leurs propriétaires respectifs.