.NET

 

Qu'est ce que .NET ?

.NET n'est pas un nouveau langage, ni un nouveau logiciel de Microsoft. Il est tout d'abord un label marketing qui marque un changement de génération dans les logiciels de l'éditeur. C'est aussi et surtout une toute nouvelle plate-forme de développement particulièrement tournée vers Internet. .NET apporte une nouvelle façon de programmer sur Internet.

Presque tous les développements web possibles sur la plate-forme Windows 2000 (NT 5.0) reposent sur la technologie DNA (Distribued interNet Architecture), .NET en est le remplaçant sans toutefois en assurer pleinement la compatibilité. DNA est une architecture 3 tiers, orientée Web première génération avec d'une part la partie présentation (ASP) et d'autre part des composants distribués COM/DCOM.

Cette nouvelle plate-forme apporte un lot de nouveautés important et supporte 27 langages de programmation. .NET s'appuie sur une hiérarchie de classes qui fournissent des services de base à la manière de Java. Les applications écrites avec .NET ne sont pas exécutables directement : il n'y pas de code Intel X86 mais le code source est compilé vers un langage intermédiaire, le MSIL (MicroSoft Intermediate Language). Ce code MSIL est exécuté par une sorte de machine virtuelle, le CLR (Common Language Runtime).

L'objectif de .NET est l'interopérabilité entre les différentes machines reliées sur Intenet. Il s'agit de pouvoir rassembler l'information, et de profiter des services de l'Internet sur plusieurs types de supports. .NET veut être la plate-forme de référence pour le développement de la prochaine génération d'applications : les services web XML.

Les services WEB XML sont des modules applicatifs qui peuvent fournir des services et des données aux autres applications. On y accède par les protocoles standards du Web : http, XML, SOAP. Un service WEB XML est indépendant du système d’exploitation ou du langage de programmation. Ainsi, deux services distants peuvent dialoguer, et ceci indépendamment du système d'exploitation et des langages de programmation utilisés de part et d'autre. Les services Web XML constituent donc un moyen de répartir les traitements à travers le réseau et de mutualiser les services applicatifs.

Pour développer ces services, .NET s'appuie principalement sur le XML (eXtensible Markup Language), format universel pour les documents structurés sur le Web et défini par le W3C, et sur SOAP (Simple Access Object Protocol). SOAP permet aux applications d'interoppérer à travers les protocoles Internet standards (Accessibilité des objets métiers).


La plate-forme .NET

 

L'architecture de .NET : le framework

.NET est basé sur 4 composants :

- Les périphériques clients : ordinateurs, pda, téléphones portables, consoles de jeux, etc ...
- Les services Web fondamentaux : .NET My Services (.NET Passport, exemple avec MSN Messenger)
- Les outils : .NET Framework, Visual Studio .NET
- Les serveurs : .NET Entreprise Server.

Le plus intéressant concerne les outils et plus particulierement le Framework de .NET. C'est lui qui va permettre de développer et de construire des applications .NET. Le Framework est conçu pour créer et déployer les applications et c'est sur lui que repose le CLR. C'est l'environnement d'exécution de .NET. Il est indépendant des syntaxes et permet le management des applications qui s'exécutent à travers lui.


Le framework est totalement indépendant du langage pourvu que celui-ci réponde au CLS (Common Language Specification). La CLS décrit précisément les caractéristiques que doit comporter un langage pour être compatible. Tout les langages qui se disent ".NET Compatible" doivent prendre en charge les mêmes types de données et reposer sur les classes fournies par le framework. Chaque langage doit disposer de son compilateur vers le MSIL. Ainsi chaque développeur peut utiliser le langage qu'il désire pour faire ses développements puisque chaque langage dispose des mêmes fonctionnalités de base et sont parfaitement intéropérables entre eux. On peut écrire une classe en C# et ensuite l'instancier dans un composant écrit en VB.net.

Tous les langages supportés sont compilés sous la forme d'un code MSIL indépendant du matériel et surtout du système d'exploitation. Le MSIL est ensuite exécutés par la CLR qui joue le même rôle que la JVM (Java Virtual Machine). Le MSIL est ensuite traduit en code machine par un compilateur "Juste à temps" (JiT (Just In Time) compiler). Les applications compilées en MSIL sont donc portables et on peut donc imaginer des implémentations de la plate-forme net sur différents types d'OS et de machines. Pour l'instant Microsoft ne parle que d'un portage vers les PDA type Pocket PC (Windows CE 3.0) et sur les futures versions de Windows 64bits en plus de Win9X et Windows 2000 et XP. Mais d'autres systèmes d'exploitation comme Linux ne sont pas exclus.

Les classes de base sont un ensemble hiérarchique qui fournit l'ensemble des services et API nécessaire au développement d'applications.

 

