Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.

Hasonló előadás


Az előadások a következő témára: "ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető."— Előadás másolata:

1 ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető http://www.architekturaforum.hu/blogs/inovak

2 ARCHITECT Academy Foundations Bemutatni a.NET keretrendszer legfontosabb technológiai é.s elvi alapjait Bemutatni, hol áll a.NET keretrendszer ma és hová tart a közeli jövőben Segítséget nyújtani.NET technológiára épülő fejlesztési projektek kialakításához, irányításához

3 ARCHITECT Academy Foundations 1.A világ és fejlesztések a.NET előtt 2.A.NET keretrendszer céljai 3.A.NET futtatókörnyezet 4.A.NET fontos rétegei, elemei 5.Architektúra elemek a.NET-ben 6.Adatelérési technológiák 7.Kérdések, válaszok

4

5 ARCHITECT Academy Foundations Alkalmazások változatos fejlesztőeszközökkel készülnek Monolit alkalmazások Kliens-szerver alkalmazások Többrétegű alkalmazások Szolgáltatásalapú rendszerek Uralkodó kliens operációs rendszer: Windows Több szerver oldali rendszerszoftver

6 ARCHITECT Academy Foundations Különböző programozási nyelvek C, C++, VB, Delphi (Turbo Pascal), Object Builder Különböző futásidejű könyvtárak Microsoft Foundation Classes (MFC) Active Template Library (ATL) Borland Visual Component Library (VCL) Msvbvm60.dll (Visual Basic) Különböző IPC mechanizmusok RPC, WinSocket MTS, COM, COM+, DCOM HTTP „.DLL-Hell” jelenség

7 Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.) Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.) Delphi App 2 VCL Delphi App 1 VCL VB App MFC runtime VB runtime Common Controls MFC App 2 MFC App 1 MFC runtime

8 Üzleti funkciók (30%) Infrastruktúra kód (70%) Erőforrás ráfordítás általában

9 ARCHITECT Academy Foundations Alkalmazásfejlesztési keretrendszerek 1996: Java  J2EE 2000:.NET Önállóan fejlődtek, „inspirálták egymást” Melyik a jobb? Ebben a formában értelmetlen a kérdés... Jelen, várható jövő: Minden nagyvállalatnál mindkét technológiának megvan a helye Nem a homogenizálás a cél, hanem az együttműködés A két technológia folyamatosan javítja a másikkal való együttműködést

10

11 Üzleti funkciók (30%) Infrastruktúra kód (70%) Erőforrás ráfordítás általában Erőforrás ráfordítás keretrendszer alkalmazásával Üzleti funkciók (70%) Infrastruktúra kód (30%) Erőforrás ráfordítás (keretrendszer, kitöltött időkeret) Infrastruktúra kód (30%) Üzleti funkciók (70%)

12 FuttatókörnyezetÉpítőelemek Hatékonyságjavító eszközök Fejlesztési életciklus kezelése

13 .NET változatMegjelenés 1.0 Beta 12000. november 1.0 Beta 22001. június 1.0 SP12002. március 1.0 SP22002. augusztus 1.0 SP32004. augusztus 1.1 SP12005. március 2.0 SP12007. november 19. 3.5 SP12008 Q2

14 Common Language Runtime Base class library Security, Soap 1.2, XML, Generic collections, I/O, stb. Architektúra szolgáltatások ASP.NET v1.0 WinForms 1.0

15

16 Felügyelt kód [ managed code ]: az operációs rendszer szolgáltatásait kizárólag a.NET futtatókörnyezeten keresztül veszi igénybe. „Flat” API helyett objektumok:  Egyértelmű paraméterek  Elfelejthetjük a „Handle”-t  „buffer overrun” elkerülése  Típusbiztonság (lebegőpontos szám helyén nem lesz string...) Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.) Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.).NET alkalmazás.NET alkalmazásmotor (mscoree.dll).NET alkalmazásmotor (mscoree.dll) Felhasználói.NET objektumok.NET alapobjektum- könyvtár

