pascalabcnet/PABCNetHelp/Common/Net.html

125 lines
6.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>Наиболее &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 Vista и в
<span lang="en-us">Windows 7 </span>платформа .NET встроена).</li>
</ol>
<p>Отметим, что достоинства платформы .NET
многократно перекрывают ее недостатки.</p>
</body>
</html>