Суббота, 27.04.2024, 09:25
Приветствую Вас Гость | RSS | PDA

Всё для студента информата

Полезная информация

Статьи IT

Всё для студента IT » Статьи » Программирование для Microsoft® .NET

Внутри Hello.exe

Чтобы увидеть Hello.exe так, как видит его CLR, откройте Hello.exe в ILDASM, На экране появится окно (рис. 1-6). Дважды щелкнув первый красный треугольник-декларацию сборки, вы увидите список сборок, от которых зависит данная сборка («.assembly extern mscorlib*-) (рис. 1-7). Будет также отображено имя сборки («.assembly Hello») и список модулей, составляющих сборку. Так как Hello.exe - однофайловая сборка, то в списке будет только этот модуль.


Рис. 1-6. Просмотр содержимого Hello.exe в 1LDASM


Рис. 1-7, Декларация Hello.exe

ILDASM также показывает, что Hello.exe содержит класс МуАрр, в котором два метода: конструктор (.ctor) я Main. Конструктор был сгенерирован компилятором автоматически — это конструктор по умолчанию, не имеющий аргументов. «S» в квадратике рядом с Main означает, что Main ~ статический метод. Дважды щелкнув Main, вы увидите CIL, сгенерированный для этого метода компилятором С# (рис. 1-8). Оператор: .entrypoint это не CIL, а просто директива, указывающая, что данный метод является точкой входа программы. Точка входа была определена по информации из заголовка CLR для Hello.exe.

Оператор: ,maxstack 1 содержит информацию, полученную из пролога метода — байтов данных, пред шествующих телу метода в CIL — и указывающую, что методу требуется не более 1 слота вычислительного стека CLR. Эта информация требуется CLR для установки размера стека перед вызовом метода.

CIL для Main состоит из трех простых команд:
• LDSTR помещает «Hello, world» в вычислительный стек;
• CALL вызывает метод WriteLine класса System.Console из Mscorlib;
• RET завершает работу метода.
Как видите, ILDASM позволяет легко узнать, как работает метод. Первые разработчики, использовавшие .NET Framework, проводили много времени за исследованием CIL отдельных методов, пытаясь понять работу FCL.


Рис. 1-8. Дизассемблированный метод Main

Общая картина
Hello.exe очень далеко до полноценного Web-сервиса или Web-приложения в стиле eBay, но это важная отправная точка. Почему? Потому, что, с точки зрения CLR, все приложения созданы равными. Если вы знаете, как писать код для CLR, то изучение написания оконных приложений, Web-приложений и других типов приложений для .NET Framework сводится просто к изучению соответствующих программных моделей и соответствующих классов FCL — этому и посвящена оставшаяся часть книги.

Подведем итог: .NET Framework — это платформа для Web-сервисов и приложений других типов. Приложения для .NET Framework — это управляемые приложения. Они состоят из CIL и метаданных, компилируются по запросу во время исполнения и управляются CLR. Языки программирования, такие как С# и Visual Basic .NET, — это синтаксические инструменты для генерации CIL. Впервые в истории программирования язык не играет важной роли, так как в конце концов все языки используют один и тот же набор средств CLR и FCL.

По иронии судьбы .NET Framework явилась результатом усилий, направленных на то, чтобы упростить разработку СОМ-приложений. Мало кто мог предположить, что в результате неудачная конструкция будет не исправлена, но снесена для постройки новой. Именно этим и является .NET Framework — началом нового. Чем скорее вы откажетесь от старых методов написания и исполнения программ, тем быстрее вы освоитесь в мире .NET.

Похожие статьи:

Не нашли то, что Вам нужно?.. Найдите ответ на форуме!
Категория: Программирование для Microsoft® .NET | Добавил: Akron (12.02.2012)
Просмотров: 354 | Теги: .NET
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Сообщество
Помощь
Форма входа
Поиск

Студенческий помощник по информатике © 2024
При цитировании материалов данного сайта, обязательна ссылка на источник: ITstudents.ru



>