Источник: http://www.computery.ru/upgrade/
Как вы думаете, стоит ли внимания технология, на которую Microsoft недавно тратила около восьмидесяти процентов своего бюджета, выделяемого для новых разработок? .NET (dotNET) - новейшая разработка Microsoft, которая никого не оставляет равнодушным, даже самых консервативных пользователей и программистов, причем отзывы, как правило, очень положительные. Чего стоит тот факт, что даже самые заядлые оппоненты Microsoft из среды линуксоидов вдруг начали создавать аналог .NET под Linux с открытым кодом.
Когда говорят о .NET, ее называют платформой и инициативой. Платформой - потому что под .NET можно создавать приложения любого типа. Будь то консольные, с графическим интерфейсом, интернет-приложения, веб-сервисы. Инициативой .NET называют по той причине, что компанию Microsoft, грубо говоря, никто не заставлял создавать .NET. При создании этой технологии Microsoft использовала весь накопленный опыт, а также свое видение программного обеспечения будущего. И если вы согласны, что .NET внимания стоит, то давайте посмотрим, что это за видение будущего, а затем разложим новую технологию по полочкам, попутно заучивая новые термины.
Веб-сервисы
Технология .NET позволяет создавать и выполнять приложения любого типа. Но в центре внимания, прежде всего, веб-сервисы (web-services, веб-службы).
Microsoft считает, что в будущем повсеместно будет реализован принцип "программное обеспечение как сервис". Например, если вам понадобится создать электронную таблицу, то не придется покупать Excel (или другую аналогичную программу), вы сможете воспользоваться веб-сервисом, предоставляющим такую возможность, заплатив только за время его использования или за использованные функции.
Сохранить документ можно будет на сервере с помощью другого сервиса. Еще один сервис, такой, как Microsoft Passport, позаботится, чтобы в дальнейшем доступ к сохраненному документу имели вы и только вы.
Можно вообразить мир будущего, в котором простые карманные устройства, имеющие доступ в интернет, с помощью веб-сервисов будут предоставлять не меньше, а то и больше возможностей, чем нынешние персональные компьютеры.
Ведь если веб-сервисы будут достаточно распространены, то это откроет множество недоступных сейчас возможностей. Пример, который уже стал классическим, - поиск в незнакомом городе ближайшего ресторана или ближайшей автомастерской.
Веб-сервисы предоставляют доступ к приложениям, основываясь на единых стандартах, независимых от платформы. Напрямую веб-сервисы не используются, они лишь предоставляют определенные функции, им нужны приложения-клиенты. Клиентами могут быть пользовательские приложения, реализующие, в основном, интерфейс с пользователем, либо другие веб-сервисы.
Представьте, что интернет вдруг стал огромным набором готовых к использованию программистами библиотек функций, и вы увидите будущее таким, каким его видит Microsoft.
Веб-сервисы можно было создавать и до .NET, но тогда мало кто за это брался. Одобрительные отзывы о веб-сервисах в .NET связаны с особенностями этой платформы, которые предоставили, прежде всего, легкость их создания и распространения. Создавать веб-сервисы в .NET очень легко, а еще легче устанавливать. Обычное копирование нескольких файлов, и все готово.
Такой процесс еще называют XCOPY - по названию одной из команд DOS. Благодаря легкости установки, можно ожидать распространения веб-сервисов как готовых к использованию компонентов, из-за чего все больше организаций будут их использовать и предоставлять.
Потенциал веб-сервисов огромен, и его не стоит недооценивать. Однако приложения .NET - это не только веб-сервисы, потому .NET уже сейчас можно использовать для более приземленных целей - например, изготавливать приложения с оконным интерфейсом или интернет-приложения.
.NET Framework
Для того, чтобы иметь возможность выполнять приложения .NET на конкретном устройстве, нужно установить .NET Framework. Для компьютеров с операционными системами Windows это можно сделать, бесплатно загрузив .NET Frame-work с сайта Microsoft
msdn.microsoft.com/netframework/
downloads/howtoget.asp. В будущих версиях Windows делать это будет уже не нужно, так как .NET Framework будет в их составе. Составляющими .NET Framework являются среда выполнения Common Language Runtime (CLR) и набор общих модулей, который называется Framework Class Library (FCL).
Мы добрались до очень важной и непростой части повествования о .NET. Любые .NET-приложения используют единую среду выполнения CLR и используют единую библиотеку FCL. К тому же, они компилируются не в машинный код, а в промежуточный язык Interme-diate Language.
Увидев Common Language Runtime и Intermediate Language, знатоки Java найдут аналогию с его виртуальной машиной и байт-кодом. И будут во многом правы. CLR вместе с промежуточным языком позволяет достигнуть нескольких основных целей. Во-первых, переносимость. Для поддержки существующими .NET-приложениями нового устройства или другой операционной системы обычно нужно изменить только некоторые части CLR.
Эти изменения будет производить сама Microsoft. Во-вторых, контроль над выполняемым кодом. Будь то опасные действия или просто конфликт версий, CLR позволяет избежать неприятного развития событий. Широко известно, что в .NET невозможно создать известный всем DLL Hell - явление, когда существующую общую библиотеку заменяют другой версией, и приложения, ее использующие, перестают правильно выполняться. В-третьих, контроль за памятью. Утечки памяти в .NET практически невозможны, сборщик мусора Garbage Collector сам собирает ненужные переменные, программисты избавлены от необходимости явно освобождать память.
Framework Class Library, с точки зрения пользователя, всего лишь набор файлов DLL. А для программиста FCL предоставляет огромное количество готовых к использованию классов. Что это дает пользователям? Да хотя бы то, что программы с использованием готовых библиотек будут функционально богаче, надежнее и иметь небольшой размер.
Приложения .NET:
от и до
Давайте проследим путь приложения .NET от написания до выполнения. Единой средой разработки приложений для .NET является Visual Studio .NET. Но использовать ее необязательно, если программиста устроят консольные утилиты из бесплатного .NET Framework SDK. Язык программирования для написания .NET-программ не имеет значения.
Это очень важно! Программисты, подумайте только, для программирования любых приложений (от консольного до интернет-приложения) можно использовать любимый язык программирования, без проблем можно взаимодействовать с кодом, написанном на другом языке, и абсолютно на любом из поддерживаемых языков пользоваться единой Framework Class Library. Одинаковые возможности для всех языков программирования!
Такие преимущества достигаются единым подходом ко всем поддерживаемым языкам программирования. Это Common Language Specification и, прежде всего, Common Type System. Языки программирования адаптируются для соответствия спецификации, иногда разница с оригиналом очень существенна, попробуйте сравнить, например, VB и VB.NET.
Для .NET Microsoft поставляет компиляторы языка C# (читается "си-шарп"), VB.NET, J# и управляемого C++, остальные поддерживаемые языки вы можете легко найти на
msdn.microsoft.com/vstudio/partners/
language/default.asp.
Как уже было сказано мной выше, приложения .NET компилируются в промежуточный язык Intermediate Language. Этот язык представляет собой инструкции некоего несуществующего процессора. После компиляции файлы имеют расширения EXE, DLL, NETMODULE. Они хранятся в формате Portable Executable (PE).
Самое интересное с приложением .NET происходит после запуска. Из формата PE Windows определяет приложение .NET, и в дело вступает CLR. Важный момент, который необходимо понять, - приложения .NET не интерпретируются! Ошибкой было бы так думать, хотя в некоторых статьях и даже книгах вы можете такую ошибку найти.
Интерпретация предполагает пошаговое выполнение инструкций, без предварительного их перемалывания в код, приемлемый для процессора и операционной системы, как это делается при компиляции. В .NET промежуточный язык не интерпретируется, а компилируется в код по мере необходимости, так что неиспользуемые функции при этом не будут даже скомпилированы. Процесс компиляции по мере необходимости называют компиляцией Just-in-time (JIT). Вместо этого приложение также может быть полностью скомпилировано при инсталляции, этот процесс называют preJIT.
Во время работы приложение не освобождает память самостоятельно. Этим занимается сборщик мусора Garbage Collector. А если запущены несколько копий одного и того же приложения, то CLR эффективно распределяет их общие части, значительно уменьшая занимаемую память.
Приложения .NET не используют реестр. Настройки приложения хранятся в файле формата XML с расширением CONFIG. Совершенно не нужен реестр и компонентам приложений - внутри они полностью содержат всю необходимую для их использования информацию. Так как реестр не используется, установка приложений .NET обычно происходит по принципу XCOPY.
Код, который воспринимается CLR, называется управляемым (managed). Остальной код, не написанный с учетом требований .NET, называется неуправляемым (unmanaged) или родным (native). Разработчики новой технологии понимали, что неуправляемый код будет существовать еще долго, потому добавили в .NET возможности по взаимодействию с ним. Программа для .NET даже может представлять собой смесь компонентов из управляемого и неуправляемого кода. Однако такой вариант, естественно, не рекомендуется - программа теряет переносимость и множество других преимуществ.
Все, сказанное выше, относится к любому виду приложений. В частности, и к интернет-приложениям. Теперь они не интерпретируются, что означает высокую скорость их выполнения. Для таких приложений теперь не нужны урезанные скриптовые языки, такие как VBScript, их пишут на полноценных языках программирования.
Так как интернет-приложения могут запускаться тысячами копий одновременно, то благодаря названной уже возможности распределения памяти, для их работы потребуется значительно меньше памяти, чем раньше, а другие особенности CLR гарантируют еще большую производительность.
А еще интернет-приложения, использующие новую платформу, могут определять возможности браузера пользователя и подавать соответствующую этим возможностям версию страницы автоматически.
Особенно платформа .NET понравится программистам. Я уже говорил о некоторых преимуществах для них, теперь добавлю еще немного. Интернет-приложения (ASP.NET) строятся на событиях, код можно отделить от представления в отдельные файлы.
Все виды приложений могут использовать единую технологию доступа к базам данных ADO.NET, которая обладает значительными преимуществами, по сравнению со своей предшественницей ADO.
Программисты, использовавшие хоть раз COM, найдут аналогичные возможности в .NET очень простыми. Ну и, конечно, не может не понравиться Visual Studio .NET, которая является единым средством разработки всех видов приложений для всех языков.