Платформа.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.
Является одним из самых востребованных, многофункциональных и активно развивающихся языков программирования на данный момент. С его помощью можно разрабатывать практически любое программное обеспечение, начиная от простых win forms приложений, до крупных клиент-серверных веб-приложений или даже мобильные приложения и компьютерных игры. А работает он на базе платформы.NET Framework. Давайте же разберёмся, что это такое.
Смотрите моё видео на тему платформа.NET Framework и среда выполнения CLR для C#
Язык программирования C# является относительно свежим, но он уже успел заслужить доверие. Релиз первой версии состоялся в феврале 2002 года. Крайней версией языка на момент написания статьи является C# 7.2, которая вышла 16.08.2017.
Синтаксис языка C# как следует из названия входит в семейство Си-подобных языков и похож на другие популярных языки из этой группы (C++, Java). Поэтому, если вы уже знакомы с одним из этих языков, вам будет значительно проще освоить языком программирования C#.
Так как C# является объектно-ориентированным языком, то он поддерживает наследование, полиморфизм, инкапсуляцию, строгую типизацию переменных, перегрузку операторов и другое. Все эти понятия будут нами подробно рассмотрены в последующих статьях. Благодаря использованию парадигмы объектно-ориентированного проектирования с помощью языка программирования можно достаточно легко разрабатывать масштабные и при этом гибкие проекты. При всем этом регулярно выходят новые версии языка C#, добавляя новую функциональность для упрощения жизни разработчика, увеличения скорости разработки, повышения производительности и надежности прилоежния.
.NET Framework – это программная платформа от компании Microsoft позволяющая выполнять разработку на различных языках программирования, так как для всех языков используется единая общеязыковая среда исполнения Common Language Runtime (CLR). Таким образом, основными возможностями платформы.NET являются:
Управляемый код (managed code) – это код управляемый общеязыковой средой CLR. Это означает, что что управляющая среда имеет возможность приостановить выполнение приложения и получить специфическую информацию о состоянии приложения в любой момент его исполнения. Исходный код используемого языка программирования транслируется в управляемый код CIL (его еще называют высокоуровневым ассемблером).
После создания библиотеки классов или приложения, исходный код продолжает храниться на языке CIL. А при запуске приложения или обращении к библиотеке выполняется Just-In-Time (JIT ) компиляция приложения в машинный код, специфичный именно для того окружения, на котором осуществляется исполнение приложения. При этом важной особенностью является то, что выполняется компиляция только той части приложения или библиотеки, к которой выполняется обращение (ну и связей естественно). Это позволяет увеличить производительность работы системы и экономить ресурсы.
Неуправляемый код (unmanaged code) – это код, транслируемый сразу в машинный исполняемый код и исполняется операционной системой напрямую.
Кроме того, рекомендую прочитать статью . А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал . Там еще больше полезного и интересного для программистов.
NET Framework служит средой для поддержки, разработки и выполнения распределенных приложений, которые базируются на компонентах (элементах управления).
Приложения (программы) можно разрабатывать на разных языках программирования, которые поддерживают эту технологию.
NET Framework обеспечивает:
С точки зрения программирования, .NET Framework состоит из двух основных составляющих:
Общеязыковая среда CLR решает задачи автоматического выявления типов .NET , загрузки этих типов и управление ними. Среда CLR осуществляет управление памятью, обслуживание приложения, обработку потоков и реализует многочисленные проверки связанные с безопасностью.
Библиотека базовых классов включает в себя определение разнообразных примитивов, которыми могут быть: потоки, графические API-интерфейсы, реализация баз данных, файловый ввод-вывод и прочее.
Общеязыковая среда выполнения CLR управляет выполнением кода .NET .
После компиляции программы на C# (или другом языке) создается файл, который содержит особого рода псевдокод или байт-код (а не исполнительный файл, как было раньше). Этот псевдокод называется (MSIL ) или Common Intermediate Language (CIL ). Этот псевдокод есть промежуточным языком Microsoft .
Основное назначение CLR – превратить промежуточный код MSIL в исполнительный код в процессе выполнения программы.
Любая программа, которая скомпилирована в псевдокод MSIL , может быть выполнена в любой среде, которая содержит реализацию CLR . Это обеспечивает переносность программ в среде .NET Framework .
Рис. 1. Процесс преобразования исходного кода в код на языке MSIL (CIL или IL ) и создание файла сборки (*.dll или *.exe )
После этого, псевдокод превращается в исполняемый код. Это осуществляет JIT -компилятор. JIT (Just-in-time ) -компиляция – это компиляция на «лету».
Исполнительная среда CLR отвечает за определение места размещения сборки (assembly).
Запрашиваемый тип, который размещается в сборке (например, класс ArrayList или другой тип), определяется в двоичном файле (*.dll или *.exe ) с помощью считывания метаданных этого файла.
После этого CLR размещает в памяти считанный из сборки тип.
Затем CLR превращает CIL-код в соответствующие инструкции, которые подстраиваются под конкретную платформу (в зависимости от ПК, операционной системы и т.п.). Кроме того, на этом этапе происходят необходимые проверки на предмет безопасности.
Последним происходит выполнение запрашиваемого программного кода.
Сперва промежуточный язык псевдокода назывался Microsoft Intermediate Language (MSIL ). Позднее (в последних версиях .NET ) это название было изменено на Common Intermediate Language (CIL — общий промежуточный язык). Аббревиатуры MSIL , CIL и IL (Intermediate Language )означают одно и то же.
Промежуточный язык CIL (или MSIL ) формируется после компиляции программы на некотором языке программирования, который поддерживает платформу .NET Framework .
MSIL есть псевдокодом. MSIL определяет набор инструкций, которые:
Фактически, MSIL – это язык переносного ассемблера
Сборки – это файлы с расширениями *.dll или *.exe , которые содержат независимые от платформы .NET инструкции на промежуточном языке (Intermediate Language – IL ), а также метаданные типов.
Сборка создается с помощью .NET компилятора. Сборка – это большой двоичный объект.
Сборка предназначена для сохранения пространств имен (namespaces ). Пространства имен содержат типы. Типами могут быть классы, делегаты, интерфейсы, перечисления, структуры.
Сборка может содержать любое количество пространств имен. Любое пространство имен может содержать любое количество типов (классов, интерфейсов, структур, перечислений, делегатов).
В сборках размещается CIL -код (MSIL -код или IL -код) и метаданные.
CIL -код компилируется под конкретную платформу только тогда, если происходит обращение к нему из исполняющей среды .NET .
Метаданные детально описывают особенности каждого типа, который есть внутри данной двоичной .NET единицы.
Например , при создании приложения типа Windows Forms Application в C# создается файл Assembly.info . Этот файл размещается в подпапке Properties относительно основной папки программы. В этом файле указывается общая информация о сборке.
Манифест – это описание самой сборки с помощью метаданных.
В манифесте размещается информация:
Программист создает исходный код приложения на языке, который поддерживает технологию .NET (языке C# , C++/CLI , Visual Basic .NET и т.д.). Приложение создается в некоторой среде программирования, например Microsoft Visual Studio . Компилятор формирует сборку – файл, который содержит CIL -инструкции, метаданные и манифест.
После запуска на выполнение этого приложения на некотором компьютере (некоторой платформе), в работу запускается механизм выполнения.NET . Предварительно, на компьютере должна быть установлена одна из версий (как минимум) .NET Framework .
Если в исходном коде используются библиотеки базовых классов (например из сборки mscorlib.dll ), то они загружаются с помощью загрузчика классов.
JIT -компилятор осуществляет компиляцию сборки с учетом (привязкой) аппаратных и программных особенностей компьютера, на котором происходит запуск приложения.
После этого приложение выполняется.
Рисунок 2. Связь между исходным кодом, компилятором и механизмом выполнения .NET
Существует два вида сборок:
Сборка, которая состоит из одного единого модуля (*.dll или *.exe ) называется однофайловой. В однофайловых сборках все необходимые CIL -инструкции, метаданные и манифесты размещаются в одном, четко определенном пакете.
Сборка, которая состоит из многих файлов двоичного кода .NET , называется многофайловой. Каждый из этих файлов называется модулем.
В многофайловой сборке один из модулей есть главным (primary ).
Главная сборка размещается в файле “mscorlib.dll ”.
CTS (Common Type System ) – система типов, которая содержит полное описание всех возможных типов данных и программных конструкций, которые поддерживаются общеязыковой исполнительной средой CLR . Также здесь описывается то, как эти сущности могут взаимодействовать между собою.
Типами могут быть классы, интерфейсы, структуры, перечисления, делегаты.
Как известно, не все языки программирования, которые являются совместимыми с .NET , могут поддерживать функциональные возможности системы типов CTS . Для этого используется общеязыковая спецификация CLS (Common Language Specification ).
Задачей CLS есть описание только того подмножества общих типов и программных конструкций, которые воспринимаются абсолютно всеми языками программирования, которые поддерживают .NET .
В системе разработки приложений MS Visual Studio технологию .NET поддерживают следующие языки программирования: C# , Visual Basic .NET , C++/CLI , JScript .NET , F# , J# .
Для того, чтобы можно было использовать технологию .NET нужно установить на компьютере программное обеспечение Microsoft .NET Framework Software Development Kit (SDK ) или Microsoft Visual Studio любой версии.
Пространство имен предназначено для объединения группы типов, которые связаны между собою с семантической точки зрения. Типы размещаются в сборках (assembly ). Под типами понимаются классы, делегаты, интерфейсы, структуры, перечисления.
Примеры названий пространств имен:
System System.Data System.IO System.Collections System.Threading.TasksНапример, в пространстве имен System.Data размещаются основные типы для работы с базами данных, в пространстве имен System.Collections размещаются основные типы для работы с коллекциями.
В системе Microsoft Visual Studio есть утилита Object Browser , которая вызывается с меню View (рисунок 3).
Рис. 3. Вызов утилиты Object Browser
В результате откроется окно Object Browser , в котором будут отображаться сборки, которые используются в определенной технологии.
На рисунке 4 отображен список сборок, которые отображаются в технологии “.NET Framework 4 ”. Выделена сборка с именем “mscorlib ”.
Рис. 4. Окно Object Browser с выделенной сборкой mscorlib.dll
Если раскрыть содержимое сборки mscorlib (знак “+ ”), то будет отображен список всех пространств имен данной сборки (рисунок 5). Как видно из рисунка, сборка включает пространства имен Microsoft.Win32 , System , System.Collections , System.Collections.Concurrent и много других.
Рис. 5. Сборка mscorlib и список пространств имен, которые входят в нее
Аналогично раскрывается любое из пространств имен. В пространствах имен описываются типы. В типах описываются методы, свойства, константы и т.п.
На рисунке 6 изображен класс BinaryReader из пространства имен System.IO . По всей видимости, в классе реализованы методы с именами BinaryReader() , Close() , Dispose() , FillBuffer() и прочие.
Рис. 6. Содержимое класса BinaryReader
Для подключения пространства имен используется ключевое слово using
Всем доброго времени суток. На связи Алексей Гулынин. В данной первой статье по C# я бы хотел рассказать о платформе .NET Framework . Язык C# и сама платформа впервые появились в 2002 году. Основной целью их создания было обеспечить более простую, масштабируемую и, главное, более мощную модель программирования, по сравнению с моделью программирования COM. На базе платформы.NET Framework можно строить приложения для семейства операционных систем Windows, также можно строить приложения для Unix, Linux, Mac OS X. Ниже представлен краткий список возможностей, поддерживаемых.NET Framework :
1) Возможность взаимодействия с существующим кодом
. Данная возможность позволяет компилировать, к примеру, двоичные компоненты COM и компоненты.NET.
2) Поддержка различных языков программирования
. Приложения.NET можно создавать с помощью разных языков программирования, к примеру C#, Visual Basic, F#.
3) Общий исполняющий механизм
. Смысл здесь в том, что в.NET существует определенный набор типов, который способен понимать каждый поддерживающий.NET, язык.
4) Языковая интеграция
. Можно написать класс на Visual Basic, а затем расширить его на C#.
5) Большая библиотека базовых классов
. Благодаря данной библиотеке, мы можем забыть о сложностях реализации низкоуровневых обращений к API-интерфейсам и сосредоточиться просто на программировании.
6) Простая модель развертывания
. В отличии от библиотеки COM, .NET не нужно регистрироваться в реестре. Она может существовать в виде сборки.dll.
Возможно здесь я написал о каких-то непонятных вещах, например классы, API-интерфейсы. Заморачиваться пока с этим не стоит. В принципе, программировать можно и без знания всего это, но так, как мы с вами учимся, давайте будем совсем немного разбавлять практику теорией.
Чтобы совсем вас добить теорией расскажу об основных строительных блоках платформы.NET:
1) CLR (Common Language Runtime)
— общеязыковая исполняющая среда. Первостепенной задачей данной среды является загрузка и управления объектами.NET (чтобы программист не делал этого вручную). Кроме этого, CLR заботится о ряде низкоуровневых деталей, например, управление памятью, размещение приложения, выполнение проверок, связанных с безопасностью приложения.
2) CTS (Common Type System)
— общая система типов. Здесь описаны все возможные типы данных, поддерживаемые исполняемой средой (CLR). Нужно знать, что отдельно взятый язык, может не поддерживать абсолютно все средства, определенные спецификацией CTS. Поэтому существует:
3) CLS (Common Language Specification)
. Здесь описано подмножество общих типов и программных конструкций, которые обязательно должны поддерживать всеми языками программирования для платформы.NET Framework.
В дополнение к среде CLR и спецификациям CTS/CLS, платформа.NET предоставляет библиотеку базовых классов , которая доступна всем языкам программирования.NET. Данная библиотека позволяет на высоком уровне (не задумываясь о деталях реализации) управлять, к примеру, файловым вводом-выводом, графикой, различными внешними устройствами, потоками данных, также различными службами.
Писать теорию я не мастер, поэтому скажу, для тех, кто хочет глубже понять философию.NET, я рекомендую прочитать первую главу книги Эндрю Троелсена «Язык программирования C# 5.0 и платформа.NET 4.5, год издания 2013″. Данная краткая информация о платформе.NET взята из этой книги. Проблема, с которой я столкнулся при изучении этой книги, — это сложность изложения материала для новичка. Возможно, вам так не покажется, это только моё мнение.
Ну что, друзья мои, у вас ещё не отпала охота изучать C#? Тогда давайте смело идти дальше, обещаю, что в будущем теоретических статей будет по минимуму (если только в начале изучения C# ), только одна практика. Если нужна теория — "курите" книгу Эндрю Троелсена.
А так, если нужна какая-нибудь информация по классу или его методу, идите сразу на
Платформа.NET Framework - это один из компонентов системы Windows. Он позволяет создавать и использовать приложения нового поколения. Назначение платформы .NET Framework :