Что такое платформа microsoft net framework. Что такое.NET Framework? Какие существуют виды сборок

Аннотация: Инициатива Microsoft .NET. Проблемы совместимости, надежности и повторного использования компонентов. .NET Framework. Общеязыковая исполняющая среда CLR. Псевдомашинный язык CIL (управляемый assembler). JIT-компилятор. Языки программирования. Сборки. Метаданные. Сборщик мусора. Библиотека классов.NET Framework

Проблемы разработки современных информационных систем

Проблемы интеграции

  • Модулей, написанных на различных языках, использующих разный API (или версии API) или разный формат представления данных;
  • Программ, разработанных для различных платформ, в рамках единого программного комплекса;
  • Систем, использующих разные программные модели.

Особенно часто возникают проблемы интеграции с унаследованным кодом ( legacy ). При решении задач интеграции возникают проблемы несовместимости.

Проблемы переносимости

Все чаще к программам предъявляются требования поддержки нескольких платформ (например, возможность работы с программой на платформе Windows и Mac OS).

Проблемы версий

Windows-разработчики знают о проблеме совместимости версий, известной под названием "ад DLL". Этот "ад" возникает, когда компоненты, устанавливаемые для нового приложения, заменяют компоненты старого приложения. В итоге старое приложение начинает работать неправильно или перестает работать.

Управление ресурсами

Одной из проблем программирования является управление и корректное освобождение ресурсов, файлов, памяти, пространства экрана, сетевых соединений, ресурсов баз данных и т. д. Некорректное управление этими ресурсами может привести к некорректному выполнению программы.

Безопасность типов

Когда упоминают проблему безопасности типов, имеют в виду некорректное обращение с типами данных: попытки обратиться к областям памяти за границей типа, попытки вызвать методы, отсутствующие у типа, или попытки вызвать метод, принимающий в качестве параметра тип А, и передать ему в качестве параметра объект типа В.

Обработка сбоев

При разработке Windows-приложений с использованием Win32 API некоторые функции возвращают исключения, другие - коды состояний, третьи - HRESULT . Таким образом, отсутствует согласованный механизм обработки сбоев и есть возможность игнорировать некоторые исключения, что делает код небезопасным.

Эти и другие проблемы разработки информационных систем помогает решать платформа Microsoft .NET.

Решение проблем разработки информационных систем в.NET

Один из способов решения проблемы неоднородности - разработка и поддержка стандартных программных интерфейсов, облегчающих задачу переноса приложений на серверы различных платформ. Однако приложения могут использовать базы данных , коммуникационные и другие сервисы, интерфейсы которых не являются компонентами языка или среды программирования. Другой способ, применяемый производителями для решения проблемы неоднородности, - поддержка стандартных протоколов. Системы, поддерживающие один и тот же протокол, могут взаимодействовать друг с другом, даже если они опираются на различные машинные архитектуры и операционные системы.

Технология. NET представляет собой способ разработки и развертывания программного обеспечения, который с помощью таких широко используемых стандартов, как HTTP и XML , реализует взаимодействие программ и обеспечивает доступ через Internet к многочисленным программным сервисам. Технология включает. NET Framework - платформу для разработки и исполнения приложений, которая упрощает и ускоряет разработку, поддерживает полноценное объектно-ориентированное программирование для Web , устраняет многие типы наиболее распространенных программных ошибок, предоставляет общий API для всех языков.

Что составляет Microsoft .NET

NET Framework - инфраструктура разработки приложений. Ее основные компоненты - общеязыковая исполняющая среда (Common Language Runtime) и библиотека классов. NET Framework Class Library .

Общеязыковая исполняющая среда (Common Language Runtime)

Common Language Runtime (CLR) - общеязыковая исполняющая среда, абстрагирующая сервисы операционной системы и исполняющая управляемые приложения, любое действие которых должно получить разрешение со стороны CLR.

Весь код для платформы.NET преобразуется CLR в промежуточный код на языке CIL. Поэтому разработчики могут легко интегрировать код, написанный для.NET на различных языках программирования. Все, что можно сделать на одном.NET-совместимом языке (за редким исключением), можно сделать на любом другом. Код на этих языках компилируется в код на одном языке - языке CIL.

CLR расположена поверх операционной системы и предоставляет виртуальную среду для управляемых приложений. Код для платформы.NET либо исполняется CLR, либо получает разрешение на исполнение за ее пределами.

Код для CLR представляет собой команды псевдомашинного языка Common Intermediate Language (CIL). Эти команды компилируются в машинный код соответствующего типа процессора по запросу (just-in-time) в период выполнения. Обычно компиляция метода происходит один раз во время его первого вызова. Затем результат кэшируется в памяти, чтобы избежать задержек при повторных вызовах. JIT-компилятор выполняет оптимизацию кода специально для процессора, на котором исполняется этот код.

Преобразуя команды CIL в команды процессора, JIT-компилятор выполняет верификацию кода на предмет безопасности типов.

Практически невозможно выполнить команду, обращающуюся к области памяти, к которой у этой команды нет разрешения на доступ. В управляемом приложении устраняется проблема ошибочно инициализированных указателей, запрещается преобразовать тип в нечто, чем он не является, так как это нарушение безопасности типов. CLR не позволяет вызывать методы с разрушенным стековым фреймом.

Ресурсы, выделяемые управляемым кодом, освобождаются сборщиком мусора. Иначе говоря, программист только выделяет память, но не освобождает ее - это делает CLR. Сборщик мусора отслеживает все ссылки на объекты, создаваемые программой, и уничтожает эти объекты, когда занимаемая ими память требуется где-то еще. Таким образом в приложениях с управляемым кодом разрешается проблема утечек памяти.

