Maison / Travailler sur Internet / Qu'est-ce que Microsoft Net Framework. Présentation de la technologie NET Framework. Qu'est-ce que le système de type commun CTS

Qu'est-ce que Microsoft Net Framework. Présentation de la technologie NET Framework. Qu'est-ce que le système de type commun CTS

Le .NET Framework est une solution intégrée Composant Windows, qui prend en charge la création et l'exécution de la prochaine génération d'applications XML et de services Web. Les objectifs suivants ont été pris en compte lors du développement du .NET Framework.

· Fourniture d'un environnement de programmation orienté objet cohérent pour le stockage et l'exécution de code objet localement, pour l'exécution locale de code distribué sur Internet ou pour l'exécution à distance.

Fournir un environnement d'exécution de code qui minimise les conflits de déploiement Logiciel et le contrôle des versions.

Fournir un environnement d'exécution de code qui garantit exécution en toute sécurité code, y compris le code créé par un tiers inconnu ou non entièrement fiable.

· Fournir un environnement d'exécution de code qui élimine les problèmes de performances avec les environnements d'exécution de script ou le code interprété.

Garantir des principes uniformes de travail des développeurs pour différents types applications telles que les applications Windows et les applications Web.

· Développer une interopérabilité standard de l'industrie qui intègre le code .NET Framework avec n'importe quel autre code.

Les deux principaux composants du .NET Framework sont le Common Language Runtime (CLR) et la bibliothèque de classes .NET Framework. Le cœur du .NET Framework est le CLR. Le runtime peut être considéré comme un agent qui gère le code au moment de l'exécution et fournit des services de base tels que la gestion de la mémoire, le threading et la communication à distance. Cela impose des conditions de frappe strictes et d'autres types de vérifications de l'exactitude du code qui garantissent la sécurité et la fiabilité. En fait, la tâche principale du runtime est de gérer le code. Le code qui accède au runtime est appelé code managé, et le code qui n'accède pas au runtime est appelé code non managé. L'autre composant principal du .NET Framework, la bibliothèque de classes, fournit une collection complète orientée objet de types utilisés pour développer des applications, allant des types courants lancés à partir de ligne de commande ou avec interface graphique de l'utilisateur aux applications qui utilisent les dernières fonctionnalités de la technologie ASP.NET telles que les formulaires Web et les services Web XML.

Le .NET Framework peut être hébergé par des composants non managés qui chargent le CLR dans leurs propres processus et exécutent du code managé, créant ainsi un environnement de programmation qui autorise les outils d'exécution managés et non managés. Le .NET Framework fournit non seulement plusieurs runtimes de base, mais prend également en charge le développement tiers des runtimes de base.


Par exemple, ASP.NET héberge le runtime pour fournir un environnement évolutif côté serveur pour le code managé. ASP.NET fonctionne directement avec le runtime pour activer les applications ASP.NET et les services Web XML, qui sont tous deux abordés plus loin dans cette rubrique.

Internet Explorer est un exemple d'application non managée qui héberge le runtime (sous la forme d'une extension de type MIME). L'utilisation d'Internet Explorer pour héberger le runtime vous permet d'incorporer des composants gérés ou des contrôles Windows Forms dans des documents HTML. L'hébergement du runtime de cette manière rend possible le code mobile géré (similaire aux contrôles Microsoft® ActiveX®), mais avec des améliorations significatives que seul le code géré peut offrir, telles que l'exécution semi-fiable et le stockage de fichiers isolés.

L'illustration suivante montre la relation entre le Common Language Runtime et la bibliothèque de classes avec vos applications et le système global. L'illustration montre également comment le code managé fonctionne dans une architecture plus large.

NET Framework en contexte

Les sections suivantes décrivent plus en détail les principaux composants et fonctionnalités du .NET Framework.


Par exemple, ASP.NET héberge le runtime et fournit un environnement évolutif pour le code managé côté serveur. ASP.NET fonctionne directement avec le runtime pour exécuter les applications ASP.NET et les services Web XML abordés plus loin dans cette rubrique.

