Лекция 1.pptx
- Количество слайдов: 57
Программирование Ст. преп. каф. ПОВТ Масленнико в Алексей Александров ич Лекция № 1 Архитектура платформы Microsoft. NET Framework
Цели и задачи курса Изучение архитектуры платформы Microsoft. NET Введение в программирование на языке C# Управление потоками, управление событиями, рефлексия Технология Windows Communication Foundation (WCF) Сериализация, базы данных Технология Windows Presentation Foundation (WPF)
Цели и задачи курса (продолжение) Облачная платформа Azure, веб-сервисы Обзор концепции MVVM (Model-View-Model), применение концепции Prism (Prism Composition Framework) Платформа Xamarin для разработки мульти-платформенных приложений
Книги
История развития платформы Microsoft. Net Framework Компания Microsoft начала разработку платформы. NET Framework в конце 90 -х, под рабочим названием «Next Generation Windows Services» . Основную концепцию и предпосылки появления изложил Билл Гейтс в одном из своих интервью того времени: «На данный момент Интернет имеет огромное влияние на многие области, с учетом развития инновационных технологий, тенденция усилится в ближайшие пять лет. Наша цель перейти от современного Интернета автономных веб-сайтов к Интернету, состоящему из узлов, взаимодействующих между собой, к Интернету в котором инструменты и сервисы будут агрегированы в единые системы. Это позволит создать высоко оптимизированные, компактные и дружественные пользователю среды»
История развития платформы Microsoft. Net Framework Для развития идей будущей платформы. NET Framework в Microsoft был приглашен Андерс Хейлсберг (Anders Hejlsberg). В 1980 году написал свой первый компилятор языка Паскаль, который после портирования под операционную систему MS-DOS продал фирме Borland. Эта версия легла в основу Turbo/Borland Pascal, который развивался до 1995 года. До 1996 года Хейлсберг был главным инженером фирмы Borland, где создал новое поколение компиляторов Паскаля — язык Delphi, компилятор которого работал уже под операционной системой Windows. В 1996 году он перешёл в Microsoft, где работал над такими проектами, как J++ и Microsoft Foundation Classes. С 2000 года возглавлял группу по созданию и проектированию языка C#.
Андерс Хейлсберг (Anders Hejlsberg) Андерс Хейлсберг Born Nationality Education Occupation Employer Known for Title Awards December 1960 (age 54) Copenhagen, Denma rk Danish Technical University of Denmark[1] Programmer, system s architect Microsoft[1] Programming languages Turbo Pascal, Delphi, C#, [1] Type. Script Technical Fellow[1] 2001 Dr. Dobb's Excellence in Programming Award[1]
Версии Microsoft. NET Framework Версия CLR Версия Included in Дата выпуска Среда разработки Windows Заменяет Windows Server 1. 0 2002 -02 -13 Visual Studio. NET[5] XP 1. 1 2003 -04 -24 Visual Studio. NET 2003 N/A 2003 2. 0 2005 -11 -07 Visual Studio 2005 N/A 2003, 2003 R 2, 2008 SP 2, 2008 R 2 SP 1 3. 0 2006 -11 -06 Expression Blend Vista 2008 SP 2, 2008 R 2 SP 1 2. 0 3. 5 2. 0 2007 -11 -19 Visual Studio 2008 7, 8, 8. 1 2008 R 2 SP 1 4. 0 4 2010 -04 -12 Visual Studio 2010 4. 5 4 2012 -08 -15 Visual Studio 2012 8 2012 4. 0 4. 5. 1 4 2013 -10 -17 Visual Studio 2013 8. 1 2012 R 2 4. 0, 4. 5. 2 4 2014 -05 -05 4. 6 4 2015 -07 -20 N/A Visual Studio 2015 N/A 1. 0 N/A 2. 0, 3. 0 N/A 10 N/A 2016 N/A 4. 0, 4. 5, 4. 5. 1, 4. 5. 2
Компилируемые языки против интерпретируемых Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем при каждом изменении текста программы требуется ее перекомпиляция, что создает трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция. Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями, кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий. Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без дополнительной программы-интерпретатора.
Почему Microsoft. Net Framework ? Ведь есть другие платформы … До Microsoft первую серьезную попытку создать платформу с совершенно новыми идеями предприняла компания Sun Microsystems, попытка превратилась в стандарт подобных платформ! Была создана платформа Java 2 Enterprise Edition (J 2 EE) и язык JAVA. Основная идея платформы J 2 EE (сейчас Java EE - Java Platform, Enterprise Edition) состояла в реализации переносимости программ с одной платформы на другую. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. JEE во многом ориентирована на использование её через веб как в интернете, так и в локальных сетях.
. NET vs. J 2 EE Обещание «Написал один раз, работает везде» звучало хорошо, но приводило к трудоемкому процессу настройки созданного приложения На платформе J 2 EE живет только JAVA! Microsoft пошла другим путем, поставив в центр не переносимость, а СОВМЕСТИМОСТЬ приложений на разных платформах Добро пожаловать в многоязычный мир. NET (об этом позднее) В. NET приложениях огромное внимание уделяется пользовательскому интерфейсу (дружественный пользовательский интерфейс и «usability» ) «Удар в спину» - реализация Java языка на платформе. NET в виде J#. Visual J#. NET включает компилятор JAVA и библиотеки классов для реализации функционала JDK от версии 1. 1. 4 и выше.
Технологии. NET vs. J 2 EE
. NET vs. J 2 EE Исследование консалтинговой компании Pique Solutions (за 2011 г. )
. NET vs. J 2 EE Исследование консалтинговой компании Pique Solutions (за 2011 г. )
Архитектура Microsoft. Net Framework
Архитектура Microsoft. Net Framework Common Language Runtime (CLR) Общеязыковая среда выполнения - это ядро для выполнения приложений в. NET Framework. Она предоставляет набор сервисов, включая следующие: • управление кодом (загрузка и выполнение) • изоляция памяти приложений • проверка безопасности типов • преобразование промежуточного языка в машинный код • доступ к метаданым (расширенная информация о типах) • управление памятью для управляемых объектов • проверка безопасности кода • обработка исключений, включая межъязыковые исключения • взаимодействие между управляемым кодом, COM-объектами и существующими DLL(неуправляемый код и данные) • поддержка сервисов для разработки (профилирование, отладка и т. д. )
Архитектура Microsoft. Net Framework Common language specification (CLS) Общеязыковая спецификация Набор конструкций и ограничений, которые являются руководством для создателей библиотек и компиляторов. Она позволяет библиотекам быть полностью использованными из любого языка программирования, поддерживающего CLS, и позволяет этим языкам интегрироваться друг с другом. CLS является подмножеством общей системы типов. CLS очень важна для разработчиков, которые пишут код, который будет использоваться другими разработчиками. Когда разработчик проектирует публично доступное API, используя правила CLS, то это API можно будет легко использовать из любого языка программирования, управляемого CLR.
Архитектура Microsoft. Net Framework Common Type System (CTS) Общая система типов - это мощная система типов, встроенная в CLR, которая поддерживает типы и операции, существующие в большинстве языков программирования.
Архитектура Microsoft. Net Framework Microsoft Intermediate Language (MSIL) Промежуточный язык Microsoft MSIL - это независимый от процессора набор инструкций, в который компилируются программы в. NET Framework. Он содержит инструкции для загрузки, хранения, инициализации и вызова методов объектов. Вместе с метаданными и общей системой типов, MSIL делает реальной межъязыковую интеграцию. Перед выполнением, MSIL преобразуется в машинный код. Он не интерпретируется.
Архитектура Microsoft. Net Framework Managed code, managed data управляемый код и управляемые данные Управляемый код - это код, который работает в среде CLR. Чтобы выполняться в среде, код должен предоставить определенный уровень информации (метаданных) для среды выполнения. Код C#, Visual Basic. NET, и JScript. NET является управляемым по умолчанию. Код Visual Studio. NET C++ не является управляемым по умолчанию, но компилятор может создавать управляемый код, для этого нужно указать аргумент в командной строке(/CLR). Управляемые данные - данные, которые создаются и уничтожаются сборщиком мусора CLR. Данные C#, Visual Basic и JScript. NET являются управляемыми по умолчанию. Но данные C# могут быть помечены как неуправляемые, используя специальное ключевое слово. Данные Visual Studio. NET C++ являются неуправляемыми по умолчанию (даже при использовании флага /CLR ), но при использовании Managed Extensions for C++, класс может быть помечен как управляемый, используя ключевое слово __gc. Тогда класс становится полноценным участником сообщества. NET Framework, с теми преимуществами и ограничениями, которые она дает.
Стек технологий Microsoft. Net Framework 4. 5
Архитектура Microsoft. Net Framework для Windows 8
Вертикали Microsoft. Net Framework В процессе развития платформы Microsoft. NET Framework возникла проблема – технология отлично работает в своем вертикальном сегменте, но как согласовать сегменты по горизонтали, получив при этом универсальную платформу? !
Современные тенденции платформы. NET Объединение моделей разработки программного обеспечения
Современные тенденции платформы. NET Объединение моделей разработки программного обеспечения на базе единого ядра операционной системы для всех платформ
Современные тенденции платформы. NET Объединение моделей разработки программного обеспечения на базе единого ядра операционной системы для всех платформ.
Современные тенденции платформы. NET Один тип проекта под все платформы
Современные тенденции платформы. NET Языковые проекции
Современные тенденции платформы. NET XAML и WPF XAML (англ. e. Xtensible Application Markup Language) — расширяемый язык разметки для приложений; произносится [замл] или [зэмл]) — основанный на XML язык разметки для декларативного программирования приложений, разработанный Microsoft. WPF (Windows Presentation Foundation) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе. NET Framework (начиная с версии 3. 0), использующая язык XAML.
Современные тенденции платформы. NET В режиме отладке можно просматривать свойства WPF контролов. Повысится производительность.
Современные тенденции платформы. NET Новый подход к разработке платформы. NET
. NET Core – это модульная реализация, которая может использоваться широким набором вертикалей, начиная с датацентров и заканчивая сенсорными устройствами, доступная с открытым исходным кодом, и поддерживаемая Microsoft на Windows, Linux и Mac OSX.
. NET Core – это модульная реализация, которая может использоваться широким набором вертикалей, начиная с датацентров и заканчивая сенсорными устройствами, доступная с открытым исходным кодом, и поддерживаемая Microsoft на Windows, Linux и Mac OSX.
. NET Core В отличие от. NET Framework, платформа. NET Core будет доставляться в виде набора пакетов Nu. Get. Microsoft введет понятие дистрибуции. NET Core. Проще говоря, это просто срез всех пакетов в конкретных версиях, которые Microsoft протестировали. Чтобы. NET стал кросс-платформенным в поддерживаемом виде, РЕШЕНО ОТКРЫТЬ ИСХОДНЫЙ КОД. NET Core. . NET Framework по-прежнему ключевая платформа для создания насыщенных десктопных приложений, и. NET Core это не изменяет, являясь подмножеством.
. NET Core Nu. Get и Microsoft ) Итог: высокая скорость обновлений, мобильность
ASP. NET 5. 0 оптимизирован для облака (компактнее, быстрее, проще) и кросс-платформенных сценариев Модульный и открытый – более гибкий (open source), модульная реализация Улучшенные инструменты и библиотеки
Современные тенденции платформы. NET В итоге будущее платформы. NET видится таким
. NET Native Компиляция в код соответствующей архитектуры
. NET Native Компиляция в код соответствующей архитектуры
. NET Native Сравнение. NET Native и NGEN (то, что было до)
Ryu. JIT – новое поколение JIT-компиляторов Предыдущая версия JIT компилятора была различной для x 86 и x 64. При этом для x 64 компилятор работал медленнее (а иногда и само приложение) Время запуска скомпилированных им программ уменьшается примерно на 30% (время потраченное на JIT-компиляцию – это только часть процесса выполнения приложений, поэтому то, что JIT работает в 2 раза быстрее, не означает, что приложение тоже должно ускориться так же). Кроме того, новый JIT все так же выдает максимально производительный машинный код.
Современные тенденции платформы. NET
Современные тенденции платформы. NET
Common Language Infrastructure (CLI) European Computer Manufacturers Association, основанная в 1961 году ассоциация, деятельность которой посвящена стандартизации информационных и коммуникационных технологий В июне 2012 была выпущена спецификация ECMA-335 – стандарт для платформы Microsoft. NET Common Language Infrastructure (CLI)
ECMA-335 Согласно ECMA-335 все типы CTS были разделены на следующие
Понятие «Тип» в Common Language Infrastructure (CLI) Понятие «Тип» часто используется для определения представления данных в процедурных или функциональных языках программирования. В объектно-ориентированных языках программирования «Тип» используется в большей степени для описания поведения, чем поведения представления данных. В CTS «Тип» объединяет оба эти понятия: Две сущности имеют совместимые типы тогда и только тогда, когда они имеют одинаковые представление и поведение Если один тип наследован от некого базового типа, тогда экземпляры производного типа (типа-наследника базового типа) могут быть приведены к экземплярам базового типа, т. к. оба типа имеют совместимые представление и поведение. В отличии от некоторых объектно-ориентированных языков (ОО-языки), в CTS два объекта с разными типами имеют фундаментально разные представления.
Типы значений и ссылочные типы Типы значений (Value types) Ссылочные типы (Reference types) Переменные, основанные на типах значений, содержат непосредственно значения. При присвоении переменной одного типа значений другому создается копия присваиваемого значения. Переменные ссылок хранят ссылки на свои данные (объекты). Т. е. значение такого типа определяется однозначно без использования ссылок на другие типы. Две переменные ссылочного типа могут ссылаться на один и тот же объект, поэтому операции над одной переменной могут затрагивать объект, на который ссылается другая переменная. Объектные типы – ссылочные типы, имеющие в основе конкретно-определенный тип. Интерфейсы – частичное определение значения, потенциально допустимое для некого множества объектов. Типы-указатели – значение, определяемое во время компиляции на основе машинного адреса. Управляемые
Основные типы CTS Наименование в CIL CLS тип? Наименование в библиотеке классов Описание bool Да System. Boolean True/False char Да System. Char Unicode 16 -бит символ object Да System. Object Объект или упакованное значение string Да System. String Unicode строка float 32 Да System. Single IEC 60559 -1989 32 -битное вещественное float 64 Да System. Double IEC 60559 -1989 64 -битное вещественное int 8 Нет System. SByte Знаковое 8 -битное целое int 16 Да System. Int 16 Знаковое 16 -битное целое int 32 Да System. Int 32 Знаковое 32 -битное целое int 64 Да System. Int 64 Знаковое 64 -битное целое native int Да System. Int. Ptr Знаковое целое, нативный размер native unsigned int Нет System. UInt. Ptr Беззнаковое целое, нативный размер typedref Нет System. Typed. Reference Указатель на тип
Основные типы CTS Наименование в CIL CLS тип? Наименование в библиотеке классов Описание unsigned int 8 Да System. Byte 8 -битное целое без знака unsigned int 16 Нет System. UInt 16 16 -битное целое без знака unsigned int 32 Нет System. UInt 32 32 -битное целое без знака unsigned int 64 Нет System. UInt 64 64 -битное целое без знака
Многообразие языков платформы Microsoft. NET Языки, поддерживаемые Microsoft: Языки, развиваемые другими компаниями: Visual Basic. NET COBOL for Microsoft. NET. Visual C#. NET Perl for Microsoft. NET. Visual C++. NET Eiffel for Microsoft. NET. VBScript Python for Microsoft. NET. JScript Pascal for Microsoft. NET. JScript. NET Mercury for Microsoft. NET. Visual J++ Mondrian for Microsoft. NET. Oberon for Microsoft. NET. Salford FTN 95 (Fortran) for Microsoft. NET. Small. Talk for Microsoft. NET. Standard ML for Microsoft. NET. Dyalog APL for Microsoft. NET.
Типы приложений Мобильные приложения • Могут быть построены на основе технологии тонких или толстых клиентов. Толстые клиенты могут поддерживать работу при разрыве соединения с сервером. Веб- или тонкие клиенты могут работать только при наличии подключения. Ресурсы устройства вводят некоторые ограничения в процесс разработки Насыщенные клиентские приложения • Приложения данного типа обычно представляют собой отдельные приложения (без или с подключением к серверу) с насыщенным графическим интерфейсом. Такие приложения заранее подразумевают самостоятельную работу при обрыве соединения с сервером Насыщенные Интернетприложения • Подобные приложения разрабатываются с учетом поддержки мультиплатформенности и множества браузеров, содержат насыщенный медиа, графический контент. Насыщенные Интернет-приложения сталкиваются с ограничениями «песочницы» браузера, через который производится обращение Сервисные приложения • Предлагают расширенную бизнес-функциональность и позволяют клиентам получать доступ как из локальных, так и удаленных систем. Для того, чтобы тот или иной сервис выполнил работу, к нему производится обращение путем отправки сообщения (обычно основанного на XML схеме). Целью разработки таких приложений является обеспечение связи между различными платформами и приложениями, а так же «легковесность» сообщений для передачи в слабых каналах связи Веб-приложения • Приложения, которые поддерживают работу только при наличии подключения, рассчитаны на работу во множестве различных браузеров
Общая архитектура мобильных приложений Для реализации приложений данного типа на платформе Microsoft. NET можно использовать: . Net Compact Framework ASP. NET for Mobile Silverlight for Mobile
Общая архитектура клиентских приложений Для реализации приложений данного типа на платформе Microsoft. NET можно использовать: Windows Presentation Foundation (WPF) Windows Forms XAML Browser Application (XBAP)
Общая архитектура Интернет приложений Для реализации приложений данного типа на платформе Microsoft. NET можно использовать: Silverlight with browser plugin Silverlight with AJAX
Общая архитектура сервисных приложений Для реализации приложений данного типа на платформе Microsoft. NET можно использовать: Windows Communication Foundation (WCF) ASP. NET Web Services (ASMX)
Общая архитектура веб приложений Для реализации приложений данного типа на платформе Microsoft. NET можно использовать: ASP. NET Web Forms Ajax Silverlight ASP. NET MVC ASP. NET Dynamic data
Общая архитектура веб приложений Спасибо за внимание !