Верификация кода также является основой способности CLR выполнять несколько приложений внутри одного процесса. Процесс разделяется на виртуальные отсеки - домены приложений ( application domain ). Таким образом повышается эффективность использования памяти, выделяемой процессам. Домены приложений не менее безопасны, чем процессы, так как их границы не могут быть нарушены управляемыми приложениями.

.NET Framework Class library (FCL)

В. NET включены сборки библиотеки классов. NET Framework Class library ( FCL ), содержащие определения нескольких тысяч типов, каждый из которых предоставляет некоторую функциональность. Наборы "родственных" типов собраны в отдельные пространства имен. Так, пространство имен System содержит базовый класс Object , из которого в конечном счете порождаются все остальные типы.

Таким образом, всякая сущность в. NET является объектом со своими полями и методами.

Кроме того, System содержит типы для целых чисел, символов, строк, обработки исключений, консольного ввода/вывода, группу типов для безопасного преобразования одних типов в другие, форматирования данных, генерации случайных чисел и выполнения математических операций. Типами из пространства имен System пользуются все приложения.

Для изменения существующего FCL -типа можно создать свой собственный производный тип . Можно создавать свои собственные пространства имен. Все это будет четко соответствовать принципам, предлагаемым платформой. NET

Приведем некоторые наиболее распространенные пространства имен и краткое описание содержащихся там типов.

Основные пространства имен FCL
Пространство имен Содержание
System Фундаментальные типы данных и вспомогательные классы
System.Collections Хэш-таблицы, массивы переменной размерности и другие контейнеры
System.Data Классы ADO .NET для доступа к данным
System.Drawing Классы для вывода графики (GDI+)
System.IO Классы файлового и потокового ввода/вывода
System.Net Классы для работы с сетевыми протоколами, например с HTTP
System.Reflection Классы для чтения и записи метаданных
System.Runtime.Remoting Классы для распределенных приложений
System.ServiceProcess Классы для создания служб Wndows
System.Threading Классы для создания и управления потоками
System.Web Классы для поддержки HTTP
System.Web.Services Классы для разработки web-сервисов
System.Web.Services. Классы для разработки клиентов web-сервисов Protocols
System.Web.UI Основные классы, используемые ASP .NET
System.Web.UI. WebControls Серверные элементы управления ASP .NET
System.Wndows.Forms Классы для приложений с графическим интерфейсом пользователя
System.Xml Классы для чтения и ввода данных в формате XML

Все управляемые приложения используют

Введение

ПЛАТФОРМА - это как минимум среда выполнения программ и… ещё что-либо, что определяет особенности разработки и выполнения программного кода – парадигмы программирования, языки программирования, множества базовых классов.

Microsoft.NET (.NET Framework) – программная платформа. Содержит следующие основные компоненты: the common language runtime (CLR) and the .NET Framework class library (.NET FCL).

