Upload
lois-gaines
View
56
Download
0
Embed Size (px)
DESCRIPTION
Програмиране за .NET Framework. Архитектура на платформата .NET и .NET Framework. Светлин Наков. Национална академия по разработка на софтуер. academy.devbg.org. Съдържание. Какво е .NET ? Архитектура на платформата Microsoft .NET Какво е .NET Framework ? - PowerPoint PPT Presentation
Citation preview
Архитектура наАрхитектура на платформата платформата .NET.NETи и .NET Framework.NET Framework
Програмиране заПрограмиране за .NET Framework .NET FrameworkПрограмиране заПрограмиране за .NET Framework .NET Framework
Светлин НаковСветлин НаковНационална академия по Национална академия по разработка на софтуерразработка на софтуер
academy.devbg.org
СъдържаниеСъдържаниеСъдържаниеСъдържание
1.1. Какво е Какво е .NET.NET??
2.2. Архитектура на платформата Архитектура на платформата Microsoft .NETMicrosoft .NET
3.3. Какво е Какво е .NET.NET FrameworkFramework??
4.4. Архитектура на Архитектура на .NET Framework.NET Framework
5.5. Common Language Runtime (CLR)Common Language Runtime (CLR)
6.6. Управляван кодУправляван код
7.7. Междинен език Междинен език MSILMSIL
8.8. Асемблита и метаданниАсемблита и метаданни
1.1. Какво е Какво е .NET.NET??
2.2. Архитектура на платформата Архитектура на платформата Microsoft .NETMicrosoft .NET
3.3. Какво е Какво е .NET.NET FrameworkFramework??
4.4. Архитектура на Архитектура на .NET Framework.NET Framework
5.5. Common Language Runtime (CLR)Common Language Runtime (CLR)
6.6. Управляван кодУправляван код
7.7. Междинен език Междинен език MSILMSIL
8.8. Асемблита и метаданниАсемблита и метаданни
Съдържание (2)Съдържание (2)Съдържание (2)Съдържание (2)
9.9. .NET .NET приложенияприложения
10.10. Application domainsApplication domains
11.11. Common Language Specification Common Language Specification (CLS), Common Type System (CTS)(CLS), Common Type System (CTS)
12.12. Common Language Infrastructure (CLI)Common Language Infrastructure (CLI) и интеграцията на различни езиции интеграцията на различни езици
13.13. Framework Class LibraryFramework Class Library
14.14. Интегрирана среда за разработка Интегрирана среда за разработка Visual StudioVisual Studio
9.9. .NET .NET приложенияприложения
10.10. Application domainsApplication domains
11.11. Common Language Specification Common Language Specification (CLS), Common Type System (CTS)(CLS), Common Type System (CTS)
12.12. Common Language Infrastructure (CLI)Common Language Infrastructure (CLI) и интеграцията на различни езиции интеграцията на различни езици
13.13. Framework Class LibraryFramework Class Library
14.14. Интегрирана среда за разработка Интегрирана среда за разработка Visual StudioVisual Studio
Управление на бизнесаУправление на
клиенти и партньориУправление
на продажбите
ПотребителиПотребители- На всяко На всяко
устройствоустройство- НавсякъдеНавсякъде- По всяко времеПо всяко време
XML Web XML Web УслугиУслугиИнтеграция на Интеграция на бизнес бизнес процесите и процесите и приложениятаприложенията
СървъриСървъриХетерогенна Хетерогенна инфраструктура инфраструктура от сървъриот сървъри
СправкиСправкиСправкиСправкиАвтентикацияАвтентикацияАвтентикацияАвтентикацияИзвестяванеИзвестяванеИзвестяванеИзвестяване
Визията на Визията на Microsoft Microsoft за за .NET.NETВизията на Визията на Microsoft Microsoft за за .NET.NET
ЗаявкиЗаявкиЗаявкиЗаявкиПоръчкиПоръчкиПоръчкиПоръчки
Какво е Какво е платформата платформата .NET.NET??Какво е Какво е платформата платформата .NET.NET??
• Съвкупност от технологииСъвкупност от технологии• Свързват хората с информациятаСвързват хората с информацията
• Навсякъде и от всяко устройствоНавсякъде и от всяко устройство
• Стандартизирана инфраструктура за Стандартизирана инфраструктура за разработка, използване и хостинг на разработка, използване и хостинг на софтуерни приложения и уеб услугисофтуерни приложения и уеб услуги
• Визията на Визията на Microsoft Microsoft за развитието на за развитието на софтуерните технологиисофтуерните технологии
• Платформа, която Платформа, която поддържа тази визияподдържа тази визия
• Съвкупност от технологииСъвкупност от технологии• Свързват хората с информациятаСвързват хората с информацията
• Навсякъде и от всяко устройствоНавсякъде и от всяко устройство
• Стандартизирана инфраструктура за Стандартизирана инфраструктура за разработка, използване и хостинг на разработка, използване и хостинг на софтуерни приложения и уеб услугисофтуерни приложения и уеб услуги
• Визията на Визията на Microsoft Microsoft за развитието на за развитието на софтуерните технологиисофтуерните технологии
• Платформа, която Платформа, която поддържа тази визияподдържа тази визия
Какво е Какво е .NET .NET Framework?Framework?Какво е Какво е .NET .NET Framework?Framework?
• Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения приложения и и WebWeb услуги услуги
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на управляван кодуправляван код
• Програмен модел, библиотеки от класовеПрограмен модел, библиотеки от класове и и единна инфраструктура за разработкаединна инфраструктура за разработка
• Независимост от езиците за програмиранеНезависимост от езиците за програмиране
• ..NET Compact FrameworkNET Compact Framework
• Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения за мобилни устройства приложения за мобилни устройства
• Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения приложения и и WebWeb услуги услуги
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на управляван кодуправляван код
• Програмен модел, библиотеки от класовеПрограмен модел, библиотеки от класове и и единна инфраструктура за разработкаединна инфраструктура за разработка
• Независимост от езиците за програмиранеНезависимост от езиците за програмиране
• ..NET Compact FrameworkNET Compact Framework
• Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения за мобилни устройства приложения за мобилни устройства
Какво е Какво е .NET .NET Framework 2.0?Framework 2.0?Какво е Какво е .NET .NET Framework 2.0?Framework 2.0?
• Версия 2.0 на Версия 2.0 на .NET Framework .NET Framework въвежда въвежда много подобрения (спрямо версия 1.1)много подобрения (спрямо версия 1.1)
• Версия 2.0 на езика Версия 2.0 на езика C# C# ––параметризирани типове (параметризирани типове (generics)generics), , нулеви типовенулеви типове
• ASP.NET 2.0ASP.NET 2.0 – – master pages, master pages, нови нови контроли, подобрена връзка с бази от контроли, подобрена връзка с бази от данни, по-лесна разработкаданни, по-лесна разработка
• ADO.NET 2.0 – ADO.NET 2.0 – нови компонентинови компоненти
• Windows FormsWindows Forms – нови компоненти – нови компоненти
• Версия 2.0 на Версия 2.0 на .NET Framework .NET Framework въвежда въвежда много подобрения (спрямо версия 1.1)много подобрения (спрямо версия 1.1)
• Версия 2.0 на езика Версия 2.0 на езика C# C# ––параметризирани типове (параметризирани типове (generics)generics), , нулеви типовенулеви типове
• ASP.NET 2.0ASP.NET 2.0 – – master pages, master pages, нови нови контроли, подобрена връзка с бази от контроли, подобрена връзка с бази от данни, по-лесна разработкаданни, по-лесна разработка
• ADO.NET 2.0 – ADO.NET 2.0 – нови компонентинови компоненти
• Windows FormsWindows Forms – нови компоненти – нови компоненти
Компоненти на .Компоненти на .NET NET FrameworkFrameworkКомпоненти на .Компоненти на .NET NET FrameworkFramework
• Common Language Runtime (CLR)Common Language Runtime (CLR)
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на програмен код –програмен код – нещо като виртуална нещо като виртуална машинамашина
• Изпълнява Изпълнява .NET.NET приложенията приложенията
• Framework Class Library (FCL)Framework Class Library (FCL)
• Стандартна библиотека от класове за Стандартна библиотека от класове за разработка на разработка на .NET.NET приложения приложения
• Предоставя основната функционалност за Предоставя основната функционалност за разработка:разработка: ADO.NET, XML, ASP.NET, Web ADO.NET, XML, ASP.NET, Web Services, Windows Forms, Services, Windows Forms, ......
• Common Language Runtime (CLR)Common Language Runtime (CLR)
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на програмен код –програмен код – нещо като виртуална нещо като виртуална машинамашина
• Изпълнява Изпълнява .NET.NET приложенията приложенията
• Framework Class Library (FCL)Framework Class Library (FCL)
• Стандартна библиотека от класове за Стандартна библиотека от класове за разработка на разработка на .NET.NET приложения приложения
• Предоставя основната функционалност за Предоставя основната функционалност за разработка:разработка: ADO.NET, XML, ASP.NET, Web ADO.NET, XML, ASP.NET, Web Services, Windows Forms, Services, Windows Forms, ......
• ОС управлява ресурсите, ОС управлява ресурсите, процесите и потребителите процесите и потребителите на машинатана машината
• Осигурява на приложенията Осигурява на приложенията някои услугинякои услуги ( (нишки, нишки, COM+, COM+, MSMQ, IIS, WMI)MSMQ, IIS, WMI)
• CLR CLR е отделен процес в ОСе отделен процес в ОС
• ОС управлява ресурсите, ОС управлява ресурсите, процесите и потребителите процесите и потребителите на машинатана машината
• Осигурява на приложенията Осигурява на приложенията някои услугинякои услуги ( (нишки, нишки, COM+, COM+, MSMQ, IIS, WMI)MSMQ, IIS, WMI)
• CLR CLR е отделен процес в ОСе отделен процес в ОС
Операционна системаОперационна система
Архитектура на Архитектура на .NET .NET FrameworkFrameworkАрхитектура на Архитектура на .NET .NET FrameworkFramework
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
• CLR CLR управлява процеса на управлява процеса на изпълнение на изпълнение на .NET .NET кодкод
• Управлява паметта, Управлява паметта, конкурентността, конкурентността, сигурността, ...сигурността, ...
Архитектура на Архитектура на .NET .NET FrameworkFramework (2) (2)Архитектура на Архитектура на .NET .NET FrameworkFramework (2) (2)
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
• Богата обектно-ориентирана Богата обектно-ориентирана библиотека с основни класовебиблиотека с основни класове
• КолекцииКолекции, , вход-изходвход-изход, , текстообработкатекстообработка, , работа с работа с мрежа, отдалечено извикване, мрежа, отдалечено извикване, сигурност, многонишковост, сигурност, многонишковост, ……
• Богата обектно-ориентирана Богата обектно-ориентирана библиотека с основни класовебиблиотека с основни класове
• КолекцииКолекции, , вход-изходвход-изход, , текстообработкатекстообработка, , работа с работа с мрежа, отдалечено извикване, мрежа, отдалечено извикване, сигурност, многонишковост, сигурност, многонишковост, ……
Архитектура на Архитектура на .NET .NET FrameworkFramework (3) (3)Архитектура на Архитектура на .NET .NET FrameworkFramework (3) (3)
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
• Достъп до бази от данниДостъп до бази от данни
• Свързан и несвързанСвързан и несвързан модел на данните (модел на данните (DataSets)DataSets)
• Силна поддръжка на Силна поддръжка на XMLXML
• Достъп до бази от данниДостъп до бази от данни
• Свързан и несвързанСвързан и несвързан модел на данните (модел на данните (DataSets)DataSets)
• Силна поддръжка на Силна поддръжка на XMLXML
Архитектура на Архитектура на .NET .NET FrameworkFramework (4) (4)Архитектура на Архитектура на .NET .NET FrameworkFramework (4) (4)
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
• Потребителски интерфейс Потребителски интерфейс за приложениятаза приложенията – Web – Web базиранбазиран, Windows GUI, Web , Windows GUI, Web услугиуслуги, …, …
• Потребителски интерфейс Потребителски интерфейс за приложениятаза приложенията – Web – Web базиранбазиран, Windows GUI, Web , Windows GUI, Web услугиуслуги, …, …
Архитектура на Архитектура на .NET .NET FrameworkFramework (5) (5)Архитектура на Архитектура на .NET .NET FrameworkFramework (5) (5)
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
C#C# C++C++ VB.NETVB.NET J#J# PerlPerl
• Език за програмиране по избор!Език за програмиране по избор!• Език за програмиране по избор!Език за програмиране по избор!
DelphiDelphi ……
Архитектура на Архитектура на .NET .NET FrameworkFramework (6) (6)Архитектура на Архитектура на .NET .NET FrameworkFramework (6) (6)
• Известен като среда за управлявано Известен като среда за управлявано изпълнение изпълнение ((Managed Execution Managed Execution EnvironmentEnvironment))
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на управляван .управляван .NET NET програмен кодпрограмен код
• Нещо подобно на виртуална машина (като Нещо подобно на виртуална машина (като JVM)JVM)
• Не е интерпретатор – използва се Не е интерпретатор – използва се компилация по време на изпълнение (компилация по време на изпълнение (JIT JIT компилация)компилация)
• Възможна е и предварителна компилацияВъзможна е и предварителна компилация
• Известен като среда за управлявано Известен като среда за управлявано изпълнение изпълнение ((Managed Execution Managed Execution EnvironmentEnvironment))
• Среда за контролирано изпълнение на Среда за контролирано изпълнение на управляван .управляван .NET NET програмен кодпрограмен код
• Нещо подобно на виртуална машина (като Нещо подобно на виртуална машина (като JVM)JVM)
• Не е интерпретатор – използва се Не е интерпретатор – използва се компилация по време на изпълнение (компилация по време на изпълнение (JIT JIT компилация)компилация)
• Възможна е и предварителна компилацияВъзможна е и предварителна компилация
Common Language Common Language RuntimeRuntime ( (CLRCLR))Common Language Common Language RuntimeRuntime ( (CLRCLR))
• Изпълнението на Изпълнението на IL IL кода и кода и JIT JIT компилациятакомпилацията
• Управление на паметта и ресурсите на Управление на паметта и ресурсите на приложениетоприложението
• Защита на типоветеЗащита на типовете
• Взаимодействие с ОСВзаимодействие с ОС
• Управление на сигурносттаУправление на сигурността
• Code access securityCode access security
• Role-based securityRole-based security
• Изпълнението на Изпълнението на IL IL кода и кода и JIT JIT компилациятакомпилацията
• Управление на паметта и ресурсите на Управление на паметта и ресурсите на приложениетоприложението
• Защита на типоветеЗащита на типовете
• Взаимодействие с ОСВзаимодействие с ОС
• Управление на сигурносттаУправление на сигурността
• Code access securityCode access security
• Role-based securityRole-based security
Задачи и отговорности Задачи и отговорности на CLRна CLRЗадачи и отговорности Задачи и отговорности на CLRна CLR
• Управление на изключениятаУправление на изключенията
• Управление на конкурентносттУправление на конкурентносттаа – – контролира паралелното изпълнение контролира паралелното изпълнение на нишки (threads)на нишки (threads)
• Връзката с неуправляван кодВръзката с неуправляван код
• Поддръжка на процесите на Поддръжка на процесите на debug debug и и оптимизиране (оптимизиране (profiling) profiling) при при разработка на приложенияразработка на приложения
• Управление на изключениятаУправление на изключенията
• Управление на конкурентносттУправление на конкурентносттаа – – контролира паралелното изпълнение контролира паралелното изпълнение на нишки (threads)на нишки (threads)
• Връзката с неуправляван кодВръзката с неуправляван код
• Поддръжка на процесите на Поддръжка на процесите на debug debug и и оптимизиране (оптимизиране (profiling) profiling) при при разработка на приложенияразработка на приложения
Задачи и отговорности Задачи и отговорности на на CLR (2)CLR (2)Задачи и отговорности Задачи и отговорности на на CLR (2)CLR (2)
Архитектура на Архитектура на CLRCLRАрхитектура на Архитектура на CLRCLR
Class LoaderClass Loader
IL to NativeIL to NativeJIT CompilerJIT Compiler
CodeCodeManagerManager
GarbageGarbageCollectorCollector
Security EngineSecurity Engine Debug EngineDebug Engine
Type CheckerType Checker Exception ManagerException Manager
Thread SupportThread Support COM MarshalerCOM Marshaler
Base Class Library SupportBase Class Library Support
Управляван кодУправляван код ((Managed code)Managed code)Управляван кодУправляван код ((Managed code)Managed code)
• Кодът, който Кодът, който CLR CLR изпълняваизпълнява• Представлява програмен код на езика Представлява програмен код на езика
от ниско ниво от ниско ниво MSIL (Intermediate MSIL (Intermediate Language)Language)
• Описва се от метаданниОписва се от метаданни• Описание на класове, интерфейси, Описание на класове, интерфейси,
свойства, полета, методи, параметрисвойства, полета, методи, параметри• Описание на сигурносттаОписание на сигурността
• Програмите, написани на всеки Програмите, написани на всеки .NET .NET език, се компилират до управляван език, се компилират до управляван код код (MSIL)(MSIL)
• Кодът, който Кодът, който CLR CLR изпълняваизпълнява• Представлява програмен код на езика Представлява програмен код на езика
от ниско ниво от ниско ниво MSIL (Intermediate MSIL (Intermediate Language)Language)
• Описва се от метаданниОписва се от метаданни• Описание на класове, интерфейси, Описание на класове, интерфейси,
свойства, полета, методи, параметрисвойства, полета, методи, параметри• Описание на сигурносттаОписание на сигурността
• Програмите, написани на всеки Програмите, написани на всеки .NET .NET език, се компилират до управляван език, се компилират до управляван код код (MSIL)(MSIL)
• Обектно-ориентиранОбектно-ориентиран
• Защитен от неправилна работа с Защитен от неправилна работа с типове (типове (type-safe)type-safe)
• СигуренСигурен
• НадежденНадежден
• Позволява интеграция между Позволява интеграция между различни езици за програмиранеразлични езици за програмиране
• Позволява преносимост между Позволява преносимост между различни платформиразлични платформи
• Обектно-ориентиранОбектно-ориентиран
• Защитен от неправилна работа с Защитен от неправилна работа с типове (типове (type-safe)type-safe)
• СигуренСигурен
• НадежденНадежден
• Позволява интеграция между Позволява интеграция между различни езици за програмиранеразлични езици за програмиране
• Позволява преносимост между Позволява преносимост между различни платформиразлични платформи
Управляван код (2)Управляван код (2)Управляван код (2)Управляван код (2)
Неуправляван код Неуправляван код ((Win32 Win32 код)код)Неуправляван код Неуправляван код ((Win32 Win32 код)код)
• Няма защита на паметта и типоветеНяма защита на паметта и типовете
• Създава проблеми със сигурносттаСъздава проблеми със сигурността
• Създава проблеми с надеждносттаСъздава проблеми с надеждността
• Не съдържа метаданни, които го Не съдържа метаданни, които го описватописват
• Компилира се до машинно зависим Компилира се до машинно зависим кодкод
• Трудно се пренася на други Трудно се пренася на други платформиплатформи
• Няма защита на паметта и типоветеНяма защита на паметта и типовете
• Създава проблеми със сигурносттаСъздава проблеми със сигурността
• Създава проблеми с надеждносттаСъздава проблеми с надеждността
• Не съдържа метаданни, които го Не съдържа метаданни, които го описватописват
• Компилира се до машинно зависим Компилира се до машинно зависим кодкод
• Трудно се пренася на други Трудно се пренася на други платформиплатформи
Управление на паметтаУправление на паметтаУправление на паметтаУправление на паметта
• CLR CLR автоматично управлява паметтаавтоматично управлява паметта
• Динамично-заделените обекти се разполагат Динамично-заделените обекти се разполагат в т. нар. в т. нар. managed heapmanaged heap
• Неизползваните обекти се почистват Неизползваните обекти се почистват автоматично от т. нар. автоматично от т. нар. garbage collectorgarbage collector
• Някои от най-неприятните проблеми в Някои от най-неприятните проблеми в програмирането са почти невъзможни:програмирането са почти невъзможни:
• Загуба на памет (Загуба на памет (memory leaks)memory leaks)
• Достъп до освободена или Достъп до освободена или неинициализирана паметнеинициализирана памет
• Обектите се достъпват през референцииОбектите се достъпват през референции
• CLR CLR автоматично управлява паметтаавтоматично управлява паметта
• Динамично-заделените обекти се разполагат Динамично-заделените обекти се разполагат в т. нар. в т. нар. managed heapmanaged heap
• Неизползваните обекти се почистват Неизползваните обекти се почистват автоматично от т. нар. автоматично от т. нар. garbage collectorgarbage collector
• Някои от най-неприятните проблеми в Някои от най-неприятните проблеми в програмирането са почти невъзможни:програмирането са почти невъзможни:
• Загуба на памет (Загуба на памет (memory leaks)memory leaks)
• Достъп до освободена или Достъп до освободена или неинициализирана паметнеинициализирана памет
• Обектите се достъпват през референцииОбектите се достъпват през референции
Intermediate LanguageIntermediate Language ((MSILMSIL, , ILIL,, CIL) CIL)Intermediate LanguageIntermediate Language ((MSILMSIL, , ILIL,, CIL) CIL)
• Език от ниско ниво (машинен език)Език от ниско ниво (машинен език)
• Стекова архитектураСтекова архитектура
• Като асемблер, но с обектно-Като асемблер, но с обектно-ориентирани възможности:ориентирани възможности:• Инструкции за заделяне на паметИнструкции за заделяне на памет
• Инструкции за предизвикване и Инструкции за предизвикване и обработкаобработка на изключенияна изключения
• Инструкция за извикване на виртуален Инструкция за извикване на виртуален методметод
• Компилира се до машинен код за Компилира се до машинен код за конкретната платформаконкретната платформа
• Език от ниско ниво (машинен език)Език от ниско ниво (машинен език)
• Стекова архитектураСтекова архитектура
• Като асемблер, но с обектно-Като асемблер, но с обектно-ориентирани възможности:ориентирани възможности:• Инструкции за заделяне на паметИнструкции за заделяне на памет
• Инструкции за предизвикване и Инструкции за предизвикване и обработкаобработка на изключенияна изключения
• Инструкция за извикване на виртуален Инструкция за извикване на виртуален методметод
• Компилира се до машинен код за Компилира се до машинен код за конкретната платформаконкретната платформа
Примерна програма наПримерна програма на езика езика MSILMSILПримерна програма наПримерна програма на езика езика MSILMSIL
.method private hidebysig static void Main() .method private hidebysig static void Main()
cil managedcil managed
{{
.entrypoint.entrypoint
// Code size 11 (0xb)// Code size 11 (0xb)
.maxstack 8.maxstack 8
ldstr "Hello, world!"ldstr "Hello, world!"
call voidcall void
[mscorlib]System.Console::WriteLine(string)[mscorlib]System.Console::WriteLine(string)
retret
} // end of method HelloWorld::Main} // end of method HelloWorld::Main
Компилация и Компилация и изпълнениеизпълнениеКомпилация и Компилация и изпълнениеизпълнение
КомпилацияКомпилация
ИзпълнениеИзпълнение
JIT JIT компилаторкомпилатор
машинен машинен кодкод
MSILMSILкодкод
метаданниметаданни
изходен изходен кодкод
езиков езиков компилаторкомпилатор
AssemblyAssembly(.EXE (.EXE илиили
.DLL .DLL файлфайл))
AssemblyAssembly(.EXE (.EXE илиили
.DLL .DLL файлфайл))
- - Когато даден Когато даден метод се извика метод се извика за първи пътза първи път
- - Когато даден Когато даден метод се извика метод се извика за първи пътза първи път
- - Прекомпилация Прекомпилация при инсталиранепри инсталиране- - Прекомпилация Прекомпилация при инсталиранепри инсталиране
Как Как CLR CLR изпълнява изпълнява MSILMSIL??Как Как CLR CLR изпълнява изпълнява MSILMSIL??.EXE .EXE / ./ .DLLDLL
Class LoaderClass Loader
JIT JIT компилаторкомпилатор
управляван управляван машинен кодмашинен код
trustedcode
извикване нанекомпилиран
метод
SecuritySecurityEngineEngine
изпълнениеизпълнение
VerifierVerifier
CodeCodeManagerManager
вечекомпилиран
код
библиотеки библиотеки с класовес класове
.NET .NET асемблита асемблита ((Assemblies)Assemblies).NET .NET асемблита асемблита ((Assemblies)Assemblies)
• Програмни компоненти – Програмни компоненти – DLL DLL ии EXE EXE файловефайлове
• Най-малката единица за Най-малката единица за разпространение вразпространение в CLR CLR
• Имат уникален номер на версиятаИмат уникален номер на версията
• Няма конфликти с версиитеНяма конфликти с версиите (DLL hell) (DLL hell)
• Поддръжка на различни версии на Поддръжка на различни версии на едно и също асемблиедно и също асембли
• Съдържат метаданниСъдържат метаданни
• Програмни компоненти – Програмни компоненти – DLL DLL ии EXE EXE файловефайлове
• Най-малката единица за Най-малката единица за разпространение вразпространение в CLR CLR
• Имат уникален номер на версиятаИмат уникален номер на версията
• Няма конфликти с версиитеНяма конфликти с версиите (DLL hell) (DLL hell)
• Поддръжка на различни версии на Поддръжка на различни версии на едно и също асемблиедно и също асембли
• Съдържат метаданниСъдържат метаданни
Метаданните в Метаданните в асемблитатаасемблитатаМетаданните в Метаданните в асемблитатаасемблитата
Описание на типоветеОписание на типовете
Класове, интерфейси, типовеКласове, интерфейси, типовеБазови класове, имплементираниБазови класове, имплементираниинтерфейсиинтерфейсиЧлен-променливи, свойстваЧлен-променливи, свойстваМетоди, параметри на методите,Методи, параметри на методите,връщана стойноствръщана стойностАтрибутиАтрибути
Класове, интерфейси, типовеКласове, интерфейси, типовеБазови класове, имплементираниБазови класове, имплементираниинтерфейсиинтерфейсиЧлен-променливи, свойстваЧлен-променливи, свойстваМетоди, параметри на методите,Методи, параметри на методите,връщана стойноствръщана стойностАтрибутиАтрибути
ИмеИмеВерсияВерсияЛокализацияЛокализация
ИмеИмеВерсияВерсияЛокализацияЛокализация
Описание на асемблитоОписание на асемблито
Зависимости от други асемблитаЗависимости от други асемблитаПрава (Права (securitysecurity permissions) permissions)Експортирани типовеЕкспортирани типове
Зависимости от други асемблитаЗависимости от други асемблитаПрава (Права (securitysecurity permissions) permissions)Експортирани типовеЕкспортирани типове
[[цифров подписцифров подпис]]
..NETNET приложенията приложенията..NETNET приложенията приложенията
• Конфигурируеми изпълними единици Конфигурируеми изпълними единици
• Състоят се от едно или няколко асемблитаСъстоят се от едно или няколко асемблита
• Инсталират се с просто копиране, без Инсталират се с просто копиране, без сложна регистрация на компонентитесложна регистрация на компонентите
• Различните приложения използват Различните приложения използват различни версии на общите асемблитаразлични версии на общите асемблита
• Няма конфликтНяма конфликт
• Лесна инсталация, деинсталация и Лесна инсталация, деинсталация и обновяванеобновяване
• Конфигурируеми изпълними единици Конфигурируеми изпълними единици
• Състоят се от едно или няколко асемблитаСъстоят се от едно или няколко асемблита
• Инсталират се с просто копиране, без Инсталират се с просто копиране, без сложна регистрация на компонентитесложна регистрация на компонентите
• Различните приложения използват Различните приложения използват различни версии на общите асемблитаразлични версии на общите асемблита
• Няма конфликтНяма конфликт
• Лесна инсталация, деинсталация и Лесна инсталация, деинсталация и обновяванеобновяване
Поддръжка на много Поддръжка на много езици в езици в CLRCLRПоддръжка на много Поддръжка на много езици в езици в CLRCLR
• Common Language Specification (CLS)Common Language Specification (CLS)
• Съвкупност от правила, които всички Съвкупност от правила, които всички .NET .NET езициезици са задължени да спазватса задължени да спазват
• Специфицира минималните изисквания на Специфицира минималните изисквания на всички всички .NET.NET езици езици
• Осигурява съвместимост между езицитеОсигурява съвместимост между езиците
• Intermediate Language (MSIL)Intermediate Language (MSIL)
• Common Type System (CTS)Common Type System (CTS)
• Обща система от типове за всички Обща система от типове за всички .NET .NET езициезици
• Осигурява съвместимост на даннитеОсигурява съвместимост на данните
• Common Language Specification (CLS)Common Language Specification (CLS)
• Съвкупност от правила, които всички Съвкупност от правила, които всички .NET .NET езициезици са задължени да спазватса задължени да спазват
• Специфицира минималните изисквания на Специфицира минималните изисквания на всички всички .NET.NET езици езици
• Осигурява съвместимост между езицитеОсигурява съвместимост между езиците
• Intermediate Language (MSIL)Intermediate Language (MSIL)
• Common Type System (CTS)Common Type System (CTS)
• Обща система от типове за всички Обща система от типове за всички .NET .NET езициезици
• Осигурява съвместимост на даннитеОсигурява съвместимост на данните
Common Language Common Language Specification (CLS)Specification (CLS)Common Language Common Language Specification (CLS)Specification (CLS)
• Обща езикова спецификация Обща езикова спецификация (CLS)(CLS)
• Система от правила и изисквания, на Система от правила и изисквания, на които отговарят всички които отговарят всички .NET .NET езициезици
• Осигурява съвместимост и лесно Осигурява съвместимост и лесно взаимодействие между взаимодействие между .NET.NET езиците езиците
• НапримерНапример:: CLS CLS налага всички налага всички .NET.NET езици да са обектно-ориентираниезици да са обектно-ориентирани
• При използване на нестандартни за При използване на нестандартни за CLS CLS програмни техники се губи програмни техники се губи съвместимост с другите съвместимост с другите .NET .NET езициезици
• Обща езикова спецификация Обща езикова спецификация (CLS)(CLS)
• Система от правила и изисквания, на Система от правила и изисквания, на които отговарят всички които отговарят всички .NET .NET езициезици
• Осигурява съвместимост и лесно Осигурява съвместимост и лесно взаимодействие между взаимодействие между .NET.NET езиците езиците
• НапримерНапример:: CLS CLS налага всички налага всички .NET.NET езици да са обектно-ориентираниезици да са обектно-ориентирани
• При използване на нестандартни за При използване на нестандартни за CLS CLS програмни техники се губи програмни техники се губи съвместимост с другите съвместимост с другите .NET .NET езициезици
Common Type SystemCommon Type SystemCommon Type SystemCommon Type System
• Обща система от типове Обща система от типове (CTS)(CTS)• Дефинира поддържаните от Дефинира поддържаните от CLRCLR типове типове
данни и операции над тяхданни и операции над тях• Осигурява съвместимост на данните Осигурява съвместимост на данните
между различните между различните .NET.NET езици езици• StringString в в C#C# е същият като е същият като StringString във във
VB.NETVB.NET и в и в J#J#
• Стойностни и референтни типовеСтойностни и референтни типове• Всички типове наследяват Всички типове наследяват System.ObjectSystem.Object
• StringString е примитивен типе примитивен тип
• Обща система от типове Обща система от типове (CTS)(CTS)• Дефинира поддържаните от Дефинира поддържаните от CLRCLR типове типове
данни и операции над тяхданни и операции над тях• Осигурява съвместимост на данните Осигурява съвместимост на данните
между различните между различните .NET.NET езици езици• StringString в в C#C# е същият като е същият като StringString във във
VB.NETVB.NET и в и в J#J#
• Стойностни и референтни типовеСтойностни и референтни типове• Всички типове наследяват Всички типове наследяват System.ObjectSystem.Object
• StringString е примитивен типе примитивен тип
Common Language Common Language InfrastructureInfrastructureCommon Language Common Language InfrastructureInfrastructure
• Стандартизирана част от Стандартизирана част от CLRCLR
• СтандартСтандарт ISO 23271 ISO 23271:2003:2003
• Описва как приложения, написани на Описва как приложения, написани на различни езици,различни езици, могат да се могат да се изпълняват в различни среди без да се изпълняват в различни среди без да се променят и прекомпилиратпроменят и прекомпилират
• .NET Framework –.NET Framework – имплементация на имплементация на CLICLI за за WindowsWindows
• Mono – Mono – имплементация на имплементация на CLICLI за за UNIXUNIX и и Linux – Linux – http://www.mono-project.com/http://www.mono-project.com/
• Стандартизирана част от Стандартизирана част от CLRCLR
• СтандартСтандарт ISO 23271 ISO 23271:2003:2003
• Описва как приложения, написани на Описва как приложения, написани на различни езици,различни езици, могат да се могат да се изпълняват в различни среди без да се изпълняват в различни среди без да се променят и прекомпилиратпроменят и прекомпилират
• .NET Framework –.NET Framework – имплементация на имплементация на CLICLI за за WindowsWindows
• Mono – Mono – имплементация на имплементация на CLICLI за за UNIXUNIX и и Linux – Linux – http://www.mono-project.com/http://www.mono-project.com/
• Common Language Specification (CLS)Common Language Specification (CLS)
• Common Type System (CTS)Common Type System (CTS)
• Common Intermediate Language (CIL)Common Intermediate Language (CIL)
• Управление на изключенияУправление на изключения
• Асемблита и метаданниАсемблита и метаданни
• Части от Части от .NET Framework Class Library.NET Framework Class Library
• Не всичко е стандартизирано!Не всичко е стандартизирано!
• Common Language Specification (CLS)Common Language Specification (CLS)
• Common Type System (CTS)Common Type System (CTS)
• Common Intermediate Language (CIL)Common Intermediate Language (CIL)
• Управление на изключенияУправление на изключения
• Асемблита и метаданниАсемблита и метаданни
• Части от Части от .NET Framework Class Library.NET Framework Class Library
• Не всичко е стандартизирано!Не всичко е стандартизирано!
Стандартизация в Стандартизация в CLICLIСтандартизация в Стандартизация в CLICLI
..NET NET езицитеезиците..NET NET езицитеезиците
• Езици, предоставени отЕзици, предоставени от Microsoft Microsoft• C#, C++, J#, VB.NET, C#, C++, J#, VB.NET, JScriptJScript
• Езици от трети доставчициЕзици от трети доставчици• Object Pascal, Perl, Python, APL, COBOL, Object Pascal, Perl, Python, APL, COBOL,
Eiffel, Haskell, Oberon, Scheme, Smalltalk…Eiffel, Haskell, Oberon, Scheme, Smalltalk…
• Код на различни езици в един проектКод на различни езици в един проект
• Интеграцията е вграденаИнтеграцията е вградена, , а не сглобенаа не сглобена
• Междуезиково наследяване на типове и Междуезиково наследяване на типове и управление на изключенияуправление на изключения
• Единна система от типове, програмен Единна система от типове, програмен модел и библиотека от класовемодел и библиотека от класове
• Езици, предоставени отЕзици, предоставени от Microsoft Microsoft• C#, C++, J#, VB.NET, C#, C++, J#, VB.NET, JScriptJScript
• Езици от трети доставчициЕзици от трети доставчици• Object Pascal, Perl, Python, APL, COBOL, Object Pascal, Perl, Python, APL, COBOL,
Eiffel, Haskell, Oberon, Scheme, Smalltalk…Eiffel, Haskell, Oberon, Scheme, Smalltalk…
• Код на различни езици в един проектКод на различни езици в един проект
• Интеграцията е вграденаИнтеграцията е вградена, , а не сглобенаа не сглобена
• Междуезиково наследяване на типове и Междуезиково наследяване на типове и управление на изключенияуправление на изключения
• Единна система от типове, програмен Единна система от типове, програмен модел и библиотека от класовемодел и библиотека от класове
Езикът Езикът C#C#Езикът Езикът C#C#
• Смесица междуСмесица между C++, Java C++, Java ии Delphi Delphi
• Насочен към компонентно-ориентиранНасочен към компонентно-ориентиранo o програмиранепрограмиране• Компоненти, свойстваКомпоненти, свойства и събитияи събития
• Без хедър файловете от Без хедър файловете от C/C++C/C++
• XMLXML-базирана документация-базирана документация
• Подходящ за Подходящ за GUIGUI и и WebWeb приложения приложения
• В В C# C# всичко е обект!всичко е обект!• Примитивните типове също са обектиПримитивните типове също са обекти
• Напр. Напр. 5.ToString()5.ToString() е валидно извикване е валидно извикване
• C# C# ее стандартизиран от стандартизиран от ECMA ECMA ии ISO ISO
• Смесица междуСмесица между C++, Java C++, Java ии Delphi Delphi
• Насочен към компонентно-ориентиранНасочен към компонентно-ориентиранo o програмиранепрограмиране• Компоненти, свойстваКомпоненти, свойства и събитияи събития
• Без хедър файловете от Без хедър файловете от C/C++C/C++
• XMLXML-базирана документация-базирана документация
• Подходящ за Подходящ за GUIGUI и и WebWeb приложения приложения
• В В C# C# всичко е обект!всичко е обект!• Примитивните типове също са обектиПримитивните типове също са обекти
• Напр. Напр. 5.ToString()5.ToString() е валидно извикване е валидно извикване
• C# C# ее стандартизиран от стандартизиран от ECMA ECMA ии ISO ISO
Езикът Езикът C# – C# – примерпримерЕзикът Езикът C# – C# – примерпример
using System;using System;
class HelloWorldclass HelloWorld{{ static void Main()static void Main() {{ Console.WriteLine("Hello, world!");Console.WriteLine("Hello, world!"); }}}}
Framework Class Library Framework Class Library (FCL)(FCL)Framework Class Library Framework Class Library (FCL)(FCL)
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
Web FormsWeb Forms, , Web ServicesWeb ServicesMobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
ASP.NETASP.NET
• Framework Class Library Framework Class Library е стандартната е стандартната библиотека на библиотека на .NET Framework.NET Framework
• Състои се отСъстои се от::
• Framework Class Library Framework Class Library е стандартната е стандартната библиотека на библиотека на .NET Framework.NET Framework
• Състои се отСъстои се от::
Пакетите от библиотеката Пакетите от библиотеката FCLFCLПакетите от библиотеката Пакетите от библиотеката FCLFCL
System System
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
ServiceProcessServiceProcess
SecuritySecurity RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
System.DataSystem.Data
DesignDesign
ADOADO
SQLTypesSQLTypes
SQLSQL
System.XmlSystem.Xml
XPathXPath
XSLTXSLT SerializationSerialization
System.WebSystem.Web
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServices UIUIHtmlControlsHtmlControls
WebControlsWebControls
DescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols System.DrawingSystem.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsSystem.Windows.Forms
DesignDesign ComponentModelComponentModel
Visual StudioVisual StudioVisual StudioVisual Studio
• Интегрирана среда за Интегрирана среда за .NET.NET разработка разработка
• Гъвкав редакторГъвкав редактор
• Мощен дебъгерМощен дебъгер
• Интеграция сИнтеграция с SQL Server SQL Server и и IISIIS
• Силна поддръжка на уеб услугиСилна поддръжка на уеб услуги
• Дебъгване наДебъгване на .NET .NET приложенияприложения
• Възможност за разширяване и Възможност за разширяване и създаване на нови редакторисъздаване на нови редактори
• Интегрирана среда за Интегрирана среда за .NET.NET разработка разработка
• Гъвкав редакторГъвкав редактор
• Мощен дебъгерМощен дебъгер
• Интеграция сИнтеграция с SQL Server SQL Server и и IISIIS
• Силна поддръжка на уеб услугиСилна поддръжка на уеб услуги
• Дебъгване наДебъгване на .NET .NET приложенияприложения
• Възможност за разширяване и Възможност за разширяване и създаване на нови редакторисъздаване на нови редактори
Visual Studio Visual Studio (2)(2)Visual Studio Visual Studio (2)(2)
• Визуално програмиранеВизуално програмиране – – компонентно-компонентно-ориентирано, базирано на събитияориентирано, базирано на събития
• Различни езици – Различни езици – C#, CC#, C++, ++, VB.NETVB.NET и и J# J#
• Работа с управляван и неуправляван кодРабота с управляван и неуправляван код
• Полезни помощници (Полезни помощници (wizards) wizards) и редактории редактори
• Windows Forms DesignerWindows Forms Designer
• ASP.NET Web Forms DesignerASP.NET Web Forms Designer
• ADO.NET DataSet DesignerADO.NET DataSet Designer
• Единна среда – единни уменияЕдинна среда – единни умения
• Визуално програмиранеВизуално програмиране – – компонентно-компонентно-ориентирано, базирано на събитияориентирано, базирано на събития
• Различни езици – Различни езици – C#, CC#, C++, ++, VB.NETVB.NET и и J# J#
• Работа с управляван и неуправляван кодРабота с управляван и неуправляван код
• Полезни помощници (Полезни помощници (wizards) wizards) и редактории редактори
• Windows Forms DesignerWindows Forms Designer
• ASP.NET Web Forms DesignerASP.NET Web Forms Designer
• ADO.NET DataSet DesignerADO.NET DataSet Designer
• Единна среда – единни уменияЕдинна среда – единни умения
Средата на Средата на Visual Visual StudioStudio 2005 2005Средата на Средата на Visual Visual StudioStudio 2005 2005
Архитектура наАрхитектура на платформата платформата .NET .NET и и .NET Framework.NET Framework
Въпроси?Въпроси?
http://academy.devbg.org/dotnet/http://academy.devbg.org/dotnet/
УпражненияУпражненияУпражненияУпражнения
1.1. Опишете накратко Опишете накратко .NET Framework..NET Framework. От какви От какви компоненти се състои тя?компоненти се състои тя?
2.2. Какво представлява средата за контролирано Какво представлява средата за контролирано изпълнение на програмен код Common Language изпълнение на програмен код Common Language Runtime (CLR)?Runtime (CLR)?
3.3. Какво представляват .NET асемблитата Какво представляват .NET асемблитата (assemblies)? (assemblies)?
4.4. Каква информация съдържат са метаданните в Каква информация съдържат са метаданните в асемблитата? асемблитата?
5.5. Какво са .NET приложенията? Какво са .NET приложенията? 6.6. Обяснете процеса на компилация на едно Обяснете процеса на компилация на едно
асембли.асембли.7.7. Какво е управляван код? Има ли причина да бъде Какво е управляван код? Има ли причина да бъде
използван вместо традиционния използван вместо традиционния native native код? Какво код? Какво е характерно за езика MSIL?е характерно за езика MSIL?
1.1. Опишете накратко Опишете накратко .NET Framework..NET Framework. От какви От какви компоненти се състои тя?компоненти се състои тя?
2.2. Какво представлява средата за контролирано Какво представлява средата за контролирано изпълнение на програмен код Common Language изпълнение на програмен код Common Language Runtime (CLR)?Runtime (CLR)?
3.3. Какво представляват .NET асемблитата Какво представляват .NET асемблитата (assemblies)? (assemblies)?
4.4. Каква информация съдържат са метаданните в Каква информация съдържат са метаданните в асемблитата? асемблитата?
5.5. Какво са .NET приложенията? Какво са .NET приложенията? 6.6. Обяснете процеса на компилация на едно Обяснете процеса на компилация на едно
асембли.асембли.7.7. Какво е управляван код? Има ли причина да бъде Какво е управляван код? Има ли причина да бъде
използван вместо традиционния използван вместо традиционния native native код? Какво код? Какво е характерно за езика MSIL?е характерно за езика MSIL?
УпражненияУпражненияУпражненияУпражнения
8.8. Какво е Common Language Specification (CLS)? Какво е Common Language Specification (CLS)? Защо е необходима тя?Защо е необходима тя?
9.9. Какво представлява общата система от типове Какво представлява общата система от типове в в .NET Framework (.NET Framework (Common Type System)?Common Type System)?
10.10. Избройте няколко отИзбройте няколко от .NET езиците. Какво е .NET езиците. Какво е общото между тях?общото между тях?
11.11. Какво е Framework Class Library (FCL)? Каква Какво е Framework Class Library (FCL)? Каква функционалност предлага тя?функционалност предлага тя?
8.8. Какво е Common Language Specification (CLS)? Какво е Common Language Specification (CLS)? Защо е необходима тя?Защо е необходима тя?
9.9. Какво представлява общата система от типове Какво представлява общата система от типове в в .NET Framework (.NET Framework (Common Type System)?Common Type System)?
10.10. Избройте няколко отИзбройте няколко от .NET езиците. Какво е .NET езиците. Какво е общото между тях?общото между тях?
11.11. Какво е Framework Class Library (FCL)? Каква Какво е Framework Class Library (FCL)? Каква функционалност предлага тя?функционалност предлага тя?