Платформа. NET Framework- це інтегрований компонент Windows, який підтримує створення і виконання нового покоління додатків і веб-служб XML. При розробці платформи.NET Framework враховувалися наступні цілі.

· Забезпечення узгодженої об'єктно-орієнтованого середовища програмування для локального збереження і виконання об'єктного коду, для локального виконання коду, розподіленого в Інтернеті, або для віддаленого виконання.

· Забезпечення середовища виконання коду, що мінімізує конфлікти при розгортанні програмного забезпечення та управлінні версіями.

· Забезпечення середовища виконання коду, що гарантує безпечне виконання коду, включаючи код, створений невідомим або не повністю довіреною стороннього постачальника.

· Забезпечення середовища виконання коду, що виключає проблеми з продуктивністю середовищ виконання сценаріїв або інтерпретується коду.

· Забезпечення єдиних принципів роботи розробників для різних типівдодатків, таких як додатки Windows і веб-додатки.

· Розробка взаємодії на основі промислових стандартів, що забезпечить інтеграцію коду платформи.NET Framework з будь-яким іншим кодом.

Двома основними компонентами платформи.NET Framework є загальномовне Виконавча (CLR) і бібліотека классов.NET Framework. Основою платформи.NET Framework є середовище CLR. Середу виконання можна вважати агентом, який керує кодом під час виконання і надає основні служби, такі як управління пам'яттю, управління потоками і віддалене взаємодія. При цьому накладаються умови суворої типізації та інші види перевірки точності коду, що забезпечують безпеку і надійність. Фактично основним завданням середовища виконання є управління кодом. Код, який звертається до середовища виконання, називають керованим кодом, а код, який не обертається до середовища виконання, називають некерованим кодом. Інший основний компонент платформи.NET Framework, бібліотека класів, представляє повну об'єктно-орієнтовану колекцію типів, які застосовуються для розробки додатків, починаючи від звичайних, що запускаються з командного рядка або з графічним інтерфейсом користувача, і закінчуючи додатками, що використовують останні технологічні можливості ASP.NET , такі як Web Forms і веб-служби XML.

Платформа.NET Framework може розміщуватися некерованими компонентами, які завантажують середу CLR у власні процеси і запускають виконання керованого коду, створюючи таким чином програмне середовище, що дозволяє використовувати кошти як керованого, так і некерованого виконання. Платформа.NET Framework не тільки надає кілька базових середовищ виконання, але також підтримує розробку базових середовищ виконання незалежними виробниками.


For example, ASP.NET hosts the runtime to provide a scalable, server-side environment for managed code. ASP.NET works directly with the runtime to enable ASP.NET applications and XML Web services, both of which are discussed later in this topic.

Internet Explorer is an example of an unmanaged application that hosts the runtime (in the form of a MIME type extension). Using Internet Explorer to host the runtime enables you to embed managed components or Windows Forms controls in HTML documents. Hosting the runtime in this way makes managed mobile code (similar to Microsoft® ActiveX® controls) possible, but with significant improvements that only managed code can offer, such as semi-trusted execution and isolated file storage.

The following illustration shows the relationship of the common language runtime and the class library to your applications and to the overall system. The illustration also shows how managed code operates within a larger architecture.

NET Framework in context

The following sections describe the main components and features of the .NET Framework in greater detail.


Наприклад, ASP.NET розміщує середу виконання і забезпечує масштабовану середовище для керованого коду на стороні сервера. ASP.NET працює безпосередньо з середовищем виконання, щоб забезпечити виконання додатків ASP.NET і веб-служб XML, обговорюваних нижче в цьому розділі.

Оглядач Internet Explorer може служити прикладом некерованого додатки, яка розміщує середу виконання (у вигляді розширень типів MIME). Розміщення середовища виконання в браузері Internet Explorer дозволяє впроваджувати керовані компоненти або елементи управління Windows Forms в HTML-документи. Таке розміщення середовища робить можливим виконання керованого мобільного коду (аналогічного елементам управління Microsoft® ActiveX®), але з істотними перевагами керованого коду, такими як виконання в умовах неповного довіри і ізольоване зберігання файлів.

На наступному малюнку демонструється взаємозв'язок середовища CLR і бібліотеки класів з одними додатками і всією системою. На малюнку також показано, як керований код працює в межах ширшої архітектури.

NET Framework в контексті

У наступних розділах наводиться більш докладний описосновних компонентів і засобів платформи.NET Framework.

