Главная страница
Навигация по странице:

  • Общие сведения платформы .NET Framework

  • .NET Framework для С++

  • _ _event

  • _ _identifier

  • _ _interface

  • Список использованных источников

  • NET расширения для С. NET расширения для С++. Общие сведения платформы. Net framework


    Скачать 31.13 Kb.
    НазваниеОбщие сведения платформы. Net framework
    АнкорNET расширения для С
    Дата04.05.2022
    Размер31.13 Kb.
    Формат файлаdocx
    Имя файлаNET расширения для С++.docx
    ТипДокументы
    #510462

    Титульник

    Оглавление
    Введение……………………………………………………………..…..3

    Общие сведения платформы .NET Framework…………………..……5

    .NET Framework для С++ ………………………………………..….….9

    Заключение……………………………………………………….…….13

    Список использованных источников…………………………………14
    Введение

    Платформа .NET Framework — это технология, которая поддерживает создание и выполнение веб-служб и приложений Windows. Платформа .NET Framework состоит из общеязыковой среды выполнения (среды CLR) и библиотеки классов .NET Framework. Основой платформы .NET Framework является среда CLR. Среду выполнения можно считать агентом, который управляет кодом во время выполнения и предоставляет основные службы, такие как управление памятью, управление потоками и удаленное взаимодействие. При этом средой накладываются условия строгой типизации и другие виды проверки точности кода, обеспечивающие безопасность и надежность.

    Фактически основной задачей среды выполнения является управление кодом. Код, который обращается к среде выполнения, называют управляемым кодом, а код, который не обращается к среде выполнения, называют неуправляемым кодом. Библиотека классов является комплексной объектно-ориентированной коллекцией повторно используемых типов, которые применяются для разработки приложений — начиная с обычных приложений, запускаемых из командной строки, и приложений с графическим интерфейсом (GUI) и заканчивая приложениями, использующими последние технологические возможности ASP.NET, такие как веб-формы и веб-службы XML.

    Для программиста на языке С++ среда .NET Framework слишком сложна, а используемые в ней языки слишком просты. Среда слишком сложна, потому что использует шаблоны программирования или идиомы, с которыми программист, привыкший к C++, незнаком. Ему необходимо приложить очень большие усилия, чтобы понять и научиться использовать новые идиомы. Кроме этого нужно отправить в мусорную корзину массу технических деталей, без которых немыслимо программирование на С++.

    Именно потому, что при использовании языков .NET Framework не нужно помнить бесчисленное множество деталей, они и просты. Большой объем готового кода в обширной библиотеке, ориентация на компоненты, поддержка со стороны окружения (дизайнеры Visual Studio, управляемый код) и т.п. делают .NET Framework еще привлекательнее. Однако очень сложно отказаться от знаний, навыков и опыта, накопленного за годы упорного труда, и начать все заново.

    .NET Framework поддерживает большое количество языков; часть из них совершенно новые (например, C#), другие представляют собой существенную переработку старых языков (например, VB.NET). C++ также не остался в стороне. С помощью управляемого С++ (MC++) абсолютно любою программу на этом языке можно скомпилировать в промежуточный язык — IL (Intermediate Language), который может быть использован для выполнения в среде .NET.

    Общие сведения платформы .NET Framework

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

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

    Вот какие службы предоставляет .NET Framework выполняемым в ней приложениям:

    • Управление памятью во многих языках программисты должны предусматривать выделение и освобождение памяти, а также управлять временем жизни объектов. В приложениях .NET Framework эти функции выполняет среда CLR.

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

    • Обширная библиотека классов. Разработчикам не требуется писать код для выполнения стандартных низкоуровневых операций программирования, так как они используют удобную библиотеку типов и членов, входящую в библиотеку классов .NET Framework.

    • Платформы и технологии разработки. Платформа .NET Framework включает библиотеки для конкретных областей разработки приложений, например ASP.NET для веб-приложений, ADO.NET для доступа к данным, Windows Communication Foundation для приложений, ориентированных на службы, а также Windows Presentation Foundation для классических приложений Windows.

    • Взаимодействие языков. Языковые компиляторы, ориентированные на .NET Framework, выдают промежуточный код, называемый языком CIL (Common Intermediate Language), который, в свою очередь, компилируется во время выполнения средой CLR. С помощью этой функции подпрограммы, написанные на одном языке, доступны в других языках, поэтому разработчики могут создавать приложения на предпочитаемых языках.

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

    • Параллельное выполнение. Платформа .NET Framework помогает разрешать конфликты версий, поскольку на компьютере могут быть установлены несколько версий среды CLR. Это означает, что несколько версий приложений могут существовать совместно и приложение может выполняться на версии платформы .NET Framework, для которой оно было создано. Параллельное выполнение применяется к группам версий .NET Framework 1.0/1.1, 2.0/3.0/3.5 и 4/4.5.x/4.6.x/4.7.x/4.8.

    • Настройка для различных версий. При настройке в соответствии со стандартом .NET разработчики создают библиотеки классов, которые работают на различных платформах .NET Framework, поддерживаемых соответствующей версией стандарта. Например, библиотеки, разработанные в соответствии со стандартом .NET Standard 2.0, могут использоваться приложениями, ориентированными на платформы .NET Framework 4.6.1, .NET Core 2.0 и UWP 10.0.16299.

    При разработке платформы .NET Framework учитывались следующие цели:

    • Обеспечение согласованной объектно-ориентированной среды программирования для локального сохранения и выполнения объектного кода, для локального выполнения кода, распределенного в Интернете, либо для удаленного выполнения.

    • Предоставление среды выполнения кода, в которой:

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

      • гарантируется безопасное выполнение кода, включая код, созданный неизвестным или не полностью доверенным сторонним изготовителем;

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

    • обеспечиваются единые принципы разработки для разных типов приложений, таких как приложения Windows и веб-приложения;

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

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

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

    Обозреватель Internet Explorer может служить примером неуправляемого приложения, размещающего среду выполнения (в виде расширений типов MIME). Размещение среды выполнения в обозревателе Internet Explorer позволяет внедрять управляемые компоненты или элементы управления Windows Forms в HTML-документы. Такое размещение среды позволяет выполнять управляемый мобильный код и пользоваться его существенными преимуществами, в частности выполнением в условиях неполного доверия и изолированным хранением файлов.

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

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

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

    .NET Framework для С++

    Разработанная компанией Microsoft интегрированная оболочка .NET Framework определяет среду, которая предназначена для поддержки разработки и выполнения сильно распределенных приложений, основанных на использовании компонентных объектов. Она позволяет "мирно сосуществовать" различным языкам программирования и обеспечивает безопасность, переносимость программ и общую модель программирования для платформы Windows.

    Интегрированная оболочка .NET Framework предоставляет управляемую среду, которая следит за выполнением программы. Программа, предназначенная для помещения в оболочку .NET Framework, не компилируется с целью получения объектного кода. Вместо этого она переводится на промежуточный язык MSIL (Microsoft Intermediate Language), а затем выполняется под управлением универсального средства CLR (Common Language Runtime). Управляемое выполнение— это механизм, который поддерживает ключевые преимущества, предлагаемые оболочкой .NET Framework.

    Чтобы воспользоваться преимуществами управляемого выполнения, необходимо применять для С++-программ специальный набор нестандартных ключевых слов и директив препроцессора, которые были определены разработчиками компании Microsoft. Важно понимать, что этот дополнительный набор не включен в стандарт C++ (ANSI/ISO Standard C++). Поэтому код, в котором используются эти ключевые слова, нельзя переносить в другие среды выполнения.

    Описание оболочки .NET Framework и методов С++-программирования, необходимых для ее использования, выходит за рамки этой книги. Однако здесь приводится краткий обзор .NET-расширения языка C++ ради тех программистов, которые работают в .NET-среде.

    Для поддержки .NET-среды управляемого выполнения С++-программ Microsoft вводит в язык C++ следующие ключевые слова.

    _ _abstract

    _ _box

    _ _delegate

    _ _event

    _ _finally

    _ _gc

    _ _identifier

    _ _interface

    _ _nogc

    _ _pin

    _ _property

    _ _sealed

    _ _try_cast

    _ _typeof

    _ _value

    Рассмотрим краткое описание каждого из этих ключевых слов ниже:

    _ _abstract

    Ключевое слово _ _abstract используется в сочетании со словом _ _gc при определении абстрактного управляемого класса. Объект _ _abstract-класса создать нельзя. Для класса, определенного с использованием ключевого слова _ _abstract, необязательно включение в него чисто виртуальной функции.

    _ _box

    Ключевое слов _ _box заключает в специальную оболочку значение внутри объекта. Такая "упаковка" позволяет использовать тип этого значения в коде, который требует, чтобы данный объект был выведен из класса System::Object, базового класса для всех .NET- объектов.

    _ _delegate

    Ключевое слово _ _delegate определяет объект-делегат, который инкапсулирует указатель на функцию внутри управляемого класса (т.е. класса, модифицированного ключевым словом _ _gc).

    _ _event

    Ключевое слово _ _event определяет функцию, которая представляет некоторое событие. Для такой функции задается только прототип.

    _ _finally

    Ключевое слово _ _finally — это дополнение к стандартному С++-механизму обработки исключительных ситуаций. Оно используется для определения блока кода, который должен выполняться после выхода из блоков try/catch. При этом не имеет значения, какие условия приводят к завершению try/catch-блока. Блок _ _finally должен быть выполнен в любом случае.

    _ _gc

    Ключевое слово _ _gc определяет управляемый класс. Обозначение "gc" представляет собой сокращение от словосочетания "garbage collection" (т.е. "сборка мусора") и означает, что объекты этого класса автоматически подвергаются процессу утилизации памяти, освобождаемой во время работы программы, когда они больше не нужны. В объекте отпадает необходимость в случае, когда на него не существует ни одной ссылки. Объекты _ _gc-класса должны создаваться с помощью оператора new. Массивы, указатели и интерфейсы также можно определять с использованием ключевого слова _ _gc.

    _ _identifier

    Ключевое слово _ _identifier позволяет любому другому ключевому слову языка C++ использоваться в качестве идентификатора. Эта возможность не предназначена для широкого применения и введена для решения специальных задач.

    _ _interface

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

    _ _nogc

    Ключевое слово _ _nogc определяет неуправляемый класс. Поскольку такой (неуправляемый) тип класса создается по умолчанию, ключевое слово _ _nogc используется редко.

    _ _pin

    Ключевое слово _ _pin используется для определения указателя, который фиксирует местоположение в памяти объекта, на который он указывает. Таким образом, "закрепленный" объект не будет перемещаться в памяти в процессе сборки мусора. Как следствие, сборщик мусора не в состоянии сделать недействительным указатель, модифицированный с помощью ключевого слова _ _pin.

    _ _property

    Ключевое слово _ _property определяет свойство, являющееся функцией-членом, которая позволяет установить или получить значение некоторой переменной (члена данных класса). Свойства предоставляют удобное средство управления доступом к закрытым (private) или защищенным (protected) данным.

    _ _sealed

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

    __try_cast

    Спомощью ключевого слова _ _try_cast можно попытаться преобразовать тип выражения. Если предпринятая попытка окажется неудачной, будет сгенерировано исключение типа System::InvalidCastException.

    _ _typeof

    Ключевое слово _ _typeof позволяет получить объект, который инкапсулирует информацию о данном типе. Этот объект представляет собой экземпляр класса System::Туре.

    _ _value

    Ключевое слово _ _value определяет класс, который представляет собой обозначение типа. Любое обозначение типа содержит собственные значения. И этим тип _ _value отличается от типа _ _gc, который должен выделять память для объекта с помощью оператора new. Обозначения типа, не представляют интерес для "сборщика мусора".

    Для поддержки .NET-среды компания Microsoft определяет директиву препроцессора #using, которая используется для импортирования метаданных в программу. Метаданные содержат информацию о типе и членах класса в форме, которая не зависит от конкретного языка программирования. Таким образом, метаданные обеспечивают поддержку смешанного использования языков программирования. Все управляемые С++-программы должны импортировать библиотеку , которая содержит необходимые метаданные для оболочки .NET Framework.

    Компания Microsoft определяет две pragma-инструкции (используемые с директивой препроцессора #pragma), которые имеют отношение к оболочке .NET Framework. Первая (managed) определяет управляемый код. Вторая (unmanaged) определяет неуправляемый (собственный, т.е. присущий данной среде) код. Эти инструкции могут быть использованы внутри программы для селективного создания управляемого и неуправляемого кода.

    Среди доступных компиляторов, который может обрабатывать программы, ориентированные на работу в среде .NET Framework, поставляется компанией Microsoft (Visual Studio .NET). Чтобы скомпилировать управляемую программу, необходимо использовать команду /сlr, которая передаст вашу программу "в руки" универсального средства Common Language Runtime.

    Вывод

    В .NET Framework не все гладко и стройно. Есть большое количество недоработок и досадных ошибок. Скажем, контейнерные классы значительно уступают по производительности и удобству контейнерам библиотеки STL. Но уже сейчас ясно, что платформа .NET Framework принесла в программирование новые концепции. Проектировщики получили совершенно новый инструмент. Трудно говорить о том, что инструмент этот лучше, чем прежний, — он просто другой, хотя некоторые положительные черты видны невооруженным взглядом: метаинформация описывает все и вся, мощная поддержка в рамках среды времени исполнения, концепция сборок (новые исполняемые модули, содержащие код и метаинформацию), очень богатая библиотека.

    У программиста на C++ есть альтернатива — писать самому всю недостающую функциональность библиотек и самого языка, либо присматриваться к .NET Framework. Существует много вариантов создания обёрток для классов C++. В зависимости от возможностей, которые ваша обёртка должна предоставлять клиенту в управляемом коде, реализация может быть сложной или относительно простой. Если вам надо просто создать экземпляр и вызвать нативный класс из .NET, тогда ваша основная задача — это отобразить методы нативного класса на методы управляемого класса, соблюдая CLS. Если вам надо также учитывать иерархии нативных типов, то обёртка может стать значительно сложнее.

    Список использованных источников

    1. ., Microsoft Operating .NET Framework–based Applications / . Microsoft. - Москва: СИНТЕГ, 2003. - 592 c.

    2. Glenn, Johnson MCTS Self–Paced Training Kit (Exam 70–562) – Microsoft .NET Framework 3.5–ASP.NET Application Development / Glenn Johnson. - Москва: СИНТЕГ, 2009. - 449 c.

    3. Jim, Wightman MCTS Self–Paced Training Kit (Exam 70–561) Microsoft .NET Framework 3.5–ADO.NET Application Development / Jim Wightman. - Москва: Наука, 2009. - 528 c.

    4. Matthew, Stoecker MCTS Self–Paced Training Kit (Exam 70–505) Microsoft .NET Framework 3.5–Windows Forms Application Development / Matthew Stoecker. - Москва: Машиностроение, 2009. - 816 c.

    5. Microsoft .NET Framework Application Development Foundation: Exam 70–536 (комплект из 2 книг + CD-ROM). - М.: John Wiley and Sons, Ltd, 2011. - 574 c.

    6. Microsoft Microsoft .Net Framework 1.1 Class Library Reference V 1–4 System / Microsoft. - Москва: Мир, 2003. - 121 c.

    7. Northrup MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft® .NET Framework 4 / Northrup. - Москва: Высшая школа, 2011. - 376 c.

    8. Stoecker MCTS Self-Paced Training Kit (Exam 70-511): Windows® Application Development with Microsoft® .NET Framework 4 / Stoecker. - Москва: Гостехиздат, 2011. - 145 c.

    9. Tony, Northrup MCPD 70 – 518 Exam Ref: Designing and Developing Windows Applications Using Microsoft. NET Framework 4 / Tony Northrup, Matthew A. Stoecker. - М.: O'Reilly Media, 2011. - 336 c.


    написать администратору сайта