17 .NET alkalmazásmotor.NET forráskód (C#, VB.NET, stb.).NET forráskód (C#, VB.NET, stb.).NET fordítóprogram.DLL vagy.EXE assembly (MSIL és metaadat).DLL vagy.EXE assembly (MSIL és metaadat) Class Loader Jitter Gépi kódú utasítás Gépi kódú utasítás Végrehajtás Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.) Windows API-k (User.exe, GDI.exe, Kernel32.dll, netapi32.dll, stb.)

18 ARCHITECT Academy Foundations static void Main(string[] args) { int result = 1; for (int i = 1; i <= 5; i++) result *= i; Console.WriteLine("5! = {0}", result); } A programot lefordítjuk Az ILDASM (MSIL Disassembler) megvizsgáljuk az MSIL kódot Megnézzük a futás közben előálló (JIT) gépi kódot

19 // Lokális változók.locals init ([0] int32 result, [1] int32 i) // result = 1; IL_0000: ldc.i4.1 IL_0001: stloc.0 // for (int i = 1; i <=5; i++) IL_0002: ldc.i4.1 IL_0003: stloc.1 IL_0004: br.s IL_000e // result *= i; IL_0006: ldloc.0 IL_0007: ldloc.1 IL_0008: mul IL_0009: stloc.0

20 // for (int i = 1; i <=5; i++) IL_000a: ldloc.1 IL_000b: ldc.i4.1 IL_000c: add IL_000d: stloc.1 // for (int i = 1; i <=5; i++) IL_000e: ldloc.1 IL_000f: ldc.i4.5 IL_0010: ble.s IL_0006 // Console.WriteLine(„5! = {0}”, result); IL_0012: ldstr "5! = {0}" IL_0017: ldloc.0 IL_0018: box [mscorlib]System.Int32 IL_001d: call void [mscorlib]System.Console::WriteLine(string, object)

21 // int result = 1; 00000033 mov ebx,1 // for (int i = 1; i <= 5; i++) 00000038 mov dword ptr [ebp-44h],1 0000003f nop 00000040 jmp 0000004D // result *= i; 00000042 mov eax,dword ptr [ebp-44h] 00000045 imul eax,ebx 00000048 mov ebx,eax // for (int i = 1; i <= 5; i++) 0000004a inc dword ptr [ebp-44h] 0000004d cmp dword ptr [ebp-44h],5 00000051 setle al 00000054 movzx eax,al 00000057 mov dword ptr [ebp-48h],eax 0000005a cmp dword ptr [ebp-48h],0 0000005e jne 00000042

22

23 Common Language Runtime (CLR) Common Type System (CTS) Common Language Specification (CLS) Base Class Library (Infrastruktúra szolgáltatások) Biztonság XML/SOAP Konfiguráció Nyomkövetés Biztonság Többszálúság Fájlkezelés Konténerek Diagnosztika P/Invoke... Architektúra szolgáltatások ASP.NET/Webszolgáltatások ADO.NET/Entity Framework WinForms WF WCF WPF CardSpace...

24 Érték: a típust a memóriában lévő bitsorozat írja le (pl. Int32) Referencia: a típust a bitsorozat helyére vonatkozó referencia azonosítja be (pl. String) 2007.01.08 15:44:23 (&Customer) 42 true (&String) Color.AliceBlue Kovács Mihály 413.532 Hello, World (&String) 1086547 2006.12.31 Kiértékelési verem [ evaluation stack ] Felügyelt blokk [ managed heap ]

25 ARCHITECT Academy Foundations Felsorolt (enum) típusok Önálló érték, bitkombináció Struktúra (C, C++, VB, Delphi szemantika) Primitív (CLR által kezelt) típusok Boolean Byte, Sbyte, Char Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal

26 Primitív (CLR által kezelt) típusok: System.Object System.String „Boxing”: Érték típus  Referencia típus „Unboxing”: Referencia típus  Érték típus System.Object System.ValueType Érték típusok Referencia típusok

27 ARCHITECT Academy Foundations Class: Legfontosabb típus, az OOP alapja Láthatóság: private, public, protected, internal Absztrakció: absztrakt/konkrét Lezártság: nyitott/ lezárt [ sealed ] Öröklés: egy alaposztály, 0, 1 vagy több interfész Elemei: Mező [ field ] Metódus [ method ] Tulajdonság [ property ] Esemény [ event ]

28 Interface: absztrakt metódusok, tulajdonságok és események gyűjteménye Nem származnak le egyetlen típusból sem Típusok megvalósítják őket (nem öröklik!) Interfész megvalósíthat egy másik interfészt public interface IShapePoints { int PointCount { get; } Point GetPoint(int index); } public struct SingleLine: IShapePoints {... } public IShapeDraw: IShapePoints { void Draw(); }

29 A.NET eseménykezelésének alapja A C/C++ programozásban megszokott metódusmutató szerepét tölti be Egy időben több metódusra hivatkozhat public delegate void Log(string message);... public static event Log OnLog;... public static void LogToConsole(string message) { Console.WriteLine("{0}: {1}", DateTime.Now, message); } static void Main(string[] args) { OnLog += new Log(LogToConsole); OnLog += new Log(delegate(string message) { Console.WriteLine("TRACE: {1}", DateTime.Now, message); } ); OnLog("Test message"); }

30 ARCHITECT Academy Foundations Assembly: a legkisebb fizika egység a.NET-ben Lehet:.DLL vagy.EXE Tartalmazhat: futó kódot, erőforrást (pl. képek) Önleíró: tartalmazza a benne foglalt metaadatok leírását saját verzió és hivatkozott szerelvények verziói Nyelvfüggetlen: bármely nyelven készülhet, illetve felhasználható Verziókezelt: Ugyanazon assembly verziói egymás mellett élhetnek! Alkalmazás és rendszerszintű házirendek a verziók kezelésére Biztonságos: Az assembly-k aláírással láthatók el Hozzáférési házirendek, jogosultságok definiálhatók

31 ARCHITECT Academy Foundations Telepítés: XCOPY, egyszerű másolás Felhasználási szándék: Privát szerelvény: egy konkrét alkalmazás használja Osztott szerelvény: több alkalmazás közösen használja GAC: Global Assembly Cache Az osztott szerelvények tára Több verziót tárol (verziószám, lokalizáció) Szerelvények betöltése Exact, nyomon követhető mechanizmus Házirendekkel, konfigurációval befolyásolható

32

33 Megjelenítés Üzleti logika Adatelérés Adatok Adatbázis Szolgáltatás Adatelérés (Data Access) Adatelérés (Data Access) Szolgáltatás elérés (Service Agent) Szolgáltatás elérés (Service Agent) Entitások Szolgáltatás objektumok Szolgáltatás objektumok Munkafolyamatok Üzleti szolgáltatások homlokzata Felhasználói felület folyamatok Felhasználói felület elemek Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility) Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility)

