570 likes | 676 Views
.NET web szolgáltatások. .NET, C# áttekintés Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv. A mai előadás tartalma:. .NET Architektúra Objektumok Meta Adatok Futtató környezet Szemétgyűjtő . DEMÓ: WEB Service. A .NET keretrendszer áttekintése.
E N D
.NET web szolgáltatások .NET, C# áttekintés Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv
A mai előadás tartalma: • .NET • Architektúra • Objektumok • Meta Adatok • Futtató környezet • Szemétgyűjtő
DEMÓ: WEB Service
A .NET keretrendszer áttekintése • A .NET keretrendszer • Common Language Runtime • A .NET keretrendszer osztálykönyvtára • ADO.NET: Adatés XML • Web szolgáltatások
Message Queuing COM+ (Transactions, Partitions, Object Pooling) IIS WMI A .NET keretrendszer VB C++ C# Perl Python … Web Services User Interface ASP.NET ADO.NET: Data and XML .NET Framework Class Library Common Language Runtime Win32
Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debugger MSIL to Native Compilers Code Manager Garbage Collection Common Language Runtime .NET Framework Class Library Support Class Loader
A .NET osztálykönyvtár • Átfogja a használható programozási nyelveket • Nyelvközi öröklődést és hibakeresést tesz lehetőve • Jól integrálódik az eszközökkel • Objektum orientált és konzisztens • Növeli a produktivitást mert csökkenti a megtanulandó API-k számát • A közös típus rendszeren készült • Bővíthető • Egyszerűen módosíthatjuk a keretrendszer tulajdonságait • Biztonságos • Biztonságos alkalmazásokat írhatunk
System.Data System.Xml OleDb SqlClient XSL Serialization Common SQLTypes XPath ADO.NET: Adatés XML ADO.NET: Data and XML
Web űrlapok és szolgáltatások ASP.NET System.Web Services UI Description HtmlControls Discovery WebControls Protocols Caching Security SessionState Configuration
Névterek System Collections IO Security Runtime Configuration Net ServiceProcess Diagnostics Reflection Text Globalization Resources Threading
.NET keretrendszer fontosabb megoldásai • Windows Forms • Web Forms • XML Web Services
Demó C#, VB
Menedzselt futtatás EXE/DLL(MSIL and metadata) SourceCode Compiler ClassLibraries(MSIL and metadata) Class Loader JIT Compilerwith optionalverification Call to anuncompiledmethod Trusted,pre-JITedcode only ManagedNative Code Execution Security Checks Runtime Engine
Meta adat • Fordításkor minden fontos információt megtart • Minden .NET fájl és szerelvény tartalmazza • Lehetővé teszi a futtató környezet számára: • Kód megtalálását és betöltését • Kód biztonság növelését • Gépközeli kód generálását • Reflexiót
Microsoft Köztes Nyelv • MSIL • Minden támogatott fordító erre fordít • JIT fordítók fordítják gépközeli nyelvre
.gif .html Szerelvények (Assemblies) Managed Module (MSIL and Metadata) Managed Module (MSIL and Metadata) Assembly Manifest Multiple Managed Modules andResource FilesAre Compiled to Produce an Assembly Resource Files
Demó ILDASM
Alkalmazás tartományok • Processz határok jelentették az alkalmazások határát • A CLR-ben Alkalmazás Tartományok jelentik ezt • A kód ellenőrzés miatt sokkal kisebb költséggel menedzselhetőek • Több alkalmazás tartomány futhat egy processzben • Egy alkalmazás meghibásodása nem hat a másikra
Alkalmazások telepítése • Közös koncepció • Egyszerű alkalmazások • Komponensre bontott alkalmazások • Konfiguráció és elosztás
Közös Koncepció • Az osztályok és típusok: • Névterekbe vannak rendezve • PE fájlokba tárolódnak (DLL, EXE) • Teljesen dokumentáltak (Meta Data) • Szerelvények (Assemblies): • Egy vagy több PE fájl tartalmaznak • Tartalmaz egy leíró fájlt mely megadja a benne szereplő fájlokat • Specifikálja az importált és expoprtált osztályokat • Az alap eleme a telepítésnek, verzió kezelésnek
Egyszerű alkalmazások • .NET futtató környezete szükséges • Távolról és helyi gépről is futtatható • Nem készítenek Registry bejegyzéseket • Nem tehet tönkre más alkalmazást • Megszűnik a DLL pokol • A helyi fájlok törlésével eltávolítható
Komponensre bontott alkalmazások • Saját szerelvények • Tulajdonképpen az alkalmazás • Összefüggő alkalmazások szerevényei: • Közös alkönyvtárba telepítve • Megosztott szerelvények • Erős név és verzió információ szükséges • A globális szerevény gyorstárba települnek
Konfiguráció és telepítés • Konfiguráció • Egyszerű szövegfájlok • Telepítés • MSI, CAB formátum • Windows 2000 IntelliMirror or Microsoft Systems Management Server
Komponensek használata • Mások által használt szerelvény: • Stringer.dll szerelvény a Stringer.cs –ből gyártva: • Kliens hivatkozása csc /target:library Stringer.cs csc /reference:Stringer.dll Client.cs
Saját szerelvények specifikálása • Könyvtár megadása • Client.exe.config privatePathelem <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath=“MyStringer"/> </assemblyBinding> </runtime> </configuration>
Erős nevű szerelvény • Globális szerelvény gyorstár • Nem összetartozó programok által közösen használt szerelvényeket tartalmazza • Erős nevekre van szükség • PKI használat: • Verzió és kulcs információ: • Fordítás: sn –k orgKey.snk #if STRONG [assembly: System.Reflection.AssemblyVersion("1.0.0.0")] [assembly: System.Reflection.AssemblyKeyFile("orgKey.snk")] #endif csc /define:STRONG /target:library /out:AReverser.dll AReverser.cs
Megosztott komponensek telepítése • A központ gyűjteménybe • Központi gyűjtemény vizsgálata • Eltávolítás gacutil /i AReverser.dll gacutil /l gacutil /u AReverser
Demó: Verzió, Kulcs, Telepítés
Közös típus rendszer • Common Type System • Elemei • OO tulajdonságok
Érték típusok és Referencia típusok • Érték típusok primitív vagy a felhasználó által definiált adatstruktúrák • A Stack-ben helyezkednek el • Alapértelmezésben másolatként adódnak át • Referencia típusok objektumok: • A heap memóriában jönnek létre a new kulcsszóval • Referencia szerint adódnak át
A CTS elemei • Primitív típusok • Objektumok • Konstruktorok • Tulajdonságok • Saját Típusok • Felsorolásos típusok • Interfészek
Primitív típusok • A legtöbb nyelvben közös kis típusok • Elnevezési különbségek • C# támogatás • Konverziók
Objektumok • Minden osztály a System.Object-ből származik • Specifikálják az adatot és a viselkedést • A mezők definiálják az adatot • A metódusok a viselkedést class Accumulator { public float Result; public void Add(float amount) { Result += amount; } }
Konstruktorok • Inicializálás • Nulla vagy több paraméter class Rectangle { private int x1,y1,x2,y2; public Rectangle(int x1, int y1, int x2,int y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } }
Tulajdonságok • Hozzáférés mezőkhöz (CORBA attribute) • Get/Set public float Start { get { return start; } set { if (start >= 0) start = value; } }
Saját típusok • A System.ValueType-ből származnak • A struct kulcsszóval definiáljuk (C#) • Nem származtatható struct Employee { public string Name; public ushort Age; public DateTime HireDate; public float Tenure() { TimeSpan ts = DateTime.Now – HireDate; return ts.Days/(float)365; } }
Felsorolások • .NET keretrendszer felsorolások • ASystem.Enum-ból származnak • Az enumkulcsszóval enum SeatPreference : ushort { Window, //Assigned value 0 Center, //Assigned value 1 Aisle //Assigned value 2 }
Interfészek • Metódusok és tulajdonságok megjelölése interface ICDPlayer { void Play(short playTrackNum); void Pause(); void Skip(short numTracks); short CurrentTrack { get; set; } }
Polimorfizmus • Sealed • Abstract • New • Virtual • Override
Demó: Kutya
Meta adatok • Hordozható kód (reflexió) • CORBA IDL • Java bájtkód
Attribútumok • Az attribútumok: • Olyan elemek melyek a futtató környezet számára biztosítanak információkat • A meta adatok között vannak tárolva • .NET –ben előre definiált attribútumokat is használhatunk • A futtató környezet az attribútumoknak megfelelően viselkedik [attribute(positional_parameters,named_parameter=value, ...)] element
Használható attribútumok class MyClass { [Conditional ("DEBUGGING")] public static void MyMethod( ) { ... } } [DllImport("MyDLL.dll", EntryPoint=“MyFunction")] public static extern int MyFunction(string param1); public class MyClass( ) { ... int result = MyFunction("Hello Unmanaged Code"); ... } using EnterpriseServices; ... [Transaction(TransactionOption.Required)] public class MyTransactionalComponent : ServicedComponent { ... }
Saját attribútumok • Hatókör specifikálása AttributeUsage [AttributeUsage(AttributeTargets.Method)] public class MyAttribute: System.Attribute { ... } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] public class MyAttribute: System.Attribute { ... }
Példa [AttributeUsage(AttributeTargets.Property)] public class SPEPPAttribute : System.Attribute { private String _name; private FType _ftype; private String _values; public SPEPPAttribute(String name) { _name = name; } public String Name { get{return _name;} set{_name = value;} } public FType FieldType { get{return _ftype;} set{_ftype = value;} } public String FieldValues { get{return _values;} set{_values = value;} } }
Példa [SPEPPAttribute("Way", FieldType=FType.Enum, FieldValues = "MessageDirection")] public string Way { get { return this._way; } set { this._way = value; } }
Példa pF.Text = this.GetType().Name+" Properties"; foreach(System.Reflection.PropertyInfo pinf in GetType().GetProperties()) attrs = pinf.GetCustomAttributes(typeof(SPEPPAttribute),true); foreach(SPEPPAttribute sa in attrs) { label = new Label(); label.Text = sa.Name; if(label.Text.Length > maxSizeX) maxSizeX = label.Text.Length; label.Location = p; pF.Controls.Add(label); switch(sa.FieldType) { case FType.Enum: try { typ = Type.GetType("spepp."+sa.FieldValues,true,true); } catch(Exception e) {MessageBox.Show(e.Message);} langAr = Enum.GetNames(typ); ..
Meta adatok vizsgálata • MemberInfo osztály a System.Reflection névtérben • System.Type.GetMembers • System.Type System.Reflection.MemberInfo[ ] memberInfoArray; memberInfoArray = typeof(MyClass).GetMembers( ); System.Reflection.MemberInfo typeInfo; typeInfo = typeof(MyClass); object[ ] attrs = typeInfo.GetCustomAttributes(false);
Memória menedzsment • Memória Menedzsment alapok • Erőforrás menedzsment (nem memória) • Implicit erőforrás menedzsment • Explicit erőforrás menedzsment