CLS (Common Language Specification) – общая спецификация языков программирования. Это набор конструкций и ограничений, которые являются руководством для создателей библиотек и компиляторов в среде.NET Framework. Библиотеки, построенные в соответствии с CLS, могут быть использованы из любого языка программирования, поддерживающего CLS. Языки, соответствующие CLS (к их числу относятся языки Visual C#, Visual Basic, Visual C++), могут интегрироваться друг с другом. CLS – это основа межъязыкового взаимодействия в рамках платформы Microsoft.NET.

CLR (Common Language Runtime) – Среда Времени Выполнения или Виртуальная Машина. Обеспечивает выполнение сборки. Основной компонент.NET Framework. Под Виртуальной Машиной понимают абстракцию инкапсулированной (обособленной) управляемой операционной системы высокого уровня, которая обеспечивает выполнение программного кода и предполагает решение следующих задач:

§ управление кодом (загрузку и выполнение),

§ управление памятью при размещении объектов,

§ изоляцию памяти приложений,

§ проверку безопасности кода,

§ преобразование промежуточного языка в машинный код,

§ доступ к метаданным (расширенная информация о типах),

§ обработка исключений, включая межъязыковые исключения,

§ взаимодействие между управляемым и неуправляемым кодом (в том числе и COM-объектами),

§ поддержка сервисов для разработки (профилирование, отладка и т.д.).

Короче, CLR – это набор служб, необходимых для выполнения сборки. При этом программный код сборки может быть как управляемым (код, при выполнении которого CLR, в частности, активизирует систему управления памяти), так и неуправляемым (“старый” программный код).

Сама CLR состоит из двух главных компонентов: ядра (mscoree.dll) и библиотеки базовых классов (mscorlib.dll). Наличие этих файлов на диске – верный признак того, что на компьютере, по крайней мере, была предпринята попытка установки платформы.NET.

Ядро среды выполнения реализовано в виде библиотеки mscoree.dll. При компоновке сборки в неё встраивается специальная информация, которая при запуске приложения (EXE) или при загрузке библиотеки (обращение к DLL из неуправляемого модуля – вызов функции LoadLibrary для загрузки управляемой сборки) приводит к загрузке и инициализации CLR. После загрузки CLR в адресное пространство процесса, ядро среды выполнения выполняет следующие действия:

§ находит местонахождение сборки,

§ загружает сборку в память,

§ производит анализ содержимого сборки (выявляет классы, структуры, интерфейсы),

§ производит анализ метаданных,

§ обеспечивает компиляцию кода на промежуточном языке (IL) в платформозависимые инструкции (ассемблерный код),

§ выполняет проверки, связанные с обеспечением безопасности,

§ используя основной поток приложения, передаёт управление преобразованному в команды процессора фрагменту кода сборки.

FCL (.NET Framework Class Library) – соответствующая CLS спецификации объектно-ориентированная библиотека классов, интерфейсов и системы типов (типов-значений), которые включаются в состав платформы Microsoft .NET.

Эта библиотека обеспечивает доступ к функциональным возможностям системы и предназначена в качестве основы при разработке.NET приложений, компонент, элементов управления.

NET библиотека классов является вторым компонентом CLR.

NET FCL могут использовать ВСЕ.NET-приложения, независимо от назначения, архитектуры, используемого при разработке языка программирования. В частности, содержит:

§ встроенные (элементарные) типы, представленные в виде классов (на платформе.NET всё построено на структурах или классах),

§ классы для разработки графического пользовательского интерфейса (Windows Form),

§ классы для разработки Web-приложений и Web-служб на основе технологии ASP.NET (Web Forms),

§ классы для разработки XML и Internet-протоколами (FTP, HTTP, SMTP, SOAP),

§ классы для разработки приложений, работающих с базами данных (ADO.NET),

§ и многое другое.

NET-приложение – приложение, разработанное для выполнения на платформе Microsoft.NET. Реализуется на языках программирования, соответствующих CLS.

MSIL (Microsoft Intermediate Language, он же IL – Intermedia Language) – промежуточный язык платформы Microsoft.NET. Исходные тексты программ для.NET приложений пишутся на языках программирования, соответствующих спецификации CLS. Для языков программирования, соответствующих спецификации CLS может быть построен преобразователь в MSIL. Таким образом, программы на этих языках могут транслироваться в промежуточный код на MSIL. Благодаря соответствию CLS, в результате трансляции программного кода, написанного на разных языках, получается совместимый IL код.

Фактически MSIL является ассемблером виртуального процессора.

МЕТАДАННЫЕ - при преобразовании программного кода в MSIL также формируется блок МЕТАДАННЫХ, содержащий информацию о данных, используемых в программе. Фактически это наборы таблиц, содержащих информацию о типах данных, определяемых в модуле, о типах данных, на которые ссылается данный модуль. Ранее такая информация сохранялась отдельно. Например, приложение могло включать информацию об интерфейсах, которая описывалась на Interface Definition Language (IDL). Теперь метаданные являются частью управляемого модуля.

В частности, метаданные используются для:

§ сохранения информации о типах. При компиляции теперь не требуются заголовочные и библиотечные файлы. Всю необходимую информацию компилятор читает непосредственно из управляемых модулей,

§ верификации кода в процессе выполнения модуля,

§ управления динамической памятью (освобождение памяти) в процессе выполнения модуля,

§ при разработке программы стандартными инструментальными средствами (Microsoft Visual Studio.NET)

§ на основе метаданных обеспечивается динамическая подсказка (IntelliSense).

Языки, для которых реализован перевод на MSIL:

и ещё много других языков.

Исполняемый модуль - независимо от компилятора (и входного языка) результатом трансляции.NET приложения является управляемый исполняемый модуль (управляемый модуль). Это стандартный переносимый исполняемый (PE – Portable Executable) файл Windows.

Элементы управляемого модуля представлены в таблице.

Управляемый модуль содержит управляемый код.

Управляемый код - это код, который выполняется в среде CLR. Код строится на основе объявляемых в исходном модуле структур и классов, содержащих объявления методов. Управляемому коду должен соответствовать определенный уровень информации (метаданных) для среды выполнения. Код C#, Visual Basic, и JScript является управляемым по умолчанию. Код Visual C++ не является управляемым по умолчанию, но компилятор может создавать управляемый код, для этого нужно указать аргумент в командной строке(/CLR). Одной из особенностей управляемого кода является наличие механизмов, которые позволяют работать с УПРАВЛЯЕМЫМИ ДАННЫМИ.

Управляемые данные - объекты, которые в ходе выполнения кода модуля размещаются в управляемой памяти (в управляемой куче) и уничтожаются сборщиком мусора CLR. Данные C#, Visual Basic и JScript .NET являются управляемыми по умолчанию. Данные C# также могут быть помечены как неуправляемые.

Сборка (Assembly) - базовый строительный блок приложения в.NET Framework. Управляемые модули объединяются в сборки. Сборка является логической группировкой одного или нескольких управляемых модулей или файлов ресурсов. Управляемые модули в составе сборок исполняются в Среде Времени Выполнения (CLR). Сборка может быть либо исполняемым приложением (при этом она размещается в файле с расширением.EXE), либо библиотечным модулем (в файле с расширением.DLL). При этом ничего общего с обычными (старого образца!) исполняемыми приложениями и библиотечными модулями сборка не имеет.

Декларация сборки (Manifest) - составная часть сборки. Ещё один набор таблиц метаданных, который:

§ идентифицирует сборку в виде текстового имени, её версию, культуру и цифровую сигнатуру (если сборка разделяется среди приложений),

§ определяет входящие в состав файлы (по имени и хэшу),

§ указывает типы и ресурсы, существующие в сборке, включая описание тех, которые экспортируются из сборки,

§ перечисляет зависимости от других сборок,

§ указывает набор прав, необходимых сборке для корректной работы.

Эта информация используется в период выполнения для поддержки корректной работы приложения.

Процессор НЕ МОЖЕТ выполнять IL код. И перевод IL кода осуществляется JIT-компилятором (just in time – в нужный момент), который активизируется CLR по мере необходимости и выполняется процессором. При этом результаты деятельности JIT-компилятора сохраняются в оперативной памяти. Между фрагментом оттранслированного IL кода и соответствующим блоком памяти устанавливается соответствие, которое в дальнейшем позволяет CLR передавать управление командам процессора, записанным в этом блоке памяти, минуя повторное обращение к JIT-компилятору.

В среде CLR допускается совместная работа и взаимодействие компонентов программного обеспечения, реализованных на различных языках программирования.

На основе ранее сформированного блока метаданных CLR обеспечивает ЭФФЕКТИВНОЕ взаимодействие выполняемых.NET приложений.

Для CLR все сборки одинаковы, независимо от того на каких языках программирования они были написаны. Главное – это чтобы они соответствовали CLS. Фактически CLR разрушает границы языков программирования (cross-language interoperability). Таким образом, благодаря CLS и CTS .NET-приложения фактически оказываются приложениями на MSIL (IL).

CLR берёт на себя решение многих проблем, которые традиционно находились в зоне особого внимания разработчиков приложений. К числу функций, выполняемых CLR, относятся:

§ проверка и динамическая (JIT) компиляция MSIL кода в команды процессора,

§ управление памятью, процессами и потоками,

§ организация взаимодействия процессов,

§ решение проблем безопасности (в рамках существующей в системе политики безопасности).

AppDomain (домен приложения) - это логический контейнер сборок, который используется для изоляции приложения в рамках адресного пространства процесса. Все объекты, создаваемые приложением, создаются в рамках определенного домена приложения. Несколько доменов приложений могут существовать в одном процессе операционной системы. CLR изолирует приложения, управляя памятью в рамках домена приложения.

Код, выполняемый в CLR (CLR процесс) отделён от других процессов, выполняемых на компьютере в это же самое время.

Обычный процесс запускается системой в рамках специально выделяемого процессу адресного пространства. CLR предоставляет возможность выполнения множества управляемых приложений в ОДНОМ ПРОЦЕССЕ. Каждое управляемое приложение связывается с собственным доменом приложения (сокращенно AppDomain). В приложении помимо основного домена может быть создано несколько дополнительных доменов.

Структура среды выполнения CLR представлена на картинке.

Свойства доменов:

§ домены изолированы друг от друга. Объекты, созданные в рамках одного домена недоступны из другого домена,

§ CLR способна выгружать домены вместе со всеми сборками, связанными с этими доменами,

§ возможна дополнительная конфигурация и защита доменов,

§ для обмена данными между доменами реализован специальный механизм безопасного доступа (маршалинг).

§ В.NET Framework разработана собственная компонентная модель, элементами которой являются.NET-сборки (.NET-assembly), а для прямой и обратной совместимости с моделью COM/COM+ в CLR встроены механизмы (COM Interop), обеспечивающие доступ к COM-объектам по правилам.NET и к.NET-сборкам по правилам COM. При этом для.NET-приложений не требуется регистрации компонентов в системном реестре Windows.

Для выполнения.NET-приложения достаточно разместить относящиеся к данному приложению сборки в одном каталоге. Если при этом сборка может быть использована в нескольких приложениях, то она размещается и регистрируется с помощью специальной утилиты в GAC (Global Assembly Cache Общем КЭШе сборок).

CTS - Common Type System Стандартная Система Типов. Поддерживается всеми языками платформы. В силу того, что.NET дитя ООП – то речь здесь идёт об элементарных типах, классах, структурах, интерфейсах, делегатах и перечислениях.

Common Type System является важной частью среды выполнения, определяет структуру синтаксических конструкций, способы объявления, использования, и применения ОБЩИХ типов среды выполнения. В CTS сосредоточена основная информация о системе ОБЩИХ ПРЕДОПРЕДЕЛЁННЫХ типов, об их использовании и управлении (правилах преобразования значений). CTS играет важную роль в деле интеграции разноязыких управляемых приложений.

Пространство имён – это способ организации системы типов в единую группу. Существует общая общеязыковая библиотека базовых классов. И концепция пространства имён обеспечивает эффективную организацию и навигацию в этой библиотеке. Вне зависимости от языка программирования доступ к определённым классам обеспечивается за счёт их группировки в рамках общих пространств имён.

Пространство имён Назначение
System
System.Data Для обращения к базам данных
System.Data.Common
System.Data.OleDb
System.Data.SqlClient
System.Collections Классы для работы с контейнерными объектами
System.Diagnostics Классы для трассировки и отладки кода
System.Drawing Классы графической поддержки
System.Drawing.Drawing2D
System.Drawing.Printing
System.IO Поддержка ввода-вывода
System.Net Поддержка передачи данных по сетям
System.Reflection Работа с пользовательскими типами во время выполнения приложения
System.Reflection.Emit
System.Runtime.InteropServices Поддержка взаимодействия с “обычным кодом” – DLL, COM-серверы, удалённый доступ
System.Runtime.Remoting
System.Security Криптография, разрешения
System.Threading Работа с потоками
System.WEB Работа с web-приложениями
System.Windows.Form Работа с элементами интерфейса Windows
System.XML Поддержка данных в формате XML

Выполнение неуправляемых исполняемых модулей (обычные Windows приложения), обеспечивается непосредственно системой Windows. Неуправляемые модули выполняются в среде Windows как “простые” процессы. Единственное требование, которому должны отвечать подобные модули – корректная работа в среде Windows. Они должны “правильно” работать (не вешать систему, не допускать утечек памяти, не блокировать другие процессы и корректно использовать средства самой ОС для работы от имени процессов). То есть, соответствовать наиболее общим правилам работы под Windows.

При этом большинство проблем корректного выполнения неуправляемого модуля (проблемы взаимодействия, выделения и освобождения памяти) являются проблемами разработчиков приложений. Например, известная технология COM является способом организации взаимодействия разнородных компонентов в рамках приложения.

Объект – в широком смысле это область памяти (стеке или куче), выделяемая в процессе выполнения программы для записи каких-либо значений. Характеризуется типом (фиксированным набором свойств, определяющих размер занимаемой области, способ интерпретации значения, диапазон значений, множество действий, допустимых при манипуляциях с объектом) местом расположения в памяти (адресом).

Сборка мусора - механизм, позволяющий CLR определить, когда объект становится недоступен в управляемой памяти программы. При сборке мусора управляемая память освобождается. Для разработчика приложения наличие механизма сборки мусора означает, что он больше не должен заботиться об освобождении памяти. Однако это может потребовать изменения в стиле программирования, например, особое внимание следует уделять процедуре освобождения системных ресурсов. Необходимо реализовать методы, освобождающие системные ресурсы, находящиеся под управлением приложения.

Стек - специальным образом организованная область памяти, предназначенный для временного хранения значений объектов (переменных и констант), для передачи параметров при вызове методов, для сохранения адреса возврата. Управление стеком по сравнению с кучей достаточно просто. Оно основано на изменении значения соответствующего регистра вершины стека. При сокращении размера стека объекты просто теряются.

Программа на C#

Программа – правильно построенная (не вызывающая возражений со стороны C# компилятора) последовательность предложений, на основе которой формируется сборка.

В общем случае, программист создаёт файл, содержащий объявления класов, который подаётся на вход компилятору. Результат компиляции представляется транслятором в виде сборки и определяется предпочтениями программиста. В принципе сборка может быть двух видов:

§ Portable Executable File (PE-файл с расширением.exe), пригоден к непосредственному исполнению CLR,

§ Dynamic Link Library File (DLL-файл с расширением.dll), предназначен для повторного использования как компонент в составе какого-либо приложения.

В любом случае на основе входного кода транслятор строит модуль на IL, манифест, и формирует сборку. В дальнейшем, сборка либо может быть выполнена после JIT компиляции, либо может быть использована в составе других программ.

Является одним из самых востребованных, многофункциональных и активно развивающихся языков программирования на данный момент. С его помощью можно разрабатывать практически любое программное обеспечение, начиная от простых win forms приложений, до крупных клиент-серверных веб-приложений или даже мобильные приложения и компьютерных игры. А работает он на базе платформы.NET Framework. Давайте же разберёмся, что это такое.

Смотрите моё видео на тему платформа.NET Framework и среда выполнения CLR для C#

Язык программирования C# является относительно свежим, но он уже успел заслужить доверие. Релиз первой версии состоялся в феврале 2002 года. Крайней версией языка на момент написания статьи является C# 7.2, которая вышла 16.08.2017.

Синтаксис языка C# как следует из названия входит в семейство Си-подобных языков и похож на другие популярных языки из этой группы (C++, Java). Поэтому, если вы уже знакомы с одним из этих языков, вам будет значительно проще освоить языком программирования C#.

Так как C# является объектно-ориентированным языком, то он поддерживает наследование, полиморфизм, инкапсуляцию, строгую типизацию переменных, перегрузку операторов и другое. Все эти понятия будут нами подробно рассмотрены в последующих статьях. Благодаря использованию парадигмы объектно-ориентированного проектирования с помощью языка программирования можно достаточно легко разрабатывать масштабные и при этом гибкие проекты. При всем этом регулярно выходят новые версии языка C#, добавляя новую функциональность для упрощения жизни разработчика, увеличения скорости разработки, повышения производительности и надежности прилоежния.

Платформа.NET

.NET Framework – это программная платформа от компании Microsoft позволяющая выполнять разработку на различных языках программирования, так как для всех языков используется единая общеязыковая среда исполнения Common Language Runtime (CLR). Таким образом, основными возможностями платформы.NET являются:

  • Кроссплатформенность – .NET Framework поддерживается большинством современных операционных систем Windows, а также есть возможность создавать приложения поддерживаемые Linux системами, и даже мобильные приложения.
  • Мультиязычность – так как исходный код, написанный на используемом языке программирования, транслируется в общеязыковой Common Intermediate Language (CIL) код, появляется возможность вести разработку на любом поддерживаемом языке программирования, и даже использовать различные языки программирования в одном решении. Наиболее популярными поддерживаемыми языками являются C#, VB.NET, C++, F#.
  • Обширная библиотека классов и технологий – существует огромное количество готовых к использованию библиотек для решения необходимых задач. Зачастую совсем не приходится реализовывать низкоуровневую логику работы приложения, достаточно воспользоваться готовым решением, удобно поставляемым через менеджер пакетов nuget. Кроме того, платформа.NET предусматривает легкую разработку практически любого типа необходимого программного обеспечения.

Управляемый и неуправляемый код. JIT-компиляция

Управляемый код (managed code) – это код управляемый общеязыковой средой CLR. Это означает, что что управляющая среда имеет возможность приостановить выполнение приложения и получить специфическую информацию о состоянии приложения в любой момент его исполнения. Исходный код используемого языка программирования транслируется в управляемый код CIL (его еще называют высокоуровневым ассемблером).

После создания библиотеки классов или приложения, исходный код продолжает храниться на языке CIL. А при запуске приложения или обращении к библиотеке выполняется Just-In-Time (JIT ) компиляция приложения в машинный код, специфичный именно для того окружения, на котором осуществляется исполнение приложения. При этом важной особенностью является то, что выполняется компиляция только той части приложения или библиотеки, к которой выполняется обращение (ну и связей естественно). Это позволяет увеличить производительность работы системы и экономить ресурсы.

Неуправляемый код (unmanaged code) – это код, транслируемый сразу в машинный исполняемый код и исполняется операционной системой напрямую.

Кроме того, рекомендую прочитать статью . А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал . Там еще больше полезного и интересного для программистов.

Поскольку.NET Framework – это мощнейшая платформа для разработки приложений, она дает возможность разрабатывать приложения совершенно различного типа.

· настольные приложения (приложения, которые запускаются на локальном компьютере пользователя);

· веб-приложения (приложения, которые работают в рамках веб-сервера и доступны пользователю через браузер в рамках протокола HTTP/HTTPS);

· веб-приложения с богатым пользовательским интерфейсом (приложения, которые доставляются пользователю по протоколу HTTP/HTTPS в рамках браузера и исполняются на клиентской стороне);

· веб-сервисы (программные код, который выполняется на стороне сервера и может быть вызван с клиента для получения каких-либо данных или выполнения операции);

· мобильные приложения (приложения, которые выполняются на мобильных устройствах).

Для каждого из приведенных типов приложений в составе.NET Framework существуют соответствующие технологии, которые позволяют создавать приложения. Кроме того, .NET Framework содержит общие библиотеки, которые можно использовать в разных типах приложениях. К таким библиотекам можно отнести библиотеки:

· для работы со строками;

· для работы с математическими функциями;

· для работы с графикой;

· доступа к данным;

· для работы с файлами и другими операциями ввода-вывода;

· для выполнения криптографических операций;

· для организации синхронизации данных между источниками данных;

· и огромное количество других библиотек.

Давайте обзорно рассмотрим каждый тип приложений. Как уже было отмечено выше, для каждого из типов приложений в составе платформы.NET Framework существуют специальные шаблоны проектов.

Настольные приложения отличаются тем, что запускаются непосредственно на компьютере пользователя. Это – наиболее распространенный тип приложений. Настольные приложения обычно имеют доступ к ресурсам компьютера пользователя, таким какжесткий диск , звуковое оборудование и т.д. К достоинствам такого типа приложений можно отнести интерактивность пользовательского интерфейса и возможность работы приложения вне зависимости от подключения к сети Интернет и другим ресурсам. Однако, для работы таких приложений их необходимо устанавливать на локальный компьютер .

Настольные приложения можно разделить на три вида – оконные приложения, консольные приложения и службы Windows . Оконные приложения обладают графическим интерфейсом. Консольные приложения обычно имеют вид командной строки, аинтерфейс таких приложений является текстовым, а не графическим. Наконец, службы Windows вовсе не имеют пользовательского интерфейса, а работают в фоновом режиме.

Для построения приложений с оконным графическим интерфейсом в рамках платформы.NET Framework могут использоваться технологии Windows Forms (доступно начиная с.NET Framework 1.0) и Windows Presentation Foundation (доступно начиная с.NET Framework 3.0). Последняя технология является более новой и перспективной.


Веб-приложения отличаются от настольных тем, что работают удаленно на веб-сервере. Пользователь использует возможности веб-приложений посредством браузера и протокола HTTP /HTTPS. Преимуществом этого типа приложений является то, что нет никакой необходимости устанавливать их на компьютер каждого пользователя – приложение нужно установить на веб-сервер , после чего оно становится доступным для всех пользователей. Однако, недостатком таких приложений является ограниченные возможности построения пользовательских интерфейсов. Это происходит из-за того, что пользовательский интерфейс строится на основе форматов HTML , CSS и JavaScript, которые являются достаточно ограниченными. Поэтому функциональность пользовательских интерфейсов обычно является достаточно ограниченной.

Поскольку веб-приложения обладают серьезным недостатком – ограниченными возможностями по формированию интерфейса пользователя – появился новый тип приложений, который называется богатые интернет-приложения или интернет-приложения с богатым пользовательским интерфейсом (Rich Internet Applications, RIA) . Идеология этих приложений состоит в том, что в браузер интегрируется специальное дополнение (plugin), которое способно отображать дополнительный тип содержимого . После этого, когда пользователь отрывает страницу в браузере, на сторону клиента передается программный код, который работает в рамках этого дополнения. Поскольку в этом случае весь код отрабатывает на стороне клиента, у разработчиков появляется больше возможностей по формированию пользовательских интерфейсов.

Для построения подобного типа приложений существует несколько технологий. Одна из наиболее известных технологий – это технология Adobe Flash . Кроме того, существует также технология Microsoft Silverlight, которая позволяет наиболее удобно интегрироваться с остальными технологиями в рамках.NET Framework.

Другим типом приложений являются сервисы (или веб-сервисы). Сервисы – это некий программный код, который расположен на сервере и запускается по запросу от пользователя. Например, можно создать набор сервисов по работе с данными из базы данных , хранящейся на сервере. Обычно, другие типы приложений (настольные приложения, веб-приложения и т.д.) обращаются к сервисам с целью выполнить какую-либо операцию на сервере или получить с сервера данные.

В рамках платформы.NET Framework существует ряд технологий, которые позволяют создавать сервисы. Наиболее старой технологией является ASP .NET Web Services. Она позволяет создавать простые веб-сервисы, которые работают по протоколуHTTP /HTTPS. Дальнейшим развитием стала технология Windows Communication Foundation (WCF). Эта платформа является наиболее мощным и гибким инструментом, которая поддерживает различные типы каналов (HTTP , TCP , именованные каналы и др.) и существенно расширяет возможности разработчика по созданию сервисов.

Также существуют дополнительные ответвления проекта WCF – это WCF Syndication Extensions (WCF REST) и ADO .NET Data Services. Эти проекты разработаны для того, чтобы можно было удобно строить сервисы доступа к данным.

Наконец, последним типом приложений являются мобильные приложения . Мобильные приложения работают в рамках мобильных устройств на базе операционной системы Windows Mobile . Для мобильных устройств также существует реализация подмножества возможностей.NET Framework, которая называется.NET Compact Framework.

Таким образом, весь спектр технологий в рамках платформы.NET Framework можно представить следующей схемой.

Понятие среды

Определение понятия среды зависит от теоретических концепций. Все определения можно свести к следующим основным идеям:

* среда -- это то, что нас окружает, все, что не мы, условия, которые влияют на нас. Дефиниции данного типа ближе к биологическому пониманию формирующей роли среды;

* среда -- это некоторое соотношение между нами и окружением.

* среда это элемент сверхсистемы. Вильден сформулировал данный подход следующим образом: "Среда -- открытая система, связанная с сверхсистемой. Между ними существует обмен материей, энергией и информацией".

Д. Ватсон выделил пять классов определений, данных среде:

1. среда как процесс;

2. среда как поле активности человека;

3. среда как поле семантики;

4. среда как ресурс;

5. среда как способ стратификации общества.

В ряде исследований, посвященных среде, обсуждается проблема детерминизма. Собственно говоря, можно рассматривать семь вариантов взаимодействия между человеком и средой, и, видимо, следует считать, что все они имеют место быть в различных ситуациях:

1. средовой детерминизм -- однонаправленная причинно-следственная детерминация. Есть два варианта: линейная, жесткая, зависимость и вероятностная зависимость. Последняя означает, что одна из рассматриваемых переменных с определенной вероятностью порождает другую, либо что в основе их лежит общий фактор. Основной вывод из такого рода связи заключается в том, что в следствии нет ничего того, что не заключается в причине;

2. человек формирует среду;

3. оба способа детерминации существуют одновременно;

4. взаимопричинная детерминация -- происходит взаимодействие между средой и человеком. Возможные формы: уравновешивающая детерминация (гомеостаз), неустойчивое равновесие;

5. взаимодействие носит характер борьбы;

6. среда и человек представляют единую систему;

7. случайная детерминация, предыдущее событие никак не влияет на последующее, но общий результат может быть предсказан по законам вероятности. (14, с.8)

Термином "пространственная среда" следует обозначать совокупность пространственно-предметных свойств и отношений окружающей среды, которая может иметь естественно-природный (лес, море, горы, степь, растения, животные и т.п.) или антропогенный характер: городская среда, парковый ландшафт, архитектурная среда, виртуальная (пространство, представленное на экране компьютера) и т.д.

Целесообразно различать следующие типы пространственной среды:

* природная (естественный ландшафт, растения, животные);

* антропогенная (городская, архитектурная, школьная, жилищная). В определенном смысле о ней можно сказать, что это предметная среда, так как пространство в этом случае определяется совокупностью предметных и межпредметных отношений. Поэтому, говоря о пространственной среде подобного типа, целесообразнее говорить о пространственно-предметной среде. Если речь идет об антропогенной пространственно-предметной среде, то с точки зрения психологии восприятия и психологии деятельности важно отметить, что ее пространственность не существует сама по себе, абстрактно

* экологическая среда обитания, обеспечивающая каждому виду живых существ свой комплекс возможностей для жизнедеятельности.

* информационно-виртуальная, представленная на экране дисплея (компьютерные и видеоигры, интернет-среда, тренажеры). Ее особенность заключается в том, что оператор, работающий с таким пространством, имеет возможность не только его наблюдать, воспринимать и даже действовать в нем, но, что более важно, непосредственно изменять его пространственные параметры, характеристики и отношения.

Существует другая классификация, согласно которой можно выделить:

Первичную среду (среду, в которой человек проводит значительную часть времени, лично знаком с окружением и выполняет множество жизненно важных функций, например жилое помещение);

Вторичную среду (среда, в которой встречи с людьми кратковременны, анонимны и не имеют последствий, например места отдыха).

В среде выделяется четыре подсистемы:

1) природная среда - общий фон общества - состояние атмосферы, воды, состав поверхности земли, структура ландшафта, растительный и животный мир, климат, плотность населения;

2) среда "второй природы" - модификации природной среды, преобразованной людьми: угодья, дороги, зеленые насаждения, домашние животные, культурные растения;