Internet Explorer est un exemple d'application non gérée qui héberge un environnement d'exécution (sous la forme d'extensions de type MIME). L'hébergement du runtime dans Internet Explorer vous permet d'intégrer des composants ou des éléments gérés Commandes Windows Des formulaires aux documents HTML. Ce placement de l'environnement permet d'effectuer des code mobile(similaire aux contrôles Microsoft® ActiveX®), mais avec les avantages significatifs du code managé, tels que l'exécution en confiance partielle et le stockage de fichiers isolés.

La figure suivante montre comment le Common Language Runtime (CLR) et la bibliothèque de classes sont liés aux applications utilisateur et à l'ensemble du système. La figure montre également comment le code managé fonctionne dans l'architecture plus large.

NET Framework en contexte

Les sections suivantes fournissent une description plus détaillée des principaux composants et fonctionnalités du .NET Framework.

Introduction

Une PLATEFORME est au moins un environnement d'exécution de programme et ... quelque chose d'autre qui détermine les caractéristiques de développement et d'exécution du code de programme - paradigmes de programmation, langages de programmation, ensembles de classes de base.

Microsoft.NET (.NET Framework) est une plate-forme logicielle. Contient les principaux composants suivants : le Common Language Runtime (CLR) et la bibliothèque de classes .NET Framework (.NET FCL).

CLS (Spécification de langage commun) - spécifications générales langages de programmation. Il s'agit d'un ensemble de constructions et de contraintes qui fournissent des conseils aux rédacteurs de bibliothèques et de compilateurs dans le .NET Framework. Les bibliothèques construites selon le CLS peuvent être utilisées à partir de n'importe quel langage de programmation prenant en charge le CLS. Les langages compatibles CLS (y compris Visual C#, Visual Basic, Visual C++) peuvent s'intégrer les uns aux autres. CLS est la base de l'interopérabilité inter-langue au sein de la plate-forme Microsoft.NET.

CLR (Common Language Runtime) - Environnement d'exécution ou machine virtuelle. Assure l'exécution de l'assembly. Le composant principal du .NET Framework. En dessous de machine virtuelle comprendre l'abstraction d'un encapsulé (détaché) géré système opérateur haut niveau, qui assure l'exécution du code du programme et implique la résolution des tâches suivantes :

§ gestion du code (chargement et exécution),

§ gestion de la mémoire lors du placement d'objets,

§ isolation mémoire des applications,

§ contrôle de sécurité par code,

§ conversion du langage intermédiaire en code machine,

§ accès aux métadonnées (informations de type étendu),

§ gestion des exceptions, y compris les exceptions inter-langues,

§ interaction entre le code managé et non managé (y compris les objets COM),

§ prise en charge des services de développement (profilage, débogage, etc.).

En bref, le CLR est un ensemble de services requis pour effectuer une génération. Dans ce cas, le code programme d'un assemblage peut être soit managé (le code, lorsqu'il est exécuté par le CLR, active notamment le système de gestion de la mémoire), soit non managé (le « code programme ancien »).

Le CLR lui-même se compose de deux composants principaux : le noyau (mscoree.dll) et la bibliothèque de classes de base (mscorlib.dll). La présence de ces fichiers sur le disque est un signe certain que l'ordinateur a au moins tenté d'installer le framework .NET.

Le runtime principal est implémenté en tant que bibliothèque mscoree.dll. Lorsqu'un assemblage est lié, des informations spéciales y sont intégrées, ce qui, lorsqu'une application (EXE) est lancée ou lorsqu'une bibliothèque est chargée (accès à une DLL à partir d'un module non géré - appel de la fonction LoadLibrary pour charger un assemblage géré), provoque le CLR à charger et à initialiser. Une fois le CLR chargé dans l'espace d'adressage d'un processus, le noyau d'exécution effectue les opérations suivantes :

§ trouve l'emplacement de l'assemblage,

§ charge l'assembly en mémoire,

§ analyse le contenu de l'assemblage (identifie les classes, les structures, les interfaces),

§ analyse les métadonnées,

§ fournit la compilation du code de langage intermédiaire (IL) en instructions spécifiques à la plate-forme (code assembleur),

§ effectue les vérifications liées à Sécurité,

§ à l'aide du thread principal de l'application, transfère le contrôle au fragment de code assembleur converti en instructions du processeur.

FCL (.NET Framework Class Library) est une bibliothèque orientée objet de classes, d'interfaces et de systèmes de types (types de valeur) inclus dans la plate-forme Microsoft .NET, correspondant à la spécification CLS.

Cette bibliothèque donne accès à Fonctionnalité système et est destiné à servir de base au développement d'applications, de composants et de contrôles .NET.

NET, la bibliothèque de classes est le deuxième composant du CLR.

NET FCL peut être utilisé par TOUTES les applications .NET, quel que soit le but, l'architecture utilisée pour développer le langage de programmation. Il contient notamment :

§ les types intégrés (élémentaires), représentés sous forme de classes (sur la plate-forme .NET, tout est construit sur des structures ou des classes),

§ classes pour développer une interface utilisateur graphique (Windows Form),

§ cours de développement d'applications Web et de services Web basés sur la technologie ASP.NET (Web Forms),

§ cours de développement de protocoles XML et Internet (FTP, HTTP, SMTP, SOAP),

§ classes pour développer des applications qui fonctionnent avec des bases de données (ADO.NET),

§ et beaucoup plus.

