Легко масштабируемая архитектура .NET приложений на основе Amazon Web Services и Elastic Beanstalk
Архитектура на платформата .NET и .NET Framework
description
Transcript of Архитектура на платформата .NET и .NET Framework
Архитектура наАрхитектура на платформата платформата .NET.NETи и .NET Framework.NET Framework
Програмиране заПрограмиране за .NET Framework .NET Frameworkhttp://http://www.nakov.comwww.nakov.com//dotnetdotnet//
Светлин НаковСветлин НаковНационална академия по Национална академия по разработка на софтуерразработка на софтуерacademy.devbg.orgacademy.devbg.org
Необходими знанияНеобходими знания За усвояването на настоящия учебен За усвояването на настоящия учебен
материал са необходими базови материал са необходими базови познания по:познания по: програмиранепрограмиране езици за програмиранеезици за програмиране среди за разработка на софтуерсреди за разработка на софтуер
СъдържаниеСъдържание (1) (1) Какво е Какво е .NET.NET?? Архитектура на платформата Архитектура на платформата
Microsoft .NETMicrosoft .NET Какво е Какво е .NET.NET FrameworkFramework?? Архитектура на Архитектура на .NET Framework.NET Framework Common Language Runtime (CLR)Common Language Runtime (CLR) Управляван кодУправляван код Междинен език Междинен език MSILMSIL Модел за изпълнение на Модел за изпълнение на MSIL MSIL кодакода
СъдържаниеСъдържание (2) (2) Асемблита и метаданниАсемблита и метаданни .NET .NET приложенияприложения Application domainsApplication domains Common Language Specification Common Language Specification
(CLS), Common Type System (CTS)(CLS), Common Type System (CTS) Common Language Infrastructure (CLI)Common Language Infrastructure (CLI)
и интеграцията на различни езиции интеграцията на различни езици Framework Class LibraryFramework Class Library Интегрирана среда за разработка Интегрирана среда за разработка
Visual Studio .NETVisual Studio .NET
Управление на бизнесаУправление на
клиенти и партньориУправление
на продажбите
Потребители- На всяко
устройство- Навсякъде- По всяко време
XML Web УслугиИнтеграция на бизнес процесите и приложенията
СървъриХетерогенна инфраструктура от сървъри
СправкиСправкиАвтентикацияАвтентикацияИзвестяванеИзвестяване
Визията на Визията на Microsoft Microsoft за за .NET.NET
ЗаявкиЗаявкиПоръчкиПоръчки
Какво е платформата Какво е платформата .NET.NET?? Съвкупност от технологии, които Съвкупност от технологии, които
свързват хората с информацията – свързват хората с информацията – навсякъде, по всяко време, от всяко навсякъде, по всяко време, от всяко устройствоустройство
Визията на Визията на Microsoft Microsoft за развитието на за развитието на информационните технологииинформационните технологии
Платформа, която поддържа тази визияПлатформа, която поддържа тази визия Стандартизирана инфраструктура за Стандартизирана инфраструктура за
разработка, използване, хостинг и разработка, използване, хостинг и интеграция на интеграция на XML Web XML Web услугиуслуги
Маркетингова стратегияМаркетингова стратегия
.NET
Архитектурата на Архитектурата на .NET.NET
.NET .NET SmartSmartClientsClients
.NET .NET SmartSmartClientsClients
.NET .NET BuildingBuildingBlock ServicesBlock Services.NET .NET BuildingBuilding
Block ServicesBlock Services
.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET SmartSmartClientsClients
.NET .NET SmartSmartClientsClients
.NET .NET BuildingBuildingBlock ServicesBlock Services.NET .NET BuildingBuilding
Block ServicesBlock Services
.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET
.NET
Архитектурата на Архитектурата на .NET.NET
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET EnterpriseEnterpriseServersServers
.NET Enterprise Servers.NET Enterprise Servers .NET Enterprise .NET Enterprise сървърите предоставятсървърите предоставят
Сървърна инфраструктура за Сървърна инфраструктура за .NET .NET платформатаплатформата
Среда за изпълнение, управление и Среда за изпълнение, управление и интеграция на интеграция на XML WebXML Web услуги услуги
Ключови характеристикиКлючови характеристики Оркестрация на бизнес процесите в Оркестрация на бизнес процесите в
приложенията и услугите (приложенията и услугите (business process business process orchestrationorchestration))
Силна поддръжка на Силна поддръжка на XMLXML СигурниСигурни НадеждниНадеждни СкалируемиСкалируеми УправляемиУправляеми
Microsoft WindowsMicrosoft Windows ServersServers Family Family ––фамилия операционни системифамилия операционни системи
Microsoft SQL ServerMicrosoft SQL Server – управление на – управление на релационни, многомерни данни и релационни, многомерни данни и XMLXML
Microsoft BizTalkMicrosoft BizTalk Server –Server – интеграция на интеграция на бизнес процеси, услуги и системибизнес процеси, услуги и системи
Microsoft Host Integration ServerMicrosoft Host Integration Server – –интеграция на стари системиинтеграция на стари системи
Microsoft Exchange – Microsoft Exchange – координация на координация на съвместната работа в организациисъвместната работа в организации
Microsoft SharePoint Portal Server –Microsoft SharePoint Portal Server –сътрудничество и споделяне на сътрудничество и споделяне на информация в реално времеинформация в реално време
.NET Enterprise Servers.NET Enterprise Servers
Microsoft Application Center – Microsoft Application Center – хостинг, хостинг, управление и мониторинг на критични управление и мониторинг на критични за бизнеса приложенияза бизнеса приложения
Microsoft Content Management Server – Microsoft Content Management Server – изграждане, поддръжка и управление изграждане, поддръжка и управление на на WebWeb съдържание съдържание
Microsoft Mobile Information Server – Microsoft Mobile Information Server – интеграция с мобилни приложенияинтеграция с мобилни приложения
Microsoft Internet Security and Microsoft Internet Security and Acceleration Server – Acceleration Server – контрол и защита контрол и защита на връзката с Интернетна връзката с Интернет
Microsoft Commerce Server – Microsoft Commerce Server – електронна електронна търговиятърговия
.NET Enterprise Servers.NET Enterprise Servers
.NET .NET SmartSmartClientsClients
.NET .NET SmartSmartClientsClients
.NET .NET BuildingBuildingBlock ServicesBlock Services.NET .NET BuildingBuilding
Block ServicesBlock Services
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET EnterpriseEnterpriseServersServers
.NET
Архитектурата на Архитектурата на .NET.NET
.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET
..NET Framework NET Framework и и VS.NETVS.NET .NET Framework.NET Framework
Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения приложения и и WebWeb услуги услуги
Среда за изпълнение на управляван кодСреда за изпълнение на управляван код Програмен модел и библиотека класове Програмен модел и библиотека класове
за за .NET.NET програмиране програмиране ..NET Compact FrameworkNET Compact Framework
Платформа за разработка и изпълнение Платформа за разработка и изпълнение на на .NET.NET приложения, работещи върху приложения, работещи върху мобилни устройствамобилни устройства
Visual Studio Visual Studio ..NETNET – интегрирана – интегрирана среда за среда за .NET.NET разработка разработка
.NET .NET SmartSmartClientsClients
.NET .NET SmartSmartClientsClients
.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET EnterpriseEnterpriseServersServers
.NET
Архитектурата на Архитектурата на .NET.NET
.NET .NET BuildingBuildingBlock ServicesBlock Services.NET .NET BuildingBuilding
Block ServicesBlock Services
.NET Building Block Services.NET Building Block Services .NET Building Block Services.NET Building Block Services
(.(.NET My ServicesNET My Services)) Представляват съвкупност от Представляват съвкупност от XML WebXML Web
услуги, насочени към потребителяуслуги, насочени към потребителя Осигуряват персонализиран достъп до Осигуряват персонализиран достъп до
данните на потребителя по всяко данните на потребителя по всяко време и от всяко устройствовреме и от всяко устройство
Разчитат на отворени ИнтернетРазчитат на отворени Интернет стандарти и протоколистандарти и протоколи
Позволяват лесна интеграция с други Позволяват лесна интеграция с други услуги и приложенияуслуги и приложения
.NET Building Block Services.NET Building Block Services .NET Building Block .NET Building Block услугитеуслугите
Автентикация –Автентикация – .NET Passport .NET Passport (single sign-on)(single sign-on)
Доставка на съобщенияДоставка на съобщения Съхранение на лични потребителски Съхранение на лични потребителски
данни – документи, контакти, данни – документи, контакти, електронна поща, календар, любими електронна поща, календар, любими сайтове и т.н.сайтове и т.н.
Съхранение на настройките на Съхранение на настройките на приложениятаприложенията
.NET .NET BuildingBuildingBlock ServicesBlock Services.NET .NET BuildingBuilding
Block ServicesBlock Services
.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET.NET Framework.NET FrameworkVisual Studio Visual Studio .NET.NET
.NET .NET EnterpriseEnterpriseServersServers
.NET .NET EnterpriseEnterpriseServersServers
.NET
Архитектурата на Архитектурата на .NET.NET
.NET .NET SmartSmartClientsClients
.NET .NET SmartSmartClientsClients
Smart ClientsSmart Clients Smart Smart клиентите представляват клиентите представляват
архитектурна концепция за изграждане на архитектурна концепция за изграждане на клиентски приложения, коитоклиентски приложения, които предлагат гъвкав графичен потребителски предлагат гъвкав графичен потребителски
интерфейсинтерфейс консумират консумират XML WebXML Web-услуги-услуги позволяват работа позволяват работа online online и и offlineoffline обновяват се автоматично (обновяват се автоматично (auto update)auto update)
Smart Smart клиентитеклиентите са алтернатива на клиент-са алтернатива на клиент-сървър и сървър и WebWeb-приложенията-приложенията
Не са обвързани с Не са обвързани с .NET – .NET – същата същата архитектура може да се използва и с архитектура може да се използва и с JavaJava
.NET Smart Clients.NET Smart Clients ..NET smart NET smart клиентитеклиентите
Представляват Представляват smart smart клиенти, базирани клиенти, базирани на на .NET Framework.NET Framework
Работят върху различни Работят върху различни smart smart устройстваустройства ((компютрикомпютри, , мобилни телефони, мобилни телефони, handhelds, handhelds, вградени устройства,вградени устройства, ...)...)
Осигуряват достъп до информацията на Осигуряват достъп до информацията на потребителя – навсякъде и по всяко времепотребителя – навсякъде и по всяко време
.NET Framework.NET Framework, , .NET Compact Framework .NET Compact Framework и и VS.NET VS.NET позволяватпозволяват разработката на разработката на smart smart клиенти за най-разнообразни клиенти за най-разнообразни smart smart устройстваустройства
Архитектура на Архитектура на .NET.NET Enterprise Enterprise приложениятаприложенията
Enterprise Enterprise приложения – многослойни приложения – многослойни разпределени приложения, съобразени с разпределени приложения, съобразени с нуждите и изискванията на големите нуждите и изискванията на големите корпоративни клиентикорпоративни клиенти
Инфраструктурата на Инфраструктурата на .NET.NET
Инфраструктурата на Инфраструктурата на .NET.NET
Open Internet ProtocolsOpen Internet ProtocolsXML, XSLT, XSD, SOAP, XML, XSLT, XSD, SOAP, DISCO, UDDI, XHTML, DISCO, UDDI, XHTML,
HTTP, SSL, WAPHTTP, SSL, WAP
Visual Visual Studio.NETStudio.NET
Visual Visual Studio.NETStudio.NET
Simple Simple BrowsersBrowsersSimple Simple
BrowsersBrowsers
ApplicationsApplications Using Your Using Your
ServiceService
ApplicationsApplications Using Your Using Your
ServiceService
Your Internal ServicesYour Internal ServicesYour Internal ServicesYour Internal Services
.NET Enterprise Servers.NET Enterprise Servers.NET Enterprise Servers.NET Enterprise Servers
33rdrd Party Web Services Party Web Services33rdrd Party Web Services Party Web ServicesGeographic Mapping ServiceGeographic Mapping ServiceCredit Card Statement ServiceCredit Card Statement Service……
Building Block ServicesBuilding Block ServicesBuilding Block ServicesBuilding Block ServicesPassport – Identity ServicePassport – Identity ServiceCalendaring ServiceCalendaring Service… … [myServices][myServices]
WindowsWindows
SQL ServerSQL ServerBizTalk ServerBizTalk ServerApplication CenterApplication CenterCommerce ServerCommerce ServerHost Integration ServerHost Integration ServerExchange ServerExchange Server
Sales Data ServiceSales Data ServiceCorporate Fulfillment ServiceCorporate Fulfillment Service
Smart Smart DevicesDevicesSmart Smart
DevicesDevices
Smart ClientsSmart ClientsSmart ClientsSmart Clients.NET FW.NET FW
WindowsWindows
.NET FW & CF.NET FW & CF
Windows Windows CE, XP, 200CE, XP, 20000, , 20032003
Windows Windows CE, XP, 200CE, XP, 20000, , 20032003
.NET .NET FrameworkFramework
.NET .NET FrameworkFramework .NET FW.NET FW
Your Your applications applications
and Web and Web servicesservices
Your Your applications applications
and Web and Web servicesservices
......
......
Какво е Какво е .NET Framework?.NET Framework? Среда за разработка и изпълнение на Среда за разработка и изпълнение на
приложения за приложения за .NET.NET платформата платформата Програмен модел, библиотеки от Програмен модел, библиотеки от
класовекласове и единна инфраструктура за и единна инфраструктура за разработка, независима от езиците за разработка, независима от езиците за програмиранепрограмиране
Среда за контролирано изпълнение Среда за контролирано изпълнение на управляван кодна управляван код
Кодът работи на различни Кодът работи на различни платформиплатформи (Windows, Linux, (Windows, Linux, FreeBSD)FreeBSD)
Компоненти на .Компоненти на .NET FrameworkNET Framework
..NET FrameworkNET Framework се състои от: се състои от: 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, ......
Достъпна е навсякъде, където има Достъпна е навсякъде, където има .NET .NET FrameworkFramework
ОС управлява ресурсите, ОС управлява ресурсите, процесите и потребителите процесите и потребителите на машинатана машината
Осигурява на приложенията Осигурява на приложенията някои услугинякои услуги (COM+, MSMQ, (COM+, MSMQ, IIS, WMI)IIS, WMI)
CLR CLR е отделен процес в ОСе отделен процес в ОС
Операционна системаОперационна система
Архитектура на Архитектура на .NET Framework.NET FrameworkОперационна системаОперационна система
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Архитектура на Архитектура на .NET Framework.NET FrameworkCommon Language RuntimeCommon Language Runtime
CLR CLR управлява процеса на управлява процеса на изпълнение на изпълнение на .NET .NET кодкод
Управлява паметта, Управлява паметта, конкурентността, конкурентността, сигурността, ...сигурността, ...
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
Богата обектно-ориентирана Богата обектно-ориентирана библиотека с основни класовебиблиотека с основни класове
КолекцииКолекции, , вход-изходвход-изход, , работа работа със символни низовесъс символни низове, , работа с работа с мрежа,мрежа, сигурност, отдалечено сигурност, отдалечено извикване, многонишковост, извикване, многонишковост, ……
Архитектура на Архитектура на .NET Framework.NET FrameworkBase Class LibraryBase Class Library
Операционна системаОперационна система
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET and XMLADO.NET and XML
Достъп до бази данниДостъп до бази данни Disconnected Disconnected модел на модел на
данните (данните (DataSets)DataSets) Силна поддръжка на Силна поддръжка на XMLXML
Архитектура на Архитектура на .NET Framework.NET FrameworkРабота с данниРабота с данни
Операционна системаОперационна система
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 услугиуслуги, …, …
Архитектура на Архитектура на .NET Framework.NET FrameworkASP.NET ASP.NET и и Windows FormsWindows Forms
Операционна системаОперационна система
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 Framework.NET FrameworkЕзици за програмиранеЕзици за програмиране
Common Language Runtime (CLR)Common Language Runtime (CLR) Известен като Известен като Managed Execution Managed Execution
Environment (Environment (среда за управлявано среда за управлявано изпълнение)изпълнение)
Среда за контролирано изпълнение на Среда за контролирано изпълнение на управляван .управляван .NET NET програмен кодпрограмен код
Нещо подобно на виртуална машина Нещо подобно на виртуална машина (като (като JVM)JVM)
Не е интерпретатор – използва се Не е интерпретатор – използва се компилация по време на изпълнение компилация по време на изпълнение ((JIT JIT компилация)компилация)
Възможна е и предварителна Възможна е и предварителна компилациякомпилация
Common Language RuntimeCommon Language Runtime
CLR CLR управлявауправлява Изпълнението на Изпълнението на IL IL кода и кода и JIT JIT компилациятакомпилацията Паметта и ресурсите на приложениетоПаметта и ресурсите на приложението Безопасността на типоветеБезопасността на типовете СигурносттаСигурността
Code access securityCode access security Role-based securityRole-based security
ИзключениятаИзключенията КонкурентносттаКонкурентността Връзката с неуправляван кодВръзката с неуправляван код Процесите на Процесите на debug debug и оптимизиране (и оптимизиране (profiling) profiling)
при разработка на приложенияпри разработка на приложения
Common Language RuntimeCommon Language Runtime
Архитектура на Архитектура на 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)
Кодът, който Кодът, който CLR CLR изпълняваизпълнява Win32 Win32 кодът не е управляванкодът не е управляван Представлява програмен код на езика Представлява програмен код на езика
от ниско ниво от ниско ниво IL (Intermediate Language)IL (Intermediate Language) Описва се от метаданни:Описва се от метаданни:
описание на класове, интерфейси, описание на класове, интерфейси, свойства, полета, методи, параметри, свойства, полета, методи, параметри, типове данни, ...типове данни, ...
описание на библиотеките от класовеописание на библиотеките от класове описание на сигурносттаописание на сигурността
Програмите, написани на всеки Програмите, написани на всеки .NET .NET език, се компилират до управляван кодезик, се компилират до управляван код
Управляваният код (Управляваният код (Managed code)Managed code) Обектно-ориентиранОбектно-ориентиран Защитен от неправилна работа с типове (Защитен от неправилна работа с типове (type-type-
safety)safety) СигуренСигурен НадежденНадежден Позволява интеграция между различни езици Позволява интеграция между различни езици
за програмиранеза програмиране Позволява преносимост между различни Позволява преносимост между различни
платформиплатформи Неуправляваният код (Неуправляваният код (Win32 Win32 кодът)кодът)
няма защита на паметта и типоветеняма защита на паметта и типовете създава проблеми с надеждносттасъздава проблеми с надеждността не съдържа метаданни, които го описватне съдържа метаданни, които го описват
Управляван кодУправляван код
Управление на паметтаУправление на паметта CLR CLR автоматично управлява паметтаавтоматично управлява паметта
Динамично-заделените обекти се разполагат в Динамично-заделените обекти се разполагат в т. нар. т. нар. Managed HeapManaged Heap
Неизползваните обекти се почистват Неизползваните обекти се почистват автоматично от т. нар. автоматично от т. нар. Garbage CollectorGarbage Collector
Някои от най-неприятните проблеми в Някои от най-неприятните проблеми в програмирането са почти невъзможни:програмирането са почти невъзможни: Загуба на памет (Загуба на памет (memory leaks)memory leaks) Достъп до освободена или неинициализирана Достъп до освободена или неинициализирана
паметпамет
В управлявания кодВ управлявания код няма указатели!няма указатели! Използват се референции към обектиИзползват се референции към обекти
Intermediate LanguageIntermediate Language Intermediate Language Intermediate Language ((ILIL, , MSILMSIL,, CIL) CIL)
Език от ниско ниво (машинен език)Език от ниско ниво (машинен език) Стекова архитектураСтекова архитектура Като асемблер, но с обектно-Като асемблер, но с обектно-
ориентирани възможности:ориентирани възможности: инструкции за заделяне на паметинструкции за заделяне на памет инструкции за предизвикване и обработкаинструкции за предизвикване и обработка
на изключенияна изключения инструкция за извикване на виртуален инструкция за извикване на виртуален
методметод Позволява ефективно компилиране до Позволява ефективно компилиране до
машинен код за различни платформимашинен код за различни платформи Винаги се компилира преди изпълнениеВинаги се компилира преди изпълнение
Примерна програма наПримерна програма на MSIL MSIL
.method private hidebysig static void .method private hidebysig static void
Main() cil managedMain() cil managed
{{
.entrypoint.entrypoint
// Code size 11 (0xb)// Code size 11 (0xb)
.maxstack 8.maxstack 8
ldstr "Hello, world!"ldstr "Hello, world!"
call void call 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 изпълнява изпълнява MSIL MSIL кодакода.EXE .EXE / ./ .DLLDLL
Class LoaderClass Loader
JIT JIT компилаторкомпилатор
управляван управляван машинен кодмашинен код
trustedcode
извикване нанекомпилиран
метод
SecuritySecurityEngineEngine
изпълнениеизпълнение
VerifierVerifier
CodeCodeManagerManager
вечекомпилиран
код
библиотеки библиотеки с класовес класове
.NET .NET асемблитаасемблита ..NET NET асемблитата (асемблитата (assemblies)assemblies)
Програмни компоненти – Програмни компоненти – DLL DLL ии EXE EXE файловефайлове
Най-малката Най-малката deploymentdeployment единица в единица в CLR CLR Имат уникален номер на версиятаИмат уникален номер на версията Няма конфликти с версиитеНяма конфликти с версиите (DLL hell) (DLL hell) Няколко различни версии на едно и Няколко различни версии на едно и
също асембли могат да съществуват и също асембли могат да съществуват и да се използват едновременнода се използват едновременно
Състоят се от:Състоят се от: MSIL MSIL изпълним кодизпълним код метаданниметаданни ( (за асемблито и за типовете)за асемблито и за типовете) ресурсиресурси
Частни и споделени асемблита Частни и споделени асемблита ((private and shared assembliesprivate and shared assemblies)) Частни асемблитаЧастни асемблита
Използват се само за едно приложение, от Използват се само за едно приложение, от което са часткоето са част
Записват се в директорията на Записват се в директорията на приложениетоприложението
Споделени асемблитаСподелени асемблита Достъпни са за всички приложенияДостъпни са за всички приложения Записват се в специална област, т. нар. Записват се в специална област, т. нар.
Global Assembly Cache (GAC)Global Assembly Cache (GAC) Идентифицират се по силно име (име, Идентифицират се по силно име (име,
версия, локализация и цифров подпис)версия, локализация и цифров подпис)
.NET .NET асемблитаасемблита
Метаданните в асемблитатаМетаданните в асемблитатаОписание на типоветеОписание на типовете
Класове, интерфейси, типовеКласове, интерфейси, типовеБазови класове, имплементираниБазови класове, имплементираниинтерфейсиинтерфейсиЧлен-променливи, свойстваЧлен-променливи, свойстваМетоди, параметри на методите,Методи, параметри на методите,връщана стойноствръщана стойностАтрибутиАтрибути
Класове, интерфейси, типовеКласове, интерфейси, типовеБазови класове, имплементираниБазови класове, имплементираниинтерфейсиинтерфейсиЧлен-променливи, свойстваЧлен-променливи, свойстваМетоди, параметри на методите,Методи, параметри на методите,връщана стойноствръщана стойностАтрибутиАтрибути
ИмеИмеВерсияВерсияЛокализацияЛокализация
ИмеИмеВерсияВерсияЛокализацияЛокализация
Описание на асемблитоОписание на асемблито
Зависимости от други асемблитаЗависимости от други асемблитаПрава (Права (securitysecurity permissions) permissions)Експортирани типовеЕкспортирани типове
Зависимости от други асемблитаЗависимости от други асемблитаПрава (Права (securitysecurity permissions) permissions)Експортирани типовеЕкспортирани типове
[[цифров подписцифров подпис]]
..NETNET приложенията приложенията Конфигурируеми изпълними единици Конфигурируеми изпълними единици Състоят се от едно или няколко асемблитаСъстоят се от едно или няколко асемблита Инсталират се с просто копиране, без Инсталират се с просто копиране, без
сложна регистрация на компонентитесложна регистрация на компонентите При конфликт се използват първо личните При конфликт се използват първо личните
((private) private) асемблита, а след това асемблита, а след това споделените от споделените от GACGAC
Различните приложения използват Различните приложения използват различни версии на общите асемблита – различни версии на общите асемблита – няма конфликтняма конфликт
Лесна инсталация, деинсталация и Лесна инсталация, деинсталация и обновяванеобновяване
ResourcesResources
MSIL CodeMSIL Code
MetadataMetadata
CLR HeaderCLR Header
PE HeaderPE Header
Преносими изпълними файловеПреносими изпълними файлове
Преносимите изпълними файлове Преносимите изпълними файлове (portable executables(portable executables, , PE)PE) Представляват Представляват .EXE .EXE или или .DLL.DLL файлове файлове Състоят се от:Състоят се от:
Application DomainsApplication Domains Application DomainsApplication Domains
.NET .NET процеси в процеси в CLRCLR Няколко Няколко application domainapplication domain-а могат да -а могат да
работят в един процес на ОСработят в един процес на ОС изолирани един от другизолирани един от друг без да се нарушава сигурносттабез да се нарушава сигурността
Не се създава отделен процес в ОС за Не се създава отделен процес в ОС за всеки всеки application domainapplication domain ( (.NET.NET процес) процес)
Подобрява се производителносттаПодобрява се производителността Намалява сеНамалява се натоварването и разхода натоварването и разхода
на системни ресурси (памет, на системни ресурси (памет, процесорно време, ...)процесорно време, ...)
Поддръжка на много езициПоддръжка на много езици Common Language Specification (CLS)Common Language Specification (CLS)
Съвкупност от правила, които всички Съвкупност от правила, които всички .NET .NET езициезици са задължени да спазватса задължени да спазват
Специфицира минималните изисквания на Специфицира минималните изисквания на всички всички .NET.NET езици езици
Осигурява съвместимост между езицитеОсигурява съвместимост между езиците Intermediate Language (IL, MSIL)Intermediate Language (IL, MSIL)
Всички Всички .NET.NET езици се компилират до езици се компилират до MSILMSIL Осигурява съвместимост на Осигурява съвместимост на
компилирания .компилирания .NET NET кодкод Common Type System (CTS)Common Type System (CTS)
Обща система от типове за всички Обща система от типове за всички .NET .NET езициезици Осигурява съвместимост на даннитеОсигурява съвместимост на данните
Common Language SpecificationCommon Language Specification
Common Language Specification (CLS)Common Language Specification (CLS) Система от правила и изисквания, на Система от правила и изисквания, на
които отговарят всички които отговарят всички .NET .NET езициезици Осигурява съвместимост и лесно Осигурява съвместимост и лесно
взаимодействие между взаимодействие между .NET.NET езиците езиците НапримерНапример:: CLS CLS налага всички налага всички .NET.NET
езици да са обектно-ориентираниезици да са обектно-ориентирани Някои .Някои .NETNET езици поддържат много езици поддържат много
повече от изискванията на повече от изискванията на CLSCLS При използване на нестандартни за При използване на нестандартни за CLS CLS
програмни средства ипрограмни средства и техники се губи техники се губи съвместимост с останалите съвместимост с останалите .NET .NET езициезици
Common Type SystemCommon Type System Общата система от типове Общата система от типове (Common (Common
Type System, CTS)Type System, CTS) Дефинира поддържаните от Дефинира поддържаните от CLRCLR
типове данни и операции над тяхтипове данни и операции над тях Осигурява съвместимост на данните Осигурява съвместимост на данните
между различните между различните .NET.NET езици езици – String – String в в C#C# е същият като е същият като String String във във VB.NETVB.NET
Два типа обекти – по стойност и по Два типа обекти – по стойност и по референцияреференция
Всички типове наследяват Всички типове наследяват System.ObjectSystem.Object
String String е примитивен типе примитивен тип
Common Type SystemCommon Type System Типове по стойност (Типове по стойност (value types)value types)
Примитивните типове (Примитивните типове (int, char, float, …)int, char, float, …) и и структурите, дефинирани от програмистаструктурите, дефинирани от програмиста
Съхраняват се в стекаСъхраняват се в стека Унищожават се при излизане от обхватУнищожават се при излизане от обхват Предават се по стойностПредават се по стойност
Типове по референция (Типове по референция (reference typesreference types)) Класове, интерфейси, масиви, делегатиКласове, интерфейси, масиви, делегати Представляват типово-обезопасени указателиПредставляват типово-обезопасени указатели Съхраняват се в динамичната памет (Съхраняват се в динамичната памет (managed managed
heap)heap) Унищожават се от Унищожават се от garbage collector-garbage collector-аа Предават се по референция (по адрес)Предават се по референция (по адрес)
Common Language InfrastructureCommon Language Infrastructure Common Language Infrastructure (CLI) Common Language Infrastructure (CLI)
спецификациятаспецификацията Стандартизирана част от Стандартизирана част от CLRCLR
СтандартСтандарт ISO 23271 ISO 23271:2003:2003 Описва как приложения, написани на Описва как приложения, написани на
различни езици,различни езици, могат да се изпълняват могат да се изпълняват в различни среди без да се променят и в различни среди без да се променят и прекомпилиратпрекомпилират
.NET Framework –.NET Framework – имплементация на имплементация на CLICLI за за WindowsWindows
Mono – Mono – имплементация на имплементация на CLICLI за за UNIXUNIX и и Linux – Linux – http://www.go-mono.org/http://www.go-mono.org/
CLI CLI стандартизирастандартизира:: 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 InfrastructureCommon Language Infrastructure
..NET NET езицитеезиците Езици, предоставени отЕзици, предоставени от Microsoft Microsoft
C#, C++, J#, VB.NET, C#, C++, J#, VB.NET, JScriptJScript Езици от трети доставчициЕзици от трети доставчици
Object Pascal, Perl, Python, APL, COBOL, Eiffel, Object Pascal, Perl, Python, APL, COBOL, Eiffel, Haskell, ML, Oberon, Scheme, Smalltalk…Haskell, ML, Oberon, Scheme, Smalltalk…
Смесване на използваните езициСмесване на използваните езици Междуезиково наследяване на типове и Междуезиково наследяване на типове и
управление на изключенияуправление на изключения В един проект може да има код на различни В един проект може да има код на различни
езициезици Интеграцията е вграденаИнтеграцията е вградена, , а не сглобенаа не сглобена
Много езициМного езици, , но с единна система от типове, но с единна система от типове, програмен модел и библиотека от класовепрограмен модел и библиотека от класове
Езикът Езикът C#C# Смесица междуСмесица между C++, Java C++, Java ии Delphi Delphi Насочен към компонентно-ориентиранНасочен към компонентно-ориентиранo o
програмиранепрограмиране Компоненти, свойстваКомпоненти, свойства и събитияи събития XMLXML-базирана документация-базирана документация Всичко накуп, без Всичко накуп, без headerheader файлове, файлове, IDLIDL и т.н. и т.н. Може да се ползва за Може да се ползва за WebWeb-приложения-приложения
Всичко е обект!Всичко е обект! Примитивните типове също са обектиПримитивните типове също са обекти, , напр. напр.
5.ToString()5.ToString() е валидно извикване е валидно извикване
C# C# ее стандартизиран от стандартизиран от ECMA ECMA ии ISO ISO
Езикът Езикът 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 (FCL)Framework Class Library (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
Състои се отСъстои се от::
Пакетите от библиотеката Пакетите от библиотеката 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 Studio .NETVisual Studio .NET Visual Studio .NETVisual Studio .NET
Цялостна интегрирана среда за разработка на Цялостна интегрирана среда за разработка на приложенияприложения
Визуално програмиранеВизуално програмиране – – компонентно-компонентно-ориентирано, базирано на събитияориентирано, базирано на събития
Различни езици – Различни езици – 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
Силна поддръжка на Силна поддръжка на WebWeb-услуги-услуги Интеграция с Интеграция с SQL Server SQL Server ии Internet Information Internet Information
Server (IIS)Server (IIS)
Visual Studio .NETVisual Studio .NET ОтОт Visual Studio Visual Studio .NET .NET можетеможете::
Да пишете програмен кодДа пишете програмен код Да създавате потребителски интерфейсДа създавате потребителски интерфейс Да компилирате, изпълнявате, тествате, Да компилирате, изпълнявате, тествате,
проследявате за грешки (проследявате за грешки (debug)debug) и и deploy-deploy-ватевате
Да разглеждате документациятаДа разглеждате документацията
Единна среда – единни уменияЕдинна среда – единни умения Единна среда за всички езициЕдинна среда за всички езици Единна среда за всички платформиЕдинна среда за всички платформи Единна среда за всички технологииЕдинна среда за всички технологии
Средата на Средата на Visual Studio .NETVisual Studio .NET
Архитектура наАрхитектура наплатформата платформата .NET.NETи и .NET Framework.NET Framework
Въпроси?Въпроси?
УпражненияУпражнения1.1. Опишете накратко платформата Опишете накратко платформата Microsoft .NET. Microsoft .NET.
Кои са основните принципи, които залягат в нея? Кои са основните принципи, които залягат в нея? Избройте четирите компонента, от които тя се Избройте четирите компонента, от които тя се състои.състои.
2.2. Какво представляват .NET Enterprise сървърите? Какво представляват .NET Enterprise сървърите? Избройте някои от тях. Какво представлява .NET Избройте някои от тях. Какво представлява .NET Framework? От какви компоненти се състои? Framework? От какви компоненти се състои? Какво е Visual Studio .NET? За какво служат .NET Какво е Visual Studio .NET? За какво служат .NET Building Block услугите? Какво са .NET Smart Building Block услугите? Какво са .NET Smart клиентите? Какво е характерно за тях?клиентите? Какво е характерно за тях?
3.3. Опишете накратко Опишете накратко .NET Framework..NET Framework. От какви От какви компоненти се състои тя?компоненти се състои тя?
4.4. Какво представлява средата за контролирано Какво представлява средата за контролирано изпълнение на програмен код Common Language изпълнение на програмен код Common Language Runtime (CLR)?Runtime (CLR)?
УпражненияУпражнения5.5. Какво е Framework Class Library (FCL)? Каква Какво е Framework Class Library (FCL)? Каква
функционалност предлага тя?функционалност предлага тя?6.6. Какво е управляван код? Има ли причина да бъде Какво е управляван код? Има ли причина да бъде
използван вместо традиционния използван вместо традиционния native native код? Какво код? Какво е характерно за езика MSIL?е характерно за езика MSIL?
7.7. Какво представляват .NET асемблитата Какво представляват .NET асемблитата (assemblies)? Каква информация съдържат са (assemblies)? Каква информация съдържат са метаданните в асемблитата? Какво са .NET метаданните в асемблитата? Какво са .NET приложенията? Какво е application domain?приложенията? Какво е application domain?
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 Избройте основните пакети от Framework Class
Library (FCL).Library (FCL).
MSDN, .NET Framework Technology Overview – MSDN, .NET Framework Technology Overview – http://msdn.microsoft.com/netframework/technologyihttp://msdn.microsoft.com/netframework/technologyinfo/overview/nfo/overview/
MSDN, Overview of the .NET Framework – MSDN, Overview of the .NET Framework – http://msdn.microsoft.com/library/en-us/cpguide/htmhttp://msdn.microsoft.com/library/en-us/cpguide/html/cpovrintroductiontonetframeworksdk.aspl/cpovrintroductiontonetframeworksdk.asp
Microsoft .NET Glossary – Microsoft .NET Glossary – http://members.microsoft.com/partner/products/NET/http://members.microsoft.com/partner/products/NET/MicrosoftNET/DotNetGlossary.aspxMicrosoftNET/DotNetGlossary.aspx
Mike Becker, .NET Technical Overview – Mike Becker, .NET Technical Overview – http://hp-events.hp3.nl/hp_itanium/presentaties/MSFhttp://hp-events.hp3.nl/hp_itanium/presentaties/MSFT%20-%20NET%20technical%20overview_1.1.pptT%20-%20NET%20technical%20overview_1.1.ppt
MSDN Training, Programming C# (MOC 2124C), MSDN Training, Programming C# (MOC 2124C), Module 1: Overview of the Microsoft .NET PlatformModule 1: Overview of the Microsoft .NET Platform
Използвана литератураИзползвана литература
Jonathon Walsh, Joe Misner, Smart Clients — A Jonathon Walsh, Joe Misner, Smart Clients — A Practitioner's Point of View Practitioner's Point of View –http://www.developer.com/mgmt/article.php/3306741–http://www.developer.com/mgmt/article.php/3306741
Svetlin Nakov, .NET Framework Overview – Svetlin Nakov, .NET Framework Overview – http://www.nakov.com/publications/Nakov-DotNET-Frahttp://www.nakov.com/publications/Nakov-DotNET-Framework-Overview-english.pptmework-Overview-english.ppt
MSDN, Compiling to MSIL – MSDN, Compiling to MSIL – http://msdn.microsoft.com/library/en-us/cpguide/html/chttp://msdn.microsoft.com/library/en-us/cpguide/html/cpconmicrosoftintermediatelanguagemsil.asppconmicrosoftintermediatelanguagemsil.asp
MSDN, Application Domains Overview – MSDN, Application Domains Overview – http://msdn.microsoft.com/library/en-us/cpguide/html/chttp://msdn.microsoft.com/library/en-us/cpguide/html/cpconapplicationdomainsoverview.asppconapplicationdomainsoverview.asp
Използвана литератураИзползвана литература
MSDN, What is the Common Language Specification MSDN, What is the Common Language Specification – – http://msdn.microsoft.com/library/en-us/cpguide/htmhttp://msdn.microsoft.com/library/en-us/cpguide/html/cpconwhatiscommonlanguagespecification.aspl/cpconwhatiscommonlanguagespecification.asp
MSDN, Common Type System – MSDN, Common Type System – http://msdn.microsoft.com/library/en-us/cpguide/htmhttp://msdn.microsoft.com/library/en-us/cpguide/html/cpconthecommontypesystem.aspl/cpconthecommontypesystem.asp
MSDN, The Common Language Infrastructure (CLI) – MSDN, The Common Language Infrastructure (CLI) – http://msdn.microsoft.com/netframework/using/undehttp://msdn.microsoft.com/netframework/using/understanding/cli/rstanding/cli/
MSDN, C# Language – MSDN, C# Language – http://msdn.microsoft.com/vcsharp/language/http://msdn.microsoft.com/vcsharp/language/
MSDN, .NET Framework Class Library – MSDN, .NET Framework Class Library – http://msdn.microsoft.com/library/en-us/cpref/html/chttp://msdn.microsoft.com/library/en-us/cpref/html/cpref_start.asppref_start.asp
Използвана литератураИзползвана литература
MSDN, Visual Studio .NET – Product Overview – MSDN, Visual Studio .NET – Product Overview – http://msdn.microsoft.com/vstudio/productinfo/overvhttp://msdn.microsoft.com/vstudio/productinfo/overview/iew/
Използвана литератураИзползвана литература