3) "третья природа" - искусственный мир, созданный человеком, не имеющий аналогов в естественном мире, т.е. "очеловеченная природа": асфальт, бетон городов, пространство жизни и работы, транспорт, технические объекты, культурно- архитектурная среда;

4) социальная среда - своеобразная интеграция трех предшествующих сред, что дает в итоге определенное качество жизни, проявляющееся, например, в культурной оседлости (1, с.350)

Жизненная среда города - социокультурно детерминированное пространство-время в котором протекает жизнедеятельность человека. Она обладает определённой структурой, состоящей из объектных (территориальных, организационных, информационных, социально-групповых и др.) и субъектных (личностных значений и смыслов, установок, мотивов и интенций и др.) элементов - всех жизненных стратегий и биографий, создающих континуум сосуществования, взаимодействия, коммуникации.

Удовлетворённость или неудовлетворённость жизнью, успешность или не успешность самореализации личности, жизненный комфорт зависит от многих обстоятельств, в том числе и от той среды обитания, в которой непосредственно находится горожанин - от городского ландшафта, создающегося руками, поступками, эмоциями и делами как проживающих на данной территории, так и тех, кто организует и управляет жизнью территории. Совокупность жизненных стратегий (осознанных и не вполне) объективируется и опредмечивается - возникает среда - со своим устройством (обустройством жизни), с совокупностью специфических ситуаций разного уровня, набором проблем, качеством коммуникации. (18)

