Аннотация: Инициатива Microsoft .NET. Проблемы совместимости, надежности и повторного использования компонентов. .NET Framework. Общеязыковая исполняющая среда CLR. Псевдомашинный язык CIL (управляемый assembler). JIT-компилятор.
Языки программирования. Сборки. Метаданные. Сборщик мусора. Библиотека классов .NET Framework
Проблемы разработки современных информационных систем
Проблемы интеграции
- Модулей, написанных на различных языках, использующих разный API (или версии API) или разный формат представления данных;
- Программ, разработанных для различных платформ, в рамках единого программного комплекса;
- Систем, использующих разные программные модели.
Особенно часто возникают проблемы интеграции с унаследованным кодом ( legacy ). При решении задач интеграции возникают проблемы несовместимости.
Проблемы переносимости
Все чаще к программам предъявляются требования поддержки нескольких платформ (например, возможность работы с программой на платформе Windows и Mac OS).
Что такое .Net Framework?
Проблемы версий
Windows-разработчики знают о проблеме совместимости версий, известной под названием «ад DLL». Этот «ад» возникает, когда компоненты, устанавливаемые для нового приложения, заменяют компоненты старого приложения. В итоге старое приложение начинает работать неправильно или перестает работать.
Управление ресурсами
Одной из проблем программирования является управление и корректное освобождение ресурсов, файлов, памяти, пространства экрана, сетевых соединений, ресурсов баз данных и т. д. Некорректное управление этими ресурсами может привести к некорректному выполнению программы.
Безопасность типов
Когда упоминают проблему безопасности типов, имеют в виду некорректное обращение с типами данных: попытки обратиться к областям памяти за границей типа, попытки вызвать методы, отсутствующие у типа, или попытки вызвать метод, принимающий в качестве параметра тип А, и передать ему в качестве параметра объект типа В.
Обработка сбоев
При разработке Windows-приложений с использованием Win32 API некоторые функции возвращают исключения, другие — коды состояний, третьи — HRESULT . Таким образом, отсутствует согласованный механизм обработки сбоев и есть возможность игнорировать некоторые исключения, что делает код небезопасным.
Эти и другие проблемы разработки информационных систем помогает решать платформа Microsoft .NET.
Решение проблем разработки информационных систем в .NET
Один из способов решения проблемы неоднородности — разработка и поддержка стандартных программных интерфейсов, облегчающих задачу переноса приложений на серверы различных платформ. Однако приложения могут использовать базы данных , коммуникационные и другие сервисы, интерфейсы которых не являются компонентами языка или среды программирования. Другой способ, применяемый производителями для решения проблемы неоднородности, — поддержка стандартных протоколов. Системы, поддерживающие один и тот же протокол, могут взаимодействовать друг с другом, даже если они опираются на различные машинные архитектуры и операционные системы.
NET Framework — для чего нужен?
Технология . 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
Приведем некоторые наиболее распространенные пространства имен и краткое описание содержащихся там типов.
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 |
Все управляемые приложения используют библиотеку классов FCL . Это упрощает интеграцию приложений и позволяет легче переносить приложения с одного языка на другой.
Итоги
Инфраструктура . NET Framework поддерживает разработку и исполнение различных приложений. . NET Framework ставит своей целью решение следующих задач:
- предоставление объектно-ориентированной среды программирования;
- предоставление среды исполнения, решающей проблемы конфликта версий;
- предоставление среды безопасного исполнения кода (безопасность типов и другие особенности управляемого кода);
- предоставление среды исполнения, улучшающей производительность за счет управления памятью и кэширования результатов компиляции;
- улучшение интеграции и переносимости приложений за счет использования общего промежуточного языка и библиотеки типов.
. NET Framework состоит из двух основных компонент : общеязыковой исполняющей среды ( CLR ) и библиотеки классов . NET Framework.
Источник: intuit.ru
Как работает .NET и зачем он нужен
Чтобы стать хорошим программистом, нужно понимать, как работают инструменты и технологии. Рассказываем, что такое .NET.
Евгений Кучерявый
Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.
.NET — это фреймворк от Microsoft, который позволяет использовать одни и те же пространства имён, библиотеки и API для разных языков. Чаще всего это четыре языка из семейства .NET:
Когда вы создаёте программу на одном из этих языков, в самом начале вы подключаете пространство имён System. Если бы не .NET, то для каждого из этих языков пришлось бы создавать отдельный System. То есть нарушился бы один из главных принципов программирования — DRY (англ. Don’t repeat yourself — не повторяйся).
На момент написания статьи наиболее распространён .NET Framework, меньшей популярностью пользуется .NET Core. Возможно, когда вы будете читать эту статью, уже выйдет .NET 5, который объединит в себе оба фреймворка. Поэтому в статье используется название .NET.
Для чего нужен .NET
Обычным пользователям может показаться, что это какие-то программистские штуки, которые никак не влияют на их жизнь. На самом деле в этом есть смысл и для них.
Если бы не .NET, пользователям пришлось бы устанавливать среду исполнения для программ на каждом языке. То есть чтобы запустить приложение на Visual Basic, нужно скачать среду выполнения для Visual Basic. Если же программа написана на C#, то придётся скачивать среду и для неё.
Это очень быстро забьёт всё место на компьютере немного отличающимися копиями одних и тех же библиотек.
Для программистов это тоже важно, потому что даёт возможность развивать одну среду, которая используется сразу для четырёх языков. Иначе обычным разработчикам приходилось бы ждать, пока выйдет новая версия библиотек для их языка. Менее популярные языки, вроде F#, получали бы обновление намного позже C#.
Кроме основных языков есть также и другие, которые поддерживаются .NET. Среди них COBOL, Fortran, Haskell и даже Java — вы можете ознакомиться с полным списком.
На этих языках часто написаны старые (legacy) проекты, которые сложно перевести на новую технологию. .NET позволяет переписать часть программы на COBOL под стандарты .NET, а потом просто писать новые части на более современном языке, вроде Visual Basic.
Как это работает
Принцип работы достаточно простой, хотя выглядит запутанным. В основном — из-за схожих названий: CLR, CLI и CIL. Для начала посмотрите на это изображение:
Это CLI (англ. Common Language Infrastructure — общеязыковая инфраструктура). Она определяет, как работает .NET (а также другие похожие фреймворки вроде Mono и DotGNU).
В CLI у каждого языка есть свой компилятор. Но программы компилируются не в нативный код (исполняемый), а в промежуточный байт-код CIL (англ. Common Intermediate Language — общий промежуточный язык).
Например, если написать программу, которая выводит надпись «Hello, World!», на разных языках, то во всех она скомпилируется в такой промежуточный байт-код:
.assembly Hello <> .method public static void Main( ) cil managed < .entrypoint .maxstack 1 ldstr «Hello, World!» call void [mscorlib]System.Console::WriteLine(string) ret >
Когда вы запускаете программу, написанную на одном из языков семейства .NET, её байт-код передаётся дальше по цепи в общеязыковую исполняющую среду CLR (Common Language Runtime). Там этот байт-код компилируется в нативный и уже начинает выполняться.
Почти по такому же принципу работает виртуальная машина Java, но программы на .NET быстрее запускаются, что делает их пригодными для работы не только на сервере, но и на персональных компьютерах.
До 2014 года .NET работал только в операционной системе Windows, однако потом был создан .NET Core — кроссплатформенная версия фреймворка, которая в скором времени заменит основную версию.
Заключение
Понимание принципов работы .NET позволяет узнать новые архитектурные решения и увидеть одно из лучших воплощений реализации правила DRY. Это поможет писать более изящные программы, в которых не повторяется код или отдельные модули. Кроме того, об этом могут спросить на собеседовании.
- Не Windows единой: как писать кроссплатформенные приложения с GUI на C#
- Зачем писать на ассемблере 27 лет подряд: личный опыт
- Как адаптировать сайт под разные разрешения
Источник: skillbox.ru
Кратко о .NET Framework и о Visual Studio .NET
Visual Basic .NET не является отдельной обособленной разработкой. Он создавался в рамках новой идеологии, предложенной компанией Microsoft. Эта идеология получила название .NET(именно так – с предшествующей точкой).
Суть идеологии состоит в том, что программирование постепенно перемещается от отдельного компьютера в сеть (NET по-английски – «сеть») и в Интернет, а значит нужно делать упор на программирование в сетях, Интернете. Отсюда также следует, что особое внимание нужно обращать на безопасность выполнения программ. По замыслу ее создателей идеология .NET должна вывести информационный мир на новый уровень использования компьютеров, сетей, Интернета и разработки программ.
Претворяя в жизнь идеологию .NET, фирма Microsoft разработала комплекс программных средств для ее осуществления. Этот всеобъемлющий комплекс принято называть платформой .NET. Предполагается, что эта платформа будет поддерживаться не только Windows, но и другими операционными системами.
Важной составной частью платформы .NET является программный комплекс .NET Framework. Он предназначен специально для разработки программ и для поддержки их выполнения на компьютере. Вы не сможете программировать на VB, если на компьютере не установлен .NET Framework.
.NET Framework включает две основные части:
· Библиотеку классов .NET Framework. Для начинающего скажу, что если ваша программа – это домик, то классы – это кубики, из которых строится значительная часть домика. Этих классов в библиотеке содержится много, хватит на постройку любой программы.
· Common Language Runtime(CLR). Это часть .NET Framework, которая управляет выполнением вашей программы на компьютере и обеспечивает надежность и безопасность этого выполнения. Вы не сможете выполнить на чужом компьютере программу, созданную на VB, если на нем не установлен CLR. Microsoft собирается включить .NET Framework в будущую версию Windows, так что вскоре проблемы с выполнением программ, созданных на VB, на тех компьютерах, где CLR нет, должны исчезнуть.
Чтобы программировать для платформы .NET, нужны инструменты. Фирма Microsoft разработала в качестве этих инструментов серию тесно взаимосвязанных языков программирования. Вот они:
· Visual Basic .NET
Все они включены в единую программу, которая называется Visual Studio .NETи продается на нескольких дисках. Программа эта включает в качестве своей неотъемлемой части единую среду разработки для всех этих языков и единые вспомогательные средства. Это удобно и должно способствовать легкости переучивания с языка на язык. Инсталляционный пакет Visual Studio .NETвключает в себя .NET Framework и все другие необходимые системные программы. Таким образом, установив на свой компьютер Visual Studio .NET, вы можете программировать на любом из упомянутых языков и даже на всех четырех одновременно.
Почему Visual Basic, а не C++?
Почему Visual Basic? Этот вопрос стоит перед новичками, которые не знают, с какого языка начать. Вот краткий обзор возможных вариантов.
Что же касается различий, которые существовали между самими языками, то они в основном сохранились и в их .NET-версиях.
Рассмотрим, насколько тот или иной язык подходит для изучения начинающим программистом.
Начнем с Явы. Ява пока применяется в основном только в Интернете. Поскольку нас интересует все-таки и обычное программирование, Яву отодвигаем в сторону. Остаются Бейсик, Паскаль, Си.
Си– высокопрофессиональный язык, программы, написанные на нем, имеют превосходное быстродействие, в среде программистов Си распространен очень широко. Но он слишком сложен для восприятия новичком, программы на нем пишутся со значительным трудом и с него лучше не начинать. Если вам очень уж хочется программировать на Си, рекомендую начать с Бейсика. После него освоение Си пойдет гораздо легче.
По мнению профессионалов наиболее легок и прост из упомянутых языков как раз Бейсик. Профессиональные программисты любят его за то, что для создания на нем приличного продукта требуется гораздо меньше времени, чем, скажем, на Си. Поэтому популярность у него огромная. Конечно, за все приходится платить, и у Visual Basic есть свой недостаток – программы, написанные на нем, не такие быстрые, как на Си, однако новичок почувствует эту разницу очень не скоро.
Паскальпо простоте программирования и эффективности получающихся программ занимает промежуточное положение между Бейсиком и Си. Паскаль существует сейчас в виде его современной версии Object Pascal и программирование на нем ведется в среде Delphi. Но Паскаль не входит в состав Visual Studio .NET.
Сделать выбор я предоставляю читателю.
Источник: megaobuchalka.ru