Embedded NET Introduktion til NET framworket og NET
Embedded. NET Introduktion til. NET framworket og. NET Compact Frameworket Captator Tlf: 8620 4242 www. captator. dk Carsten Juel Andersen Softwarearkitekt juel@captator. dk Mobil: 2348 0003 maj 2005 Embedded. NET 1
Agenda Introduktion til. NET frameworket og. NET Compact frameworket . Embedded udvikling i. NET Windows XP embedded -. NET framework Windows CE -. NET compact framework Garbage Collection Parallelprogrammering: Processer og Threading Hvorfor. NET til embedded udvikling? maj 2005 Embedded. NET 2
Intet menneske er en ø ? ? ? ? maj 2005 Embedded. NET 3
…Brikkerne samles xp maj 2005 Embedded. NET 4
Frameworket, sprog og værktøjer VB C++ C# JScript … ASP. NET Web Forms Web Services Mobile Internet Toolkit Windows Forms Overliggende frameworks: Data, … Base Class Library Visual Studio. NET Common Language Specification Common Language Runtime OS (Windows) maj 2005 Embedded. NET (COM+ services) 5
Common Language Runtime Base Class Library Support Thread Support COM Marshaller Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Garbage Collector Class Loader maj 2005 Embedded. NET 6
Eksekveringsmodel VB Native Code VC Install time Code Gen . . . Script IL Common Language Runtime “Econo”-JIT Compiler Standard JIT Compiler Native Code maj 2005 Embedded. NET 7
Services der gør udvikling lettere Fælles (og stærke) typer Objekt håndtering Error Handling Lifetime management – Garbage Collection Selvbeskrivende objekter Dependency informationer - reflektion Fælles base classes Versionering Applikations isolering Side by Side XCOPY installation Operativsystem uafhængighed maj 2005 Embedded. NET 8
Fælles type system Integreret i CLR Kontrollerer hvordan CLRen erklærer, benytter og håndtere typer Fælles for CLR, kompilere og værktøjer Indeholder predefinerede typer Alle klasser nedarver fra System. Object klassen En VB klasse = en C# klasse = en XX klasse =. . . Marshalling er ikke nødvendig Eks: Alle VBs datatyper mappes til CLR typer Features i sprogene kan være forskellige maj 2005 Embedded. NET 9
. NET typesystemet Value types Primitives Enums Structs int i; enum State { Off, On } struct Point { int x, y; } Reference types Classesclass Foo: Bar, IFoo {. . . } Interfaces interface IFoo: Ibar {. . . } Arrays string[] a = new string[10]; Delegates delegate void Empty(); Strenge maj 2005 Embedded. NET 10
Bits and Pieces Assembly (application) -. exe /. dll Indeholder manifest Meta data Klasse Field Method Property Event Interface maj 2005 Embedded. NET 11
Understøttelse af mange sprog Fælles framework: Fælles type system Base classes CLR Object-orienteret framework Procedurale sprog er velunderstøttede Funktionelle sprog er mulige … Mange sprog har været inddraget … også akademiske sprog maj 2005 Embedded. NET 12
. NET Languages Visual Basic (*2) C# (*3) C++ JScript J# (Java) 2*COBOL Perl Python * 3 Delta Forth Dyalog APL Haskell Component Pascal TMT Pascal APL Asml ANSI C F# (ML & Caml) SML maj 2005 Embedded. NET Standard ML Small. Talk (S#) Small. Script * 2 Oberon Scheme * 2, Tachy Mercury Mondrian Fortran * 2 Eiffel Delphi Borland C++ Builder Objective Caml RPG IL * 3 Java LISP LOGO Lua Oz Ada Mixal PHP * 2 Prolog P# Pan# Powerbuilder Brain. Fuck (X#) Pizza Beta (Aarhus University) 13
. NET i en embedded sammenhæng Windows XP embedded med. NET framework installeret Windows CE / Pocket PC / Smart. Phone. NET Compact Framework 2. 0 Delmængde af det ”komplette”. NET framework 2. 0 En del af Visual Studio 2005 (release sensommer i år) Vil være i ROM på nogle kommende devices maj 2005 Embedded. NET 14
Tykke klienter til store og små Visual Studio. NET + Smart Device Extensions Pocket PC + PPC Phone Edition Microsoft Smartphone Notebook PCs . NET Compact Framework . NET Framework Tablet PCs Other Windows CE Devices Windows CE maj 2005 Embedded. NET … Windows XP 15
Windows Mobile Roadmap More Device Choices 2000 Core OS Better Development Richer Platform Capabilities maj 2005 2002 2003 Second Edition Future Windows Mobile Platform Win. CE 3. 0 Win. CE 4. 2 Win. CE 5. 0 e. VC 3 (C++) e. VB 3 (VB) e. VC 3 (C++) e. VC 4 (C++) VS. NET 2003 Visual Studio (C#, VB. NET) 2005 (C#, VB. NET, C++) MFC, ATL 4. 2, . NET CF SP 2 . NET CF 2. 0 Win 32, POOM Active Sync Connection Mgr MAPI OBEX Telephony Enhanced Emulator Configuration Mgr, Bluetooth, SMS VGA (PPC) QVGA (SP) Square Landscape MFC 8. 0, ATL 8. 0 Broad managed code support Notifications Broker, Location, Camera, Watson, D 3 DM Embedded. NET 16
Windows Mobile Platform Visual Studio 2005 Managed Native MFC ATL Server side . NET Compact Framework 2. 0 Win 32 ASP. NET Mobile Controls Software Platform (APIs) Device Management Remote API Configuration* Bluetooth Not. Broker Pocket Watson Communication Connection Manager TAPI* SMS* MAPI* POOM* Windows Mobile Presentation Home Screen User Interface/Shell HTML Control DOM Windows CE CE DB Active. Sync SQL Mobile Data Access SQL Mobile ADO CE XML CE DB OLE DB Multimedia GAPI Camera D 3 DM Pocket Outlook Pocket Internet Explorer Windows Media Player Drivers Device Hardware Processor Memory Display USB or Serial Radio GSM/GPRS CDMA/1 x. RTT Wi. Fi Bluetooth * = Managed wrappers maj 2005 Embedded. NET 17
Visual Studio 2005 emulatorer Pocket PC Smart. Phone maj 2005 Embedded. NET 18
Garbage Collection rydder op Som udvikler skal vi kun bekymre os om at ”new”e objekter, GC ”delete”r objekterne for os Ved GC forfølges alle GC Roots (registre, stack for samtlige tråde, statiske referencer m. v. ) Alle objekter der kan nåes fra en GC Root er del af programmet – øvrige er ikke og kan Garbage Collectes maj 2005 Embedded. NET 19
Garbage Collection med generationer Hvis objekter overlever en garbage collection er der stor sandsynlighed for at de derefter lever længe tid Objekter oprettes i generation 0, men bevæger sig mod generation 2 hvis de overlever længe nok maj 2005 Embedded. NET 20
Processer, App. Domains og Threads En. NET applikation artes ved at. NET CLR’en launches Der skabes et App. Domain Applikationen loades i App. Domain’et Applikationen afvikles i en eller flere tråde App. Domain er en logisk processgrænse maj 2005 Embedded. NET Windows Process der afvikler. NET applikation. NET CLR App. Domain Threads 21
Fra single- til multithreaded applikation Flere samtidige I/O operationer File, netværk, webservices etc. Indlæs fil 1 Indlæs fil 2 Indlæs fil 3 Start tråd 1 Start tråd 2 Start tråd 3 Afvent tråd 1 Afvent tråd 2 Afvent tråd 3 Indlæs fil 1 Indlæs fil 2 Indlæs fil 3 maj 2005 Embedded. NET 22
Start og join af tråde Thread demo Start et antal tråde og afvent at alle tråde afsluttes System. Threading. Thread thread = new System. Threading. Thread( new System. Threading. Thread. Start(Process. Thread)); thread. Start(); //. . . // Afvent at tråd afslutter thread. Join(); // Alternativt – afvent på tråd afslutter eller timeout if (!thread. Join(new System. Time. Span(0, 0, 2))) { // Afsluttede ikke indenfor 2 sekunder } private void Process. Thread() { //. . . } maj 2005 Embedded. NET 23
Thread pools er et velkendt design pattern i forbindelse med multithreading Minimerer resourceoverheadet ved brug af tråde . NET har en indbygget thread pool Opretter 25 ”arbejds”-tråde første gang den benyttes Sæt arbejdsopgave 1 i kø Sæt arbejdsopgave 2 i kø Sæt arbejdsopgave 3 i kø Afvent at de afslutter Indlæs fil 1 Indlæs fil 2 Indlæs fil 3 maj 2005 Embedded. NET 24
Thread pool demo En tråd i thread pool afslutter ikke når ”arbejdet” er fuldført, derfor kan join ikke benyttes System. Threading. Wait. Callback thread. Callback = new System. Threading. Wait. Callback(Process. Thread 2); System. Threading. Thread. Pool. Queue. User. Work. Item( thread. Callback, file. Name); //. . . // Egen logik benyttes i stedet for join // Process. Ended er en lokal property (der ikke er vist her) while (!Process. Ended) { System. Threading. Thread. Sleep(10); } private void Process. Thread 2(object state) { //. . . _process. Ended = true; } maj 2005 Embedded. NET Et vilkårligt objekt kan overføres her 25
Hvorfor? Færre fejlkilder!. NET platformen (og andre managed omgivelser) minimerer fejlkilder Referencer (frem for pointere) og Garbage Collection Memoryleaks (udvikler fejl eller cirkulære referencer) For tidlig frigivelse af hukommelse Ikke muligt at skrive eller tilgå hukommelse udenfor programmet Runtime checking Der kan ikke skrives ud over kanten af et array Typecasts til forkert type giver runtime fejl Stærk typede sprog – f. eks. C# Compileren sikrer konsistens brug af typer m. v. maj 2005 Embedded. NET 26
Hvorfor? OO principper Kan gøre komplekse problemer mere overskuelige ”Plug-and-play” arkitektur – f. eks. strategy pattern Uniformt typesystem Præcise fejlmeddelelser Exceptions stacktrace letter fejlfinding også uden debugging Meta programmering Reflektion Assemblies Versions, sikkerheds og deployment afgrænsning maj 2005 Embedded. NET 27
Spørgsmål www. captator. dk nyheder, artikler, information, . . . maj 2005 Embedded. NET 28
- Slides: 28