Среда обитания имеет два измерения: территориальное и пространственное.

Территория - совокупность объектных аспектов жизненной среды, места жизни человека как психофизического, индивидуального существа.

Пространство - совокупность субъектных аспектов жизненной среды - место жизни, существования человека как личности, индивидуальности в её социальном, культурном (мировоззренческом, ценностном и т.п.), коммуникативном, ментальном (личностно-историческом), метафизическом (идеально-фантастическом) измерениях. Личности, как субъекты жизненных стратегий, живут в разных измерениях пространства жизнедеятельности: у каждого своя жизнь. Но траектории жизненного пути пересекаются. Одно место социокультурного пространства может быть "населено" больше, другое - меньше. Пространство жизни обладает качественными характеристиками, совокупность которых создаёт колорит места через совокупность специфических ситуаций и проблем: с одной стороны конкретных территорий, с другой стороны - конкретных людей. Специфика конкретного фрагмента городской среды обусловлена как специфической ситуацией территории, так и совокупностью специфических ситуаций людей, проживающих на данной территории. (24)

Социокультурное пространство, в котором человек живёт как творец собственной судьбы, преломляет, детерминирует восприятие и территории, и самого себя, оказывает влияние на поведение, на реагирование на внешнюю ситуацию (в том числе и на физические параметры), на проживающих рядом. Образ территории и образ пространства сливаются в образ места жизни. Личностные проблемы и проблемы территории проживания пересекаются и взаимопреломляются. Описание и анализ социокультурного пространства совокупности проживающих в данном месте - социологическая карта местности, на которую нанесены значимые аспекты, параметры, проблемы конкретной ситуации конкретной территории и конкретных людей.