Вступ

ПЛАТФОРМА - це як мінімум Виконавча програм і ... ще що-небудь, що визначає особливості розробки і виконання програмного коду - парадигми програмування, мови програмування, безлічі базових класів.

Microsoft.NET (.NET Framework) - програмна платформа. Містить наступні основні компоненти: the common language runtime (CLR) and the .NET Framework class library (.NET FCL).

CLS (Common Language Specification) - загальна специфікація мов програмування. Це набір конструкцій і обмежень, які є керівництвом для творців бібліотек і компіляторів в среде.NET Framework. Бібліотеки, побудовані відповідно до CLS, можуть бути використані з будь-якої мови програмування, що підтримує CLS. Мови, відповідні CLS (до їх числа відносяться мови Visual C #, Visual Basic, Visual C ++), можуть інтегруватися один з одним. CLS - це основа міжмовної взаємодії в рамках платформи Microsoft.NET.

CLR (Common Language Runtime) - Середовище Часу Виконання або Віртуальна Машина. Забезпечує виконання збірки. Основний компонент.NET Framework. Під Віртуальної Машиною розуміють абстракцію інкапсульованою (відокремленої) керованої операційної системи високого рівня, яка забезпечує виконання програмного коду і передбачає вирішення наступних завдань:

§ управління кодом (завантаження і виконання),

§ управління пам'яттю при розміщенні об'єктів,

§ ізоляцію пам'яті додатків,

§ перевірку безпеки коду,

§ перетворення проміжного мови в машинний код,

§ доступ до метаданих (розширена інформація про типи),

§ обробка винятків, включаючи міжмовні виключення,

§ взаємодія між керованим і некерованим кодом (в тому числі і COM-об'єктами),

§ підтримка сервісів для розробки (профілізація, налагодження і т.д.).

Коротше, CLR - це набір служб, необхідних для виконання зборки. При цьому програмний код збірки може бути як керованим (код, при виконанні якого CLR, зокрема, активізує систему управління пам'яті), так і некерованим ( "старий" програмний код).

Сама CLR складається з двох головних компонентів: ядра (mscoree.dll) і бібліотеки базових класів (mscorlib.dll). Наявність цих файлів на диску - вірна ознака того, що на комп'ютері, по крайней мере, була зроблена спроба установки платформи.NET.

Ядро середовища виконання реалізовано у вигляді бібліотеки mscoree.dll. При компонуванні збірки в неї вбудовується спеціальна інформація, Яка при запуску програми (EXE) або при завантаженні бібліотеки (звернення до DLL з некерованого модуля - виклик функції LoadLibrary для завантаження керованої збірки) призводить до завантаження і ініціалізації CLR. Після завантаження CLR в адресний простір процесу, ядро ​​середовища виконання виконує наступні дії:

§ знаходить місцезнаходження збірки,

§ завантажує збірку в пам'ять,

§ робить аналіз вмісту збірки (виявляє класи, структури, інтерфейси),

§ робить аналіз метаданих,

§ забезпечує компіляцію коду на проміжному мовою (IL) в платформозавісімие інструкції (асемблерний код),

§ виконує перевірки, пов'язані із забезпеченням безпеки,

§ використовуючи основний потік додатку, передає управління перетвореному в команди процесора фрагменту коду збірки.

FCL (.NET Framework Class Library) - відповідна CLS специфікації об'єктно-орієнтована бібліотека класів, інтерфейсів і системи типів (типів-значень), які включаються до складу платформи Microsoft .NET.

Ця бібліотека забезпечує доступ до функціональними можливостямисистеми і призначена в якості основи при разработке.NET додатків, компонент, елементів управління.

NET бібліотека класів є другим компонентом CLR.

NET FCL можуть використовувати ВСЕ.NET-додатки, незалежно від призначення, архітектури, використовуваного при розробці мови програмування. Зокрема, містить:

§ вбудовані (елементарні) типи, представлені у вигляді класів (на платформе.NET все побудовано на структурах або класах),

§ класи для розробки графічного призначеного для користувача інтерфейсу(Windows Form),

§ класи для розробки Web-додатків і Web-служб на основі технології ASP.NET (Web Forms),

§ класи для розробки XML і Internet-протоколами (FTP, HTTP, SMTP, SOAP),

§ класи для розробки додатків, що працюють з базами даних (ADO.NET),

§ і багато іншого.

NET-додаток - додаток, розроблене для виконання на платформі Microsoft.NET. Реалізується на мовах програмування, відповідних CLS.

MSIL (Microsoft Intermediate Language, він же IL - Intermedia Language) - проміжна мова платформи Microsoft.NET. Вихідні тексти програм для.NET додатків пишуться на мовах програмування, відповідних специфікації CLS. Для мов програмування, відповідних специфікації CLS може бути побудований перетворювач в MSIL. Таким чином, програми на цих мовах можуть транслюватися в проміжний код на MSIL. Завдяки відповідності CLS, в результаті трансляції програмного коду, написаного на різних мовах, виходить сумісний IL код.

Фактично MSIL є асемблером віртуального процесора.

МЕТАДАНІ - при перетворенні програмного коду в MSIL також формується блок МЕТАДАНИХ, що містить інформацію про дані, які використовуються в програмі. Фактично це набори таблиць, що містять інформацію про типах даних, що визначаються в модулі, про типах даних, на які посилається даний модуль. Раніше така інформація зберігалася окремо. Наприклад, додаток могло включати інформацію про інтерфейси, яка описувалася на Interface Definition Language (IDL). Тепер метадані є частиною керованого модуля.

Зокрема, метадані використовуються для:

§ збереження інформації про типи. При компіляції тепер не потрібні заголовні і бібліотечні файли. Всю необхідну інформацію компілятор читає безпосередньо з керованих модулів,

§ верифікації коду в процесі виконання модуля,

§ управління динамічною пам'яттю (звільнення пам'яті) в процесі виконання модуля,

§ при розробці програми стандартними інструментальними засобами (Microsoft Visual Studio.NET)

§ на основі метаданих забезпечується динамічна підказка (IntelliSense).

Мови, для яких реалізований переклад на MSIL:

і ще багато інших мов.

Виконуваний модуль - незалежно від компілятора (і вхідного мови) результатом трансляціі.NET додатки є керований виконуваний модуль (керований модуль). Це стандартний стерпний виконуваний (PE - Portable Executable) файл Windows.

Елементи керованого модуля представлені в таблиці.

Керований модуль містить керований код.

Керований код - це код, який виконується в середовищі CLR. Код будується на основі оголошених в вихідному модулі структур і класів, що містять оголошення методів. Керованого коду повинен відповідати певний рівень інформації (метаданих) для середовища виконання. Код C #, Visual Basic, і JScript є керованим за замовчуванням. Код Visual C ++ не є керованим за замовчуванням, але компілятор може створювати керований код, для цього потрібно вказати аргумент в командному рядку (/ CLR). Однією з особливостей керованого коду є наявність механізмів, які дозволяють працювати з керованих даними.

Керовані дані - об'єкти, які в ході виконання коду модуля розміщуються в керованій пам'яті (в керованій купі) і знищуються складальником сміття CLR. Дані C #, Visual Basic і JScript .NET є керованими за замовчуванням. Дані C # також можуть бути позначені як некеровані.

Збірка (Assembly) - базовий будівельний блок додатки в.NET Framework. Керовані модулі об'єднуються в збірки. Збірка є логічною угрупованням одного або декількох керованих модулів або файлів ресурсів. Керовані модулі в складі збірок виконуються в Середі Часу Виконання (CLR). Збірка може бути або виконуваним додатком (при цьому вона розміщується в файлі з расшіреніем.EXE), або бібліотечним модулем (в файлі з расшіреніем.DLL). При цьому нічого спільного зі звичайними (старого зразка!) Виконуваними програмами та бібліотечними модулями збірка не має.

Декларація збірки (Manifest) - складова частиназбірки. Ще один набір таблиць метаданих, який:

§ ідентифікує збірку у вигляді текстового імені, її версію, культуру і цифрову сигнатуру (якщо збірка поділяється серед додатків),

§ визначає входять до складу файли (по імені і хешу),

§ вказує типи і ресурси, існуючі в збірці, включаючи опис тих, які експортуються з збірки,

§ перераховує залежності від інших збірок,

§ вказує набір прав, необхідних збірці для коректної роботи.

Ця інформація використовується в період виконання для підтримки коректної роботи програми.

Процесор НЕ МОЖЕ виконувати IL код. І переклад IL коду здійснюється JIT-компілятором (just in time - в потрібний момент), який активізується CLR в міру необхідності і виконується процесором. При цьому результати діяльності JIT-компілятора зберігаються в оперативній пам'яті. Між фрагментом оттранслировать IL коду і відповідним блоком пам'яті встановлюється відповідність, яке в подальшому дозволяє CLR передавати управління командам процесора, записаним в цьому блоці пам'яті, минаючи повторне звернення до JIT-компілятор.

У середовищі CLR допускається спільна робота і взаємодія компонентів програмного забезпечення, реалізованих на різних мовах програмування.

На основі раніше сформованого блоку метаданих CLR забезпечує ЕФЕКТИВНЕ взаємодія виполняемих.NET додатків.

Для CLR все збірки однакові, незалежно від того якими мовами програмування вони були написані. Головне - це щоб вони відповідали CLS. Фактично CLR руйнує кордони мов програмування (cross-language interoperability). Таким чином, завдяки CLS і CTS .NET-додатки фактично виявляються додатками на MSIL (IL).

CLR бере на себе вирішення багатьох проблем, які традиційно знаходилися в зоні особливої ​​уваги розробників додатків. До числа функцій, які виконуються CLR, відносяться:

§ перевірка і динамічна (JIT) компіляція MSIL коду в команди процесора,

§ управління пам'яттю, процесами і потоками,

§ організація взаємодії процесів,

§ вирішення проблем безпеки (в рамках існуючої в системі політики безпеки).

AppDomain (домен додатки) - це логічний контейнер збірок, який використовується для ізоляції додатки в рамках адресного простору процесу. Всі об'єкти, створювані додатком, створюються в рамках певного домена додатку. Кілька доменів додатків можуть існувати в одному процесі операційної системи. CLR ізолює додатки, керуючи пам'яттю в рамках домена додатку.

Код, що виконується в CLR (CLR процес) відділений від інших процесів, які виконуються на комп'ютері в цей же самий час.

Звичайний процес запускається системою в рамках спеціально виділяється процесу адресного простору. CLR надає можливість виконання безлічі керованих додатків в ОДНОМУ ПРОЦЕСІ. Кожне кероване додаток зв'язується з власним доменом додатки (скорочено AppDomain). У додатку крім основного домену може бути створено кілька додаткових доменів.

Структура середовища виконання CLR представлена ​​на зображенні.

Властивості доменів:

§ домени ізольовані один від одного. Об'єкти, створені в рамках одного домена недоступні з іншого домену,

§ CLR здатна вивантажувати домени разом з усіма збірками, пов'язаними з цими доменами,

§ можлива додаткова конфігурація і захист доменів,

§ для обміну даними між доменами реалізований спеціальний механізм безпечного доступу (маршалинга).

§ В.NET Framework розроблена власна компонентна модель, елементами якої являются.NET-збірки (.NET-assembly), а для прямої і зворотної сумісності з моделлю COM / COM + в CLR вбудовані механізми (COM Interop), що забезпечують доступ до COM-об'єктів по правілам.NET і на .NET-збірок за правилами COM. При цьому для.NET-додатків не потрібно реєстрації компонентів в системному реєстрі Windows.

Для виполненія.NET-додатки досить розмістити відносяться до даного додатку збірки в одному каталозі. Якщо при цьому складання може бути використана в декількох додатках, то вона розміщується і реєструється за допомогою спеціальної утиліти в GAC (Global Assembly Cache Загальних кеші збірок).

CTS - Common Type System Стандартна Система Типів. Підтримується всіма мовами платформи. В силу того, что.NET дитя ООП - то мова тут йде про елементарні типах, класах, структурах, інтерфейсах, делегатів та перерахування.

Common Type System є важливою частиною середовища виконання, визначає структуру синтаксичних конструкцій, способи оголошення, використання, і застосування ЗАГАЛЬНИХ типів середовища виконання. У CTS зосереджена основна інформація про систему ЗАГАЛЬНИХ зумовленості типів, про їх використання та управлінні (правилах перетворення значень). CTS грає важливу роль в справі інтеграції різномовних керованих додатків.

Простір імен - це спосіб організації системи типів в єдину групу. Існує загальна загальномовне бібліотека базових класів. І концепція простору імен забезпечує ефективну організацію і навігацію в цій бібліотеці. Незалежно від мови програмування доступ до певних класів забезпечується за рахунок їх угруповання в рамках загальних просторів імен.

простір імен призначення
System
System.Data Для звернення до баз даних
System.Data.Common
System.Data.OleDb
System.Data.SqlClient
System.Collections Класи для роботи з контейнерними об'єктами
System.Diagnostics Класи для трасування і налагодження коду
System.Drawing Класи графічної підтримки
System.Drawing.Drawing2D
System.Drawing.Printing
System.IO Підтримка введення-виведення
System.Net Підтримка передачі даних по мережах
System.Reflection Робота з одними типами під час виконання додатка
System.Reflection.Emit
System.Runtime.InteropServices Підтримка взаємодії з "звичайним кодом" - DLL, COM-сервери, віддалений доступ
System.Runtime.Remoting
System.Security Криптографія, дозволу
System.Threading Робота з потоками
System.WEB Робота з web-додатками
System.Windows.Form Робота з елементами інтерфейсу Windows
System.XML Підтримка даних в форматі XML

Виконання некерованих виконуваних модулів (звичайні Windows додатки), Забезпечується безпосередньо системою Windows. Некеровані модулі виконуються в середовищі Windowsяк "прості" процеси. Єдина вимога, яким повинні відповідати подібні модулі - коректна робота в середовищі Windows. Вони повинні "правильно" працювати (не вішати систему, не допускати витоків пам'яті, не блокувати інші процеси і коректно використовувати кошти самої ОС для роботи від імені процесів). Тобто, відповідати найбільш загальними правилами роботи під Windows.

При цьому більшість проблем коректного виконання некерованого модуля (проблеми взаємодії, виділення і звільнення пам'яті) є проблемами розробників додатків. Наприклад, відома технологія COM є способом організації взаємодії різнорідних компонентів в рамках програми.

Об'єкт - в широкому сенсі це область пам'яті (стек або купі), що виділяється в процесі виконання програми для запису будь-яких значень. Характеризується типом (фіксованим набором властивостей, що визначають розмір займаної області, спосіб інтерпретації значення, діапазон значень, безліч дій, допустимих при маніпуляціях з об'єктом) місцем розташування в пам'яті (адресою).

Прибирання сміття - механізм, що дозволяє CLR визначити, коли об'єкт стає недоступний в керованої пам'яті програми. При складанні сміття керована пам'ять звільняється. Для розробника програми наявність механізму збору сміття означає, що він більше не повинен піклуватися про звільнення пам'яті. Однак це може зажадати зміни в стилі програмування, наприклад, особливу увагу слід приділяти процедурі звільнення системних ресурсів. Необхідно реалізувати методи, які звільняють системні ресурси, що знаходяться під управлінням програми.

Стек - спеціальним чином організована область пам'яті, призначений для тимчасового зберігання значень об'єктів (змінних і констант), для передачі параметрів при виклику методів, для збереження адреси повернення. Управління стеком в порівнянні з купою досить просто. Воно засноване на зміні значення відповідного регістра вершини стека. При скороченні обсягу стека об'єкти просто губляться.

Програма на C #

Програма - правильно побудована (що не викликає заперечень з боку C # компілятор) послідовність пропозицій, на основі якої формується збірка.

У загальному випадку, програміст створює файл, який містить оголошення класів, який подається на вхід компілятору. Результат компіляції представляється транслятором в вигляді збірки і визначається перевагами програміста. В принципі збірка може бути двох видів:

§ Portable Executable File (PE-файл з расшіреніем.exe), придатний до безпосереднього виконання CLR,

§ Dynamic Link Library File (DLL-файл з расшіреніем.dll), призначений для повторного використання як компонент в складі будь-якої програми.

У будь-якому випадку на основі вхідного коду транслятор будує модуль на IL, маніфест, і формує збірку. Надалі, збірка або може бути виконана після JIT компіляції, або може бути використана в складі інших програм.

анотація: Ініціатива Microsoft .NET. Проблеми сумісності, надійності і повторного використання компонентів. .NET Framework. Загальномовне виконуючого середовища CLR. Псевдомашінний мову CIL (керований assembler). JIT-компілятор. Мови програмування. Збірки. Метадані. Складальник сміття. Бібліотека классов.NET Framework

Проблеми розробки сучасних інформаційних систем

проблеми інтеграції

  • Модулів, написаних на різних мовах, що використовують різний API (або версії API) або різний формат представлення даних;
  • Програм, розроблених для різних платформ, в рамках єдиного програмного комплексу;
  • Систем, що використовують різні програмні моделі.

Особливо часто виникають проблеми інтеграції з успадкованим кодом (legacy). При вирішенні завдань інтеграції виникають проблеми несумісності.

проблеми переносимості

Все частіше до програм пред'являються вимоги підтримки декількох платформ (наприклад, можливість роботи з програмою на платформі Windows і Mac OS).

проблеми версій

Windows-розробники знають про проблему сумісності версій, відомої під назвою "пекло DLL". Цей "пекло" виникає, коли компоненти, що встановлюються для нового додатка, замінюють компоненти старого додатка. В результаті старе додаток починає працювати неправильно або перестає працювати.

управління ресурсами

Однією з проблем програмування є управління і коректне звільнення ресурсів, файлів, пам'яті, простору екрану, мережевих з'єднань, Ресурсів баз даних і т. Д. Некоректне управління цими ресурсами може призвести до некоректного виконання програми.

Безпека типів

Коли згадують проблему безпеки типів, мають на увазі некоректне поводження з типами даних: спроби звернутися до областям пам'яті за кордоном типу, спроби викликати методи, які відсутні у типу, або спроби викликати метод, який приймає як параметр тип А, і передати йому в якості параметра об'єкт типу В.

Обробка збоїв

При розробці Windows-додатків з використанням Win32 API деякі функції повертають виключення, інші - коди станів, треті - HRESULT. Таким чином, відсутня узгоджений механізм обробки збоїв і є можливість ігнорувати деякі винятки, що робить код небезпечним.

Ці та інші проблеми розробки інформаційних систем допомагає вирішувати платформа Microsoft .NET.

Рішення проблем розробки інформаційних систем в.NET

Один із способів вирішення проблеми неоднорідності - розробка і підтримка стандартних програмних інтерфейсів, що полегшують завдання перенесення додатків на сервери різних платформ. Однак додатки можуть використовувати бази даних, комунікаційні та інші сервіси, інтерфейси яких не є компонентами мови або середовища програмування. Інший спосіб, який застосовується виробниками для вирішення проблеми неоднорідності, - підтримка стандартних протоколів. Системи, що підтримують один і той же протокол, можуть взаємодіяти один з одним, навіть якщо вони спираються на різні машинні архітектури та операційні системи.

Технологія. NET являє собою спосіб розробки і розгортання програмного забезпечення, який за допомогою таких широко використовуваних стандартів, як HTTP і XML, реалізує взаємодію програм і забезпечує доступ через Internet до численних програмним сервісів. Технологія включає. NET Framework - платформу для розробки і виконання програм, яка спрощує і прискорює розробку, підтримує повноцінне об'єктно-орієнтоване програмуваннядля Web, усуває багато типів найбільш поширених програмних помилок, надає загальний API для всіх мов.

Що становить Microsoft .NET

NET Framework - інфраструктура розробки додатків. Її основні компоненти - загальномовне виконуюча середовище (Common Language Runtime) і бібліотека класів. NET Framework Class Library.

Загальномовне виконуюча середовище (Common Language Runtime)

Common Language Runtime (CLR) - загальномовне виконуюча среда, абстрагуюча сервіси операційної системи і виконуюча керовані додатки, будь-яка дія яких має отримати дозвіл з боку CLR.

Весь код для платформи.NET перетворюється CLR в проміжний код на мові CIL. Тому розробники можуть легко інтегрувати код, написаний для.NET на різних мовах програмування. Все, що можна зробити на одном.NET-сумісній мові (за рідкісним винятком), можна зробити на будь-якому іншому. Код на цих мовах компілюється в код на одній мові - мові CIL.

CLR розташована поверх операційної системи і надає віртуальне середовище для керованих додатків. Код для платформи.NET або виповнюється CLR, або отримує дозвіл на виконання за її межами.

Код для CLR є команди псевдомашінного мови Common Intermediate Language (CIL). Ці команди компілюються в машинний код відповідного типу процесора за запитом (just-in-time) в період виконання. Зазвичай компіляція методу відбувається один раз під час його першого виклику. Потім результат кешируєтся в пам'яті, щоб уникнути затримок при повторних викликах. JIT-компілятор виконує оптимізацію коду спеціально для процесора, на якому виповнюється цей код.

Перетворюючи команди CIL в команди процесора, JIT-компілятор виконує верифікацію коду на предмет безпеки типів.

Практично неможливо виконати команду, що обертається до області пам'яті, до якої у цієї команди немає дозволу на доступ. У керованому додатку усувається проблема помилково ініціалізованих покажчиків, забороняється перетворити тип в щось, чим він не є, так як це порушення безпеки типів. CLR не дозволяє викликати методи з зруйнованим стековим фреймом.

Ресурси, що виділяються керованим кодом, звільняються складальником сміття. Інакше кажучи, програміст тільки виділяє пам'ять, але не звільняє її - це робить CLR. Складальник сміття відстежує всі посилання на об'єкти, створювані програмою, і знищує ці об'єкти, коли зайнята ними пам'ять потрібно десь ще. Таким чином в додатках з керованим кодом дозволяється проблема витоків пам'яті.

Верифікація коду є також основою спроможності CLR виконувати кілька додатків всередині одного процесу. Процес поділяється на віртуальні відсіки - домени додатків (application domain). Таким чином підвищується ефективність використання пам'яті, що виділяється процесам. Домени додатків не менше безпечні, ніж процеси, так як їх кордони не можуть бути порушені керованими додатками.

.NET Framework Class library (FCL)

В. NET включені збірки бібліотеки класів. NET Framework Class library (FCL), що містять визначення декількох тисяч типів, кожен з яких надає деяку функціональність. Набори "родинних" типів зібрані в окремі простору імен. Так, простір імен System містить базовий клас Object, з якого в кінцевому рахунку породжуються всі інші типи.

Таким чином, будь-яка сутність в. NET є об'єктом зі своїми полями і методами.

Крім того, System містить типи для цілих чисел, символів, рядків, обробки виключень, консольного введення / виведення, групу типів для безпечного перетворення одних типів в інші, форматування даних, генерації випадкових чиселі виконання математичних операцій. Типами з простору імен System користуються всі програми.

Для зміни існуючого FCL-типу можна створити свій власний похідний тип. Можна створювати свої власні простору імен. Все це буде чітко відповідати принципам, запропонованим платформою. NET

Наведемо деякі найбільш поширені простору імен і короткий описмістяться там типів.

Основні простору імен FCL
простір імен зміст
System Фундаментальні типи даних і допоміжні класи
System.Collections Хеш-таблиці, масиви змінної розмірності і інші контейнери
System.Data Класи ADO .NET для доступу до даних
System.Drawing Класи для виведення графіки (GDI +)
System.IO Класи файлового і потокового введення / виводу
System.Net Класи для роботи з мережевими протоколами, Наприклад з HTTP
System.Reflection Класи для читання і запису метаданих
System.Runtime.Remoting Класи для розподілених додатків
System.ServiceProcess Класи для створення служб Wndows
System.Threading Класи для створення і управління потоками
System.Web Класи для підтримки HTTP
System.Web.Services Класи для розробки web-сервісів
System.Web.Services. Класи для розробки клієнтів web-сервісів Protocols
System.Web.UI Основні класи, використовувані ASP .NET
System.Web.UI. WebControls Серверні елементи управління ASP .NET
System.Wndows.Forms Класи для додатків з графічним інтерфейсом користувача
System.Xml Класи для читання і введення даних в форматі XML

Всі керовані додатки використовують

Є одним з найбільш затребуваних, багатофункціональних і активно розвиваються мов програмування на даний момент. З його допомогою можна розробляти практично будь-який програмне забезпечення, Починаючи від простих win forms додатків, до великих клієнт-серверних веб-додатків або навіть мобільні додатки і комп'ютерних ігор.А працює він на базі платформи.NET Framework. Давайте ж розберемося, що це таке.

Дивіться моє відео на тему платформа.NET Framework і середовище виконання CLR для C #

Мова програмування C #є відносно свіжим, але він вже встиг заслужити довіру. Реліз першої версії відбувся в лютому 2002 року. Крайньою версією мови на момент написання статті є C # 7.2, яка вийшла 16.08.2017.

Синтаксис мови C # як випливає з назви входить в сімейство Сі-подібних мов і схожий на інші популярних мови з цієї групи (C ++, Java). Тому, якщо ви вже знайомі з одним з цих мов, вам буде значно простіше освоїти мовою програмування C #.

Так як C # є об'єктно-орієнтованою мовою, то він підтримує спадкування, поліморфізм, інкапсуляцію, строгу типізацію змінних, перевантаження операторів і інше. Всі ці поняття будуть нами детально розглянуті в наступних статтях. Завдяки використанню парадигми об'єктно-орієнтованого проектування за допомогою мови програмування можна досить легко розробляти масштабні і при цьому гнучкі проекти. При цьому регулярно виходять нові версії мови C #, додаючи нову функціональність для спрощення життя розробника, збільшення швидкості розробки, підвищення продуктивності і надійності прілоежнія.

Платформа.NET

.NET Framework - це програмна платформа від компанії Microsoft що дозволяє виконувати розробку на різних мовах програмування, так як для всіх мов використовується єдина загальномовне середовище виконання Common Language Runtime (CLR). Таким чином, основними можливостями платформи.NET є:

  • Кросплатформеність- .NET Framework підтримується більшістю сучасних операційних систем Windows, а також є можливість створювати додатки підтримувані Linux системами, І навіть мобільні додатки.
  • Багатомовність- так як вихідний код, Написаний на використовувану мову програмування, транслюється в загальномовна Common Intermediate Language (CIL) код, з'являється можливість вести розробку на будь-якому підтримуваному мовою програмування, і навіть використовувати різні мови програмування в одному рішенні. Найбільш популярними підтримуваними мовами є C #, VB.NET, C ++, F #.
  • Велика бібліотека класів і технологій- існує величезна кількість готових до використання бібліотек для вирішення необхідних завдань. Найчастіше зовсім не доводиться реалізовувати низкоуровневую логіку роботи програми, досить скористатися готовим рішенням, зручно поставляється через менеджер пакетів nuget. Крім того, платформа.NET передбачає легку розробку практично будь-якого типу необхідного програмного забезпечення.

Керований і некерований код. JIT-компіляція

Керований код (managed code)- це код керований загальномовна середовищем CLR. Це означає, що що керуюча середовище має можливість призупинити виконання програми та отримати специфічну інформацію про стан програми в будь-який момент його виконання. Вихідний код мови програмування транслюється в керований код CIL (його ще називають високорівневим ассемблером).

Після створення бібліотеки класів або додатки, вихідний код продовжує зберігатися на мові CIL. А під час запуску програми або зверненні до бібліотеки виконується Just-In-Time ( JIT) Компіляція програми в машинний код, специфічний саме для того оточення, на якому здійснюється виконання програми. При цьому важливою особливістю є те, що виконується компіляція тільки тієї частини програми або бібліотеки, до якої виконується звернення (ну і зв'язків природно). Це дозволяє збільшити продуктивність роботи системи та економити ресурси.

Некерований код (unmanaged code)- це код, трансльований відразу в машинний виконуваний код і виповнюється операційною системою безпосередньо.

Крім того, рекомендую прочитати статтю. А також підписуйтесь на групу ВКонтакте, Telegram і YouTube-канал. Там ще більше корисного і цікавого для програмістів.

C #
  • Common Language Runtime) І бібліотеку класів ...
  • Платформа.NET Framework і специфікація CTS
    Мова C # і засоби його підтримки в даний час пов'язані з платформой.NET Framework, розробленої Microsoft. Названа платформа (див.) Включає: загальномовне виконуючу середу (CLR - Common Language Runtime Framework Class Library).Варто зауважити,...
    (Програмування. БАЗОВИЙ КУРС С #)
  • Установка платформи.NET Framework і Visual Studio
    У середовищі ОС Windows 7 і 8 платформа.NET вже є і нічого встановлювати нс потрібно. Для розробки додатків в платформе.NET потрібно встановити систему розробки Visual C # 2012 (або 2013) Express Edition - безкоштовна версіясередовища розробки Visual Studio (скорочена, але вона володіє практично ...
    (Об'єктно-орієнтоване програмування)
  • ТИПИ C # І ТИПИ ПЛАТФОРМИ.NET FRAMEWORK
    Мова C # і засоби його підтримки в даний час пов'язані з платформой.NET Framework, розробленої Microsoft. Названа платформа (див.) Включає: загальномовне виконуючу середу (CLR - Common Language Runtime) І бібліотеку класів ...
    (Програмування. БАЗОВИЙ КУРС С #)
  • Платформа.NET Framework і специфікація CTS
    Мова C # і засоби його підтримки в даний час пов'язані з платформой.NET Framework, розробленої Microsoft. Названа платформа (див.) Включає: загальномовне виконуючу середу (CLR - Common Language Runtime) І бібліотеку класів (FCL - Framework Class Library).Варто зауважити,...
    (Програмування. БАЗОВИЙ КУРС С #)