Як працює. NET Framework?

Коли ви пишете вихідний код на С #, то створюєте інструкції для виконання прраммой Інструкції визначаються за допомогою мови програмування С #, який, загалом, зрозумілий людям, але зовсім незрозумілий компютерам Компьюте не розуміють інформацію у вигляді тексту, вони розуміють одиниці і нулі Щоб вводити інструкції в компютер у зрозумілій для нього формі, був розроблений вокоуровневий механізм, який перетворює текстові інструкції в Фоат, який розуміється компютером Цей перетворюють інструмент називається компілятором

Але особливість NET, на відміну від традиційних мов програмування, тихий як С + + і С, полягає в тому, що компілятор генерує двійковий промежочний код мовою CIL (Common Intermediate Language) NET Framework потім перетворює інструкції з формату CIL в двійкові інструкції, необхідні для процесора

З першого погляду може здатися, що перетворення вихідного коду в промуточний код є неефективним, але насправді це хороший пооди Розглянемо це питання за допомогою аналогії Деякі собаки дрессіруюя швидко, а деяким необхідно додатковий час Наприклад, німецькі вівчарки зазвичай швидко навчаються і їм не потрібно повторення уроків З іншого стогони, з бульмастіфи потрібно бути особливо терплячим, т к вони мають склоость до упертості Тепер уявіть собі, що було розроблено інструкції спеціально для дресирування бульмастифів Якщо по цих інструкцій дрессірать німецьку вівчарку, то їй від цієї дресирування дуже швидко стане нудно, і в результаті ви можете не навчити її тому, чому збиралися

Проблема тут полягає в тому, що інструкції були налаштовані для дрессовкі конкретної породи собак Для дресирування двох різних порід потрібні дві різні інструкції Але можна також застосувати і одні, загальні, інструкції, але з примітками для конкретної породи, наприклад: Якщо собака упирається, то повторіть вправу.

Стосовно до компютерів, для різних процесорів застосовуються різні набори команд, або для процесорів одного типу, застосовуваних для виконання завдань різних типів, застосовуються різні підмножини набору команд Наприклад, вимоги до серверних компютерів відрізняються від вимог до клієнтських компютерів Для серверних компютерів потрібна швидкість при обробці даих, в той час як для клієнтських компютерів швидкість потрібна при виведенні даих на екран Для різних типів завдань існують свої компілятори, але було б неефективним намагатися створювати окремі дистрибутиви додатки під раие компілятори або під різні установки одного компілятора Виходом з цієї ситуація є створення одного набору загальних інструкцій, але містять іерпретаціонние примітки NET Framework виконує ці інструкції, ісполуя інтерпретаційні примітки

Вихідний код компілюється в інструкції мовою CIL, які потім преобра в специфічні для конкретного процесора інструкції за допомогою цих інтерпретаційних приміток Архітектура NET показана на рис 111

Рис 111 Архітектура NET

На рис 111 показано, що середовище Visual С # Express є відповідальною за прбразованіе вихідного коду на мові С # в пакет CIL Пакет CIL являє собою двійковий файл, для виконання якого потрібно Середа CLR (common language runtime, загальномовне середу виконання) Якщо на компютері немає устовлена ​​середу CLR, то пакет C1L виконуватися на ньому не буде Середа CLR устанаівается в тлі як окремий компонент при інсталяції Visual С # Express Крім того, що Visual С # Express дозволяє розробляти програми для середовища, CLR і сама використовує цю середу

Середа CLR дозволяє перетворювати інструкції в пакеті C1L у формат, Пона процесором і операційною системою Якщо ви порівняєте синтаксиси раих мов NET, таких як Visual Basic, С # або EiffelNET, то побачите, що вони відрізняються один від одного Але середу CLR може працювати з пакетами CIL, створених на будь-якому з цих мов, т к незалежно від мови програмування, коілятор NET генерує набір інструкцій, загальних для середовища CLR

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