Несомненно, что по-разному скомпонованная и созданная человеком среда неизбежно влияет на психику, поведение, принятие решения, восприятие, движение и понимание пространства. В действиях разных людей в одной и той же среде есть очень много сходства. Структура среды воздействует на психику и поведение людей консервативно: действие продолжается длительное время, а индивидуальность отдельных действующих лиц иногда даже может заметно не проявляться. Одна и та же среда характером своей структуры как бы предписывает нормы, образ поведения, сходную реакцию. Культурное наследие общества и влияние общественных факторов вписываются в физические координаты созданной человеком искусственной среды и определяют поведение людей независимо от психического развития индивидов. (6, с173)

М. Черноушек определяет семь видов информации, которые характеризуют следующие ситуации восприятия окружающей среды как целого:

1. Среда не имеет определенных, твердо фиксированных рамок во времени и пространстве.

2. Среда воздействует на все чувства, и информацию о среде мы получаем из сочетания данных всех органов.

3. Среда дает не только главную, но и периферийную информацию.

4. Среда содержит всегда больше информации, чем мы способны зарегистрировать и понять.

5. Среда воспринимается в тесной связи с практической деятельностью; восприятие связано с действием и наоборот.

6. Любая среда наряду с физическими и химическими особенностями обладает психологическими и символическими значениями.

