|
Программирование >> Программирование с использованием ajax
ми альтернативные версии, способные работать и в средах с другими операционными системами. Одним из примеров является версия Mono, которая распространяется с открытым исходным кодом (вместе с компилятором С#) и способна работать на базе нескольких операционных систем, включая некоторые разновидности таких систем, как Linux и Мае. Многие подобные проекты сейчас еще находятся на стадии разработки и в принципе к моменту прочтения настоящей книги уже могут стать доступными. Помимо этого еще существует и версия Microsoft .NET Compact Framework, которая, по сути, представляет собой усеченный вариант полной версии .NET Framework и может применяться на устройствах типа персональных цифровых помощников (personal digital assistant - PDA) и даже в некоторых смартфонах. Одним из главных стимулов к применению платформы .NET Framework является возможность использовать ее в качестве средства интеграции разных операционных систем. Помимо этого, приведенное выше определение .NET Framework не содержит никаких указаний касательно типов приложений, которые могут создаваться с помощью этой платформы. Объясняется это тем, что никаких ограничений подобного рода попросту не существует: .NET Framework позволяет создавать приложения для Windows, Web-приложения, приложения типа Web-служб и практически все остальные типы приложений, которые только можно себе представить. Платформа .NET Framework была спроектирована так, чтобы ее можно было использовать из любого языка, включая язык С# (являющийся предметом настоящей книги), а также языки С++, Visual Basic, JScript и даже некоторые более старые языки, вроде COBOL. Чтобы подобное было возможно, также были выпущены и предназначенные специально для применения с .NET версии этих языков, которые продолжают выпускаться и по сей день. Все они не только имеют доступ к .NET Framework, но еще также могут и взаимодействовать друг с другом. Это позволяет разработчикам, которые пользуются языком С#, легко применять код, который был написан разработчиками, применяющими язык Visual Basic, и наоборот. Все это открывает неимоверное количество возможностей и делает .NET Framework очень привлекательной платформой для использования. Что входит в состав .NET Framework Платформа .NET Framework по большей части состоит из гигантской библиотеки кода, который можно использовать из клиентских языков (вроде С#) путем применения различных приемов объектно-ориентированного программирования (Object-Oriented Programming), или ООП. Эта библиотека поделена на модули, которые применяются в зависимости от того, какие результаты требуется получить. Например, в одном модуле содержатся компоновочные блоки для приложений Windows, в другом - для программирования сетевого обмена, в третьем - для разработки Web-приложений. Некоторые из модулей содержат более специфические подмодули, вроде модуля для разработки Web-приложений, который содержит подмодуль для написания Web-служб. По замыслу разные операционные системы должны поддерживать некоторые или все эти модули, в зависимости от их характеристик. Устройство PDA, например, будет включать поддержку для всех ключевых функциональных возможностей .NET, но вряд ли будет нуждаться в наличии более специфических модулей. В одном из разделов библиотеки .NET Framework содержатся определения ряда базовых типов. Типы отвечают за способ представления данных, и указание некоторых наиболее фундаментальных из них (например, типа 32-битное целое число со знаком ) способствует функциональной совместимости между языками, использующими .NET Framework. Это носит название системы общих типов (Common Туре System - CTS). Помимо библиотеки в состав .NET Framework еще также входит и так называемая общеязыковая исполняющая среда .NET (Common Language Runtime - CLR), которая отвечает за обслуживание процесса выполнения всех тех приложений, которые разрабатываются с помощью библиотеки .NET. Написание приложений с помощью .NET Framework Под написанием приложения с помощью .NET Framework подразумевается просто написание кода с использованием одного из языков, поддерживающих .NET Framework, и библиотеки кода .NET. В настоящей книге для разработки приложений будут применяться такие средства, как VS и VCE. Первое представляет собой мощную интегрированную среду разработки, которая поддерживает код на языке С# (а также управляемый и неуправляемый код на языке С++, Visual Basic и некоторых других языках), а VCE - усеченную (и бесплатную) версию среды VS, которая поддерживает код только на языке С#. Преимуществом этих сред является простота, с которой в них средства .NET могут интегрироваться в создаваемый разработчиком код. Весь создаваемый код будет полностью писаться на С#, но в нем везде все равно будет использоваться .NET Framework, а также, где необходимо, другие дополнительные средства из VS и VCE. Чтобы код на языке С# мог выполняться, он обязательно должен преобразовываться в код на том языке, который понимает целевая операционная система. Такой код называется родным кодом (native code), а сам процесс преобразования - компиляци£й. Компиляция выполняется механизмом, который называется компилятором, и в .NET Framework состоит из двух этапов. Язык MSIL и ЛТКОмпилятор При компиляции кода, в котором используется библиотека .NET, он не преобразовывается сразу же в родной код конкретной операционной системы. Вместо этого он сначала преобразуется в код MSIL (Microsoft Intermediate Language - промежуточный язык Microsoft). Этот код не является специфическим ни для какой-либо операционной системы, ни для языка С#. Другие языки, например. Visual Basic .NET, на первом этапе тоже компилируются в код на этом языке. В случае разработки приложений на С# такой процесс компиляции выполняется VS или VCE. Очевидно, что далее для запуска приложения требуется выполнить еще кое-какую работу. За это отвечает так называемый JIT-компилятор (Just-in-Time compiler - оперативный компилятор), который компилирует MSIL в родной код, отвечающий требованиям конкретной операционной системы и архитектуры целевого компьютера. Только после этого этапа у операционной системы появляется возможность запустить приложение. Аббревиатура JIT в названии компилятора указывает на то, что он выполняет компиляцию MSIL-кода только при возникновении соответствующей необходимости. Раньше код часто компилировался в несколько приложений, каждое из которых предназначалось для конкретной операционной системы и архитектуры ЦП. Такой подход обычно применялся в качестве одного из средств оптимизации (например, для принуждения кода работать быстрее на базе микросхем AMD), но в некоторых случаях играл даже критическую роль (например, при необходимости сделать так, чтобы приложения могли работать как в средах Win9x, так и в средах WinNT/2000). Сейчас в нем нет никакой необходимости, поскольку JIT-компиляторы используют MSIL-код, который не зависит ни от типа компьютера, ни от типа операционной системы, ни от типа ЦП. Существуют несколько JIT-компиляторов, каждый из которых рассчитан на конкретную архитектуру, и при создании требуемого родного кода применяться будет только тот из них, который подходит в данном случае. Вся прелесть этого механизма состоит в том, что он требует приложения гораздо меньшего количества усилий со стороны разработчика: на самом деле он даже позволяет ему вообще не думать о касающихся специфики системы деталях и концентрировать все внимание на более интересных функциональных возможностях кода. Сборки При компиляции приложении создаваемый MSIL-код сохраняется в сборке (assembly). С состав сборок входят как исполняемые файлы приложений, которые имеют расширение . ехе и могут запускаться прямо в среде Windows безо всяких других программ, так и файлы библиотек, которые имеют расширение .dll и предназначены для использования другими приложениями. Помимо MSIL-кода в сборки еще также включается метаипформация (т.е. информация о содержащихся в сборке данных, также называемая метаданными) и файлы необязательных ресурсов (файлы дополнительных данных, которые могут применяться в MSIL коде, вроде звуковых файлов и файлов изображений). Метаипформация делает сборки полностью самоописательными. Благодаря ей, для использования сборок больше никакой информации не требуется, а это означает исключение вероятности возникновений ситуаций, вроде невозможности добавления требуемых данных в системный реестр и тому подобного, каковые часто представляли проблему при выполнении разработки с помощью других платформ. Из-за этого развертывание приложений часто сводится просто к копированию файлов в каталог на удаленном компьютере. Поскольку никакой дополнительной информации на целевых системах не требуется, далее пользователь может просто запускать исполняемый файл из этого каталога и (при условии, что в системе установлена CLR-среда .NET) приступить к работе с приложением. Конечно, сохранять все необходимое для запуска приложения в одном месте вовсе необязательно. Разработчик может писать и какой-нибудь код, выполняющий задачи, требуемые нескольким приложениям. В подобных ситуациях зачастую удобнее помещать допускающий многократное использование код в то место, к которому смогут получать доступ все приложения. В .NET Framework таким местом является глобальный кэш сборок (Global Assembly Cache - GAC). Помещение в него кода осуществляется очень просто, а именно - копированием содержащей нужный код сборки в каталог, где расположен этот кэш. Управляемый код Роль CLR-среды не заканчивается после компиляции кода в MSIL-код и преобразования его JIT-компилятором в родной код. Код, который пишется с помощью .NET Framework, при выполнении (т.е. на этапе, который обычно называется временем выполнения) находится под управлением CLR-среды. Это означает, что CLR-среда следит за приложениями, осуществляя необходимое управления памятью, обеспечивая безопасность, позволяя выполнять межъязыковую отладку и т.д. Приложения, которые во время выполнения не попадают под контроль CLR-среды, называются неуправляемыми (unmanaged), и некоторые языки могут применяться для написания таких приложений, например, с целью доступа к низкоуровневым функциям операционной системы. В языке С#, однако, разрешается писать только код, выполняющийся в управляемой среде, т.е. использовать управляемые средства CLR и позволять среде .NET самостоятельно обрабатываться любые операции взаимодействия с операционной системой.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |