125 lines
6.3 KiB
HTML
125 lines
6.3 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<h1>Что такое .NET</h1>
|
||
<p>Платформа <b>Microsoft .NET</b> - это комплекс
|
||
программ, устанавливаемый поверх операционной системы и обеспечивающий
|
||
выполнение программ, написанных специально для .NET.
|
||
.NET-программы компактны, пользуются единым набором типов
|
||
данных и библиотек. Компания Microsoft активно развивает платформу
|
||
.NET, выпуская новые версии с расширенными
|
||
возможностями. На момент начала 2015 г. последней версией является
|
||
.NET 4.5.</p>
|
||
<p>В результате компиляции .NET-программы генерируется не машинный код, а
|
||
так называемый байт-код, содержащий команды <i>виртуальной машины </i>(в
|
||
.NET он называется <b>IL-кодом</b>
|
||
от англ. Intermediate Language - промежуточный язык). Команды байт-кода не зависят
|
||
от процессора и используемой операционной системы. При запуске
|
||
программа, содержащая IL-код,
|
||
подается на вход виртуальной машины, которая и производит выполнение программы.
|
||
Часть виртуальной машины, называемая <b>JIT-</b><b>компилятором</b>
|
||
(Just In Time - непосредственно в данный момент),
|
||
сразу после запуска .NET-программы переводит
|
||
ее промежуточный код в машинный (проводя при этом его
|
||
оптимизацию), после чего запускает программу
|
||
на исполнение. Если быть точными, то промежуточный код переводится в машинный
|
||
частями по мере выполнения программы.</p>
|
||
<p>Такой способ двойной компиляции сложнее обычного, но имеет
|
||
ряд преимуществ. Во-первых, JIT-компилятор может
|
||
определить тип процессора, установленного на данном компьютере, поэтому
|
||
генерирует максимально эффективный машинный код. Тесты показывают, что за счет
|
||
этого некоторые программы выполняются даже быстрее обычных. Во-вторых,
|
||
IL-код - гораздо более высокоуровневый, чем машинный, и содержит
|
||
ряд объектно-ориентированных команд. В их числе - команда newobj
|
||
вызова конструктора объекта, команда callvirt
|
||
вызова виртуального метода объекта и команда throw генерации исключения.</p>
|
||
<p>Программа или библиотека для .NET
|
||
называется <i>сборкой</i> и имеет традиционное расширение - exe
|
||
или dll. Поскольку в сборках содержится IL-код,
|
||
они значительно компактнее обычных программ и библиотек. Так, приложение с
|
||
главным окном, меню и элементами управления занимает на диске всего несколько
|
||
десятков килобайт.</p>
|
||
<p>Наиболее "чистым" .NET-языком является
|
||
<b>C#</b>: он создавался специально для платформы .NET
|
||
и включает практически все ее возможности. .NET-языки легко взаимодействуют друг с другом не только за
|
||
счет высокоуровневого промежуточного кода, но и за счет общей системы типов (<b>CTS</b>
|
||
- Common Type System - общая система типов). Все стандартные
|
||
типы (строковые, символьные, числовые и логический) имеют одинаковое
|
||
представление в памяти во всех .NET-языках. Это
|
||
позволяет, например, создать библиотеку dll
|
||
на C#, <span lang="ru">поместить в нее описание класса, </span>а затем воспользоваться этой
|
||
библиотекой из программы на PascalABC.NET, <span lang="ru">сконструировав</span> объект
|
||
<span lang="ru">данного</span> класса. Можно также разработать библиотеку на PascalABC.NET,
|
||
а потом подключить ее к проекту на Visual Basic.NET.
|
||
Отметим, что традиционные
|
||
библиотеки dll не позволяют хранить классы, доступные
|
||
извне, и обладают рядом других ограничений.</p>
|
||
<p>Важнейшими средствами, предоставляемыми платформой
|
||
.NET, являются единый способ обработки ошибок - генерация и
|
||
перехват исключений, - а также автоматическое управление освобождением
|
||
динамической памяти, называемое <i>сборкой мусора</i>. Последнее, в частности,
|
||
означает, что отсутствует необходимость в деструкторах классов.</p>
|
||
<p>Имеются программы,
|
||
которые могут восстанавливать текст программы по IL-коду
|
||
(например, программа <span lang="en-us">ILSpy</span>).</p>
|
||
<p>Помимо JIT-компилятора, важной частью
|
||
платформы .NET является набор стандартных библиотек (FCL
|
||
- Foundation Class Library - общая библиотека классов).
|
||
Среди них - библиотеки работы с графикой, сетью, базами данных, XML,
|
||
контейнерами, потоками, содержащие тысячи классов. Каждый .NET-язык
|
||
может пользоваться всеми возможностями этих библиотек.</p>
|
||
<p>Имеется открытая кроссплатформенная реализация среды <span lang="en-us">
|
||
Microsoft.NET - </span><a href="http://www.mono-project.com/">среда
|
||
<span lang="en-us">Mono</span></a>, позволяющая в частности разрабатывать и
|
||
запускать <span lang="en-us">.NET-</span>программы под <span lang="en-us">Linux</span>.</p>
|
||
<p>Кратко отметим достоинства и недостатки платформы .NET.</p>
|
||
<h2>Достоинства платформы .NET</h2>
|
||
<ol>
|
||
<li>Платформа .NET поддерживает множество
|
||
.NET-языков. В их числе C#,
|
||
Visual Basic.NET, <span lang="en-us">F</span>#,
|
||
управляемый C++,
|
||
<span lang="en-us">Delphi Prism</span>, Oberon, Zonnon,
|
||
<span lang="en-us">Iron Python, Iron Ruby, </span>PascalABC.NET.</li>
|
||
<li>Любой .NET-язык содержит самые современные
|
||
языковые возможности: классы, свойства, полиморфизм, исключения, перегрузка
|
||
операций, легкое создание библиотек.</li>
|
||
<li>.NET-языки легко сочетаются друг с другом,
|
||
похожи друг на друга по синтаксическим конструкциям и системе типов.</li>
|
||
<li>Имеется обширная библиотека стандартных классов FCL.</li>
|
||
<li>.NET-приложения компактны.</li>
|
||
<li>Платформа .NET активно развивается фирмой
|
||
Microsoft, добавляются как новые языковые возможности,
|
||
так и новые библиотеки.</li>
|
||
<li>Компилятор .NET-языка создать значительно проще,
|
||
чем компилятор обычного языка.</li>
|
||
</ol>
|
||
<h2>Недостатки платформы .NET</h2>
|
||
<ol>
|
||
<li>Запуск .NET-приложения выполняется в несколько раз
|
||
медленнее запуска обычного приложения, поскольку требует загрузки в
|
||
оперативную память компонентов виртуальной машины и внешних библиотек.</li>
|
||
<li>.NET-код в некоторых ситуациях работает медленнее
|
||
обычного (однако, в большинстве задач это отставание незначительно, а в
|
||
некоторых - приложения .NET могут опережать
|
||
обычные программы).</li>
|
||
<li>Сборщик мусора начинает работу в момент
|
||
исчерпания динамической памяти, его работа занимает несколько миллисекунд. Для
|
||
приложений реального времени это непозволительно.</li>
|
||
<li>Запуск .NET-приложения обязательно требует
|
||
установки на компьютере платформы .NET. Без нее
|
||
приложение работать не будет (Отметим, что в Windows Vista и в
|
||
<span lang="en-us">Windows 7 </span>платформа .NET встроена).</li>
|
||
</ol>
|
||
<p>Отметим, что достоинства платформы .NET
|
||
многократно перекрывают ее недостатки.</p>
|
||
</body>
|
||
|
||
</html>
|