net web szolgáltatások
DESCRIPTION
.NET web szolgáltatások. .NET, C# áttekintés Bilicki Vilmos [email protected] 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/2.jpg)
2
A mai előadás tartalma: .NET
ArchitektúraObjektumokMeta AdatokFuttató környezetSzemétgyűjtő
![Page 3: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/3.jpg)
3
DEMÓ:
WEB Service
![Page 4: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/4.jpg)
4
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
![Page 5: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/5.jpg)
5
A .NET keretrendszer
Win32Win32
MessageMessageQueuingQueuing
COM+COM+(Transactions, Partitions, (Transactions, Partitions,
Object Pooling)Object Pooling)IISIIS WMIWMI
Common Language RuntimeCommon Language Runtime
.NET Framework Class Library.NET Framework Class Library
ADO.NET: Data and XMLADO.NET: Data and XML
Web ServicesWeb Services User InterfaceUser Interface
VB C++ C#
ASP.NETASP.NET
Perl Python …
![Page 6: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/6.jpg)
6
Common Language Runtime
.NET Framework Class Library Support.NET Framework Class Library Support
Thread SupportThread Support COM MarshalerCOM Marshaler
Type CheckerType Checker Exception ManagerException Manager
MSIL to NativeMSIL to NativeCompilersCompilers
CodeCodeManagerManager
GarbageGarbageCollectionCollection
Security EngineSecurity Engine DebuggerDebugger
Class LoaderClass Loader
![Page 7: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/7.jpg)
7
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
![Page 8: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/8.jpg)
8
ADO.NET: Adat és XML
ADO.NET: Data and XMLADO.NET: Data and XML
OleDbOleDb SqlClientSqlClient
CommonCommon SQLTypesSQLTypes
System.Data
XSLXSLSerializationSerialization
XPathXPath
System.Xml
![Page 9: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/9.jpg)
9
ASP.NETASP.NET
Web űrlapok és szolgáltatások
System.WebSystem.Web
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServices
DescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUI
HtmlControlsHtmlControls
WebControlsWebControls
![Page 10: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/10.jpg)
10
Névterek
System System
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
SecuritySecurity RuntimeRuntime
ServiceProcessServiceProcess
![Page 11: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/11.jpg)
11
.NET keretrendszer fontosabb megoldásai
Windows Forms Web Forms XML Web Services
![Page 12: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/12.jpg)
12
DemóC#, VB
![Page 13: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/13.jpg)
13
Menedzselt futtatás
Class LoaderClass LoaderClass LoaderClass Loader
JIT CompilerJIT Compilerwith optionalwith optionalverificationverification
JIT CompilerJIT Compilerwith optionalwith optionalverificationverification
ExecutionExecution
Security ChecksSecurity Checks
EXE/DLL(MSIL and
metadata)
EXE/DLL(MSIL and
metadata)
ClassLibraries
(MSIL and
metadata)
ClassLibraries
(MSIL and
metadata)
Trusted,pre-JITedcode only
Call to anuncompiled
method
Runtime Engine
ManagedNative Code
CompilerCompiler SourceCode
SourceCode
![Page 14: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/14.jpg)
14
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étKód biztonság növelésétGépközeli kód generálásátReflexiót
![Page 15: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/15.jpg)
15
Microsoft Köztes Nyelv MSIL Minden támogatott fordító erre fordít JIT fordítók fordítják gépközeli nyelvre
![Page 16: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/16.jpg)
16
Szerelvények (Assemblies)
AssemblyAssembly
ManifestManifest
Multiple Managed Modules andResource FilesAre Compiled to Produce an Assembly
Managed Module(MSIL and Metadata)Managed Module
(MSIL and Metadata)
Managed Module(MSIL and Metadata)Managed Module
(MSIL and Metadata)
.html
.gif
Resource Files
![Page 17: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/17.jpg)
17
DemóILDASM
![Page 18: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/18.jpg)
18
Alkalmazás tartományok Processz határok jelentették az
alkalmazások határát A CLR-ben Alkalmazás Tartományok
jelentik eztA kód ellenőrzés miatt sokkal kisebb
költséggel menedzselhetőekTöbb alkalmazás tartomány futhat egy
processzben Egy alkalmazás meghibásodása nem hat a
másikra
![Page 19: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/19.jpg)
19
Alkalmazások telepítése Közös koncepció Egyszerű alkalmazások Komponensre bontott alkalmazások Konfiguráció és elosztás
![Page 20: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/20.jpg)
20
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
![Page 21: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/21.jpg)
21
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ó
![Page 22: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/22.jpg)
22
Komponensre bontott alkalmazások
Saját szerelvényekTulajdonképpen az alkalmazás
Összefüggő alkalmazások szerevényei:Közös alkönyvtárba telepítve
Megosztott szerelvényekErős név és verzió információ szükségesA globális szerevény gyorstárba települnek
![Page 23: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/23.jpg)
23
Konfiguráció és telepítés
KonfigurációEgyszerű szövegfájlok
TelepítésMSI, CAB formátumWindows 2000 IntelliMirror or Microsoft
Systems Management Server
![Page 24: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/24.jpg)
24
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 /target:library Stringer.cs
csc /reference:Stringer.dll Client.cscsc /reference:Stringer.dll Client.cs
![Page 25: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/25.jpg)
25
Saját szerelvények specifikálása
Könyvtár megadásaClient.exe.config privatePath elem
<configuration>
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=“MyStringer"/>
</assemblyBinding>
</runtime>
</configuration>
<configuration>
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=“MyStringer"/>
</assemblyBinding>
</runtime>
</configuration>
![Page 26: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/26.jpg)
26
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:
#if STRONG[assembly: System.Reflection.AssemblyVersion("1.0.0.0")][assembly: System.Reflection.AssemblyKeyFile("orgKey.snk")]#endif
#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
csc /define:STRONG /target:library /out:AReverser.dll AReverser.cs
sn –k orgKey.snk sn –k orgKey.snk
Erős nevű szerelvény
![Page 27: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/27.jpg)
27
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 /i AReverser.dll
gacutil /l gacutil /l
gacutil /u AReversergacutil /u AReverser
![Page 28: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/28.jpg)
28
Demó:Verzió, Kulcs, Telepítés
![Page 29: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/29.jpg)
29
Közös típus rendszer Common Type System Elemei OO tulajdonságok
![Page 30: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/30.jpg)
30
Közös Típus Rendszer arch.
![Page 31: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/31.jpg)
31
Érték típusok és Referencia típusok
Érték típusok primitív vagy a felhasználó által definiált adatstruktúrákA Stack-ben helyezkednek elAlapé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
![Page 32: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/32.jpg)
32
A CTS elemei
Primitív típusok Objektumok Konstruktorok Tulajdonságok Saját Típusok Felsorolásos típusok Interfészek
![Page 33: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/33.jpg)
33
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
![Page 34: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/34.jpg)
34
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; }}
class Accumulator{ public float Result; public void Add(float amount) { Result += amount; }}
![Page 35: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/35.jpg)
35
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; }}
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; }}
![Page 36: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/36.jpg)
36
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; }}
public float Start{ get { return start; } set { if (start >= 0) start = value; }}
![Page 37: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/37.jpg)
37
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; }}
struct Employee{ public string Name; public ushort Age; public DateTime HireDate; public float Tenure() { TimeSpan ts = DateTime.Now – HireDate; return ts.Days/(float)365; }}
![Page 38: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/38.jpg)
38
Felsorolások .NET keretrendszer felsorolások
A System.Enum-ból származnakAz enum kulcsszóval
enum SeatPreference : ushort{ Window, //Assigned value 0 Center, //Assigned value 1 Aisle //Assigned value 2}
enum SeatPreference : ushort{ Window, //Assigned value 0 Center, //Assigned value 1 Aisle //Assigned value 2}
![Page 39: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/39.jpg)
39
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; }}
interface ICDPlayer{ void Play(short playTrackNum); void Pause(); void Skip(short numTracks); short CurrentTrack { get; set; }}
![Page 40: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/40.jpg)
40
Polimorfizmus Sealed Abstract New Virtual Override
![Page 41: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/41.jpg)
41
Demó:Kutya
![Page 42: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/42.jpg)
42
Meta adatok Hordozható kód (reflexió) CORBA IDL Java bájtkód
![Page 43: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/43.jpg)
43
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álhatunkA futtató környezet az attribútumoknak
megfelelően viselkedik
[attribute(positional_parameters,named_parameter=value, ...)]element
[attribute(positional_parameters,named_parameter=value, ...)]element
![Page 44: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/44.jpg)
44
Használható attribútumokclass MyClass{ [Conditional ("DEBUGGING")] public static void MyMethod( ) { ... }}
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"); ...}
[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{
...}
using EnterpriseServices;...[Transaction(TransactionOption.Required)]public class MyTransactionalComponent : ServicedComponent{
...}
![Page 45: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/45.jpg)
45
Saját attribútumok Hatókör specifikálása AttributeUsage
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]public class MyAttribute: System.Attribute{ ... }
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]public class MyAttribute: System.Attribute{ ... }
[AttributeUsage(AttributeTargets.Method)]public class MyAttribute: System.Attribute{ ... }
[AttributeUsage(AttributeTargets.Method)]public class MyAttribute: System.Attribute{ ... }
![Page 46: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/46.jpg)
46
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;}
}
}
![Page 47: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/47.jpg)
47
Példa
[SPEPPAttribute("Way", FieldType=FType.Enum, FieldValues = "MessageDirection")]
public string Way{
get { return this._way; }set { this._way = value; }
}
![Page 48: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/48.jpg)
48
PéldapF.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);
..
![Page 49: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/49.jpg)
49
Meta adatok vizsgálataMemberInfo osztály a
System.Reflection névtérbenSystem.Type.GetMembersSystem.Type
System.Reflection.MemberInfo[ ] memberInfoArray;memberInfoArray = typeof(MyClass).GetMembers( );
System.Reflection.MemberInfo[ ] memberInfoArray;memberInfoArray = typeof(MyClass).GetMembers( );
System.Reflection.MemberInfo typeInfo;typeInfo = typeof(MyClass);object[ ] attrs = typeInfo.GetCustomAttributes(false);
System.Reflection.MemberInfo typeInfo;typeInfo = typeof(MyClass);object[ ] attrs = typeInfo.GetCustomAttributes(false);
![Page 50: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/50.jpg)
50
Memória menedzsment Memória Menedzsment alapok Erőforrás menedzsment (nem memória) Implicit erőforrás menedzsment Explicit erőforrás menedzsment
![Page 51: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/51.jpg)
51
A .NET típusok memória menedzsmentje
Az érték típusok a vermet használjákA memória foglalás és felszabadítás
automatikus és biztonságos Menedzselt objektumok a halomba tárolódnak
(heap)New operátorSzemét gyűjtő takarít
![Page 52: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/52.jpg)
52
Egyszerű szemét gyűjtés Egyszerű szemét gyűjtő algoritmus
Addig vár míg a menedzselt kód szálai várakozó állapotba nem kerülnek
Az elérhető objektumokból gráfot készítÁtmozgatja az elérhető objektumokat a
tömörített halomba• - Az elérhetetlen objektumok területe felszabadul
Frissíti az átmozgatott objektumok referenciáit Körkörös referencia hivatkozások
automatikusan kezelve vannak
![Page 53: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/53.jpg)
53
Erőforrás menedzsment Implicit erőforrás kezelés Explicit erőforrás kezelés
![Page 54: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/54.jpg)
54
Finalizáció A Befejező kódot a GC hívja meg C#-ban destruktor
class Foo { private System.IO.FileStream fs; //... public Foo() { fs = new System.IO.FileStream( "bar", FileMode.CreateNew); } ~Foo() { fs.Close(); }}
class Foo { private System.IO.FileStream fs; //... public Foo() { fs = new System.IO.FileStream( "bar", FileMode.CreateNew); } ~Foo() { fs.Close(); }}
![Page 55: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/55.jpg)
55
GC befejezés A futtató környezet rendelkezik egy listával
azokról az objektumokról melyek befejezést igényelnek Várakozó sor
Az elérhetetlen befejezésre váró objektumok: A referenciák hozzáadódnak az freachable sorhoz Az objektumok így elérhetőek és nem szemetek
A többi szokás szerint…
![Page 56: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/56.jpg)
56
Befejzés Finalize szál fut
Végrehajtja az objektumok Finalize metódusátA referenciákat eltávolítja a sorbólHa nem lettek feltámasztva akkor szemétté
lesznek nyilvánítvaGC…
![Page 57: NET web szolgáltatások](https://reader036.vdocuments.pub/reader036/viewer/2022070416/5681502b550346895dbe1a33/html5/thumbnails/57.jpg)
57
Explicit erőforrás menedzsment
Az IDisposable Interfész és a Dispose metódus
class ResourceWrapper : IDisposable{
// see code example for details}
class ResourceWrapper : IDisposable{
// see code example for details}
void DoSomething() { Resource r = new Resource(...); try { r.Foo(); } finally { if (r != null) ((IDisposable)r).Dispose(); }}
void DoSomething() { Resource r = new Resource(...); try { r.Foo(); } finally { if (r != null) ((IDisposable)r).Dispose(); }}