7. Окружающая среда воздействует как единое целое.

От соприкосновения со средой у людей постоянно возникают всевозможные чувства. Формируют их следующие факторы:

1. Уровень стресса (шум, загрязнение, перенаселенность, перенасыщенность импульсами).

2. Социальные качества среды (роль физической среды в развитии или подавлении взаимодействий социального характера).

3. Ориентация и подвижность (как горожане используют город в соответствии со своими "образами" и "представлениями" о среде обитания).

4. Наполненность среды (эстетический уровень импульсов, которые способствуют удовлетворению потребностей и создают чувство удовлетворенности).

5. Культура и отдых (как город выполняет задачи в интеллектуальной, культурной, спортивной и образовательной сферах).

6. Возможности принятия решений (как горожане воспринимают отдельные решения об уровне развития среды обитания и в какой степени они активно участвуют в принятии таких решений). (25)

Среда и эмоции

С позиций средовой психологии человек находится в постоянном поле взаимодействия с окружающей средой, что вызывает у него, благодаря наличию генерализованных реакций организма, определенный эмоциональный фон. В психологии известно, что любое восприятие сопровождается чувственным тоном, что бы ни было объектом нашего восприятия -- линия, цветовое пятно, предмет, человек или окружающая среда. Сам тон может быть определен биологически или связан с неким нашим прошлым опытом взаимодействия с объектом. В 20-е годы прошлого века Лундхольм исследовал чувственный тон линий. Печаль представляется большими опускающимися синусоидами, веселость -- маленькими направленными вверх линиями, доброта -- большими горизонтально направленными кривыми. А. А. Барабанов анализировал эмоциональное воздействие объемно-пространственных композиций храмов, рассматривая линии, формы и фигуры зданий как эмоционально-эстетические знаки, несущие определенное символическое значение.

