• Типы приложений. Платформа Microsoft.NET. Обзор архитектуры и возможностей Net framework сущность основное назначение компоненты преимущества

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

    NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows , Unix и вообще любая ОС ( по заверению разработчиков), и состоит из ряда компонентов. Так, . NET Framework включает в себя:

    1. Четыре официальных языка: С#, VB.NET, Managed C++ и JScript .NET.
    2. Общеязыковую объектно-ориентированную среду выполнения CLR (Common Language Runtime), совместно используемую этими языками для создания приложений.
    3. Ряд связанных между собой библиотек классов под общим именем FCL (Framework Class Library ).

    Основным компонентом платформы. NET Framework является общеязыковая среда выполнения программ CLR . Название среды – "общеязыковая среда выполнения" - говорит само за себя: это исполняющая среда, которая подходит для различных языков программирования. К функциям CLR относятся:

    1. двухшаговая компиляция: преобразование программы, написанной на одном из языков программирования в управляемый код на промежуточном языке ( Microsoft Intermediate Language , MSIL , или просто IL), а затем преобразование IL-кода в машинный код конкретного процессора, который выполняется с помощью виртуальной машины или JIT-компилятора (Just In Time compiler - компилирование точно к нужному моменту);
    2. управление кодом: загрузка и выполнение уже готового IL-кода с помощью JIT-компилятора;
    3. осуществление доступа к метаданным с целью проверки безопасности кода ;
    4. управление памятью при размещении объектов с помощью сборщика мусора ( Garbage Collector );
    5. обработка исключений и исключительных ситуаций, включая межъязыковые исключения;
    6. осуществление взаимодействия между управляемым кодом (код, созданный для СLR) и неуправляемым кодом;
    7. поддержка сервисов для разработки разнотипных приложений.

    Следующим компонентом. Net Framework является FCL – библиотека классов платформы. Эта библиотека разбита на несколько модулей таким образом, что имеется возможность использовать ту или иную ее часть в зависимости от требуемых результатов. Так, например, в одном из модулей содержатся "кирпичики", из которых можно построить Windows -приложения, в другом - "кирпичики", необходимые для организации работы в сети и т.д.

    Часть FCL посвящена описанию базисных типов . Тип - это способ представления данных; определение наиболее фундаментальных из них облегчает совместное использование языков программирования с помощью. NET Framework. Все вместе это называется Common Type System ( CTS - единая система типов ).

    Кроме того, библиотека FCL включает в себя Common Language Specification ( CLS – общая языковая спецификация), которая устанавливает: основные правила языковой интеграции. Спецификация CLS определяет минимальные требования, предъявляемые к языку платформы. NET . Компиляторы, удовлетворяющие этой спецификации, создают объекты, способные взаимодействовать друг с другом. Поэтому любой язык, соответствующий требованиям CLS , может использовать все возможности библиотеки FCL .

    Как уже отмечалось, основными языками, предназначенными для платформы. NET Framework, являются С#, VB. NET , Managed C++ и JScript . NET . Для данных языков Microsoft предлагает собственные компиляторы, переводящие программу в IL-код, который выполняется JIT-компилятором среды CLR . Кроме Microsoft, еще несколько компаний и академических организаций создали свои собственные компиляторы, генерирующие код, работающий в CLR . На сегодняшний момент известны компиляторы для Pascal , Cobol, Lisp , Perl, Prolog и т.д. Это означает, что можно написать программу, например, на языке Pascal , а затем, воспользовавшись соответствующим компилятором, создать управляемый код , который будет работать в среде CLR .

    Понятия приложения, проекта, решения

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

    1. Консольные приложения позволяют выполнять вывод на "консоль", то есть в окно командного процессора.
    2. Windows-приложения, использующие элементы интерфейса Windows, включая формы, кнопки, флажки и т.д.
    3. Web-приложения представляют собой web-страницы, которые могут просматриваться любым web-браузером.
    4. Web-сервисы представляют собой распределенные приложения, которые позволяют обмениваться по Интернету практически любыми данными с использованием единого синтаксиса независимо от того, какой язык программирования применялся при создании web-службы и на какой системе она размещена.

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

    Удобной средой разработки приложений является Visual Studio .Net.

    Среда разработки Visual Studio .Net

    В данном курсе мы будем изучать язык С#. Знакомство с языком начнем с разработки консольных приложений. В качестве среды разработки мы будем использовать Visual Studio . Net (VS).

    Можно создавать файлы с исходным кодом на С# с помощью обычного текстового редактора, например, Блокнота, и компилировать их в управляемые модули с помощью компилятора командной строки, который является составной частью. NET Framework. Однако наиболее удобно для этих целей использовать VS, потому что:

    1. VS автоматически выполняет все шаги, необходимые для компиляции исходного кода.
    2. Текстовый редактор VS настроен для работы с теми языками, которые поддерживаются VS, например С#, поэтому он может интеллектуально обнаруживать ошибки и подсказывать в процессе ввода, какой именно код необходим.
    3. В состав VS входят программы, позволяющие создавать Windows- и Web-приложения путем простого перетаскивания мышью элементов пользовательского интерфейса.
    4. Многие типы проектов, создание которых возможно на С#, могут разрабатываться на основе "каркасного" кода, заранее включаемого в программу. Вместо того чтобы каждый раз начинать с нуля, VS позволяет использовать уже имеющиеся файлы с исходным кодом, что уменьшает временные затраты на создание проекта.

    Создание первого проекта

    Для создания проекта следует запустить VS, а затем в главном меню VS выбрать команду File – New - Project. После чего откроется диалоговое меню New Project (см. рис.1.1).


    Рис. 1.1.

    В поле Project types следует выбрать Visual C# , в поле Templates Console Application .

    В строчке Name введите имя приложения Hello . Обратите внимание на то, что это же имя появится в строчке Solution Name . Уберите галочку в поле Create directory for Application (пока мы создаем простое приложение, и нам нет необходимости усложнять его структуру).

    В строке Location определите положение на диске, куда нужно сохранять ваш проект. И нажмите кнопку OK . Примерный вид экрана изображен на рис 1.2


    Рис. 1.2.

    В правой верхней части располагается окно управления проектом Solution Explorer View - Solution Explorer . В этом окне перечислены все ресурсы, входящие в проект:

    1. AssemblyInfo.cs – информация о сборке .

      Компилятор в качестве результата своего выполнения создает так называемую сборку – файл с расширением exe или dll, который содержит IL-код и метаданные.

    2. System , System.Data , System.Xml – ссылки на стандартные библиотеки.
    3. Program.cs - текст программы на языке C#.

    Замечание . В других версиях VS сюда же включается файл с расширением ico, отвечающий за вид ярлыка приложения.

    В правой нижней части экрана располагается окно свойств Properties . Если оно закрыто, то его можно включить командой View - Properties . В этом окне отображаются важнейшие характеристики выделенного элемента.

    Основное пространство экрана занимает окно редактора, в котором располагается текст программы, созданный средой автоматически. Текст представляет собой каркас, в который программист будет добавлять нужный код. При этом зарезервированные слова отображаются синим цветом, комментарии – зеленым, основной текст – черным.

    Текст структурирован. Щелкнув на знак минус, мы скроем блок кода, щелкнув на знаке плюс – откроем.

    Откроем папку, содержащую проект, и рассмотрим ее структуру (см. рис.1.3). Файлы, выделенные жирным шрифтом, появятся только после компиляции.


    Рис. 1.3.

    На данном этапе особый интерес для нас будут представлять следующие файлы:

    1. Hello.sln – основной файл, отвечающий за весь проект. Если необходимо открыть проект для редактирования, то нужно выбрать именно этот файл. Остальные файлы откроются автоматически.
    2. Program.cs – файл, в котором содержится исходный код - код, написанный на языке С#. Именно с этим файлом мы и будем непосредственно работать.
    3. Hello.exe – файл, в котором содержатся сгенерированный IL-код и метаданные проекта. Другими словами, этот файл и есть готовое приложение, которое может выполняться на любом компьютере, на котором установлена платформа.Net.

    Теперь рассмотрим сам текст программы.

    using System – это директива, которая разрешает использовать имена стандартных классов из пространства имен System непосредственно без указания имени пространства, в котором они были определены.

    Ключевое слово namespace создает для проекта свое собственное пространство имен, которое по умолчанию называется именем проекта. В нашем случае пространство имен называется Hello. Однако программист вправе указать другое имя. Пространство имен ограничивает область применения имен, делая его осмысленным только в рамках данного пространства. Это сделано для того, чтобы можно было давать имена программным объектам, не заботясь о том, что они совпадут с именами в других приложениях. Таким образом, пространства имен позволяют избегать конфликта имен программных объектов, что особенно важно при взаимодействии приложений.

    С# - объектно-ориентированный язык, поэтому написанная на нем программа будет представлять собой совокупность взаимодействующих между собой классов. Автоматически был создан класс с именем Program (в других версиях среды может создаваться класс с именем Class1 ).

    Данный класс содержит только один метод - метод Main() . Метод Main() является точкой входа в программу, т.е. именно с данного метода начнется выполнение приложения. Каждая программа на языке С# должна иметь метод Main () .

    Замечание .Технически возможно иметь несколько методов Main() в одной программе, в этом случае потребуется с помощью параметра командной строки сообщить компилятору С#, какой именно метод Main() является точкой входа в программу.

    Debug-Start Debugging .Если программа выполнена без ошибок, то сообщение выведется в консольное окно, которое мелькнет и быстро закроется. Чтобы просмотреть сообщение в нормальном режиме нужно нажать клавиши Ctrl+F5 или выполнить команду Debug-Start Without Debugging .В нашем случае откроется следующее консольное окно:

    Если код программы будет содержать ошибки, например, пропущена точка с запятой после команды вывода, то после нажатия клавиши F5 откроется диалоговое окно, в котором выведется сообщение о том, что обнаружена ошибка, и вопрос, продолжать ли работу дальше. Если вы ответите Yes , то будет выполнена предыдущая удачно скомпилированная версия программы. Иначе процесс будет остановлен и управление передано окну списка ошибок Error List .

    Задание . Измените текст кода так, чтобы на экран выводилось сообщение: Ура!!!Сегодня информатика!! !

    Один из главных принципов.NET можно выразить так: "Изменяйте все, что хотите, используя любые средства". Платформа.NET - это совершенно новая модель для создания приложений для Windows. Перечислим кратко основные положения.NET.

    • Все возможности взаимодействия с существующим кодом. Двоичные компоненты СОМ отлично работают вместе с двоичными файлами.NET.
    • Полное и абсолютное межъязыковое взаимодействие. В отличие от классического СОМ, в.NET поддерживаются межъязыковое наследование, межъязыковая обработка исключений и межъязыковая отладка.
    • Общая среда выполнения для любых приложений.NET вне зависимости от того, на каких языках они были созданы. И что важно, для всех языков используется один и тот же набор встроенных типов данных.
    • Библиотека базовых классов, которая скрывает все сложности, связанные с использованием вызовов API, и предлагает законченную объектную модель для всех языков программирования, поддерживающих.NET.
    • О запутанных конструкциях СОМ можно забыть! Интерфейсы IClassFactory , IUnknown , код IDL и вариантные типы данных отсутствуют в программах.NET.
    • Действительное упрощение процесса развертывания приложения. В среде.NET не надо регистрировать типы в системном реестре. Более того, .NET позволяет разным версиям одного и того же модуля DLL мирно сосуществовать на одном компьютере.

    Достоинства

    1. Вся платформа.NET основана на единой объектно-ориентированной модели. Что это значит? Дело в том, что все сервисы, интерфейсы и объекты, которые платформа предоставляет разработчику объединены в единую иерархию классов. Другими словами, все, что может вам потребоваться при создании приложений под платформу.NET будет всегда у вас под рукой. Причем, все это сгруппировано очень удобно и интуитивно понятно.
    2. Приложение, написанное на любом.NET-совместимом языке является межплатформенным (в идеале). Почему в идеале? Дело в том, что приложение, написанное, скажем, на том же C#, не зависит от платформы, на которой будет выполняться, но зато зависит от наличия платформы.NET. Но согласитесь, что намного легче один раз портировать архитектуру.NET под какую либо систему, после чего без проблем запускать абсолютно любое.NET приложение. Но в настоящий момент платформа.NET портирована только на семейство операционных систем Windows , в том числе на мобильные системы MS Windows mobile.
    3. В состав платформы.NET входит т.н. "сборщик мусора", который освобождает ресурсы. Таким образом, приложения защищены от утечки памяти и от необходимости освобождать ресурсы. Это делает программирование более легким и более безопасным.
    4. Приложения.NET используют метаданные, что позволяет им не пользоваться системным реестром Windows.
    5. Любое.NET приложение является автономным, в том смысле, что не зависит от других программ, в частности от ОС. Установка приложения написанного на одном из.NET языках может быть произведена обычным копированием файлов (исключение составляет создание ярлыков в меня "Пуск" и др. местах).
    6. Приложения.NET используют безопасные типы, что повышает их надежность, совместимость и межплатформенность.
    7. Приложение, написанное на любом.NET языке взаимодействует с единой моделью обработки ошибок, что значительно упрощает этот нудный процесс.
    8. Приложения написанные на разных могут легко взаимодействовать. Например, серверная часть может быть написана на C#, а клиентская на Visual Basic.
    9. .NET приложения могут быть сертифицированы на безопасность. Это является особенность промежуточного кода, в который преобразуются все.NET приложения.
    10. Абсолютно все ошибки обрабатываются механизмом исключительных ситуаций. Это позволяет избежать разногласия, который иногда возникал при программировании под Win32.
    11. Повторное использование кода стало еще удобнее. Это связано с тем, что промежуточный язык MSIL не зависит от языка программирования. Например, вы можете написать программу на C#, а патч к ней писать уже, скажем, на J#.

    Недостатки

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

    1. Как это часто бывает, за удобство нужно платить скоростью, так и случилось с.NET. Приложения, написанные под платформу.NET работают медленнее, это факт. В некоторых случаях скорость может упасть на 15%, что иногда является неприемлемым (например, при создании 3D приложений, где бьются за каждый FPS). Задержки в выполнении связаны с промежуточным языком MSIL, ведь для того чтобы его скомпилировать в выполняемый файл тоже нужно время. Разумеется, что приложение компилируется не все сразу, а по частям, равномерно при работе программы.
    2. Не на любом языке можно создавать.NET приложения. Дело в том, что первоначально.NET "затачивался" под C/JAVA-подобные языки. Это породило некоторые трудности с созданием.NET компиляторов для других языков (особенно экзотических и узкоспециализированных). В результате этого некоторые функции пришлось решать нетривиальными способами, что отрицательно сказалось на производительности. Но постепенно данный недостаток сходит на нет, т.к. разработчики компиляторов поняли важность платформы.NET и стараются сделать для своих языков достойные инструменты.
    3. Необходимо наличие библиотеки FrameWork. Данный недостаток устранен с выходом Windows Vista, т.к. данная библиотека встроена в систему по умолчанию.

    Можно обратить внимание на то, что достоинств у.NET в сумме получилось больше, чем недостатков. Разумеется, это не является отражением реальности. Это говорит о хорошей маркетинговой кампании проведенной корпорацией Microsoft.

    C#
  • Common Language Runtime ) и библиотеку классов...
  • Платформа.NET Framework и спецификация CTS
    Язык C# и средства его поддержки в настоящее время связаны с платформой.NET Framework, разработанной Microsoft. Названная платформа (см. ) включает: общеязыковую исполняющую среду (CLR - Common Language Runtime Framework Class Library). Следует заметить,...
    (ПРОГРАММИРОВАНИЕ. БАЗОВЫЙ КУРС С#)
  • Установка платформы.NET Framework и Visual Studio
    В среде ОС Windows 7 и 8 платформа.NET уже имеется и ничего устанавливать нс требуется. Для разработки приложений в платформе.NET нужно установить систему разработки Visual C# 2012 (или 2013) Express Edition – бесплатная версия среды разработки Visual Studio (сокращенная, но обладающая практически...
    (Объектно-ориентированное программирование)
  • ТИПЫ C# И ТИПЫ ПЛАТФОРМЫ.NET FRAMEWORK
    Язык C# и средства его поддержки в настоящее время связаны с платформой.NET Framework, разработанной Microsoft. Названная платформа (см. ) включает: общеязыковую исполняющую среду (CLR - Common Language Runtime ) и библиотеку классов...
    (ПРОГРАММИРОВАНИЕ. БАЗОВЫЙ КУРС С#)
  • Платформа.NET Framework и спецификация CTS
    Язык C# и средства его поддержки в настоящее время связаны с платформой.NET Framework, разработанной Microsoft. Названная платформа (см. ) включает: общеязыковую исполняющую среду (CLR - Common Language Runtime ) и библиотеку классов (FCL - Framework Class Library). Следует заметить,...
    (ПРОГРАММИРОВАНИЕ. БАЗОВЫЙ КУРС С#)
  • NET Framework служит средой для поддержки, разработки и выполнения распределенных приложений, которые базируются на компонентах (элементах управления).

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

    NET Framework обеспечивает:

    • совместное использование разных языков программирования;
    • безопасность и переносимость программ;
    • общую модель программирования на базе платформы Windows.

    2. Какие основные составляющие .NET Framework ?

    С точки зрения программирования, .NET Framework состоит из двух основных составляющих:

    • общеязыковая исполнительная среда CLR (Common Language Runtime );
    • библиотека базовых классов.

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

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

    3. Какой принцип действия общеязыковой среды выполнения CLR (Common Language Runtime )?

    Общеязыковая среда выполнения CLR управляет выполнением кода .NET .

    После компиляции программы на C# (или другом языке) создается файл, который содержит особого рода псевдокод или байт-код (а не исполнительный файл, как было раньше). Этот псевдокод называется (MSIL ) или Common Intermediate Language (CIL ). Этот псевдокод есть промежуточным языком Microsoft .

    Основное назначение CLR – превратить промежуточный код MSIL в исполнительный код в процессе выполнения программы.

    Любая программа, которая скомпилирована в псевдокод MSIL , может быть выполнена в любой среде, которая содержит реализацию CLR . Это обеспечивает переносность программ в среде .NET Framework .

    Рис. 1. Процесс преобразования исходного кода в код на языке MSIL (CIL или IL ) и создание файла сборки (*.dll или *.exe )

    После этого, псевдокод превращается в исполняемый код. Это осуществляет JIT -компилятор. JIT (Just-in-time ) -компиляция – это компиляция на «лету».

    Исполнительная среда CLR отвечает за определение места размещения сборки (assembly).

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

    После этого CLR размещает в памяти считанный из сборки тип.

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

    Последним происходит выполнение запрашиваемого программного кода.

    4. Что такое промежуточный язык MSIL (Microsoft Intermediate Language ) или CIL (Common Intermediate Language )?

    Сперва промежуточный язык псевдокода назывался Microsoft Intermediate Language (MSIL ). Позднее (в последних версиях .NET ) это название было изменено на Common Intermediate Language (CIL — общий промежуточный язык). Аббревиатуры MSIL , CIL и IL (Intermediate Language )означают одно и то же.

    Промежуточный язык CIL (или MSIL ) формируется после компиляции программы на некотором языке программирования, который поддерживает платформу .NET Framework .

    MSIL есть псевдокодом. MSIL определяет набор инструкций, которые:

    • могут переноситься на разные платформы;
    • не зависят от конкретного процессора.

    Фактически, MSIL – это язык переносного ассемблера

    5. Что такое сборка (assembly) с точки зрения технологии .NET ?

    Сборки – это файлы с расширениями *.dll или *.exe , которые содержат независимые от платформы .NET инструкции на промежуточном языке (Intermediate Language – IL ), а также метаданные типов.

    Сборка создается с помощью .NET компилятора. Сборка – это большой двоичный объект.

    Сборка предназначена для сохранения пространств имен (namespaces ). Пространства имен содержат типы. Типами могут быть классы, делегаты, интерфейсы, перечисления, структуры.

    Сборка может содержать любое количество пространств имен. Любое пространство имен может содержать любое количество типов (классов, интерфейсов, структур, перечислений, делегатов).

    6. Что размещается в сборках?

    В сборках размещается CIL -код (MSIL -код или IL -код) и метаданные.

    CIL -код компилируется под конкретную платформу только тогда, если происходит обращение к нему из исполняющей среды .NET .

    Метаданные детально описывают особенности каждого типа, который есть внутри данной двоичной .NET единицы.

    Например , при создании приложения типа Windows Forms Application в C# создается файл Assembly.info . Этот файл размещается в подпапке Properties относительно основной папки программы. В этом файле указывается общая информация о сборке.

    7. Что такое манифест (manifest )?

    Манифест – это описание самой сборки с помощью метаданных.

    В манифесте размещается информация:

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

    8. Схема взаимодействия между исходным кодом, компилятором .NET и механизмом выполнения .NET .

    Программист создает исходный код приложения на языке, который поддерживает технологию .NET (языке C# , C++/CLI , Visual Basic .NET и т.д.). Приложение создается в некоторой среде программирования, например Microsoft Visual Studio . Компилятор формирует сборку – файл, который содержит CIL -инструкции, метаданные и манифест.

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

    Если в исходном коде используются библиотеки базовых классов (например из сборки mscorlib.dll ), то они загружаются с помощью загрузчика классов.

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

    После этого приложение выполняется.

    Рисунок 2. Связь между исходным кодом, компилятором и механизмом выполнения .NET

    9. Какие существуют виды сборок?

    Существует два вида сборок:

    • однофайловые сборки;
    • многофайловые сборки.

    Сборка, которая состоит из одного единого модуля (*.dll или *.exe ) называется однофайловой. В однофайловых сборках все необходимые CIL -инструкции, метаданные и манифесты размещаются в одном, четко определенном пакете.

    Сборка, которая состоит из многих файлов двоичного кода .NET , называется многофайловой. Каждый из этих файлов называется модулем.

    В многофайловой сборке один из модулей есть главным (primary ).

    10. В каком файле размещается главная сборка библиотеки MS Visual Studio?

    Главная сборка размещается в файле “mscorlib.dll ”.

    11. Что такое общая система типов CTS ?

    CTS (Common Type System ) – система типов, которая содержит полное описание всех возможных типов данных и программных конструкций, которые поддерживаются общеязыковой исполнительной средой CLR . Также здесь описывается то, как эти сущности могут взаимодействовать между собою.

    Типами могут быть классы, интерфейсы, структуры, перечисления, делегаты.

    12. Какое назначение общеязыковой спецификации CLS?

    Как известно, не все языки программирования, которые являются совместимыми с .NET , могут поддерживать функциональные возможности системы типов CTS . Для этого используется общеязыковая спецификация CLS (Common Language Specification ).

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

    13. Какие языки программирования поддерживают технологию .NET ?

    В системе разработки приложений MS Visual Studio технологию .NET поддерживают следующие языки программирования: C# , Visual Basic .NET , C++/CLI , JScript .NET , F# , J# .

    Для того, чтобы можно было использовать технологию .NET нужно установить на компьютере программное обеспечение Microsoft .NET Framework Software Development Kit (SDK ) или Microsoft Visual Studio любой версии.

    14. Что такое пространство имен (namespace )?

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

    Примеры названий пространств имен:

    System System.Data System.IO System.Collections System.Threading.Tasks

    Например, в пространстве имен System.Data размещаются основные типы для работы с базами данных, в пространстве имен System.Collections размещаются основные типы для работы с коллекциями.

    15. Как вывести содержимое сборок, пространств имен и типов в MS Visual Studio ?

    В системе Microsoft Visual Studio есть утилита Object Browser , которая вызывается с меню View (рисунок 3).

    Рис. 3. Вызов утилиты Object Browser

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

    На рисунке 4 отображен список сборок, которые отображаются в технологии “.NET Framework 4 ”. Выделена сборка с именем “mscorlib ”.

    Рис. 4. Окно Object Browser с выделенной сборкой mscorlib.dll

    Если раскрыть содержимое сборки mscorlib (знак “+ ”), то будет отображен список всех пространств имен данной сборки (рисунок 5). Как видно из рисунка, сборка включает пространства имен Microsoft.Win32 , System , System.Collections , System.Collections.Concurrent и много других.

    Рис. 5. Сборка mscorlib и список пространств имен, которые входят в нее

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

    На рисунке 6 изображен класс BinaryReader из пространства имен System.IO . По всей видимости, в классе реализованы методы с именами BinaryReader() , Close() , Dispose() , FillBuffer() и прочие.

    Рис. 6. Содержимое класса BinaryReader

    16. Как подключить пространство имен в программе на C# ?

    Для подключения пространства имен используется ключевое слово using

    Аннотация: Инициатива 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

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