NET est une application conçue pour s'exécuter sur la plate-forme Microsoft.NET. Il est implémenté dans des langages de programmation correspondant à CLS.

MSIL (Microsoft Intermediate Language, alias IL - Intermedia Language) est un langage intermédiaire de la plate-forme Microsoft.NET. Les codes sources des applications .NET sont écrits dans des langages de programmation conformes à la spécification CLS. Pour les langages de programmation conformes à la spécification CLS, un convertisseur vers MSIL peut être construit. Ainsi, les programmes dans ces langages peuvent être traduits en code intermédiaire MSIL. En raison de la conformité CLS, à la suite de la traduction du code de programme écrit dans différentes langues, un code IL compatible est obtenu.

En fait, MSIL est un assembleur de processeur virtuel.

METADATA - lors de la conversion du code de programme en MSIL, un bloc METADATA est également formé contenant des informations sur les données utilisées dans le programme. En fait, ce sont des ensembles de tables contenant des informations sur les types de données définis dans le module, sur les types de données référencés par ce module. Auparavant, ces informations étaient stockées séparément. Par exemple, une application peut inclure des informations sur les interfaces décrites dans un langage de définition d'interface (IDL). Les métadonnées font désormais partie du module géré.

Plus précisément, les métadonnées sont utilisées pour :

§ préservation des informations sur les types. Lors de la compilation, les fichiers d'en-tête et de bibliothèque ne sont plus nécessaires. Le compilateur lit toutes les informations nécessaires directement à partir des modules gérés,

§ vérification du code lors de l'exécution du module,

§ La gestion mémoire dynamique(libération de mémoire) lors de l'exécution du module,

§ lors du développement d'un programme utilisant des outils(Microsoft Visual Studio .NET)

§ Basé sur les métadonnées, un indice dynamique (IntelliSense) est fourni.

Langues pour lesquelles la traduction MSIL est implémentée :

et bien d'autres langues.

Exécutable - Indépendamment du compilateur (et du langage source), le résultat de la traduction d'une application .NET est un exécutable géré (module géré). Il s'agit d'un fichier Windows exécutable portable standard (PE - Portable Executable).

Les éléments du module géré sont présentés dans le tableau.

Un module managé contient du code managé.

Le code managé est un code qui s'exécute dans le CLR. Le code est construit sur la base de structures et de classes déclarées dans le module source qui contiennent des déclarations de méthodes. Le code managé doit être conforme à un certain niveau d'informations (métadonnées) pour l'environnement d'exécution. Le code C#, Visual Basic et JScript est géré par défaut. Le code Visual C++ n'est pas géré par défaut, mais le compilateur peut produire du code managé en fournissant un argument sur la ligne de commande (/CLR). L'une des caractéristiques du code managé est la présence de mécanismes qui vous permettent de travailler avec MANAGED DATA.

Données gérées - objets qui sont alloués dans la mémoire gérée (sur le tas géré) lors de l'exécution du code du module et qui sont détruits par le ramasse-miettes CLR. Les données C#, Visual Basic et JScript .NET sont gérées par défaut. Les données C# peuvent également être marquées comme non gérées.

Un assembly est le bloc de construction de base d'une application dans le .NET Framework. Les modules gérés sont combinés en assemblages. Un assembly est un regroupement logique d'un ou plusieurs modules gérés ou fichiers de ressources. Les modules managés dans les assemblys s'exécutent dans l'environnement d'exécution (CLR). Un assembly peut être une application exécutable (dans un fichier .EXE) ou un module de bibliothèque (dans un fichier .DLL). En même temps, l'assembly n'a rien de commun avec les applications exécutables ordinaires (à l'ancienne !) et les modules de bibliothèque.

La déclaration d'assembly (Manifest) fait partie intégrante de l'assembly. Un autre ensemble de tables de métadonnées qui :