Чарльз Осгуд исследовал эмоциональные реакции на различные эстетические объекты. Вместе с соавторами он создал методику, позволяющую измерить и сравнить между собой эмоциональное воздействие любых объектов. Эта методика названа семантическим дифференциалом (СД). В качестве экспериментальных стимулов Ч. Осгуд использовал картины, предлагая испытуемым придумывать пары антонимов для их оценки. Обычно пятьдесят человек испытуемых оценивало пятьдесят картин. После математической обработки шкалы, близкие по смыслу, отбрасываются, и остается порядка 20 пар полярных прилагательных. К полученным шкалам был применен факторный анализ. В результате было выделено три фактора, которые Ч. Осгуд интерпретировал как "оценка", "сила", "активность".

Фактор оценки:

Приятный - Неприятный

Красивый - Некрасивый

Чистый - Грязный

Добрый - Жестокий

Фактор силы:

Властный - Мягкий

Сильный - Слабый

Массивный - Миниатюрный

Прочный - Непрочный

Фактор активности:

Возбуждающий - Релаксирующий

Быстрый - Медленный

Монотонный - Резкий

Энергичный - Вялый

В дальнейшем оказалось, что независимо от того, какой стимул оценивается -- картины, понятия, звуки, цвета, здания -- три этих основных фактора остаются. Полученные шкалы уже можно использовать как инструмент для измерения эмоционального воздействия исследуемых объектов. Обычно каждая шкала включает семь делений, испытуемые оценивают объект по каждой из шкал. По полученным точкам на каждой из шкал можно построить профиль эмоционального воздействия объекта. (27, с.15)