34 Kompozit szolgáltatás Szolgáltatás 1 Homlokzat 1 Szolgáltatás 2 Homlokzat 2 Szolgáltatás elérés 1 Szolgáltatás elérés 2 Szolgáltatás logikája Szolgáltatás homlokzata Szolgáltatás fogyasztó (Service Agent) Szolgáltatás fogyasztó (Service Agent) Szolgáltatás fogyasztó (Megjelenítés réteg) Szolgáltatás fogyasztó (Megjelenítés réteg)

35 Adatbázis 1 Adatbázis 2 Szolgáltatás 1 Szolgáltatás logikája Terheléselosztás Megjelenítés (Web) Web farm Megjelenítés (vastag kliens) Megjelenítés (vastag kliens) Megjelenítés (vastag kliens) Megjelenítés (vastag kliens)

36 ARCHITECT Academy Foundations Milyen szoftver rétegeket használok? Milyen rétegeket „olvasztok” össze más rétegekkel Egy logikai komponensbe Egy fizikai komponensbe Hogyan oldom meg a komponensek kommunikációját? Egyéb nem minőségi elvárások: Teljesítmény Skálázhatóság Hibatűrés Tesztelhetőség Stb.

37 Monolit alkalmazás: Egyetlen.EXE? Egybemosott rétegek? Adatbázis Szolgáltatás Adatelérés (Data Access) Adatelérés (Data Access) Szolgáltatás elérés (Service Agent) Szolgáltatás elérés (Service Agent) Entitások Szolgáltatás objektumok Szolgáltatás objektumok Munkafolyamatok Üzleti szolgáltatások homlokzata Felhasználói felület folyamatok Felhasználói felület elemek Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility) Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility)

