1 / 28

Embedded .NET Introduktion til .NET framworket og .NET Compact Frameworket

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. Agenda. Introduktion til .NET .NET frameworket og .NET Compact frameworket . Embedded udvikling i .NET

annabel
Download Presentation

Embedded .NET Introduktion til .NET framworket og .NET Compact Frameworket

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Embedded .NETIntroduktion til .NET framworket og .NET Compact Frameworket CaptatorTlf: 8620 4242www.captator.dkCarsten Juel AndersenSoftwarearkitektjuel@captator.dkMobil: 2348 0003 Embedded .NET

  2. Agenda • Introduktion til .NET • .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? Embedded .NET

  3. Intet menneske er en ø ? ? ? ? Embedded .NET

  4. xp …Brikkerne samles XML Web Services Common Language Runtime Embedded .NET

  5. Frameworket, sprog og værktøjer VB C++ C# JScript … Visual Studio.NET Common Language Specification ASP.NETWeb Forms Web Services Mobile Internet Toolkit Windows Forms Overliggende frameworks: Data, … Base Class Library Common Language Runtime OS (Windows) (COM+ services) Embedded .NET

  6. 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 Common Language Runtime Embedded .NET

  7. Eksekveringsmodel VB VC ... Script NativeCode Install timeCode Gen IL Common Language Runtime “Econo”-JITCompiler Standard JITCompiler NativeCode Embedded .NET

  8. 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 Embedded .NET

  9. 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 Embedded .NET

  10. .NET typesystemet • Value types • Primitives int i; • Enums enum State { Off, On } • Structs struct Point { int x, y; } • Reference types • Classes class Foo: Bar, IFoo {...} • Interfaces interface IFoo: Ibar {...} • Arrays string[] a = new string[10]; • Delegates delegate void Empty(); • Strenge Embedded .NET

  11. Bits and Pieces • Assembly (application) - .exe / .dll • Indeholder manifest • Meta data • Klasse • Field • Method • Property • Event • Interface Embedded .NET

  12. 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 Embedded .NET

  13. 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 Standard ML SmallTalk (S#) SmallScript * 2 Oberon Scheme * 2, Tachy Mercury Mondrian Fortran * 2 Eiffel Delphi Borland C++ Builder Objective Caml RPG IL * 3 Java LISP LOGO Lua .NET Languages Oz Ada Mixal PHP * 2 Prolog P# Pan# Powerbuilder BrainFuck (X#) Pizza Beta (Aarhus University) Embedded .NET

  14. .NET i en embedded sammenhæng • Windows • Windows XP embedded med .NET framework installeret • Windows CE / Pocket PC / SmartPhone • .NET Compact Framework 2.0 • .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 Embedded .NET

  15. Tykke klienter til store og små Visual Studio .NET+ Smart Device Extensions .NET Compact Framework .NET Framework Pocket PC + PPC Phone Edition Notebook PCs MicrosoftSmartphone Tablet PCs Other WindowsCE Devices … Windows CE Windows XP Embedded .NET

  16. Windows Mobile Roadmap MoreDevice Choices 2000 2002 2003 2003Second Edition FutureWindows Mobile Platform Core OS WinCE 3.0 WinCE 3.0 WinCE 4.2 WinCE 4.2 WinCE 5.0 BetterDevelopment eVC 3 (C++)eVB 3 (VB) eVC 3 (C++)eVB 3 (VB) eVC 3 (C++)eVC 4 (C++) VS.NET 2003(C#, VB.NET) eVC 3 (C++)eVC 4 (C++) VS.NET 2003 (C#, VB.NET) Visual Studio 2005(C#, VB.NET, C++) MFC Win32, POOM MFC, ATL Active SyncConnection MgrMAPIOBEXTelephony ATL 4.2, .NET CFEnhanced Emulator Configuration Mgr,Bluetooth, SMS .NET CF SP2VGA (PPC)QVGA (SP)SquareLandscape .NET CF 2.0MFC 8.0, ATL 8.0Broad managed code support Notifications Broker, Location, Camera, Watson, D3DM Richer Platform Capabilities Embedded .NET

  17. Managed Server side Native Visual Studio 2005 ASP .NETMobile Controls MFC ATL .NET Compact Framework 2.0 Win32 Software Platform (APIs) Data Access Device Management Presentation Communication Multimedia Remote APIConfiguration*Bluetooth Not. Broker Pocket Watson Connection ManagerTAPI*SMS* MAPI* POOM* Home ScreenUser Interface/ShellHTML ControlDOM SQL MobileADO CEXMLCE DBOLE DB GAPICameraD3DM Windows Mobile CE DBActiveSync SQL Mobile Pocket OutlookPocket Internet ExplorerWindows Media Player WindowsCE Drivers Device Hardware Radio ProcessorMemory GSM/GPRSCDMA/1xRTT WiFiBluetooth DisplayUSB or Serial * = Managed wrappers Windows Mobile Platform Embedded .NET

  18. Visual Studio 2005 emulatorer Pocket PC SmartPhone Embedded .NET

  19. Garbage Collection • 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 Embedded .NET

  20. Garbage Collection • Garbage Collection med generationer • Hvis objekter overlever en garbage collection er der stor sandsynlighed for at de derefter lever længe • Objekter oprettes i generation 0, men bevæger sig mod generation 2 hvis de overlever længe nok tid Embedded .NET

  21. Processer, AppDomains og Threads • En .NET applikation artes ved • at .NET CLR’en launches • Der skabes et AppDomain • Applikationen loades i AppDomain’et • Applikationen afviklesi en eller flere tråde • AppDomain er en logisk processgrænse Windows Process der afvikler .NET applikation .NET CLR AppDomain AppDomain AppDomain Threads Embedded .NET

  22. Fra single- til multithreaded applikation • Flere samtidige I/O operationer • File, netværk, webservices etc. Start tråd1 Start tråd2 Start tråd3 Afvent tråd1 Afvent tråd2 Afvent tråd3 Indlæs fil1 Indlæs fil2 Indlæs fil3 Indlæs fil1 Indlæs fil2 Indlæs fil3 Embedded .NET

  23. 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.ThreadStart(ProcessThread)); thread.Start(); // ... // Afvent at tråd afslutter thread.Join(); // Alternativt – afvent på tråd afslutter eller timeout if (!thread.Join(new System.TimeSpan(0, 0, 2))) { // Afsluttede ikke indenfor 2 sekunder } private void ProcessThread() { // ... } Embedded .NET

  24. Thread pool • 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 arbejdsopgave1 i kø Sæt arbejdsopgave2 i kø Sæt arbejdsopgave3 i kø Afvent at de afslutter Indlæs fil1 Indlæs fil2 Indlæs fil3 Embedded .NET

  25. Thread pool • Thread pool demo • En tråd i thread pool afslutter ikke når ”arbejdet” er fuldført, derfor kan join ikke benyttes System.Threading.WaitCallback threadCallback = new System.Threading.WaitCallback(ProcessThread2); System.Threading.ThreadPool.QueueUserWorkItem( threadCallback, fileName); // ... //Egen logik benyttes i stedet for join // ProcessEnded er en lokal property (der ikke er vist her) while (!ProcessEnded) { System.Threading.Thread.Sleep(10); } Et vilkårligt objekt kan overføres her private void ProcessThread2(object state) { // ... _processEnded = true; } Embedded .NET

  26. 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. Embedded .NET

  27. 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 Embedded .NET

  28. Spørgsmål www.captator.dknyheder, artikler, information, ... Embedded .NET

More Related