Gaál László rendszermérnök Microsoft Magyarország .NET Framework Gaál László rendszermérnök Microsoft Magyarország
Mi az a .NET? Marketing brand Minden olyan termék, ami a .NET elképzelés megvalósítását szolgálja
Mi az a .NET? Technológiai készlet XML webszolgáltatások, mint alapkoncepció .NET Framework Visual Studio.NET .NET My Services .NET Enterprise kiszolgálók Windows.NET Server stb.
Mi az a .NET? Technológiai készlet XML webszolgáltatások, mint alapkoncepció .NET Framework Visual Studio.NET .NET My Services .NET Enterprise kiszolgálók Windows.NET Server stb.
Webszolgáltatások Kapcsolatteremtés 2. beszállító vállalat készlet- nyilvántartás rendelés- feldolgozás 1. beszállító 3. beszállító This is a build slide to explain what the foundations of web services are all about --internet, uddi, xml, soap. Need a way to connect –internet Need a way to “find” relevant services (think of yahoo search on steroids that tells you suppliers that have the part you want w/in the price range you can afford and can deliver on Thursday AND the info on how to deal w/ them ---what the PO should look like, credit ref, etc.) Need a way to “translate” your stuff to their stuff (can’t dictate how they handle or structure a PO) Need a way to actually KICK OFF the transaction (buy the part, make the deal, whatever) A szolgáltatásban részt vevő rendszerek összekapcsolása (HTTP) ügyfelek
Webszolgáltatások A kívánt szolgáltatás megkeresése 2. beszállító vállalat készlet- nyilvántartás 3. beszállító rendelés- feldolgozás 1. beszállító online „szaknévsor” A képességek, a megrendelés, az igénybevétel és a fizetés módjának lekérdezése (WSDL és UDDI) ügyfelek
Webszolgáltatások Adattovábbítás 2. beszállító vállalat készlet- nyilvántartás 3. beszállító rendelés- feldolgozás 1. beszállító online „szaknévsor” A szükséges adatok eljuttatása a résztvevő rendszerekhez (XML) ügyfelek
Webszolgáltatások Tranzakciók végrehajtása 2. beszállító vállalat készlet- nyilvántartás 3. beszállító rendelés- feldolgozás 1. beszállító online „szaknévsor” ügyfelek A kívánt műveletek elvégzése, a tranzakciók összehangolása (SOAP)
Egy lehetséges platform Eszközök Felhasználói szolgáltatások Webszolgáltatások So what would a platform based on the web services model look like? [build] At the bottom, you would still have a variety of hardware running server operating systems and server software. And at the top, you would still have the devices that users can use to access the Internet. So far, this looks pretty familiar – just like the Web of today. But the problem right now is that in order to access services on different servers, users need to manually repoint their browsers from one server to another, and they don’t have a way to integrate the information that is available to them from different servers – even if the information is closely related. They also need to configure their preferences and information separately from every device, and separately for each of the server applications they access. So, to deal with the problem of aggregating the information on the different servers for the user, and consolidating things like user preferences and logins, you introduce a web services layer. And to bundle together and rationalize the variety of web services that a user will want to access, you create user experiences which offer a coherent and individually-tailored set of web services to the user, which they can access from any of their devices – cell phones, PCs, PDAs, and so on. Now the user has a completely different kind of Internet experience, where they can access from any device (any time anywhere) their custom-made user experience, which will in turn access all of the different web services they need to manage their information and activities in a consolidated fashion, regardless of where the actual servers are that the data and applications are running on. Kiszolgálók
Mi az a .NET? Technológiai készlet XML webszolgáltatások, mint alapkoncepció .NET Framework Visual Studio.NET .NET My Services .NET Enterprise kiszolgálók Windows.NET Server stb.
Framework, nyelvek és eszközök VB C++ C# JScript … Visual Studio.NET Common Language Specification Webszolgáltatások Felhasználói felület Adatok és XML Alaposztályok Common Language Runtime
Framework, nyelvek és eszközök VB C++ C# JScript … Visual Studio.NET Common Language Specification Webszolgáltatások Felhasználói felület Adatok és XML Alaposztályok Common Language Runtime
Common Language Runtime tervezési szempontok Egyszerűbb alkalmazásfejlesztés Robusztus és biztonságos futtató környezet Több programnyelv támogatása Egyszerűbb telepítés és üzemeltetés Common Type System Common Language Specification
A .NET fejlődése Alkalmazás Kód és adatstruktúrák A COM előtt az alkalmazások el voltak szigetelve egymástól (max. file-csere, vagy socket)
A .NET fejlődése A COM biztosítja az objektumok kommunikációját, de magunknak kell kialakítani a közös nevezőt.
A .NET fejlődése A .NET Framework és a CLR segítségével a komponensek közös alapra épülnek (direkt kommunikáció)
Programozás COM-alapon IConnectionPoint IConnectionPointContainer Registry API CoCreateInstance IUnknown IMyInterface IProvideClassInfo ITypeInfo IErrorInfo IDispatch IDL Proxy-objektumok Threading modellek IDispatchEx Object context
Hívási és biztonsági kontextus Objektumok élettartama Memóriakezelés A CLR modellje Hangsúly a funkción, nem a bedrótozáson IMyInterface Távoli hívások Hívási és biztonsági kontextus Objektumok élettartama Memóriakezelés Kivételkezelés
Egyszerűsített fejlesztés Haladunk a korral Elimináljuk a háztartási teendőket Regisztrálás GUID-ok .IDL leírások HRESULT IUnknown AddRef/Release CoCreateInstance ”new” operator önleíró alkalmazások hierarchikus névterek egységes OM, metadata kivételkezelés nyelvi szinten mindenki egy ős-objektumból garbage collector
Egyszerűbb fejlesztés Minden objektum-orientált Mindenhol használható osztályok és öröklődés Nyelvek között is! Az egyszerű típusok is osztályok automatikus konverzióval (boxing, unboxing) Zökkenőmentes integráció Minden .NET osztály használható COM objektumként – a Framework támogatja COM objektumokat is .NET osztályokként importálhatunk – kétirányú átjárhatóság
Common Language Runtime Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL Natív fordítók Code Manager Garbage Collector Class Loader
Robusztus és biztonságos Menedzselt kód Menedzselt kód: verifikált Kötelező metainformációk Az IL kód szigorú típusellenőrzésnek vethető alá Megszűnnek népszerű hibaforrások veszélyes típusváltások (type cast) inicializálatlan változók tömbből kilógó indexek Kivételkezelés Nyelvi szinten definiált hibakezelés (nem BOOL vagy HRESULT) Sokkal használhatóbb hibajelzés Integrálódik a Windows strukturált kivételkezelésével is (SEH)
Robusztus és biztonságos Menedzselt adatok Menedzselt adat: élettartam-felügyelet Minden .NET objektumot a GC takarít el (garbage collector – a szemetes) Nincs elfelejtett pointer, cirkuláris hivatkozásokat is megfejti Modern GC algoritmusok (mark & compact) Önhangoló
Kódgenerálás telepítéskor Végrehajtási modell VB C# ... JScript Natív kód Kódgenerálás telepítéskor IL Common Language Runtime Standard JIT Compiler Natív kód
Végrehajtási modell Többfajta fordítási modell Natív (pl. Managed C++) MSIL (pl. VB and C#) Röptében előállított IL (ASP.NET) Az Intermediate Language nem interpretált az IL kód telepítéskor vagy futtatáskor fordul gépi kódra
Az IL kód továbbfordítása “Econo” JIT optimalizálatlan natív kódot generál eldobható és újragenerálható kód (Edit&Continue) “Standard” JIT optimalizáló kódgenerátor verifikálja az IL kódot Fordítás telepítéskor futtatás előtt végrehajtódik gyorsítja az indulást a natív kódban verzió-ellenőrzések, vissza tud állni JIT-re, ha problémát fedez fel
Biztonság Evidence-based security Kódhoz kötött jogosultságok Nem csak a felhasználót azonosítja, hanem a végrehajtott kódot is Eredet könyvtár, URL, webhely, zóna, … Szerző Authenticode™ aláírás Támogatja és együttműködik a COM+ szerepkörökkel is Vigyázat: Beta 1-ben még nem teljesen támogatott
Biztonság A mai rendszerek csak a felhasználóhoz kötnek jogosultságokat Csak a felhasználók ellen véd Rosszindulatú kód ellen nem
Biztonság a CLR-ben A CLR biztonsági rendszere a kódra is kiterjeszti az ellenőrzést Véd a megbízhatatlan kód ellen
Kódhoz kötött jogosultság-ellenőrzés Mint a lánc: a leggyengébb szem határozza meg a jogokat. Dinamikus jogosultság-ellenőrzés A1 G1 R/W Files A2 G2 semmilyen file-kezelés A3 G3 R/W Files X Nem fog működni, A2-nek nincs elegendő jogosultsága
Jogosultság-ellenőrzés Minden assembly rendelkezik jogokkal (grants – G) Assembly A3 Assembly A2 Assembly A1 Assembly A4 Hívási stack (lefele nő) P P P P-t összehasonlítja A4 és összes hívójának jogaival Az A4 assembly-ben egy metódus a P engedélyt kéri P
Mitől lesznek jogaink? Házirend Különböző szintű kód-csoportokhoz házirendek tartoznak a kód is azonosítható, mint egy felhasználó a csoportokhoz jogosultságok tartoznak Csoporttagságok bizonyítékok (evidence) a csoporthoz tartozó engedélyeket kapja meg a kód Minden kód P Kibocsátó: Microsoft Zóna: Internet Zóna : Helyi intranet Site: XYZ.COM P P P P Név: MS.Office Név : MS.Money Kibocsátó : Corp. Admin Site: localweb P P P P
Példa MS.Money a helyi intraneten Négy csoport tagja (kék) Engedélyek = P1 P2 P7 P4 Minden kód All Code P1 Publisher: Microsoft Kibocsátó : Microsoft Zóna : Internet Zone: Local Intranet Zóna : Helyi intranet Site: XYZ.COM P2 P3 P4 P5 Név : MS.Office Name: MS.Money Név : MS.Money Kibocsátó : Corp. Admin Site: localweb P6 P7 P8 P9
Többnyelvű platform Szabadon választhatunk nyelvet A .NET platform minden szolgáltatása rendelkezésre áll minden nyelvben Több nyelven folyhat a fejlesztés Mindenhol használható eszközök Debugger, profiler, kód-elemző eszközök – minden nyelvhez használhatóak Az általános, minőségi szoftverfejlesztés fontos segédeszközei Ehhez kell a…
Metadata Nyelvfüggetlen típus-információk A fordítók automatikusan generálják a kóddal együtt a végrehajtható file-ban bináris formátumban tárolódik Szükséges a futtatáshoz (nem opcionális) Konvertálható XML sémába és COM típustárba (type library) – és viszont
Mit tartalmaz a Metadata? A telepítési egység (assembly) leírását Azonosítás: név, verzió, nyelv [, nyilvános kulcs] Exportált típusok Függőségek Biztonsági igények a futtatáshoz Típusok leírása név, láthatósági szabályok, alaposztályok, implementált felületek Tagok (metódusok, mezők, tulajdonságok, események, belső típusok) Egyedi attribútumok Felhasználó által definiált (szerző megnevezése?) Fordító által definiált (const) Framework által definiált (DllImport, Obsolete)
Metadata: mire használjuk? Common Language Runtime Serialization Reflection Forráskód TLB Exporter Designers Fordító Fordítók Debugger Metadata (és kód) Típus-böngésző Profiler Proxy-generátor Sémagenerátor XML reprezentáció
Egyszerűbb telepítés Assembly-k (szerelvény?) A kód elemi egysége telepítés, verziókezelés és biztonsági/jogosultsági szempontból Hasonlít a DLL-hez, de önleíró a manifest segítségével Manifest: a metadata hordozója Mellékhatások nélküli telepítés Közös vagy privát alkalmazások és komponensek ezt a szerző határozza meg! Egymás melletti futtatás Alkalmazáson / folyamatok belül is futhat egymás mellett több változat
ILDASM avagy mi van az assembly-ben?
Framework, nyelvek és eszközök VB C++ C# JScript … Visual Studio.NET Common Language Specification Webszolgáltatások Felhasználói felület Adat és XML Alaposztályok Common Language Runtime
A Framework koncepciója Webes fogalmakra és megoldásokra épít Egységes alkalmazásmodell Egyszerűen használható Jól modularizált, kiterjeszthető
A webes gyakorlatot követi HTML, XML, SOAP, XSLT, XPath… direktben támogatja Internetes, elosztott alkalmazások nem működik a hagyományos, szorosan csatolt modell a .NET Framework lazán csatolt, állapotmentes modellt preferál Az mindenre kihatással van: alapszolgáltatások, adatelérés, felhasználói felület, aktiváció, programozási modell, stb.
A Framework és a webes modell A Framework biztosítja a kölcsönös leképezést Koncepció az alkalmazásban Web XML XSD WSDL SOAP Framework objektumok osztályok metódusok hívások Adat Séma Szolgáltatás Hívás
Nyelvtől és programozási modelltől független API-készlet Egységesített modell .NET Framework Nyelvtől és programozási modelltől független API-készlet VB Forms RAD, építőkockák, delegált modell MFC/ATL Leszármaztatás, teljesítmény, kifejező modell ASP Állapotmentes, kód és HTML egy helyen Windows API
Egyszerű használni segít, hogy jó és helyes kódot írjunk Szerveződés Hierarchikus osztályokba és névterekbe szervezett kód Egységes, gazdag típusrendszer Minden objektum, nincs VARIANT, egyfajta string, minden karakteres adat Unicode Komponens-orientált A tulajdonságok, metódusok, események, attribútumok nyelvi szinten jelennek meg Design-time funkcionalitás
Moduláris, kiterjeszthető A Framework nem „fekete doboz” Bármely .NET osztály kiterjeszthető örökléssel Nem COM, nem „burkoló komponenst” készítünk, valódi öröklés! Akár nyelvek között is, forráskód nélkül
A .NET Framework Webszolgáltatások Felhasználói felület (WinForm) Adatkezelés Xml Alaposztályok
A .NET Framework System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Design ADO SQLTypes SQL XPath XSLT Runtime InteropServices Remoting Serialization SessionState Caching Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Printing System.WinForms ComponentModel
Alapszolgáltatások System Collections Security Configuration ServiceProcess Diagnostics Text Globalization Threading IO Runtime InteropServices Net Remoting Reflection Serialization Resources
Adat és XML System.Data ADO SQL Design SQLTypes System.Xml XSLT Serialization XPath
Web Form, szolgáltatások System.Web Services UI Description HtmlControls Discovery WebControls Protocols Caching Security Configuration SessionState
Win Form, szolgáltatások System.WinForms Design ComponentModel System.Drawing Drawing2D Printing Imaging Text
Framework, nyelvek és eszközök VB C++ C# JScript … Visual Studio.NET Common Language Specification Webszolgáltatások Felhasználói felület Adatok és XML Alaposztályok Common Language Runtime
Nyelvek A .NET platform nyelvfüggetlen Common Language Specification Nincsenek másodrendű nyelvek A Framework minden szolgáltatása hozzáférhető minden nyelv számára Minden nyelv egyformn fordul, egyik sem interpretált Az eddigi tudás tovább használható Common Language Specification Consumer: a .NET Framework felhasználója Extender: a .NET Framework továbbépítője
Nyelvek Perl C Python C++ COBOL C# Haskell Visual Basic ML SmallTalk JScript Ada APL Eiffel Pascal C C++ C# Visual Basic SmallTalk Oberon Scheme Mercury Oz Objective Caml
Visual Basic.NET Egyenrangú nyelv Jelentős nyelvi fejlődés VBRUN helyett .NET Framework a .NET Framework minden lehetőségét direktben használhatja Jelentős nyelvi fejlődés Osztályok, öröklődés, konstruktorok, stb. Strukturált kivételkezelés (SEH) Egyfajta értékadás! Lehetőség a szigorú típusellenőrzésre Nincs többé VBSCRIPT az ASP-ben Lefordított VB.NET kód lesz
C++ Managed Extensions Létező kód átvitele a .NET Framework környezetébe Még mindig C++ minimális kiterjesztések, az ANSI szellemében nem vesz el semmit Továbbra is „Total Control” natív és menedzselt kód keverése, akár nem szemétgyűjtött adattal is Lehetővé teszi a fokozatos átállást Teljes hozzáférés a .NET Framework-höz
C# A C/C++ család első komponens-orientált tagja Minden objektum Properties, Methods, Events, Attributes, XML documentation Minden egy helyen, nincs IDL, stb. ASP+ lapokba is integrálható Minden objektum a primitív típusokhoz sem kell varázsolni A Framework is C#-ben van többmillió sor tesztelt kód ECMA szabvány
Framework, nyelvek és eszközök VB C++ C# JScript … Visual Studio.NET Common Language Specification Webszolgáltatások Felhasználói felület Adatok és XML Alaposztályok Common Language Runtime
Forráskód, kipróbálás A CLR Shared Source implementációja elérhető az MSDN-en (kódneve: Rotor) Windows source licenc a BME-n 1999 óta érdeklődni: dr Charaf Hasszán, Automatizálási tsz. Windows XP, Visual Studio a Campus Agreement-ben
Kérdések (és válaszok) Itt és most laszlog@microsoft.com http://msdn.microsoft.com/net http://www.gotdotnet.com/ http://msdn.microsoft.com/soap http://msdn.microsoft.com/xml http://www.ibuyspy.com/ portál és web-áruház ASP.NET alapon
© 2002 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
TPC-C top ten