вимога не є проблемою при створенні коду на мові С # Далі прищепив список деяких переваг коду, призначеного для виконання в середовищі CLR

•&nbsp&nbsp Управління памяттю і збірка сміттяПрограми використовують ресурси, такі як память, файли і т п У традиційних мовах програмування, таких як С і С + +, завдання відкриття і закриття файлів, виділення і звільнення пами є відповідальністю програміста У NET програмісту немає надоості турбуватися про закриття файлів або звільнення памяті Середа CLR знає, коли файл або память більше не використовується, і автоматично закралася файл або звільняє память

ПРИМІТКА

Деякі досвідчені програмісти думають, що середовище CLR сприяє неохайно програмування, т к з нею програмісту не потрібно прибирати за собою Але практика пазивает, що для будь-якого складного додатка, пошуки причин проблем, що викликаються незвільнена памяттю, ведуть до втрати часу і ресурсів

•&nbsp&nbsp Оптимізація під специфічні вимоги Одним програмами треба обробляти великі обсяги даних, наприклад, записи в базі даних, а іншим – надавати складний користувальницький інтерфейс У кожному випадку продуктивність фокусується на різний тип коду Середа CLR може оптимізувати пакет CIL і вирішити, який спосіб виконання буде для нього найбільш швидким і ефективним

•&nbsp&nbsp Система загальних типів (common type system, CTS)Рядок у Visual Basic така ж, як і рядок в С # Таким чином, забезпечується правильне взаимодейс пакета CIL, згенерованого в С #, з пакетом CIL, згенерованим в Visual Basic, і уникнути неправильного уявлення типів даних

•&nbsp&nbsp Безпечний код Якщо програма взаємодіє з файлами або памяттю, існує ймовірність, що помилка в програмі може викликати проблеми безпеки Зловмисники можуть скористатися цією помилкою, щоб виконати свої програми, що може викликати серйозні негативні пледствія Середа CLR не може запобігти помилок, створюваних докладе згодом, наприклад, неправильного поводження до файлу або памяті, але вона може зупинити і взяти під контроль програму, згенерувати цю помилку

Перевага середовища CLR полягає в тому, що вона дозволяє розробникам фокіроваться на проблемах, повязаних з додатком, т к їм не потрібно беспокоітя про аспекти, повязаних з інфраструктурою З середовищем CLR розробник може фокусуватися на коді для зчитування й обробки вмісту файлу Без сри CLR розробнику потрібно було б також створювати код відкриття, зчитування і закриття файлу

У цьому розділі ми почали працювати з мовою програмування С # використовуючи інтеірованную середовище розробки Наведемо ключові аспекти глави, які следт запамятати

• У С # є три основні типи програм: програми Windows, консольні додатки і бібліотеки класів

• Додаток Windows має користувальницький інтерфейс і працює, як будь-яке інше додаток Windows (наприклад, Блокнот або Калькулятор) Основною властивістю додатків Windows є асоціювання подій з діями

Консольний додаток простіше, ніж додаток Windows, і в ньому не викорис події Ці додатки застосовуються для обробки даних Коольние додатки приймають дані з командного рядка і виводять даие у вікно командного рядка

• Для управління кодування, налагодження і виконання додатка треба половаться інтегрованої середовищем розробки

• Серед усього іншого, інтегроване середовище розробки впорядковує исхо код за допомогою рішень і проектів

• У ній також можна застосовувати комбінації клавіш для спрощення виконання повторюваних операцій Наприклад, в Visual С # Express зміни в проекті можна зберегти за допомогою комбінації клавіш + , а за допомогою комбінації клавіш + додаток можна запустити на виконання без налагодження

• Проекти Visual С # Express містять прості файли вихідного коду і спеціізірованние групування При роботі зі спеціалізованими группіраніямі переконайтеся в тому, що ви розумієте функціонування цих группіраній, і модифікуйте тільки ті файли, які призначені для зміни програмістом

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*