Вступ до Microsoft
Платформа Microsoft .NET
Ідея Microsoft .NET в тому, щоб перемістити центр уваги обчислювальної спільноти зі світу, що складається з різних пристроїв та Web-вузлів, пов'язаних між собою через Інтернет, у світ, де висока якість рішень для користувачів забезпечується спільною роботою пристроїв, служб та комп'ютерів. Основу Microsoft .NET становлять чотири базові компоненти:
.NET Building Block Services — засоби програмного доступу до таких служб як сховище файлів (file storage), календар (calendar), служба аутентифікації "Passport.NET";
програмне забезпечення для пристроїв .NET, яке виконуватиметься на нових пристроях Інтернету;
інфраструктура .NET, що складається з .NET Framework, Microsoft Visual Studio.NET, .NET Enterprise Servers і Microsoft Wmdows.NET.
Більшість розробників сприймає інфраструктуру .NET як .NET. Тому надалі при будь-якій згадці .NET (якщо немає попереднього застереження) я матиму на увазі інфраструктуру .NET. Інфраструктура .NET пов'язана з усіма технологіями, що становлять нове середовище створення та виконання надійних, масштабованих, розподілених додатків. Частина .NET, за допомогою якої розробляються такі програми, називається .NET Framework.
NET Framework складається з Common Language Runtime (CLR) та набору бібліотек класів .NET Framework, який іноді називають Base Class Library (BCL). CLR — це, по суті, віртуальна машина, в якій функціонують програми .NET. Усі мови .NET мають у своєму розпорядженні бібліотеки класів .NET Framework. Якщо ви знайомі з Microsoft Foundation Classes (MFC) або Object Windows Library (OWL) компанії Borland, вам не треба пояснювати, що це таке. Бібліотекикласів .NET Framework включають підтримку практично всіх технологій від файлового введення-виведення та обміну з БД до XML та SOAP. Взагалі бібліотеки класів .NET Framework настільки великі, що навіть поверховий огляд всіх класів, що підтримуються, вимагатиме окремої книги.
Зауважу, що під терміном "віртуальна машина" тут не мається на увазі Java Virtual Machine (JVM). Фактично я застосовую цей термін у його традиційному значенні. Декілька десятиліть тому, коли Java означало лише темний, гарячий напій, IBM ввела в обіг словосполучення "віртуальна машина" ("virtual machine"). Цим дивним словосполученням була позначена абстракція високорівневої ОС, усередині якої могли функціонувати повністю інкапсульованому середовищі інші ОС. Говорячи про CLR як про віртуальну машину, я маю на увазі те, що код, що виконується в інкапсульованому та керованому середовищі, відокремлений від інших процесів на цій машині.
Що ж є .NET Framework і що він дає? Спочатку ми порівняємо .NET з іншою більш ранньою середовищем розробки розподілених додатків. Потім я перерахую можливості .NET, що дозволяють створювати потужні розподілені програми у стислий термін.
Windows DMA в. NET
Фраза, якою я охарактеризував .NET: "нове середовище для створення та запуску надійних, масштабованих, розподілених додатків" - звучить знайомо, так? Справа в тому, що .NET є продовженням попередньої спроби досягти цієї мети. Ця платформа називалася Windows DNA. Однак перспектив у .NET у порівнянні з Windows DNA несумісно більше. Платформа Windows DNA була націлена на рішення для бізнесу за допомогою серверних продуктів Microsoft. До Windows DNA часом застосовували слово "клей" у такому, наприклад, контексті: "DNA - це клей, за допомогою якого з'єднуються надійні,масштабовані, розподілені системи". Однак, будучи тільки технічною специфікацією, Windows DNA не мало якихось відчутних компонентів. Це лише одна з ряду основних відмінностей між Windows DNA і .NET. У Microsoft .NET, крім набору специфікацій, входить кілька реальних продуктів : компілятори, бібліотеки класів і навіть цілі програми кінцевих користувачів.
Common Language Runtime
Common Language Runtime (CLR) – це серце технології Microsoft .NET. Як випливає з назви, це середовище виконання коду, в якій забезпечується ефективна взаємодія додатків, що перетинає межі різних мов програмування (cross-language interoperability). Як досягається ця взаємодія? Common Language Specification (CLS) - це набір правил, яких повинен дотримуватися компілятор мови при створенні .NET-додатків, які запускаються в середовищі CLR. Будь-хто, хто захоче написати компілятор для .NET, повинен дотримуватися цих правил і будь ласка! - Додатки, згенеровані цим компілятором, будуть працювати поряд з іншими .NET-додатками і будуть мати таку ж можливість взаємодії.
З CLR пов'язана важлива концепція керованого коду (managed code) - коду, що виконується тільки в середовищі CLR і керованого нею. Нагадаю, що під час виконання в нинішніх ОС Microsoft Windows ми маємо справу з різнорідними незалежними процесами. Єдина вимога, якій повинні відповідати програми в середовищі Windows, полягає в тому, щоб вони правильно працювали. Ці програми створюються абсолютно різними компіляторами. Інакше висловлюючись, програми повинні підкорятися лише найзагальнішим правилам роботи під Windows.
Серед Windows є кілька глобальних правил поведінки додатків, які стосуються їх взаємодіїдруг з одним, розподілу пам'яті, і навіть до залучення коштів самої ОС до роботи від імені. Навпаки, в середовищі керованого коду є набір правил, що забезпечують однакову в глобальному сенсі поведінку всіх додатків незалежно від того, якою мовою вони написані. Єдина поведінка .NET-додатків - характерна риса технології .NET, і його не можна ігнорувати. На щастя, ці глобальні правила поширюються головним чином лише творців компіляторів.
Бібліотеки класів .NET Framework
Як ілюстрацію до сказаного порівняємо версії традиційного додатка "Hello, World" мовами C++ і C#.
int main(int argc, char* argv[])
cout Hello, World! endl;
public static void Main()
Хтось на дискусійній сторінці в Інтернеті дивувався: "Навіщо нам стільки мов, якщо вони мають однакові функціональні можливості?" Як людина, яка попрацювала у кількох багатомовних середовищах, заявляю, що це дуже здорово, коли не треба пам'ятати, яка мова, що і як може робити із системою. Зрештою ми, як розробники, повинні написати код, не мучичи себе питанням, чи має наша улюблена мова ту чи іншу перевагу.