La CLR permet l'exécution des applications .NET à la même façon que la machine virtuelle de Java. Elle fournit l'abstraction entre l'OS et l'application. En plus de la gestion de la mémoire (allocation, garbage collector), elle surveille également l'exécution des programmes. La CLR exécute du code "managé", sous surveillance. Du code non managé est équivalent à une application s'exécutant en code machine natif. Cette surveillance permet une meilleure fiabilité du fait qu'elle évite les erreurs de programmation classique : accès à un élément d'un tableau hors des limites, accès à des zones de mémoire non allouées. Bien sûr, cette surveillance a un prix, on estime la chute de performance à moins de 10% qui est négligeable si l'on considère le gain en terme de fiabilité.

La CLR est la seule couche qui est directement en contact avec le matériel et le système d'exploitation. Ces spécifications sont ouvertes, ceci laisse à penser que le développement d'un CLR pour d'autres systèmes comme UNIX est tout a fait envisageable.

Autre point concernant, le framework ainsi que le SDK est totalement gratuit et il fait massivement usage des standards issus des organismes indépendants comme le W3C, l'IETF ou l'ECMA. Cette ouverture de Microsoft est nouvelle et innatendue.

Les langages

Historiquement la création d'un nouveau langage avait pour but de répondre à un nouveau besoin : résoudre un problème scientifique, besoin de fiabilité etc... Les langages existant se ressemblent donc assez peu puisque certains sont procéduraux, d'autres sont orientés objets. Comme nous l'avons vu, pour qu'un langage soit intégré à .NET il doit répondre à la CLS et être compilable vers MSIL. C'est ce qui permet de pouvoir dériver ou instancier une classe écrite en C# dans une autre écrite en VB.net.

Tout ceci peut paraître très puissant mais il n'en est rien. Les contraintes de la CLS (utilisation de l'objet, utilisation des classes de base du framework) font qu'au final chaque langage offre les mêmes fonctionnalités et perd sa spécificité. Ainsi le choix d'un langage peut se simplifier au choix de la syntaxe de développement. Ainsi COBOL.net n'a plus rien à voir avec ses origines !

Les "langages" qui sont ou seront disponibles sont :

Langage

Editeur

Visual Basic .NET

Microsoft

C#

Microsoft

ECMA Script

Microsoft

Visual C++

Microsoft

Standard ML

Microsoft Research

Cobol

Fujitsu

Component Pascal

Queensland University of Technology

Dyalog APL

Dyadic Systems

Eiffel Interactive

Software Engineering

Fortran

Fujitsu,Salford Software

Mercury

University of Melbourne

Mondrian

Massey University

Oberon

ETH Zentrum

Pascal

TMT development Corp

PERL

ActiveState

Python

ActiveState

RPG

ASNA

Scheme

Northwestern University

SmallTalk

QKS

Un nouveau langage fait son apparition : le C#. Ce langage peut être considéré comme la réponse de Microsoft à Java. En effet le C# se rapproche très fortement de Java tant sur le plan syntaxique que sur son fonctionnement puisqu'il bénéficie des mêmes fonctionnalités comme la gestion de d'allocation et de désallocation de la mémoire avec le garbage collector par exemple. On peut penser que Microsoft a développé C# pour proposer une alternative àJava et essayer de séduire les développeurs du monde Java pour les amener vers la plate-forme .NET. Pour plus d'informations sur C#, je vous invite à consulter le guide de Microsoft : C# Introduction and Overview


Java et .NET

Immanquablement, après lecture des caractéristiques de .NET et de C#, on peut faire le rapprochement avec Java !

Les points communs :

- approche objet
- une bibliothèque de classe complète (API)
- un byte code portable (MSIL, bytecode)
- une machine virtuelle (CLR, JVM)

Java se compose de deux éléments : une machine virtuelle pour exécuter un byte code, et un langage (Java) qui une fois compilé nous donne ce byte code. On a donc un langage unique pour des plate-formes multiples. Java n'offre qu'une interface objet.

Au contraire, .NET peut être résumé ainsi : une plate-forme unique pour des langages multiples, du moins tant que la CLR ne sera pas développée pour d'autres plates-formes que Windows. .NET offre la possibilité d'accéder aux données des autres objets directement.

Une présentation très complète comparant .NET et Java est disponible sur le site JavaGeeks.com, un comparatif C# / Java est disponible sur Genamics.com. Sur le site Développeur Reference, vous trouverez un article sur le Developer Day 2002 (présentation de .NET en France) avec l'avis d'un programmeur Java.

Ces ressemblances ont conduit Microsoft à pouvoir intégrer Java à .NET. Il est ainsi possible de compiler du code Java en MSIL, avec toutefois un travail de conversion soit vers J#.net soir vers C#.net mais considérablement réduit par les outils fournis par Microsoft.

Toutes les procédures de conversion de Java vers .NET sont disponibles sur le site à cette adresse : Conversion d'applications Java en .NET


 

 

 

 

 




 

 

En savoir plus ...
 

Chronologie :

Le projet .NET a démarré le 22 juin ... pour en savoir plus cliquez ICI
 


 

 

Présentation
 

Téléchargement :

Vous pouvez télécharger la présentation Powerpoint ICI.
 


 

 

Actualités
 

ASP.net Web Matrix:

Ce logiciel libre de développement ASP.net est en ligne.