3. CHEZ LE MME DITEUR Dans la mme collection O. DAHAN. Delphi
2006. paratre. N11768, 2006, 600 pages. G. BRIARD. Oracle 10g sous
Windows. paratre. N11469, 2006, 716 pages. O. DAHAN. Delphi 8 pour
.NET. N11309, 2004, 738 pages. L. MAESANO, C. BERNARD et X. LE
GALLES. Services Web avec J2EE et .NET. N11067, 2003, 1056 pages.
D. LANTIM. .NET. N11200, 2003, 530 pages. C. DELANNOY. Programmer
en C++. N11502, 2004, 590 pages. M. RIZCALLAH. Annuaires LDAP, 2e
dition. N11504, 2004, 576 pages.
4.
5. DITIONS EYROLLES 61, bd Saint-Germain 75240 Paris Cedex 05
www.editions-eyrolles.com Le code de la proprit intellectuelle du
1er juillet 1992 interdit en effet expressment la photocopie usage
collectif sans autorisation des ayants droit. Or, cette pratique
sest gnralise notamment dans les tablissements denseignement,
provoquant une baisse brutale des achats de livres, au point que la
possibilit mme pour les auteurs de crer des uvres nouvelles et de
les faire diter correctement est aujourdhui menace. En application
de la loi du 11 mars 1957, il est interdit de reproduire
intgralement ou partiellement le prsent ouvrage, sur quelque
support que ce soit, sans autorisation de lditeur ou du Centre
Franais dExploitation du Droit de Copie, 20, rue des
Grands-Augustins, 75006 Paris. Groupe Eyrolles, 2006, ISBN :
2-212-11778-7
25. Introduction larchitecture .NET Le concepteur et
responsable du projet Avant mme dexpliquer dans les grandes lignes
ce que sont larchitecture .NET (les Amricains prononcent dot net)
et le nouveau langage C# (prononcer C sharp , mme chez nous) de
Microsoft, il faut parler de son concepteur et principal architecte
chez Microsoft. Son nom, Anders Hejlsberg, ne vous dit sans doute
rien. Et pourtant Anders Hejlsberg est n au Danemark en 1961. En
1983, il rencontre le Franais Philippe Kahn, tabli en Californie,
et lui prsente la premire version dun logiciel quil est en train
dcrire. Il sagit dun logiciel de dveloppement de programmes, fond
sur le langage Pascal, dune convivialit et dune puissance inconnues
lpoque. Le rsultat de cette rencontre est une success story qui a
marqu le monde des outils de dveloppement : celle de la socit
Borland et de son produit phare, Turbo Pascal. Dans sa version
Turbo Pascal, le langage Pascal est en effet considrablement dop
par rapport sa version dorigine, dont le succs tait jusque-l limit
aux milieux acadmiques. Avec ce produit, Anders Hejlsberg montrait
dj son souci de fournir des outils rpondant aux besoins et attentes
des dveloppeurs. Au dbut des annes 1990, Anders Hejlsberg et
Borland ritrent le succs de Turbo Pascal avec Delphi, galement fond
sur le langage Pascal, qui bouleverse cette fois la manire de
dvelopper des programmes Windows. quelques annes de distance (le
dbut de lre DOS pour Turbo Pascal et le dbut de lre Windows pour
Delphi), Anders Hejlsberg devait donc concevoir sous la bannire
Borland des produits qui ont suscit admiration et respect chez les
dveloppeurs soucieux la fois de convivialit et defcacit.
Jusqualors, ces derniers taient rsigns des outils peu puissants,
peu performants ou alors totalement dpourvus de convivialit. Anders
Hejlsberg prouvait que lon pouvait allier puissance, efcacit,
lgance et convivialit. Ses ajouts au langage Pascal devaient tre
massivement adopts par les dveloppeurs, au point den faire, dans la
pratique, une norme de fait du langage.
26. 2 C# et .NET version 2 Avec Turbo Pascal et Delphi, les
dveloppeurs trouvaient en Hejlsberg un pair, lcoute de leurs
problmes et soucieux dapporter des solutions concrtes. Avec Delphi,
les dveloppeurs dcouvraient et pratiquaient le recours tendu aux
composants, faisant de Delphi une vritable bote outils de
composants logiciels. Certes, les thoriciens de la programmation
oriente objet prnaient depuis quelque temps (mais sans proposer
quoi que ce soit rutiliser) la rutilisabilit et le dveloppement
partir de briques logicielles. Anders Hejlsberg eut lart de mettre
ces ides en pratique, et cela sans faire de dclarations
fracassantes (et mme plutt en toute discrtion). Le nom dAnders
Hejlsberg restait peu connu en dehors de Borland et dune couche
priphrique. Les utilisateurs de Delphi pouvaient nanmoins le
dcouvrir condition de connatre la manire dafcher luf de Pques
(cest--dire la commande cache) de Delphi : Aide A propos, maintenir
la touche ALT enfonce et taper, selon la version de Delphi : AND ou
TEAM ou DEVELOPERS ou encore VERSION. Une photo dun Anders hilare
apparaissait mme dans luf de Pques de lune des versions de Delphi.
Figure 0-2 Figure 0-3 En octobre 1996, Microsoft, la trane pour ce
genre doutils, dbauche Anders Hejlsberg avec des conditions presque
dignes dune vedette du sport. Dans la foule, Microsoft dbauche une
trentaine dautres dveloppeurs de Borland, ce qui est norme quand on
sait que la conception et la ralisation de tels outils mobilisent
rarement une foule de
27. Introduction larchitecture .NET dveloppeurs, mais au
contraire une poigne dinformaticiens comptents, efcaces et motivs.
Chez Microsoft, Anders conoit dabord WFC (Windows Foundation
Classes), cest-dire les classes Java pour interface Windows. Le but
tait de permettre aux programmeurs en Visual J++ (la version
Microsoft du compilateur Java) de dvelopper des applications
professionnelles dignes de ce nom. En effet, lpoque, ntaient
disponibles pour le dveloppement Windows en Java que les classes
AWT (Abstract Window Toolkit) de Sun, des classes qui ne pouvaient
satisfaire que des dveloppeurs vraiment peu exigeants (classes
dailleurs aujourdhui largement dlaisses au prot de Swing). Les
relations entre Anders Hejlsberg et la communaut ofcielle de Java
devaient vite senvenimer, car les classes WFC, bien que nettement
plus professionnelles que ce qui tait lpoque disponible en
provenance de Sun, taient propres Windows et incompatibles avec les
autres systmes, donc non conformes la philosophie Java. Dire que
James Gosling, le concepteur de Java, napprcie gure Anders
Hejlsberg relve de leuphmisme. Lors de la confrence Java One de San
Francisco en 1998, Gosling commente dailleurs WFC en ces termes,
gratignant au passage Anders Hejlsberg : something bizarre from Mr
Method Pointers, pour ne reprendre que la moins assassine de ses
phrases, largement reprises par la presse spcialise de lpoque.
Toutes ces querelles et attaques personnelles prsentent dautant
moins dintrt que Sun et Microsoft roulent dsormais sur des voies o
le croisement est tout simplement vit : en juin 2000, Microsoft
annonce, en mme temps que la disparition de Visual J++ de sa gamme
de produits, larchitecture .NET et le langage C# dont Anders
Hejlsberg est le principal concepteur. Un an plus tard, Visual J++
fait nanmoins sa rapparition (sous le nom de Visual J#) sans
toutefois attirer les projecteurs, quasiment dans lindiffrence. Ce
que .NET change Pour la version 7 (2002) de loutil de dveloppement
Visual Studio (version rebaptise Visual Studio .NET), Microsoft a
conu un systme qui rend le dveloppement dapplications Windows et
Web bien plus ais. Une nouvelle architecture a t mise au point, des
langages ont t modis et un nouveau langage cr, le C# qui devient le
langage de rfrence et principal langage pour Microsoft. Le C++ est
certes encore prsent, mais rarissimes sont aujourdhui les fragments
et exemples de code en C++ dans la documentation de Microsoft, les
articles ou ouvrages consacrs .NET. Le fait que les applications
Web doivent tre imprativement crites en C#, J# ou VB.NET est encore
plus signicatif. Des efforts considrables ont galement t dploys
pour faire de Visual Basic un langage de premire catgorie. Visual
Basic, rebaptis VB.NET, devient un langage orient objet, au mme
titre que le C# et se dmarque ainsi nettement de la version 6 de
Visual Basic (plus aucun nouveau dveloppement pour ce produit et n
du support annonce). .NET constitue-t-il une rvolution dans la
manire de concevoir et dutiliser les programmes ? La rponse est
incontestablement afrmative pour la manire de concevoir 3
28. 4 C# et .NET version 2 et dcrire des programmes : les
programmeurs C++ habitus au dveloppement la dure avec MFC
dcouvriront, surtout sils passent au C# (un jeu denfant pour eux),
la facilit de Delphi et du vritable dveloppement partir de briques
logicielles. Les programmeurs en Visual Basic dcouvriront un
environnement de dveloppement entirement orient objet, comparable
lorientation objet du C++ et du C#. Dans tous les cas, le
dveloppement dapplications Web et surtout de services Web savre
bien plus facile. crire une application Web devient en effet
presque aussi simple que lcriture dune application Windows. Lautre
rvolution est limportance accorde aux services Web. Visual Studio
rend dailleurs leur implmentation dune facilit dconcertante, ce qui
favorise ladoption de cette technologie par les dveloppeurs. En
gros, un service Web est une fonction qui sexcute quelque part sur
Internet, comme sil sagissait dune fonction excute localement.
Rsultat : on simplie le dveloppement du programme en dportant des
fonctionnalits sur des sites spcialiss fournissant tel ou tel
service. De plus, ces services Web sont (grce aux protocoles HTTP
et SOAP (Simple Object Access Protocol), largement adopts)
indpendants du langage et mme de la plate-forme. .NET implique-t-il
des changements quant la manire dutiliser les applications ? La
rponse est, la fois, oui et non. Visual Studio permet en effet
dcrire les applications Windows les plus traditionnelles, sexcutant
sur des machines ddies et mme non connectes un rseau local ou
Internet. Mais Visual Studio permet aussi dcrire, avec la mme
simplicit et les mmes techniques, des applications pour appareils
mobiles (appareils divers sous Windows CE, Pocket PC et
smartphones), ainsi que des services Web. Cette mutation au prot
des services Web implique une connexion performante et permanente
au rseau Internet, ce qui nest pas encore le cas aujourdhui pour
tous les utilisateurs. Mais nul doute que cela deviendra vite
ralit, au mme titre que la connexion au rseau lectrique. Les
serveurs Internet ne se contenteront plus de fournir des pages HTML
statiques ou dynamiques : ils fourniront surtout des services Web
aux applications. Ces serveurs Internet serviront de plus en plus,
grce la technologie ClickOnce, dployer et mettre jour des
applications Windows. .NET est-il signicatif dun changement
dattitude chez Microsoft ? Cette socit a souvent t blme pour son
manque de respect des normes mais aussi pour des incompatibilits
qui portent gravement prjudice ses concurrents. On comprend et
ragit vite chez Microsoft : C# et le run-time (sous le nom de CLI,
pour Common Language Infrastructure) font lobjet dune normalisation
Ecma et maintenant ISO. De plus, avec les services Web, laccent est
mis sur linteroprabilit entre plates-formes. Enn, mais
indpendamment de Microsoft, une implmentation tout fait remarquable
(avec nanmoins des incompatibilits en ce qui concerne les
programmes Windows) de .NET existe sur Linux avec le projet mono
(voir www.go-mono.com) qui permet dy excuter des EXE .NET, sans mme
devoir recompiler le programme. Les utilisateurs courent-ils un
risque avec .NET ? Microsoft mise tout sur lui : plus aucun
dveloppement ni aucune communication (Web, articles, sminaires et
grand-messes comme TechEd ou PDC (Professional Developers
Conference) en dehors de .NET. Microsoft, dont on connat le
savoir-faire et les moyens, est condamn au succs.
29. Introduction larchitecture .NET Larchitecture .NET
Larchitecture .NET (nom choisi pour montrer limportance accorde au
rseau, amen participer de plus en plus au fonctionnement des
applications grce aux services Web), technologie appele ses
balbutiements NGWS (Next Generation Web Services), consiste en une
couche Windows, en fait une collection de DLL librement
distribuable et qui sera incorpore dans le noyau des prochaines
versions de Windows (Windows Vista). Cette couche contient un
nombre impressionnant (plus de deux mille) de classes (tous les
langages de .NET doivent tre orients objet), ainsi que tout un
environnement dexcution (un run-time, ou couche logicielle si vous
prfrez) pour les programmes sexcutant sous contrle de
lenvironnement .NET. On appelle cela le mode gr ou manag (managed
code). La notion de run-time na rien de nouveau : les programmeurs
en Visual Basic la connaissent depuis longtemps puisque mme les
programmes VB compils en ont besoin. Les programmeurs Java
connaissent aussi la notion de machine virtuelle. Nanmoins, mme si
le run-time .NET est, dans les faits, une machine virtuelle,
Microsoft a toujours soigneusement vit demployer ce terme, sans
doute trop li Java et Sun Un run-time fournit des services aux
programmes qui sexcutent sous son contrle. Dans le cas de
larchitecture .NET, ces services font partie de ce que lon appelle
le CLR (Common Language Run-time) et assurent : le chargement
(load) et lexcution contrle des programmes ; lisolation des
programmes les uns par rapport aux autres ; les vrications de type
lors des appels de fonctions (avec refus de transtypages hasardeux)
; la conversion de code intermdiaire en code natif lors de
lexcution des programmes, opration appele JIT (Just In Time
Compiler) ; laccs aux mtadonnes (informations sur le code qui font
partie du code mme) ; les vrications lors des accs la mmoire (pas
daccs possible en dehors de la zone alloue au programme) ainsi
quaux tableaux (pas daccs en dehors de ses bornes) ; la gestion de
la mmoire, avec ramasse-miettes automatique ; la gestion des
exceptions ; la scurit ; ladaptation automatique des programmes aux
caractristiques nationales (langue, reprsentation des nombres et
des symboles, etc.) ; la compatibilit avec les DLL et les modules
COM actuels qui sexcutent en code natif non contrl par .NET. Les
classes .NET peuvent tre utilises par tous les langages prenant en
charge larchitecture .NET. Ces classes sont regroupes dans des
espaces de noms (namespaces) qui se 5
30. 6 C# et .NET version 2 prsentent en quelque sorte comme des
rpertoires de classes. Quelques espaces de noms et quelques classes
: Les classes de larchitecture .NET Espace de noms Description
Exemples de classes System Accs aux types de base. Accs la console.
Int32, Int64, Int16 Byte, Char String Float, Double, Decimal
Console Type System.Collections Collections dobjets. ArrayList,
Hashtable, Queue, Stack, SortedList System.IO Accs aux chiers.
File, Directory, Stream, FileStream, BinaryReader, BinaryWriter
TextReader, TextWriter System.Data.Common Accs ADO.NET aux bases de
donnes. DbConnection, DbCommand, DataSet System.Net Accs au rseau.
Sockets TcpClient, TcpListener UdpClient System.Reflection Accs aux
mtadonnes. FieldInfo, MemberInfo, ParameterInfo System.Security
Contrle de la scurit. Permissions, Policy Cryptography
System.WinForms Composants orients Windows. Form, Button, ListBox
MainMenu, StatusBar, DataGrid System.Web.UI.WebControls Composants
orients Windows. Button, ListBox, HyperLink DataGrid Il y a
compatibilit absolue entre tous les langages de larchitecture .NET
: une classe .NET peut tre utilise de manire identique ( la syntaxe
du langage prs) dans tout langage gnrant du code .NET ; une classe
peut tre cre dans un premier langage, servir de classe de base pour
une classe drive implmente dans un deuxime langage, et cette
dernire classe enn instancie dans un troisime langage ; la manire
de crer et dutiliser les objets est identique (videmment aux dtails
de langage prs). Les services de .NET crent les objets (tout est
objet dans larchitecture .NET) et se chargent de librer
automatiquement de la mmoire les objets qui ne peuvent plus tre
utiliss : technique du ramasse-miettes (garbage collection). On
retrouvait dj ce procd dans le
31. Introduction larchitecture .NET langage Smalltalk cr par le
Parc (Palo Alto Research Center) de Xerox, lorigine des interfaces
graphiques, de la souris et de bien dautres choses, notamment dans
le domaine de lorient objet. Java a dailleurs largement emprunt de
nombreux concepts Smalltalk. Il ny a pas de honte reconnatre que
larchitecture .NET et le langage C# en particulier, reprennent le
meilleur du C++, de Delphi, de Java, de Visual Basic et de
Smalltalk. Cest ce dernier langage, pourtant le moins utilis des
cinq, que doit aller prioritairement la reconnaissance des
dveloppeurs. Les composants .NET utilisent la technique de la cl
prive, connue du seul dveloppeur, et de la cl publique, disposition
des utilisateurs. Il faut une concordance du code, de la cl
publique et de la cl prive pour pouvoir excuter le code dun
composant. Toute modication du code dun composant (opration
effectue malicieusement par les virus) rend ce composant
inutilisable. .NET utilise aussi une technique qui met n au problme
connu sous le nom de lenfer des DLL (problme cr lors de
linstallation dun logiciel, par crasement dune DLL existante) en
attribuant des numros aux versions. Il est maintenant possible de
garder plusieurs versions dune mme DLL, les programmes utilisant
automatiquement la version de la DLL qui leur convient. Les
langages de larchitecture .NET Tous les langages .NET doivent
prsenter des caractristiques communes : mmes types de donnes
(tailles et reprsentation), ce que lon appelle le CTS (Common Type
System) dnissant prcisment ces caractristiques ; mme utilisation
des classes, mme manire de crer et de grer les objets ; mme code
intermdiaire : MSIL gnr (Microsoft Intermediate Language). Les
compilateurs crant des programmes pour .NET doivent gnrer un code
intermdiaire, appel MSIL. Il sagit dun code intermdiaire entre le
code source (par exemple du code C# ou Visual Basic) et le code
natif directement excutable par le microprocesseur. Ce code
intermdiaire est donc indpendant du code de bas niveau quest le
langage machine, mais il est capable de manipuler ces constructions
de haut niveau que sont les objets. Cest ce qui explique pourquoi
.NET a pu tre port sur dautres plates-formes comme Linux (voir le
projet mono qui est disponible et librement tlchargeable). Au
moment dexcuter un programme, ce code intermdiaire est pris en
charge par .NET qui le fait excuter, fonction aprs fonction, par un
JIT compiler. .NET procde par compilation et non par interprtation,
toutefois il sagit dune compilation (de code MSIL en code natif) en
cours dexcution de programme. Au moment de commencer lexcution dune
fonction, mais lors du premier appel seulement, .NET appelle le
JIT. Le JIT, qui connat alors lenvironnement dexcution, et
notamment le type de microprocesseur, compile le code intermdiaire
de la fonction en code natif, en fonction du microprocesseur
rellement utilis (ce qui permet une optimisation). Du code natif
est ds lors excut. Le processus recommence quand une autre
fonction, non encore compile, 7
32. 8 C# et .NET version 2 est appele. Trs rapidement, on
nexcute plus que du code natif optimis pour le microprocesseur de
lutilisateur. Il est aussi possible, avec lutilitaire ngen, de
gnrer des programmes prcompils (et, par consquent, propres un
microprocesseur bien particulier). Les compilateurs fournis par
Microsoft avec Visual Studio sont : Visual Basic qui a t
profondment modi et qui est devenu entirement orient objet ; Visual
C++ qui peut travailler dans deux modes : dans le premier mode,
compatible avec les versions prcdentes, le code gnr est le code
natif du microprocesseur et les classes sont les classes MFC. Ce
mode nest donc pas compatible .NET et nen utilise pas les
possibilits, ni pour le dveloppement ni pour lexcution. Ce mode est
l pour assurer la compatibilit avec lexistant ; le second mode
(managed code) vise larchitecture .NET et utilise les ressources du
nouvel environnement de dveloppement. Dvelopper en C++ pour .NET
reste nanmoins lourd, surtout quand on connat la facilit offerte
par C#, le nouveau langage introduit par Microsoft ; C#, qui
devient de facto le langage de rfrence et qui fait lobjet de cet
ouvrage ; enn, J#, le langage Java de .NET dont on doute quil soit
largement utilis voir le peu dactivit dans les forums consacrs ce
langage. Les langages .NET ne se limitent cependant pas ceux-l.
Microsoft publie toute la documentation ncessaire pour permettre
dautres fournisseurs de compilateurs de livrer des versions .NET de
leur produit : Eiffel, Pascal, Perl, Cobol, Python, Oberon, Scheme
et Smalltalk pour nen citer que quelques-uns. Tous ces langages
adapts .NET (sauf exception, ils ont t adapts au niveau du code
gnr, pas de la syntaxe) utilisent les mmes classes et les mmes
outils de dveloppement et leur intgration dans Visual Studio est
saisissante. Les dveloppeurs de ces langages nont pas crer les
librairies et outils ncessaires (par exemple le debugger) pour une
vritable utilisation professionnelle. Or, dvelopper ces librairies
et outils prend gnralement beaucoup plus de temps et mobilise plus
de ressources humaines que le dveloppement du compilateur lui-mme,
ce qui constitue un frein lapparition de ces nouveaux langages
(hors des circuits acadmiques videmment). Avec larchitecture .NET,
Microsoft joue incontestablement la carte de louverture aux
langages, y compris ceux provenant de sources extrieures la socit
puisque laccent est mis sur la varit des langages et les
possibilits dinter-langage : le programmeur a le choix, tout
moment, du langage quil connat le mieux ou du langage le plus
appropri certaines parties de lapplication. On peut en effet trs
bien envisager une partie de lapplication crite dans un langage et
une autre partie dans un langage diffrent. La pierre lance dans le
jardin de Sun, qui prne Java comme unique langage, nchappe
personne, dautant moins que Microsoft a fait du C# un langage
normalis par un comit indpendant de Microsoft (Ecma/ISO) alors que
Java reste un langage propritaire de Sun.
33. Introduction larchitecture .NET Tous ces langages doivent
videmment suivre les rgles dictes pour tre compatibles .NET. Ces
rgles forment le CLS (Common Language Specication). Signalons quand
mme quen gnrant un code susceptible dtre utilis ou rutilis (chier
EXE ou DLL, ce que lon appelle un assembly dans le jargon .NET), le
compilateur doit gnrer pour cette pice de code (on parle dailleurs
de composants auto-descriptibles, self describing components) : des
informations sur le contenu de cette pice de code (classes,
proprits et mthodes publiques) ainsi que sur les librairies
utilises par le code de lassembly (nom des librairies ncessaires,
numro de version minimale, etc.) ; le code des fonctions des
classes (code MSIL). Tout cela donne .NET un contrle bien plus
labor des programmes et notamment des librairies extrieures qui, un
moment ou un autre, sont appeles par le programme. Un programme
pour .NET dmarre comme un programme traditionnel mais le contrle
passe immdiatement au run-time .NET qui fait excuter le programme
sous sa haute surveillance (compilation du code MSIL, fonction aprs
fonction, par le JIT, appels aux services .NET, vrications, etc.).
Tout programme crit pour .NET a accs lAPI Windows (lensemble des
fonctions de base de Windows) cependant, comme des classes .NET
encapsulent ces fonctions, il est exceptionnel (mais possible) de
faire appel ces fonctions de base de Windows. Les programmes .NET
peuvent utiliser des composants COM. Sous Visual Studio, ces
composants COM sutilisent aussi aisment que dans lenvironnement
VB6. Enn, des composants .NET peuvent tre transforms en composants
COM et utiliss comme tels dans VB6 mais aussi dans tous les outils
de dveloppement qui reconnaissent la technologie COM. Le langage C#
Le langage star de la nouvelle version de Visual Studio et de
larchitecture .NET est C#, un langage driv du C++. Il reprend
certaines caractristiques des langages apparus ces dernires annes
et en particulier de Java (qui reprenait dj son compte des concepts
introduits par Smalltalk quinze ans plus tt). C# peut tre utilis
pour crer, avec une facilit incomparable, des applications Windows
et Web. C# devient le langage de prdilection dASP.NET qui permet de
crer des pages Web dynamiques avec programmation ct serveur. C#
sinscrit parfaitement dans la ligne C C++ C# : le langage C++ a
ajout les techniques de programmation oriente objet au langage C
(mais la rutilisabilit promise par C++ ne la jamais t quau niveau
source) ; le langage C# ajoute au C++ les techniques de
construction de programmes sur base de composants prts lemploi avec
proprits et vnements, rendant ainsi le 9
34. 10 C# et .NET version 2 dveloppement de programmes
nettement plus ais. La notion de briques logicielles aisment
rutilisables devient ralit. Passons rapidement en revue les
caractristiques de C# (par rapport au C++) : orientation objet
prononce : tout doit tre incorpor dans des classes ; types
prcisment conformes larchitecture .NET et vrications de type plus
labores ; Unicode pour le code des caractres : les programmeurs C++
qui connaissent la lourdeur de linterfaage avec des modules Unicode
(difcile aujourdhui dimaginer autre chose) apprcieront ; libration
automatique des objets (garbage collection) ; les pointeurs ne
disparaissent pas mais ne sont plus rservs qu des cas bien
particuliers doptimisation (voir par exemple la n du chapitre 13
consacre au traitement dimages, lutilisation des pointeurs permet
damliorer les performances de manire pour le moins spectaculaire) ;
remplacement des pointeurs (sur tableaux, sur objets, etc.) par des
rfrences qui offrent des possibilits semblables mais avec bien plus
de sret mais sans perte de performance ; disparition du passage
dargument par adresse au prot du passage par rfrence ; manipulation
des tableaux de manire fort diffrente et avec plus de scurit, ce
qui est particulirement heureux ; passage de tableaux en arguments
ainsi que renvoi de tableau nettement simpli ; nouvelle manire
dcrire des boucles avec linstruction foreach qui permet de balayer
aisment tableaux et collections ; introduction des proprits, des
indexeurs et des attributs ; disparition de lhritage multiple mais
possibilit pour une classe dimplmenter plusieurs interfaces. Tout
cela est tudi dans les premiers chapitres de louvrage. Crer des
applications Windows et Web crire une application Windows ou Web en
C# avec le nouvel environnement Visual Studio devient
incomparablement plus simple quavec MFC puisque Visual Studio
utilise le modle de composants ainsi que le dveloppement interactif
quon