38 Elosztott alkalmazás: Több fizikai komponens? Jól határolt rétegek? Adatbázis Szolgáltatás Adatelérés (Data Access) Adatelérés (Data Access) Szolgáltatás elérés (Service Agent) Szolgáltatás elérés (Service Agent) Entitások Szolgáltatás objektumok Szolgáltatás objektumok Munkafolyamatok Üzleti szolgáltatások homlokzata Felhasználói felület folyamatok Felhasználói felület elemek Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility) Infrastruktúra réteg (Diagnosztika, kommunikáció, security, utility)

39 Adatbázis SQL Server 2005 CLR integráció SQL Server 2008 Adatelérés réteg (Data Access) ADO.NET v1.0ADO.NET v2.0 TransactionScope SQL Server 2005 XML adattípus, felhasználói típusok Szolgáltatás elérés (Service Agent), Üzleti homlokzat HTTP, TCP.NET Remoting SOAP webservice Message Queue WS Extensions

40 Üzleti entitások Common Type System.NET Generics Szolgáltatás objektumok Munkafolyamatok

41 Felhasználói felület elemek ASP.NET v1.0ASP.NET v2.0 WinForms v1.0WinForms v2.0 Felhasználói felület folyamatok

42

43 .NET Framework Data Providers Data Sources SQL Server OracleOracle Other SQL ISAMISAM ODBCODBC Native SQL Server Native Oracle Provider for OLEDB Provider for ODBC

44 DataSetDataSet DataTableCollectionDataTableCollection.NET Framework Data Provider ConnectionConnection TransactionTransaction CommandCommand ParametersParameters DataReaderDataReader DataAdapterDataAdapter SelectCommandSelectCommand InsertCommandInsertCommand UpdateCommandUpdateCommand DeleteCommandDeleteCommand DataTableDataTable DataRowCollectionDataRowCollection DataColumnCollectionDataColumnCollection ConstraintCollectionConstraintCollection DataRelationCollectionDataRelationCollection DatabaseDatabase

45 Adattábla 1 Adattábla N Adattábla 3 Adattábla 2 Mapping 1 Mapping 2 Entitásséma 1 Entitásséma 2

46 ARCHITECT Acadey Foundations Absztrakció az adatbázis logikai modellje felett: koncepcionális modell Object-Relational Mapping Entity Data Model Entitások Relációk Schema Definition Language Entity SQL

47 ARCHITECT Acadey Foundations Language Integrated Query Natív adatlekérdezési lehetőség a.NET keretredszerhez Run-time: elérhető a.NET 2.0-ban is.NET 3.0/3.5: erős nyelvi támogatás Általános adatelérési mechanizmus Standard Query Operators „Halasztott” végrehajtás Végrehajtás LINQ provider-eken keresztül

48 ARCHITECT Acadey Foundations LINQ to Objects: memóriaobjektumok LINQ to XML: XML információk LINQ to SQL: SQL Server LINQ to Datasets: ADO.NET DataSet-ek LINQ to Data Services: ADO.NET DS LINQ to Entities: Entity Framework PLINQ LINQ 4 SPS (L&M Solutions)

49 ARCHITECT Academy Foundations A.NET keretrendszer alapvetően megváltoztatja azt, ahogyan alkalmazásaink az operációs rendszer szolgáltatásait használják Fókusz: Erőforrásfelhasználás hatékonysága Infrastruktúra funkciók  Üzleti funkciók A.NET folyamatosan fejlődik Erősődőben az architektúra szolgáltatások.NET v3.5 Adat és információkezelés új korszaka kezdődik

50 ARCHITECT Academy Foundations

51 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Letölteni ppt "ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető."

Hasonló előadás


Google Hirdetések