§ identifie l'assembly sous la forme d'un nom textuel, sa version, sa culture et sa signature numérique (si l'assembly est partagé entre applications),

§ détermine les fichiers inclus dans la composition (par nom et hash),

§ précise les types et les ressources qui existent dans l'assembly, y compris une description de celles qui sont exportées depuis l'assembly,

§ répertorie les dépendances sur d'autres assemblages,

§ Spécifie l'ensemble de droits requis pour que l'assembly fonctionne correctement.

Ces informations sont utilisées lors de l'exécution pour assurer le bon fonctionnement de l'application.

Le processeur NE PEUT PAS exécuter le code IL. Et la traduction du code IL est effectuée par le compilateur JIT (juste à temps - en bon moment) qui est appelé par le CLR selon les besoins et exécuté par le processeur. Dans ce cas, les résultats du compilateur JIT sont stockés dans mémoire vive. Une correspondance est établie entre le fragment du code IL traduit et le bloc mémoire correspondant, ce qui permet ensuite au CLR de transférer le contrôle aux instructions processeur enregistrées dans ce bloc mémoire, en s'affranchissant d'un appel répété au compilateur JIT.

Dans le CLR, il est permis travail en équipe et l'interaction de composants logiciels implémentés dans différents langages de programmation.

Basé sur le bloc de métadonnées précédemment formé, le CLR fournit une interopérabilité EFFICACE entre les applications .NET en cours d'exécution.

Pour le CLR, tous les assemblages sont identiques, quel que soit le langage de programmation dans lequel ils ont été écrits. L'essentiel est qu'ils soient conformes au CLS. En fait, le CLR détruit les frontières des langages de programmation (interopérabilité entre les langages). Ainsi, grâce à CLS et CTS, les applications .NET s'avèrent en fait être des applications MSIL (IL).

Le CLR prend en charge de nombreux problèmes qui ont traditionnellement été au centre des préoccupations des développeurs d'applications. Les fonctions assurées par le CLR comprennent :

§ vérification et compilation dynamique (JIT) du code MSIL en instructions processeur,

§ gestion de la mémoire, des processus et des threads,

§ organisation des interactions entre processus,

§ résoudre les problèmes de sécurité (dans le cadre de la politique de sécurité existant dans le système).

Un AppDomain est un conteneur d'assembly logique utilisé pour isoler une application dans l'espace d'adressage d'un processus. Tous les objets créés par une application sont créés dans un domaine d'application spécifique. Plusieurs domaines d'application peuvent exister dans un même processus de système d'exploitation. Le CLR isole les applications en gérant la mémoire dans un domaine d'application.

Le code s'exécutant dans le CLR (processus CLR) est séparé des autres processus s'exécutant simultanément sur l'ordinateur.

Un processus normal est lancé par le système dans un espace d'adressage spécialement alloué pour le processus. Le CLR offre la possibilité d'exécuter plusieurs applications gérées dans un SEUL PROCESSUS. Chaque application gérée est associée à son propre domaine d'application (AppDomain en abrégé). En plus du domaine principal, plusieurs domaines supplémentaires peuvent être créés dans l'application.

La structure du runtime CLR est illustrée dans l'image.

Propriétés du domaine :

§ les domaines sont isolés les uns des autres. Les objets créés dans un domaine sont inaccessibles depuis un autre domaine,

§ Le CLR est capable de décharger des domaines ainsi que tous les assemblages associés à ces domaines,

§ une configuration et une protection supplémentaires des domaines sont possibles,

§ Un mécanisme d'accès sécurisé spécial (marshaling) est implémenté pour l'échange de données entre les domaines.

§ Le .NET Framework a développé son propre modèle de composants, dont les éléments sont des assemblages .NET (.NET-assembly), et pour la compatibilité ascendante et descendante avec le modèle COM / COM +, le CLR a des mécanismes intégrés (COM Interop) qui fournissent l'accès aux objets COM selon les règles .NET et aux assemblages .NET selon les règles COM. Dans le même temps, les applications .NET ne nécessitent pas l'enregistrement des composants dans registre système Les fenêtres.

Pour exécuter une application .NET, il suffit de placer les cette application assemblages dans le même répertoire. Si l'assemblage peut être utilisé dans plusieurs applications, il est placé et enregistré à l'aide de utilitaire spécial dans le GAC (Global Assembly Cache).

CTS - Système de type commun Système standard les types. Pris en charge par toutes les langues de la plate-forme. Du fait que .NET est un enfant de la POO, nous parlons ici de types élémentaires, de classes, de structures, d'interfaces, de délégués et d'énumérations.

Le Common Type System est une partie importante de l'environnement d'exécution, définissant la structure des constructions syntaxiques, comment déclarer, utiliser et appliquer les types d'exécution GENERAL. Le CTS contient des informations de base sur le système des types GENERAL PREDEFINED, leur utilisation et leur gestion (règles de conversion de valeur). CTS joue un rôle important dans l'intégration d'applications gérées multilingues.

Un espace de noms est un moyen d'organiser un système de types en groupe unique. Il existe une bibliothèque commune de classes de base de langage commun. Et le concept d'espace de noms permet une organisation et une navigation efficaces dans cette bibliothèque. Quel que soit le langage de programmation, l'accès à certaines classes est fourni en les regroupant au sein d'espaces de noms communs.

Espace de noms Objectif
Système
Système.Données Pour accéder aux bases de données
System.Data.Common
System.Data.OleDb
System.Data.SqlClientSystem.Data.SqlClientSystem.Data.SqlClient
System.Collections Classes pour travailler avec des objets conteneurs
Diagnostique du systeme Classes pour le traçage et le débogage du code
System.Drawing Cours de support graphique
System.Drawing.Drawing2DSystem.Drawing.Drawing2D
Système.Dessin.Impression
System.IO Prise en charge des E/S
System.Net Prise en charge du transfert de données sur les réseaux
System.Reflection Utilisation de types personnalisés lors de l'exécution
System.Reflection.Emit
System.Runtime.InteropServicesSystem.Runtime.InteropServices Prise en charge de l'interaction avec le "code brut" - DLL, serveurs COM, accès à distance
System.Runtime.Remoting
System.Security Cryptographie, autorisations
System.Threading Travailler avec des flux
Système.WEB Travailler avec des applications Web
System.Windows.Form Travailler avec les éléments de l'interface Windows
Système.XML Prise en charge des données XML

Exécution de modules exécutables non gérés (standard Applications Windows) est fourni directement Système Windows. Les modules non gérés s'exécutent comme des processus "simples" dans l'environnement Windows. La seule exigence que ces modules doivent remplir est qu'ils fonctionnent correctement dans l'environnement Windows. Ils doivent fonctionner « correctement » (ne pas bloquer le système, éviter les fuites de mémoire, ne pas bloquer d'autres processus et utiliser correctement les outils de l'OS lui-même pour travailler au nom des processus). C'est-à-dire pour correspondre le plus règles générales travailler sous Windows.

Dans le même temps, la plupart des problèmes d'exécution correcte d'un module non géré (problèmes d'interaction, d'allocation et de libération de mémoire) sont des problèmes de développeurs d'applications. Par exemple, la technologie COM bien connue est un moyen d'organiser l'interaction de composants hétérogènes au sein d'une application.

Un objet est, au sens large, une zone de mémoire (sur la pile ou le tas) allouée lors de l'exécution d'un programme pour écrire des valeurs quelconques. Il est caractérisé par un type (un ensemble fixe de propriétés qui déterminent la taille de la zone occupée, la façon dont la valeur est interprétée, la plage de valeurs, l'ensemble des actions autorisées lors de la manipulation de l'objet) par l'emplacement en mémoire (adresse ).

Le nettoyage de la mémoire est un mécanisme qui permet au CLR de déterminer quand un objet n'est plus disponible dans la mémoire gérée d'un programme. Le nettoyage de la mémoire libère la mémoire gérée. Pour le développeur d'applications, la présence d'un mécanisme de ramasse-miettes signifie qu'il n'a plus à se soucier de libérer de la mémoire. Cependant, cela peut nécessiter un changement de style de programmation, comme Attention particulière doit être donnée à la procédure de libération des ressources système. Vous devez implémenter des méthodes qui libèrent les ressources système qui sont sous le contrôle de l'application.

Une pile est une zone de mémoire spécialement organisée conçue pour stocker temporairement les valeurs d'objets (variables et constantes), pour passer des paramètres lors de l'appel de méthodes, pour stocker l'adresse de retour. La gestion d'une pile est assez simple par rapport à un tas. Il est basé sur le changement de valeur du registre correspondant en haut de la pile. Lorsque la taille de la pile est réduite, les objets sont simplement perdus.

Programmer en C#

Un programme est une séquence d'instructions bien formée (non répréhensible par le compilateur C#) à partir de laquelle un assemblage est formé.

En général, le programmeur crée un fichier contenant des déclarations de classe, qui est transmis au compilateur en entrée. Le résultat de la compilation est représenté par le traducteur comme un assemblage et est déterminé par les préférences du programmeur. En principe, l'assemblage peut être de deux types :

§ Portable Executable File (fichier PE avec extension .exe), adapté à une exécution directe par le CLR,

§ Dynamic Link Library File (fichier DLL avec extension .dll), conçu pour réutilisation en tant que composant d'une application.

Dans tous les cas, sur la base du code d'entrée, le traducteur construit un module sur IL, un manifeste, et forme un assemblage. À l'avenir, l'assemblage pourra soit être effectué après la compilation JIT, soit être utilisé dans le cadre d'autres programmes.

C'est l'un des langages de programmation les plus populaires, multifonctionnels et en développement actif dans ce moment. Avec lui, vous pouvez développer presque n'importe quel logiciel, allant de simples formulaires de gain applications, aux grandes applications Web client/serveur, ou même Applications mobiles et les jeux informatiques. Et cela fonctionne sur la base du .NET Framework. Voyons ce que c'est.

Regardez ma vidéo sur .NET Framework et CLR Runtime pour C#

Langage de programmation C# est relativement frais, mais il a déjà réussi à gagner la confiance. La sortie de la première version a eu lieu en février 2002. La dernière version du langage au moment d'écrire ces lignes est C# 7.2, qui a été publiée le 16/08/2017.

La syntaxe du langage C#, comme son nom l'indique, appartient à la famille des langages de type C et est similaire à d'autres langages populaires de ce groupe (C++, Java). Par conséquent, si vous êtes déjà familiarisé avec l'un de ces langages, il vous sera beaucoup plus facile de maîtriser le langage de programmation C#.

Étant donné que C # est un langage orienté objet, il prend en charge l'héritage, le polymorphisme, l'encapsulation, le typage fort des variables, la surcharge des opérateurs, etc. Tous ces concepts seront abordés en détail dans les articles suivants. Grâce à l'utilisation du paradigme de conception orientée objet, en utilisant un langage de programmation, il est assez facile de développer des projets à grande échelle et en même temps flexibles. Avec tout cela, de nouvelles versions du langage C# sortent régulièrement, ajoutant de nouvelles fonctionnalités pour simplifier la vie du développeur, augmenter la vitesse de développement, améliorer les performances et la fiabilité de l'application.

Plate-forme .NET

.NET Framework est une plate-forme logicielle de la société Microsoft permettant le développement dans divers langages de programmation, puisqu'un seul environnement d'exécution de langage commun est utilisé pour tous les langages Common Language Runtime (CLR). Ainsi, les principales fonctionnalités de la plateforme .NET sont :

  • Multiplateforme– .NET Framework pris en charge par la plupart des systèmes d'exploitation modernes Windows, ainsi que la possibilité de créer des applications prises en charge Systèmes Linux et même des applications mobiles.
  • Multilingue- étant donné que le code source écrit dans le langage de programmation utilisé est traduit dans le langage commun CIL (Common Intermediate Language), il devient possible de développer dans n'importe quel langage de programmation pris en charge, et même d'utiliser différents langages de programmation dans une seule solution. Les langages pris en charge les plus populaires sont C#, VB.NET, C++, F#.
  • Vaste bibliothèque de classes et de technologies- il existe un grand nombre de bibliothèques prêtes à l'emploi pour résoudre les tâches nécessaires. Souvent, il n'est pas du tout nécessaire d'implémenter la logique de bas niveau de l'application, il suffit d'utiliser une solution prête à l'emploi qui est facilement fournie via le gestionnaire de packages nuget. De plus, la plate-forme .NET facilite le développement de presque tous les types de logiciels dont vous avez besoin.

Code managé et non managé. Compilation juste à temps

Code géré est du code géré par le Common Language Runtime (CLR). Cela signifie que l'environnement de contrôle a la capacité de suspendre l'exécution de l'application et d'obtenir des informations spécifiques sur l'état de l'application à tout moment pendant son exécution. Le code source du langage de programmation utilisé est traduit en code CIL managé (aussi appelé assembleur de haut niveau).

Après la création d'une bibliothèque de classes ou d'une application, le code source continue d'être stocké dans CIL. Et lorsque l'application démarre ou que l'on accède à la bibliothèque, le Just-In-Time est exécuté ( Juste à temps) compilation d'une application en code machine spécifique à l'environnement sur lequel l'application est exécutée. Dans le même temps, une caractéristique importante est que seule la partie de l'application ou de la bibliothèque à laquelle on accède est compilée (enfin, les liens, bien sûr). Cela vous permet d'augmenter les performances du système et d'économiser des ressources.

Code non géré- c'est le code qui est directement traduit en code exécutable par la machine et exécuté directement par le système d'exploitation.

De plus, je vous recommande de lire l'article. Et abonnez-vous également au groupe VKontakte, à Telegram et à la chaîne YouTube. Il y a encore plus utile et intéressant pour les programmeurs.

C#
  • Moteur d'exécution du langage commun) et une bibliothèque de classe...
  • Le .NET Framework et la spécification CTS
    Le langage C# et son support sont actuellement associés au .NET Framework développé par Microsoft. La plate-forme nommée (voir) inclut : le Common Language Runtime (CLR - Moteur d'exécution du langage commun bibliothèque de classes de cadre).Ça devrait être noté...
    (PROGRAMMATION. BASE C#)
  • Installation du .NET Framework et de Visual Studio
    Dans l'environnement Windows 7 et 8, la plate-forme .NET est déjà installée et rien ne doit être installé. Pour développer des applications sur la plate-forme .NET, vous devez installer le système de développement Visual C# 2012 (ou 2013) Édition Express - version gratuite Environnement de développement Visual Studio (raccourci, mais avec presque...
    (Programmation orientée objet)
  • TYPES C# ET TYPES DE PLATEFORMES .NET FRAMEWORK
    Le langage C# et son support sont actuellement associés au .NET Framework développé par Microsoft. La plate-forme nommée (voir) inclut : le Common Language Runtime (CLR - Moteur d'exécution du langage commun) et une bibliothèque de classe...
    (PROGRAMMATION. BASE C#)
  • Le .NET Framework et la spécification CTS
    Le langage C# et son support sont actuellement associés au .NET Framework développé par Microsoft. La plate-forme nommée (voir) inclut : le Common Language Runtime (CLR - Moteur d'exécution du langage commun) et une bibliothèque de classes (FCL - bibliothèque de classes de cadre).Ça devrait être noté...
    (PROGRAMMATION. BASE C#)
  • Annotation: Initiative Microsoft .NET. Problèmes de compatibilité, de fiabilité et de réutilisation des composants. Cadre .NET. Common Language Runtime (CLR). Langage pseudo-machine CIL (assembleur managé). Compilateur JIT. Langages de programmation. Assemblées. métadonnées. Éboueur. Bibliothèque de classes .NET Framework

    Problèmes de développement des systèmes d'information modernes

    Problèmes d'intégration

    • Modules écrits dans différents langages, utilisant différentes API (ou versions d'API) ou différents formats de présentation des données ;
    • Programmes développés pour diverses plates-formes dans un seul progiciel ;
    • Systèmes utilisant différents modèles de logiciels.

    Particulièrement souvent, il y a des problèmes d'intégration avec le code hérité ( legacy ). Lors de la résolution de problèmes d'intégration, des problèmes d'incompatibilité surviennent.

    Problèmes de portabilité

    De plus en plus, les programmes doivent prendre en charge plusieurs plates-formes (par exemple, la capacité de travailler avec un programme sur Plate-forme Windows et MacOS).

    Problèmes de version

    Les développeurs Windows sont conscients d'un problème de compatibilité de version connu sous le nom d'enfer DLL. Cet "enfer" se produit lorsque des composants installés pour une nouvelle application remplacent les composants d'une ancienne application. En conséquence, l'ancienne application commence à ne pas fonctionner correctement ou cesse de fonctionner.

    La gestion des ressources

    L'un des problèmes de la programmation est la gestion et la libération correcte des ressources, des fichiers, de la mémoire, de l'espace écran, les connexions de réseau, les ressources de la base de données, etc. Une mauvaise gestion de ces ressources peut entraîner une mauvaise exécution du programme.

    Type de sécurité

    Lorsque la sécurité des types est mentionnée, cela signifie une gestion incorrecte des types de données : tentatives d'accès à des zones de mémoire en dehors de la limite de type, tentatives d'appel de méthodes qui ne sont pas présentes sur le type ou tentatives d'appel d'une méthode qui prend le type A comme paramètre et passez-le en tant qu'objet paramètre de type B.

    Gestion des pannes

    Lors du développement d'applications Windows à l'aide de l'API Win32, certaines fonctions renvoient des exceptions, d'autres renvoient des codes d'état et d'autres encore renvoient HRESULT . Ainsi, il n'y a pas de mécanisme cohérent pour gérer les échecs et il est possible d'ignorer certaines exceptions, ce qui rend le code dangereux.

    Ces problèmes de conception et d'autres systèmes d'information aide à résoudre la plate-forme Microsoft .NET.

    Résoudre les problèmes de développement de systèmes d'information en .NET

    Une façon de résoudre le problème de l'hétérogénéité consiste à développer et à maintenir des interfaces de programmation standard qui facilitent le portage d'applications vers des serveurs sur différentes plates-formes. Cependant, les applications peuvent utiliser des bases de données, des communications et d'autres services dont les interfaces ne sont pas des composants d'un langage ou d'un environnement de programmation. Une autre méthode utilisée par les fabricants pour résoudre le problème de l'hétérogénéité est le support de protocoles standards. Les systèmes qui prennent en charge le même protocole peuvent communiquer entre eux, même s'ils reposent sur des architectures de machines et des systèmes d'exploitation différents.

    Technologie. NET est un moyen de développer et de déployer des logiciels qui, à l'aide de normes largement utilisées telles que HTTP et XML, implémentent l'interaction des programmes et donnent accès à de nombreux services logiciels sur Internet. La technologie comprend. NET Framework - une plate-forme de développement et d'exécution d'applications qui simplifie et accélère le développement, prend en charge une approche orientée objet à part entière programmation pour le Web, élimine de nombreux types de erreurs de logiciel, fournit une API commune pour toutes les langues.

    Qu'est-ce qui constitue Microsoft .NET

    NET Framework est un framework de développement d'applications. Ses principaux composants sont le Common Language Runtime et la bibliothèque de classes. Bibliothèque de classes NET Framework .

    Moteur d'exécution du langage commun

    Le Common Language Runtime (CLR) est un Common Language Runtime qui résume les services du système d'exploitation et exécute les applications gérées qui doivent être autorisées par le CLR pour toute action.

    Tout le code de la plate-forme .NET est converti par le code intermédiaire CLR en CIL. Par conséquent, les développeurs peuvent facilement intégrer du code écrit pour .NET dans différents langages de programmation. Tout ce qui peut être fait dans un langage compatible .NET (à de rares exceptions près) peut être fait dans n'importe quel autre. Le code dans ces langages est compilé en code dans un seul langage - CIL.

    Le CLR se trouve au-dessus du système d'exploitation et fournit un environnement virtuel pour les applications gérées. Le code de la plate-forme .NET est soit exécuté par le CLR, soit autorisé à s'exécuter en dehors de celui-ci.

    Le code pour le CLR est les commandes de pseudo-langage machine CIL (Common Intermediate Language). Ces instructions sont compilées en code machine du type de processeur approprié à la demande (juste à temps) au moment de l'exécution. Typiquement, une méthode est compilée une fois lors de son premier appel. Le résultat est ensuite mis en cache dans la mémoire pour éviter les retards sur les appels répétés. Le compilateur JIT effectue des optimisations de code spécifiquement pour le processeur sur lequel le code s'exécute.

    En convertissant les instructions CIL en instructions de processeur, le compilateur JIT effectue la vérification du code pour la sécurité du type.

    Il est presque impossible d'exécuter une commande qui accède à une région de la mémoire à laquelle la commande n'a pas l'autorisation d'accéder. Dans une application gérée, le problème des pointeurs initialisés par erreur est éliminé, il est interdit de convertir un type en quelque chose qu'il n'est pas, car il s'agit d'une violation de la sécurité des types. Le CLR n'autorise pas l'appel de méthodes avec un cadre de pile cassé.

    Les ressources allouées par le code managé sont libérées par le garbage collector. En d'autres termes, le programmeur alloue uniquement de la mémoire, mais ne la libère pas - cela est fait par le CLR. Le ramasse-miettes conserve une trace de toutes les références aux objets, généré par le programme, et détruit ces objets lorsque la mémoire qu'ils occupent est nécessaire ailleurs. Cela résout le problème des fuites de mémoire dans les applications de code managé.

    La vérification du code est également à la base de la capacité du CLR à exécuter plusieurs applications au sein d'un même processus. Le processus est divisé en compartiments virtuels - domaines d'application (domaine d'application). Cela améliore l'efficacité de l'utilisation de la mémoire allouée aux processus. Les domaines d'application sont tout aussi sécurisés que les processus car leurs limites ne peuvent pas être violées par les applications gérées.

    Bibliothèque de classes .NET Framework (FCL)

    .NET inclut des assemblages de bibliothèques de classes. NET Framework Class Library ( FCL ) contenant des définitions pour plusieurs milliers de types, chacun fournissant certaines fonctionnalités. Les ensembles de types "liés" sont collectés dans des espaces de noms séparés. Ainsi, l'espace de noms System contient la classe de base Object , à partir de laquelle tous les autres types sont finalement dérivés.

    Ainsi, chaque entité dans NET est un objet avec ses propres champs et méthodes.

    En outre, System contient des types pour les entiers, les caractères, les chaînes, la gestion des exceptions, les E/S de la console, un groupe de types pour une conversion sécurisée d'un type à un autre, le formatage des données, génération de nombres aléatoires et effectuer des opérations mathématiques. Les types de l'espace de noms System sont utilisés par toutes les applications.

    Pour modifier un type FCL existant, vous pouvez créer votre propre type dérivé. Vous pouvez créer vos propres espaces de noms. Tout cela respectera clairement les principes proposés par la plateforme. RAPPORTER

    Voici quelques-uns des espaces de noms les plus courants et brève description les types qui y sont contenus.

    Espaces de noms FCL de base
    Espace de noms Contenu
    Système Types de données fondamentaux et classes d'assistance
    System.Collections Tables de hachage, tableaux de variables et autres conteneurs
    Système.Données Classes ADO .NET pour l'accès aux données
    System.Drawing Classes pour la sortie graphique (GDI+)
    System.IO Classes d'E/S de fichiers et de flux
    System.Net Cours pour travailler avec protocoles réseau, par exemple avec HTTP
    System.Reflection Classes de lecture et d'écriture de métadonnées
    System.Runtime.Remoting Classes pour les applications distribuées
    System.ServiceProcessSystem.ServiceProcess Classes pour créer des services Windows
    System.Threading Classes pour créer et gérer des threads
    Système.Web Classes pour le support HTTP
    System.Web.Services Cours de développement de services Web
    System.Web.Services. Classes pour le développement de protocoles de clients de services Web
    System.Web.UI Classes de base utilisées par ASP .NET
    System.Web.UI. contrôles Web Contrôles du serveur ASP .NET
    System.Wndows.Forms Classes pour les applications GUI
    System.Xml Classes de lecture et de saisie de données XML

    Toutes les applications gérées utilisent