Français
中文(简体)
中文(繁体)
한국어
日本語
English
Português
Español
Русский
العربية
Indonesia
Deutsch
Français
ภาษาไทย
Plan du site complet
Mises à jour récentes
Page d'accueil
Code source
Liens de programmation
Ressources pour la création de sites
Tutoriel de conception de pages Web
Tutoriel de programmation réseau
Page d'accueil
>
livre tutoriels
>
Tutoriel .NET
Pro ASP.NET 3.5 en C# 2008 Deuxième édition
Tutoriel .NET
Aucune ressource disponible
■CHAPITRE 10 Contrôles de données enrichies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Le GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Définir des colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Formatage du GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Champs de formatage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Styles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Valeurs spécifiques au formatage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Sélection de ligne GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Utilisation de la sélection pour créer un formulaire principal-détails . . . . . . . . . . . . . . . . . . . . 398
L'événement SelectedIndexChanged . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Utilisation d'un champ de données comme bouton de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Tri du GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Tri avec le SqlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Tri avec ObjectDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Tri et sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Tri avancé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
xiv ■TABLE DES MATIÈRES
Pagination du GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Pagination automatique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Pagination personnalisée avec ObjectDataSource. . . . . . . . . . . . . . . . . . . . . . 408
Personnalisation de la barre de téléavertisseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Modèles GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Utilisation de plusieurs modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Modification de modèles dans Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Liaison à une méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Gestion des événements dans un modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Modification avec un modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Le ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Regroupement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Le DetailsView et le FormView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
La vue Détails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Le FormView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Grilles avancées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Résumés dans GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Une vue parent/enfant dans une seule table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Modification d'un champ à l'aide d'une table de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Servir des images à partir d'une base de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Détection des conflits de concurrence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
■CHAPITRE 11 Mise en cache et pages asynchrones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Comprendre la mise en cache ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Mise en cache des sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Mise en cache de sortie déclarative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Mise en cache et chaîne de requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Mise en cache avec des paramètres de chaîne de requête spécifiques. . . . . . . . . . . . . . . . . . . . . 454
Contrôle de mise en cache personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Mise en cache avec la classe HttpCachePolicy. . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Substitution post-cache et mise en cache des fragments. . . . . . . . . . . . . . . . . . . . 457
Profils de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Configuration du cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Mise en cache des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Ajout d'éléments au cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Un simple test de cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Priorités du cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Mise en cache avec les contrôles de source de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Dépendances du cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Dépendances des éléments de fichier et de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Dépendances agrégées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
■TABLE DES MATIÈRES xv
Le rappel de l'élément supprimé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Comprendre les notifications du cache SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Notifications de cache dans SQL Server 2000 et SQL Server 7 . . . . . . . . . . . . 474
Notifications de cache dans SQL Server 2005 et SQL Server 2008 . . . . . . . . 479
Dépendances du cache personnalisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Une dépendance de cache personnalisée de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Une dépendance de cache personnalisée utilisant des files d'attente de messages. . . . . . . . . . . . . . . 483
Pages asynchrones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Création d'une page asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Interrogation de données dans une page asynchrone. . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Utilisation de la mise en cache avec des tâches asynchrones . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Plusieurs tâches asynchrones et délais d'attente. . . . . . . . . . . . . . . . . . . . . . . . 495
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
■CHAPITRE 12 Fichiers et flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Travailler avec le système de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Les classes de répertoires et de fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Les classes DirectoryInfo et FileInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
La classe DriveInfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Travailler avec des attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Filtrer les fichiers avec des caractères génériques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Récupération des informations sur la version du fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
La classe Chemin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Un navigateur de fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Lecture et écriture de fichiers avec Streams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Fichiers texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Fichiers binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Téléchargement de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Rendre les fichiers sécurisés pour plusieurs utilisateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Compression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
Sérialisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
■CHAPITRE 13 LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Bases de LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Exécution différée. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Comment fonctionne LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Expressions LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Expressions LINQ « Sous le capot ». . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
LINQ vers DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Ensembles de données typés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Valeurs nulles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
xvi ■TABLE DES MATIÈRES
LINQ vers SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Classes d'entités de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Le DataContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Requêtes LINQ to SQL « sous le capot ». . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
LINQ to SQL et composants de base de données. . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Sélection d'un enregistrement ou d'une valeur unique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Génération automatique de classes de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Relations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Génération de méthodes pour les procédures stockées. . . . . . . . . . . . . . . . . . . . . . . . . 571
Validation des modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Le LinqDataSource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Affichage des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Obtenir des données associées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Modification des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
■CHAPITRE 14 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Quand l’utilisation de XML a-t-elle du sens ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Une introduction à XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Les avantages du XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
XML bien formé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Espaces de noms XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Schémas XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Traitement XML basé sur le flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Écriture de fichiers XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Lecture de fichiers XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
Traitement XML en mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Le XmlDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Le XPathNavigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Le XDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
Recherche de contenu XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Recherche avec XmlDocument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Recherche de XmlDocument avec XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
Recherche dans XDocument avec LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Validation du contenu XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Un schéma de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Validation avec XmlDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Validation avec XDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Transformation du contenu XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Une feuille de style de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Utilisation de XslCompiledTransform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
■TABLE DES MATIÈRES xvii
Utilisation du contrôle XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Transformer XML avec LINQ to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Liaison de données XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Liaison non hiérarchique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Utilisation de XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Grilles imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Liaison hiérarchique avec TreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
Utilisation de XSLT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Liaison au contenu XML provenant d’autres sources. . . . . . . . . . . . . . . . . . . . . . . . 637
Mise à jour de XML via XmlDataSource . . . . . . . . . . . . . . . . . . . . . . . . 637
XML et le jeu de données ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Conversion du DataSet en XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Accès à un DataSet en tant que XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
PARTIE 3 ■ ■ ■ Création de sites Web ASP.NET
■CHAPITRE 15 Contrôles utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Bases du contrôle utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Création d'un contrôle utilisateur simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
Conversion d'une page en contrôle utilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
Ajout de code à un contrôle utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Gestion des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Ajout de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
Utilisation d'objets personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
Ajout d'événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
Exposition du contrôle Web interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Chargement dynamique des contrôles utilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Cadres de portail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Mise en cache partielle des pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
VaryByControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
Partage des contrôles mis en cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
■CHAPITRE 16 Thèmes et pages maîtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Feuilles de style en cascade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Création d'une feuille de style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Application des règles de feuille de style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
xviii ■TABLE DES MATIÈRES
Thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Dossiers et skins thématiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Appliquer un thème simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
Gestion des conflits de thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Création de plusieurs skins pour le même contrôle . . . . . . . . . . . . . . . . . . . . . . . 674
Skins avec modèles et images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Utiliser CSS dans un thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Application de thèmes via un fichier de configuration . . . . . . . . . . . . . . . . . . . . . 677
Application dynamique de thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Standardisation de la mise en page du site Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
Notions de base de la page maître. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
Une simple page maître. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Une page de contenu simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Contenu par défaut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Pages maîtres avec tableaux et mise en page CSS. . . . . . . . . . . . . . . . . . . . . . . . . 685
Pages maîtres et chemins relatifs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Application de pages maîtres via un fichier de configuration. . . . . . . . . . . . . . . . . 688
Pages maîtres avancées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Interagir avec la classe de page maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Définition dynamique d'une page maître. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Pages maîtres imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
■CHAPITRE 17 Navigation sur le site Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Pages avec plusieurs vues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Le contrôle MultiView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Le contrôle Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
Plans des sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Définir un plan de site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Liaison à un plan du site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
Fil d'Ariane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Affichage d'une partie du plan du site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Les objets du plan du site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
Ajout d'informations de plan de site personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Création d'un SiteMapProvider personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Mappage d'URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Découpage de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
Le contrôle TreeView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
Le TreeNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Remplissage des nœuds à la demande. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Styles d'arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
■TABLE DES MATIÈRES xix
Le contrôle de menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Styles de menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Modèles de menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
■CHAPITRE 18 Déploiement de sites Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Services d'informations Internet (IIS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Sites Web IIS et répertoires virtuels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Console de gestion IIS et configuration IIS . . . . . . . . . . . . . . . . . . . . . 747
Mappage de sites Web, de répertoires virtuels et de fichiers avec des URL. . . . . . . . . . . . . 748
Plongée dans l'architecture d'IIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
Installation d'IIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Gestion des sites Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Gestion des répertoires virtuels et des sites Web avec IIS 5.x et IIS 6.0. . . . . . . 772
Gestion des pools d'applications dans IIS 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
Gestion des répertoires virtuels et des sites Web avec IIS 7.0. . . . . . . . . . . . . . . 784
Gestion des pools d'applications dans IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Déploiement de vos applications ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Vérification de l'installation d'ASP.NET sur IIS 5.x et IIS 6.0. . . . . . . . . . . . . . 800
Exécution côte à côte d’ASP.NET sur IIS 5.x et IIS 6.0. . . . . . . . . . . . . . . 801
Exécution côte à côte d’ASP.NET sur IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . 803
Configuration des paramètres d'exécution HTTP lors du déploiement sur IIS 5.x. . . . . . . . 803
Modèles de compilation dans ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Déploiement avec Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
Projets de déploiement Web Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . 809
Le VirtualPathProvider dans ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
Surveillance de l'état de santé dans ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Comprendre la structure de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Événements et prestataires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
PARTIE 4 ■ ■ ■ Sécurité
■CHAPITRE 19 Le modèle de sécurité ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Ce que signifie créer un logiciel sécurisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Comprendre les menaces potentielles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Directives de codage sécurisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Comprendre les gardiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
Comprendre les niveaux de sécurité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
Authentification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Autorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
xx ■TABLE DES MATIÈRES
Confidentialité et intégrité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Rassembler tout cela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Sécurité des services d'informations Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Authentification et autorisation sur IIS 5.x et IIS 6.0 . . . . . . . . . . . . . . . 835
Configuration de la sécurité sur IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Comprendre la couche de sockets sécurisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Architecture de sécurité ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Authentification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
Autorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Le contexte de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
API d'adhésion et de rôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
■CHAPITRE 20 Authentification par formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Présentation de l'authentification par formulaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Pourquoi utiliser l'authentification par formulaires ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
Pourquoi n’utiliseriez-vous pas l’authentification par formulaire ? . . . . . . . . . . . . . . . . . . . . 862
Pourquoi ne pas mettre en œuvre vous-même l’authentification par cookies ? . . . . . . . . . . . . . . . . 863
Les classes d'authentification par formulaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
Implémentation de l'authentification par formulaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
Configuration de l'authentification par formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
Refuser l'accès aux utilisateurs anonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
Création d'une page de connexion personnalisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
Magasin d'informations d'identification personnalisées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
Cookies persistants dans l'authentification par formulaires. . . . . . . . . . . . . . . . . . . . . . . . 877
IIS 7.0 et authentification par formulaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
■CHAPITRE 21 Adhésion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
Présentation de l'API d'adhésion ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
Utilisation de l'API d'adhésion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
Configuration de l'authentification par formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
Création du magasin de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Configuration de la chaîne de connexion et du fournisseur d'adhésion . . . . . . . . . . . . . 896
Création et authentification des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
Utilisation des contrôles de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
Le contrôle de connexion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
Le contrôle LoginStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
Le contrôle LoginView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
Le contrôle de récupération de mot de passe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
Le contrôle ChangePassword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
Le contrôle CreateUserWizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
■TABLE DES MATIÈRES xxi
Configuration de l'adhésion dans IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
Configuration des fournisseurs et des utilisateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
Utilisation de l'API d'adhésion avec d'autres applications. . . . . . . . . . . . . . . . . . 928
Utilisation de la classe d'adhésion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
Récupération des utilisateurs du Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
Mise à jour des utilisateurs dans le magasin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
Création et suppression d'utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
Validation des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
Utilisation de l'adhésion dans Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
■CHAPITRE 22 Authentification Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Présentation de l'authentification Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Pourquoi utiliser l'authentification Windows ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
Pourquoi n’utiliseriez-vous pas l’authentification Windows ? . . . . . . . . . . . . . . . . . . 941
Mécanismes d'authentification Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Implémentation de l'authentification Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Configuration d'IIS 5.x ou IIS 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Configuration d'IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
Configuration d'ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
Refuser l'accès aux utilisateurs anonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
Accès aux informations utilisateur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
Usurpation d'identité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
Usurpation d'identité dans Windows 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
Usurpation d'identité sous Windows XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
Usurpation d'identité et délégation sur Windows Server 2003 . . . . . . . . . . . . . 964
Usurpation d'identité sous Windows Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
Usurpation d'identité et délégation sur Windows Server 2008 . . . . . . . . . . . . . 968
Usurpation d'identité configurée. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
Usurpation d'identité programmatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
■CHAPITRE 23 Autorisation et rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
Autorisation d'URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
Règles d'autorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976
Autorisation de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
Vérifications d'autorisation dans le code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
Utilisation de la méthode IsInRole(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
Utilisation de la classe PrincipalPermission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
Utilisation de l'API Roles pour l'autorisation basée sur les rôles . . . . . . . . . . . . . . . . . . . . . . . . 985
Utilisation du contrôle LoginView avec des rôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
Accès aux rôles par programmation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Utilisation de l'API Roles avec l'authentification Windows. . . . . . . . . . . . . . . . . . . 994
xxii ■TABLE DES MATIÈRES
Protection des ressources non-ASP.NET dans IIS 5 et 6 . . . . . . . . . . . . . . . . . . . . . . . . 997
Ajout d'un mappage de type de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
Écriture d'un gestionnaire HTTP personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998
Autorisation et rôles dans IIS 7.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000
Autorisation avec les rôles ASP.NET dans IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . 1002
Gestion des rôles ASP.NET avec IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
■CHAPITRE 24 Profils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
Comprendre les profils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
Performances du profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
Comment les profils stockent les données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010
Profils et authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011
Profils et composants de données personnalisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011
Utilisation du SqlProfileProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012
Création des tables de profils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012
Configuration du fournisseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015
Définition des propriétés du profil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016
Utilisation des propriétés du profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017
Sérialisation du profil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018
Groupes de profils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020
Profils et types de données personnalisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
L'API Profils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024
Profils anonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026
Fournisseurs de profils personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
Les classes du fournisseur de profil personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
Conception du FactoredProfileProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031
Codage du FactoredProfileProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
Test du FactoredProfileProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040
■CHAPITRE 25 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
Chiffrement des données : la confidentialité compte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
L'espace de noms de cryptographie .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042
Comprendre les classes de cryptographie .NET. . . . . . . . . . . . . . . . . . . . . . . . . . 1046
Algorithmes de chiffrement symétriques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
Chiffrement asymétrique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
Les classes de chiffrement abstraites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049
L'interface ICryptoTransform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
La classe CryptoStream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
■TABLE DES MATIÈRES xxiii
Cryptage des données sensibles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051
Gestion des secrets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052
Utilisation d'algorithmes symétriques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
Utilisation d'algorithmes asymétriques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058
Chiffrement des données sensibles dans une base de données . . . . . . . . . . . . . . . . . . . . . . . . . . 1061
Chiffrement de la chaîne de requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065
Enveloppement de la chaîne de requête. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066
Création d'une page de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070
■CHAPITRE 26 Fournisseurs d'adhésions personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071
Architecture des fournisseurs personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071
Étapes de base pour créer des fournisseurs personnalisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
Conception globale du fournisseur personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
Conception et mise en œuvre du Custom Store. . . . . . . . . . . . . . . . . . . . 1074
Implémentation des classes de fournisseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082
Utilisation des classes de fournisseur personnalisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106
PARTIE 5 ■ ■ ■ Interface utilisateur avancée
■CHAPITRE 27 Contrôles de serveur personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109
Bases du contrôle de serveur personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109
Création d'un contrôle personnalisé Bare-Bones. . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
Utilisation d'un contrôle personnalisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112
Contrôles personnalisés dans la boîte à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113
Création d'un contrôle Web prenant en charge les propriétés de style . . . . . . . . . . . . . . 1114
Le processus de rendu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118
Gérer différents navigateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119
Le HtmlTextWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119
Détection du navigateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120
Propriétés du navigateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122
Remplacement de la détection du type de navigateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
Rendu adaptatif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125
État et événements du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127
Afficher l'état. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127
État de contrôle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129
Données de publication et événements de modification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131
Déclenchement d'une publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133
Extension des contrôles Web existants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
Contrôles composites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
Fin des contrôles dérivés de la barre latérale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138
xxiv ■TABLE DES MATIÈRES
Contrôles de modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141
Création d'un contrôle modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141
Utilisation de modèles personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143
Styles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
■CHAPITRE 28 Prise en charge au moment de la conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151
Les acteurs clés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151
Attributs au moment de la conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152
La fenêtre Propriétés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153
Attributs et héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157
L'icône de la boîte à outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158
Ressources Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159
Création d'une ressource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159
Récupération d'une ressource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160
Substitution de texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161
Sérialisation du code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162
Convertisseurs de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162
Attributs de sérialisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170
Éditeurs de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172
Concepteurs de contrôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
HTML au moment de la conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175
Balises intelligentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182
■CHAPITRE 29 Graphiques dynamiques et GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183
Le contrôle ImageMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183
Création de points chauds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184
Gestion des clics sur les points d'accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185
Un point d'accès personnalisé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186
Dessiner avec GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188
Dessin simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189
Format et qualité des images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191
La classe graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192
Utilisation d'un GraphicsPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194
Stylos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195
Pinceaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198
Intégration de graphiques dynamiques dans une page Web . . . . . . . . . . . . . . . . . . . . . . . . . . 1199
Utilisation du format PNG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200
Transmission d'informations aux images dynamiques. . . . . . . . . . . . . . . . . . . . . . . . . . 1201
Contrôles personnalisés utilisant GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204
Cartographie avec GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
■TABLE DES MATIÈRES xxv
■CHAPITRE 30 Portails avec pages de composants WebPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215
Pages de portail typiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216
Pages de composants WebPart de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217
Création de la conception de la page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218
Contrôles WebPartManager et WebPartZone . . . . . . . . . . . . . . . . . . . . . . 1219
Ajout de composants WebPart à la page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221
Personnalisation de la page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224
Création de composants WebPart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226
Tâches simples de composants WebPart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227
Développement de composants WebPart avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235
Éditeurs de composants WebPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244
Connexion de composants WebPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250
Verbes et composants WebPart personnalisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258
Contrôles utilisateur et composants WebPart avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . 1259
Téléchargement dynamique de composants WebPart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262
Autorisation des composants WebPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268
Tâches finales de personnalisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
PARTIE 6 ■ ■ ■ Programmation côté client
■CHAPITRE 31 Techniques JavaScript et Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
Les essentiels de JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
Le modèle objet du document HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274
Événements côté client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275
Blocs de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277
Manipulation des éléments HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279
Débogage de JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280
Exemples JavaScript de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282
Création d'un processeur de page JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282
Utilisation de JavaScript pour télécharger des images de manière asynchrone. . . . . . . . . . . . . . 1285
Rendu des blocs de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290
Attaques par injection de scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291
Validation de la demande. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291
Désactivation de la validation des demandes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292
Contrôles personnalisés avec JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294
Fenêtres contextuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294
Boutons de survol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1298
Cadres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
Navigation dans les cadres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302
Cadres en ligne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303
xxvi ■TABLE DES MATIÈRES
Comprendre Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304
L'objet XMLHttpRequest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305
Un exemple Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307
Utilisation d'Ajax avec les rappels clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
Création d'un rappel client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
Rappels clients « sous le capot ». . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317
Rappels clients dans les contrôles personnalisés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1318
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1322
■CHAPITRE 32 ASP.NET AJAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323
Présentation d'ASP.NET AJAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323
ASP.NET AJAX sur le client : les bibliothèques de scripts . . . . . . . . . . . . . . . . . . 1325
ASP.NET AJAX sur le serveur : Le ScriptManager . . . . . . . . . . . . . . . . . . 1325
Rappels du serveur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326
Services Web dans ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327
Le proxy de services Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334
Placer une méthode Web dans une page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336
Services d'applications ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337
Contrôles du serveur ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1344
Rendu partiel avec UpdatePanel. . . . . . . . . . . . . . . . . . . . . . . . . . . 1344
Actualisations chronométrées avec la minuterie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1351
Mises à jour fastidieuses avec UpdateProgress. . . . . . . . . . . . . . . . . . . . 1352
Approfondissez les bibliothèques clientes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355
Comprendre le modèle client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1356
Programmation orientée objet en JavaScript. . . . . . . . . . . . . . . . . . . . . . . 1357
Le cadre de pages Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364
Extensions de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369
Installation de la boîte à outils de contrôle ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . 1370
L'AutoCompleteExtender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371
La boîte à outils de contrôle ASP.NET AJAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1378
■CHAPITRE 33 Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379
Comprendre Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379
Silverlight contre Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380
Adoption de Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382
Silverlight et WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382
Installation de Silverlight et des extensions Visual Studio . . . . . . . . . . . . . . . 1383
Création d'un projet Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384
La page d'entrée HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385
Le script d'initialisation Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1386
La page XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388
Le code-behind XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1391
■TABLE DES MATIÈRES xxvii
Propriétés et événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392
Compilation Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1393
Les essentiels de Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1394
Classes .NET Framework dans Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395
La Toile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1396
Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401
Interagir avec HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402
Stockage isolé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1406
Silverlight et ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408
ASP.NET Futures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408
Communication entre Silverlight et ASP.NET . . . . . . . . . . . . . . . . . . 1412
Dessiner en 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1412
Formes simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1413
Chemins et géométries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417
Pinceaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425
Transparence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427
Animations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1429
Les bases de l'animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14h30
Définir une animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14h30
Un exemple d'animation interactive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434
Se transforme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1440
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1441
Développer
Informations supplémentaires
Version
Type
Tutoriel .NET
Date de mise à jour
2009-05-26
taille
30.65MB
Applications connexes
lunettes de soleil pro
2023-10-17
Xplorer2 Pro
2009-06-04
BSPlayer Pro
2009-06-03
ACDSee Pro
2009-05-30
TopStyle Pro
2009-05-29
Copie Pro
2009-04-20
Recommandé pour vous
chat.petals.dev
Autre code source
1.0.0
GPT Prompt Templates
Autre code source
1.0.0
GPTyped
Autre code source
GPTyped 1.0.5
Notes d'étude ADO.net
Tutoriel .NET
Programmation avancée de sites Web ASP.NET
Tutoriel .NET
Programmation ASP.NET version chinoise (3e édition)
Tutoriel .NET
Google Dorks
Autre code source
1.0
shepherd
Autre code source
v6.1.6-react-shepherd: Prepare Release (#3063)
mongo express
Autre code source
v1.1.0-rc-3
Actualités connexes
Tout
Introduction détaillée aux paramètres de performances de la PS5 Pro
2024-11-12
Tutoriel de correction des tremblements professionnels HuaWorld
2023-07-31
Comment dessiner des images dans Paint World Pro
2023-07-28
Comment utiliser le masque d'écrêtage dans Paint World Pro
2023-07-28
Comment utiliser la palette de couleurs Paint World Pro
2023-07-28
Comment utiliser l'aérographe Painting World Pro
2023-07-28
Comment sélectionner une sélection dans Paint World Pro
2023-07-28
Tutoriel de traçage "Drawing World Pro"
2023-07-27
Tutoriel sur le masque de coupe "Painting World Pro"
2023-07-27
Quelle est la différence entre Hanglv Zongheng et Hanglv Zongheng pro ?
2023-07-10
Quelle est la différence entre Hanglv Zongheng et Hanglv Zongheng pro ?
2023-07-10
Comment faire une capture d’écran sur Huawei p60 pro
2023-05-24