Fejlett Programozási Technikák 2. 15/13
Web szolgáltatások Mik a web szolgáltatások? URL-címekkel elérhető hálózaton meghirdetett funkciók Internet technológia alapúak Építő elemek A jövő elosztott alkalmazásainak alapkövei
Szolgáltatás Orientált Architektúra Szolgáltatás Bróker Szolgáltatás Nyújtó Szolgáltatás Fogyasztó Publikál Keres Köt
Web szolgáltatás architektúra áttekintése UDDI (Web Szolgáltatás Bróker) Web szolgáltatás nyújtó Web szolgáltatás felhasználó Publikál Keres Köt Internet
Web szolgáltatás szolgáltató Például: Web szerverek .NET Common Language Runtime
Web szolgáltatás fogyasztó Minimális funkcionalitás Szolgáltatás keresés Proxi-k Aszinkron hívások
Web szolgáltatás bróker Együttműködés a brókerek és a szolgáltatók között Együttműködés a brókerek és a fogyasztók között UDDI tárlolók
A web szolgáltatás programozói modell Web protokollok Állapotmentes Lazán csatolt Univerzális adatformátum
BPEL4WS XML nyelv Elődei: Üzleti folyamatok definiálása IBM WSFL Microsoft XLANG Üzleti folyamatok definiálása Web szolgáltatások összekapcsolása Üzleti folyamat Egy új web szolgálatatást hoz létre egy adott web szolgáltatás halmazon értelmezett végrehajtási sorrend segítségével Kivétel kezelés Hosszú tranzakciók kezelése Hogyan használja fel a web szolgáltatásokat Hogyan nyújt web szolgáltatásokat
Hol, hogyan használhatjuk? Bpel szerverek Microsoft BizTalk 2004 Oracle BPEL Process Manager IBM BPEL4WS Editor and Java Run-Time OpenStorm Service Orchestrator ... Szolgáltatásai: Vezérlés (elágazás, hurok, ...) Aszinkron kommunikáció (join, source, target) Nem determinisztikság pick, onAlarm Hosszú tranzakciók (kompenzáció)
Folyamatot definiál Activity Partnerek Egyszerű Komplex Invoke Receive Reply Wait Assign Throw Terminate Empty Komplex Sequence Switch While Pick Flow Partnerek Olyan szolgáltatás melyet meghív - portType1 Olyan szolgáltatás mely meghívja - portType2 A kettő kombinációja – serviceLink (szerepkörök)
Példa
Példa
Példa
A .NET keretrendszer áttekintése Common Language Runtime A .NET keretrendszer osztálykönyvtára ADO.NET: Adat és XML Web szolgáltatások
.NET Framework Class Library Common Language Runtime 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 Message Queuing COM+ (Transactions, Partitions, Object Pooling) IIS WMI Win32
Common Language Runtime .NET Framework Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debugger MSIL to Native Compilers Code Manager Garbage Collection 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
ADO.NET: Adat és XML ADO.NET: Data and XML OleDb SqlClient Common SQLTypes System.Data XSL Serialization XPath System.Xml
Web űrlapok és szolgáltatások ASP.NET System.Web Services UI Description HtmlControls Discovery WebControls Protocols Caching Security Configuration SessionState
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
Menedzselt futtatás Runtime Engine Compiler Class Loader EXE/DLL (MSIL and metadata) Source Code Compiler Class Libraries (MSIL and metadata) Class Loader JIT Compiler with optional verification Trusted, pre-JITed code only Call to an uncompiled method Managed Native 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
Szerelvények (Assemblies) Managed Module (MSIL and Metadata) Managed Module (MSIL and Metadata) Assembly Manifest .html .gif Multiple Managed Modules and Resource Files Are Compiled to Produce an Assembly Resource Files
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: Szerelvények (Assemblies): 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
Saját szerelvények specifikálása Könyvtár megadása Client.exe.config privatePath elem <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
Közös típus rendszer Common Type System Elemei OO tulajdonságok
Közös Típus Rendszer arch.
É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
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 A System.Enum-ból származnak Az enum kulcsszóval enum SeatPreference : ushort { Window, //Assigned value 0 Center, //Assigned value 1 Aisle //Assigned value 2 }
Polimorfizmus Sealed Abstract New Virtual Override
Eseménykezelés Függvény mutatók használata Delegate Event C# t public delegate void ButtonEventHandler(); class TestButton { public event ButtonEventHandler OnClick; public void Click() { OnClick(); } } TestButton mb = new TestButton(); mb.OnClick += new ButtonEventHandler(TestHandler); mb.OnClick += delegate { System.Console.WriteLine("Hello, World!"); }; mb.Click();
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 [SPEPPAttribute("Way", FieldType=FType.Enum, FieldValues = "MessageDirection")] public string Way { get { return this._way; } set { this._way = value; } }
A .NET típusok memória menedzsmentje Az érték típusok a vermet használják A memória foglalás és felszabadítás automatikus és biztonságos Menedzselt objektumok a halomba tárolódnak (heap) New operátor Szemét gyűjtő takarít
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
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(); }
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…
Befejzés Finalize szál fut Végrehajtja az objektumok Finalize metódusát A referenciákat eltávolítja a sorból Ha nem lettek feltámasztva akkor szemétté lesznek nyilvánítva GC…
Köszönöm az egész féléven át tartó töretlen lelkesedést és figyelmet! Sikeres vizsgaidőszakot, jó nyaralást!