pascalabcnet/PABCNetHelp/Common/Net.html

125 lines
10 KiB
HTML
Raw Permalink Normal View History

<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, выпуская новые версии с расширенными
возможностями. На момент начала 2019 г. последней версией является
2019-01-19 21:24:18 +03:00
.NET 4.7.1.</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>Наиболее &quot;чистым&quot; .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,
&nbsp;<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
начиная с&nbsp;
<span lang="en-us">Windows 7 </span>платформа .NET встроена).</li>
</ol>
<p>Отметим, что достоинства платформы .NET
многократно перекрывают ее недостатки.</p>
</body>
</html>