Пятница, 29.03.2024, 14:38
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 10 » Знакомство с С#
23:52
Знакомство с С#
Знакомство с С#
Добро пожаловать в первую главу этой книги — "Введение в С#"! Здесь рас-
сматриваются основополагающие вопросы, необходимые для начала работы
на С#. В первой главе дается общий обзор С# и .NET Framework, рассказывается,
что представляют собой эти технологии, какие причины побуждают ими пользовать-
ся и каким образом эти технологии соотносятся между собой.
Начнем мы с самого общего рассмотрения .NET Framework. Это новая техно-
логия, и она включает множество понятий, которые на первый взгляд кажутся хит-
роумными (так как .NET Framework использует принципиально новый подход
к разработке приложений). Отсюда следует, что при обсуждении этой темы вам за
короткий промежуток времени придется столкнуться с большим количеством но-
вых понятий. Однако это неизбежно, поскольку знание основ крайне важно для
понимания программирования на С#. В последующих главах многие из этих тем
будут рассмотрены повторно и более детально.
Далее приводится упрощенное описание собственно языка С#; среди прочего
будут рассмотрены его корни и черты сходства с C++.
Наконец, вы познакомитесь с основным инструментом, который будет исполь-
зоваться на протяжении всей книги,— Visual Studio.NET (VS).
Что такое .NET Framework
.NET Framework — это новая и революционная платформа, созданная компа-
нией Microsoft для разработки приложений.
Самым интересным в этом утверждении является его неопределенность, однако
для этого имеются достаточно веские основания. Для начала обратите внимание на
то, что в нем не говорится: "для разработки приложений в операционной среде
Windows". И хотя первая версия .NET Framework работает под управлением опера-
ционноиГ системы Windows, в дальнейшие планы компании входит создание версий,
которые будут работать с другими операционными системами, такими как FreeBSD,
Linux, Macintosh, и даже на устройствах, относящихся к классу персональных
цифровых устройств (personal digital assistant, PDA). Один из основных мотивов
создания данной технологии — то, что она предназначается для объединения раз-
нородных операционных систем.
Более того, приведенное выше определение .NET Framework не содержит ни-
каких ограничений относительно типов приложений, создание которых она поддер-
живает. Причина в том, что никаких ограничений не существует: .NET Framework
допускает создание Windows-приложений, web-приложений, web-служб и многого-
многого другого, что только можно себе представить.
Глава 1
Технология .NET Framework разрабатывалась таким образом, чтобы ее можно
было использовать из любого языка программирования. Это справедливо и по от-
ношению к предмету настоящей книги — С#, а также в отношении C+ + , Visual
Basic, JScript и даже более старых языков, таких как COBOL. Для того чтобы до-
биться такого результата, пришлось создать специальные версии соответствующих
языков: Managed C++ (управляемый C+ + ), Visual Basic.NET, JScript.NET и т.д.—
с течением времени появляются все новые и новые. Но все эти языки обладают не
только доступом к .NET Framework, но и возможностью взаимодействовать друг
с другом. Совершенно нормальной является ситуация, когда разработчики исполь-
зуют в С# код, написанный на Visual Basic.NET, и наоборот.
Все это обеспечивает немыслимый доселе уровень гибкости и является одной
из причин, по которой использование .NET Framework представляется таким перс-
пективным.
Из чего состоит .NET Framework
.NET Framework состоит прежде всего из огромной библиотеки программ, к ко-
торой можно обращаться из различных языков программирования (например
из С#) с помощью различных технологий объектно-ориентированного программи-
рования (ООП, object-oriented programming). Эта библиотека разбита на несколько
различных модулей таким образом, что имеется возможность использовать ту или
иную ее часть в зависимости от требуемых результатов. Так, например, в одном
из модулей содержатся "кирпичики", из которых можно построить Windows-при-
ложения, в другом — "кирпичики", необходимые для организации работы в сети,
в третьем — все необходимое для развития Всемирной паутины (Web). Некоторые
из этих модулей подразделяются на более специфические подмодули: к примеру,
в состав модуля для развития Паутины входит подмодуль, предназначенный для со-
здания web-служб.
Основная идея в данном случае заключается в том, что различные операцион-
ные системы могут поддерживать некоторые или все из этих модулей (что зависит
от характеристик этих операционных систем). Так, PDA потенциально мог бы под-
держивать все основные функциональные возможности .NET, однако маловероят-
но, чтобы ему потребовались какие-либо более хитрые модули.
Часть библиотеки .NET Framework посвящена описанию некоторых базисных
типов. Тип — это способ представления данных; определение наиболее фундамен-
тальных из них (например 32-разрядного целого со знаком) облегчает совместное
использование языков программирования с помощью .NET Framework. Все вместе
это называется Common Type System (CTS — единая система типов).
Кроме вышеописанной библиотеки, в состав системы входит также .NET Common
Language Runtime (CLR — единая система выполнения программ), которая от-
ветственна за поддержку выполнения всех приложений, разработанных с исполь-
зованием библиотеки .NET.
Как можно создавать приложения
с помощью .NET Framework
Создание приложений с помощью .NET Framework означает написание програм-
мы (на любом из языков программирования, поддерживаемых системой) посред-
ством использования библиотеки программ. В этой книге для наших разработок
мы будем использовать VS, который представляет собой мощную интегрированную
среду разработки, поддерживающую С# (а также управляемый и не управляемый
Знакомство с С#
C + + , Visual Basic.NET и некоторые другие языки программирования). Преимуще-
ством данной среды является та простота, с которой возможности .NET могут
быть интегрированы в наши программы. Код, который мы будем создавать, будет
целиком написан на С#, однако в нем повсеместно будут использоваться возмож-
ности .NET Framework, а там, где возникнет необходимость, мы будем применять
в VS дополнительные инструменты.
Для того чтобы написанная на С# программа могла быть выполнена, ее необ-
ходимо преобразовать в язык, понятный операционной системе, на которой эта
программа будет выполняться; такой язык известен под названием родного кода.
Подобное преобразование называется компиляцией программы и выполняется
компилятором. Однако в .NET этот процесс состоит из двух этапов.
MSIL и ЛТ
При компиляции кода, в котором используется библиотека .NET Framework,
мы не получаем сразу родной код для конкретной операционной системы. На-
против, наша программа будет откомпилирована в программу на языке Microsoft
Intermediate Language (MSIL — промежуточный язык компании Microsoft).
Этот код не является специфическим ни для какой операционной системы и так же
точно не является специфическим для. С#. Компиляция с других языков програм-
мирования .NET — например с Visual Basic.NET — на первом этапе тоже проис-
ходит на этот язык. Данный этап компиляции выполняется VS в тех случаях, когда
мы используем его для разработки приложений на С#.
Очевидно, что для запуска приложения потребуется сделать некоторую допол-
нительную работу. Эта работа возлагается на ЛТ-компилятор (Just-In-Time, свое-
временный), который осуществляет компиляцию MSIL-кода на код, специфический
для ОС и архитектуры используемого компьютера. Только после этого операцион-
ная система может выполнить приложение.
В прошлом часто возникала необходимость транслировать написанную про-
грамму в несколько различных приложений, каждое из которых предназначалось
для конкретной операционной системы и архитектуры центрального процессора.
Нередко это был один из способов оптимизации (направленной на то, чтобы про-
грамма, к примеру, быстрее выполнялась на AMD-чипах), но иногда это оказыва-
лось критичным (например, когда приходилось использовать некоторые приложения
одновременно и в среде Win9x, и в среде WinNt/2000). Теперь такая необходи-
мость исчезла, поскольку ЛТ-компиляторы (как и предполагает их название) ис-
пользуют код на языке MSIL, который совершенно независим от компьютера,
операционной системы и центрального процессора. Существует несколько различ-
ных ЛТ-компиляторов, каждый из которых предназначается для некоторой конк-
ретной архитектуры, поэтому для создания родного кода, необходимого в том или
ином случае, будет использоваться соответствующий ЛТ-компилятор.
Удобство такого подхода заключается в том, что теперь приходится выполнять
существенно меньший объем работы: фактически мы получаем возможность про-
сто забыть о системно-зависимых особенностях и сконцентрироваться на более
интересных функциональных возможностях создаваемой программы.
Модули
Когда выполняется компилирование приложения, создаваемый MSIL-код со-
храняется в некотором модуле (assembly). В состав таких модулей входят как
выполняемые файлы приложений, которые могут быть запущены из Windows
Глава 1
напрямую и которым для работы не требуется никаких других программ (такие
файлы имеют расширение .ехе), так и библиотеки, предназначенные для исполь-
зования другими приложениями (они имеют расширение .dii).
Кроме данных на языке MSIL, в модулях хранятся метаинформация (т. е. ин-
формация об информации, хранящейся в данном модуле, иначе известная под
названием метаданных) и дополнительные ресурсы (дополнительные данные, ис-
пользуемые MSIL, например звуковые и графические файлы). Метаинформация
делает модули полностью самоописательными. Для использования модуля не тре-
буется никакой дополнительной информации; другими словами, исключается ситуа-
ция, когда не удается добавить необходимые данные в системный регистр, и все
подобные ей, что составляло серьезную проблему при разработке приложений на
других платформах.
Отсюда следует, что установка приложений зачастую сводится к простому ко-
пированию файлов в директорию удаленного компьютера. Поскольку системам,
под управлением которых будет выполняться приложение, не требуется никакой
дополнительной информации, мы получаем возможность просто запускать выпол-
няемый файл из этой директории (при условии, что на данном компьютере инстал-
лирована CLR.NET) без каких-либо дополнительных действий.
Естественно, размещать все необходимое для выполнения приложения в одном
месте не обязательно. Существует возможность создавать код, выполняющий за-
дачи, которые могут потребоваться нескольким приложениям. В подобных ситуа-
циях полезно располагать такой многократно используемый код в месте, доступном
всем приложениям. В .NET Framework таким местом является Global Assembly
Cache (GAC — кэш глобальных модулей). Разместить код в таком кэше очень
просто: для этого необходимо просто поместить модуль, содержащий соответству-
ющую программу, в директорию, содержащую этот кэш.
Управляемый код
Использование CLR не ограничивается тем моментом, когда мы откомпилиро-
вали программу на MSIL, а некоторый ЛТ-компилятор откомпилировал MSIL
в родной код. Код, написанный с помощью .NET Framework, является управляемым
на этапе выполнения (данный этап зачастую называется временем выполнения
(runtime)). Это означает, что CLR отслеживает выполнение приложений, управляя
памятью, межъязыковой отладкой, обеспечением безопасности и т. п. Напротив,
приложения, которые выполняются не под контролем CLR, называются неуправ-
ляемыми, и в них можно использовать определенные языки программирования,
такие как C++, для получения, например доступа к функциям нижнего уровня
операционной системы. Однако на С# можно писать только код, который выпол-
няется в управляемой среде. Мы будем использовать возможности CLR по управ-
лению кодом и возложим осуществление любых взаимодействий с операционной
системой на .NET.
Сборка мусора
Одной из наиболее важных особенностей управляемого кода является понятие
"сборка мусора". Это способ, применяемый в .NET и гарантирующий полное
освобождение памяти, использовавшейся приложением, по завершении работы
этого приложения. До появления .NET эта задача возлагалась на программистов,
и наличие в программе пары простых ошибок могло привести к ситуации, когда
огромные блоки памяти таинственным образом исчезали. Обычно это приводило
к постепенному замедлению работы компьютера с последующим крахом системы.
Знакомство с С#
Код
приложения
наС#
Сборка мусора в .NET работает путем как можно более частого инспектирова-
ния памяти компьютера и удаления из нее всего, что уже не требуется. Здесь не
существует никаких заранее определенных временных рамок; этот процесс может
запускаться с частотой несколько тысяч раз в секунду или один раз в несколько
секунд, но вы можете быть уверены, что рано или поздно это случиться.
В связи с этим программисты должны учитывать несколько важных аспектов.
Поскольку подобные действия выполняются в заранее не известные моменты, при-
ложения нужно разрабатывать с учетом этой особенности. Код, который использует
большое количество памяти, должен сам очищать память, а не полагаться на авто-
матическую сборку мусора, тем более что реализовать это не так уж сложно.
Последовательность действий
Прежде чем двигаться дальше, давайте сведем воедино все обсуж-
давшиеся шаги, необходимые для создания .NET-приложения:
Код на С#
1. Код приложения записывается на языке программирования,
совместимом с .NET, например на С# (см. рис. справа).
2. Полученная программа компилируется на язык
MSIL и помещается в модуль (см. рис. слева).
3. Прежде чем этот код начнет выполняться
(сам по себе, если он является выполняемым,
или при вызове из другой программы), он
должен быть откомпилирован в родной код
с помощью ЛТ-компилятора (см. рис. справа).
Система выполнения программ
.NET CLR
Родной код Родной код
1
Родной код I
Модуль
4. Родной код выполняется в контексте управляемого
CLR совместно с другими приложениями или
процессами (см. рис. слева).
Связывание
Существует еще один момент, который необходимо учитывать в вышеприве-
денном процессе. Код на С#, который компилируется на MSIL на шаге 2, совсем
не обязательно должен находиться в одном файле. Имеется возможность разнести
код приложения по нескольким исходным файлам, которые затем будут скомпили-
рованы в единый модуль. Этот процесс известен под названием "связывание"
и является чрезвычайно полезным. Причина такого положения дел заключается
в том, что работать с несколькими не очень большими файлами намного легче, чем
с одним огромным. Можно выделить логически связанный код в отдельный файл,
работа над которым будет вестись совершенно независимо и о котором можно за-
быть после того, как произойдет компиляция. Такой подход существенно упрощает
выявление конкретных сегментов кода, когда они оказываются нужными, а заодно
позволяет командам разработчиков разделить бремя программирования на отдель-
ные куски, которые затем можно выверять без риска повредить правильно работа-
ющие сегменты и те части кода, над которыми трудятся другие программисты.
Категория: информатика | Просмотров: 1353 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz