.NET alapszolgáltatások 2.



Hasonló dokumentumok
Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Bánsághi Anna

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Osztott alkalmazások fejlesztési technológiái Áttekintés

Input Output Műveletek

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

INFORMATIKAI ALAPISMERETEK

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

Informatika terméktervezőknek

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

INFORMATIKAI ALAPISMERETEK

.NET Microsoft.Net Framework

Entity Framework alapú adatbáziselérés

OPERÁCIÓS RENDSZEREK II GYAKORLAT

Utolsó módosítás:

Tűzfal megoldások. ComNETWORX nap, I. 30. ComNETWORX Rt.

C#, OOP. Osztályok tervezése C#-ban

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Kalapácsvetés 2016 szöveges

C# osztályok. Krizsán Zoltán

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Access adatbázis elérése OLE DB-n keresztül

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Bánsághi Anna

S z á m í t ó g é p e s a l a p i s m e r e t e k

Java Challenge második forduló játékszabályai v1.2

Vizuális programozás gyakorlat

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás

applikációs protokollok

Book Template Title. Author Last Name, Author First Name

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

Delegátumok C#-ban Krizsán Zoltán iit

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

ASP.NET 2.0 (Whidbey)

Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás

SAMBA. Forrás: Lajber Zoltán: SAMBA alapok dia, SZIE

Operációs rendszerek. A Windows NT felépítése

eseményvezérelt megoldások Vizuális programozás 5. előadás

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL

RIA Rich Internet Application

Gate Control okostelefon-alkalmazás

Az új be- és kimenet könyvtár

Java Servlet technológia

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Fábián Zoltán Hálózatok elmélet

15. Programok fordítása és végrehajtása

Programozás II. labor

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

A WEB programozása - JSP1 dr.gál Tibor őszi félév

IBM Data Server ügyfelek telepítése

Biztonság java web alkalmazásokban

Tűzfalak működése és összehasonlításuk

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Az Oracle rendszer komponensei

Hálózati operációs rendszerek II. Novell Netware 5.1 Szerver

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

Adatbázis használata PHP-ből

OOP #14 (referencia-elv)

9. MPI

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Programozás II gyakorlat. 4. Öröklődés

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

SSH haladóknak. SSH haladóknak

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés.

Java és web programozás

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Adatbázis-kezelés ODBC driverrel

AIX 6.1. IBM Systems Director Console for AIX

Hálózatkezelés Szolgáltatási minőség (QoS)

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

TANÚSÍTVÁNY. tanúsítja, hogy az Axelero Rt. által kifejlesztett és forgalmazott. Marketline integrált aláíró alkalmazás 1.

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Szervlet-JSP együttműködés

117. AA Megoldó Alfréd AA 117.

Utolsó módosítás: március 3.

Informatika szintmérő-érettségi tételek február

Symfony kurzus 2014/2015 I. félév. Controller, Routing

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Mobil Informatikai Rendszerek

Hány komputer van a kezemben?

Széchenyi István Egyetem

Abstract osztályok és interface-ek. 7-dik gyakorlat

JNDI - alapok. Java Naming and Directory Interface

Átírás:

1.oldal.NET alapszolgáltatások 2. Directory-k kezelése (Példák : DirectoryDateTimeRunEnv alkalmazás) Ellenőrzés könyvtár létrehozása előtt: if (!Directory.Exists("test")) Directory.CreateDirectory("test"); Könyvtár kezelése: DirectoryInfo di = new DirectoryInfo(@"c:\windows\system32"); // ha nem létezik a fájl akkor kivételt dob windows könyvtárak lekérdezése.getdirectories() fileok hasonlóan.getfiles Sok beépített metódus, és függvény Path osztály könyvtér útvonalak manipulálására Path.Combine () //összekombinál kettőt StringBuilder files = new StringBuilder(); foreach (FileInfo fi in di.getfiles()) files.append(fi.name[0]); Console.WriteLine(files.ToString()); Console.WriteLine(Path.Combine("c:\\windows", " system32")); Console.WriteLine(Path.Combine("c:\\windows\\", "system32")); Console.WriteLine(Path.GetFileNameWithoutExtension(@"c:\WINDOWS\iis6.log")); Dátumkezelés Lekérdezés megadás különbség formátum A DateTime Struktúra, ezért érték típusú. Legyen dt dátum A dátumok különbsége dt-bday napokban. Formátum: az év: yyyy a hónap: M-1 karakteren, MM-2 karakteren, MMM-rövidítés, MMMM- teljes kiírás DatetTime.ToString leírás megnézése HF

2.oldal DateTime dt = DateTime.Now; Console.WriteLine(dt); DateTime birth = new DateTime(1981, 1, 22); TimeSpan timespan = dt - birth; Console.WriteLine(timeSpan.TotalDays); Console.WriteLine(dt.ToString("yyyy.M")); Console.WriteLine(dt.ToString("yyyy.MM")); Console.WriteLine(dt.ToString("yyyy.MMM")); Console.WriteLine(dt.ToString("yyyy.MMMM")); Stream-ek Van sokféle Stream, ezeken keresztül megy az IO, ebből lehet példányosítani FileStream-et, BufferStream-et stb. Byte tömböt kiírni/beolvasni. Írni/olvasni lehet-e, Seek-elni lehet-e? Saját Steam-eket adott protokoll szerint végzik az IO-t. StreamWriter StreamReader Binary ld. múlt óra System.IO alapból benne van! using System.IO; //StreamReader sr= new StreamReader(); //hf. Memória stream: Memória kiküldünk bytokat 5 byteon-ként buffereljük és csak akkor írja ki a képernyőre. Azt i változót byteban kiírjuk és a Memória stream hosszát Akkor hasznos, ha az adatátvitel gyors, de inicializálás és lezárás lassú. A buffer ürítése: bs.flush(); //nem életszerű példa de példa! private static void SimpleStreamEx() MemoryStream ms = new MemoryStream(); BufferedStream bs = new BufferedStream(ms, 5); for (int i = 0; i < 15; i++) bs.writebyte(convert.tobyte(i)); Console.WriteLine("0-1", ms.length, i); bs.flush();

3.oldal Futási környezet Megírsz egy programot és odaadod felhasználónak, de ő a Windows-t máshova telepítette, te a profiljába el akarsz valamit helyezni onnan kiolvasni, stb. Mik a helyi beállításai le kell tudni kérdezni. Futási környezet információi: - környezeti változók - könyvtár elérési útvonalak - process-ek - //Microsoft Command Shell (MSH) System.Enviroment osztályban van SpecialFolder, ami megmond minden okosságot egy enumot ad vissza a mydoc-ba stringben visszaadjuk. Gépenként változhatnak a beállítások, Így kell lekérdezni a path-okat: string mydoc = System.Environment.GetFolderPath (System.Environment.SpecialFolder.MyDocuments); Console.WriteLine(myDoc); Milyen processzeket futtatunk? Process p =folyamat. Lekérdezzük a nevét. Pl. olyan, mint a Task Managerben foreach-nél kell a try! (megszűnhet lekérdezés közben, nincs jogunk lekérdezni) Megmondja milyen külső modulokat rántott be. Használható például diagnosztikai alkalmazásoknál, melyik process milyen dll-t rántott be. Bárki írhat olyan alkalmazást, ami fogja a dllt? //vannak már kész alkalmazások is: www.sysinternals.com -rakat diagnosztika, security, érdekes, HF megnézni, most már a technet része(megvették) http://technet.microsoft.com/hu-hu/sysinternals/default(en-us).aspx Process p = Process.GetCurrentProcess(); Console.WriteLine(p.ProcessName); foreach (Process proc in Process.GetProcesses()) try Console.WriteLine(proc.ProcessName); foreach (ProcessModule pm in proc.modules) Console.WriteLine(" " + pm.filename);

4.oldal catch Protocol-spec hálózati szolgáltatások Két lehetőség van a kezelésre: - magas szintű - alacsony szintű (bonyolultabb de többet tud) A http protokoll (nem bonyolítjuk a témát) egyszerűen letöltünk egy oldalt. using System.Net; Magas szintű kezelés: wc.openread nyissunk meg egy servert (pl avalon), olvassunk a SteramReader-rel usinggal kezeljük a streameket. Eredmény: kidobta a html kódot, amit kapott. WebClient wc = new WebClient(); using (StreamReader sr = new StreamReader(wc.OpenRead( "http://avalon.inf.elte.hu"))) Console.WriteLine(sr.ReadToEnd()); Le lehet kérdezni a headereket: wc.rheaders. Kiírjuk a kulcsát és a nevét. // wc.responseheaders for (int i = 0; i < wc.responseheaders.count; i++) Console.WriteLine("0-1", wc.responseheaders.getkey(i), wc.responseheaders[i]); Ez volt a http ről letöltés Alacson szintű Most WebRequest lesz Itt is meg kell adni az útvonalat. A kettő közt a wr-nél az egyik különbség például a cookie konténer van és autentikálom, vagy két request közt autentikálok és a másik szolgáltatásait használom, A wc nem tud cookiet kezelni. WebRequest wr = WebRequest.Create( "http://avalon.inf.elte.hu"); WebResponse resp = wr.getresponse(); Stream rstream = resp.getresponsestream(); using (StreamReader sr = new StreamReader(rstream))

5.oldal Console.WriteLine(sr.ReadToEnd()); Ki lehet olvasni a headert: WebResponse webresponse = webrequest.getresponse(); //webresponse.getresponsestream(); for (int i = 0; i < webresponse.headers.count; i++) Console.WriteLine("0: 1", webresponse.headers.getkey(i), webresponse.headers[i]); Socket-ek ld. Tőke Pál hálózatok - tanultuk Milyen függvények vannak Server/Kliens oldalon? Mire szolgál a Listen utasítás: Figyelünk egy porton Accept utasítás: Kapcsolat elfogadása Connect: kliens oldalán kapcsolat Get Host by name: ip címet visszaad TCP: kapcsolat orientált, megbízható UDP: Stream, nem megbízható Blolocikg Socket / Non blocking socket: A Blolocikg Socket vár, amíg nem jön valami adat. Read (non blocking) nem jött adat, de nem érdekes olvass újra CPU terhelés fel megy az égbe, erre találták ki a select utasítást. Figyeljen adott socketen olvasható socket Time out-ol, ha nem jött kapcsolat. Vár a háttérbe nem terheli a processzort vagy erőforrást. Ha jön valami, akkor nem várja ki a Time out-ot azonnal olvas. Terhelhető, robosztus több klienst tud kiszolgálni: Több szál kell! Első megközelítésben1 szál a kéréseket figyeli, ha bejön egy kérdés indítsunk egy új szálat. (Indítsunk el? Ezzel van egy kis gond!) E helyett: Van egy induló szál, ami figyeli és fogadja a kapcsolatokat (accept), ami visszaad egy message socketet, ami már csak az adott kliensre vonatkozik. Visszaadott socketet bevágja egy (várakozási/kiszolgálási)sorba. Mi fogja kiszolgálni? Szál már fut! (Thread) Na te leszel az, aki kiszolgálod ezt a klienst! Kommunikál a klienssel és utána megint kivesz egy újabb elemet a sorból. Az a szál szolgál ki mindig, amelyik nem dolgozik. Lehet még indítani újabb szálakat is, ha sok a kérés. Ha a

6.oldal szerver nem annyira terhelt akkor le is lőhetem a szálat. http://kpocza.net/programming.aspx Mohican nyílt forráskód alapok benne vannak a szerver alkalmazásban. Pluszban van még konfiguráció XML kezelés. Szabadon felhasználható. Server futtatása Kliens futtatása Írjunk egy sajátot: Egyszerű matematikai műveleteket végez. SocketLibrary Kliens: Főprogramban Socket functions-be beregisztrál CheckBufferValidity, az új sor jelig beolvassa a kérést. Buffer valid e? Recive metódusban addig olvas, amíg nem talál valódi buffert. Send-nél nincs probléma a byte tömböt kiírja. Lehetne a kérés előtt: Na most 18 byteot fogsz kapni, de itt sorvégéig olvas. Ezért delegateként beregisztrál olvasandó buffert. A DoCalk metódustt meghívta. GetHostEntry port a lokalhost-on, ezen kell kommunikálni a connect-el kapcsolódunk. Kérést és a Env. NewLine-t elküldjük. Fogadásnál kiírja a választ. Server: //ld. Mohican Reguláris kifejezéseket lehet alkalmazni vmi.namespace Regurális kifejezés: ADD SUB stb. 2 operandus, ahol a "\d" szám, a "+" pozitív lezárt (egy vagy több szám). A csoportneve <op1> (szintaktikája). RegexOption-t akkor fordítjuk le, ha először példányosítjuk az osztályt mi most fordítási időben lefordítjuk a reg. kif.-t és az így elkészült kódot tudja a példány használni. Itt is a buffert beregisztrálunk. TCP listener figyel, várjuk a kérést. Fogadja a kérést, kiírjuk, majd illesztjük a reg. kifejezéssel. op1 op2 művelet //Lehet-e null? Pl osztás. visszaadja a választ HF. reg.kif. megnézése. Érdemes! (ISO szabványt használ.) Együttműködés - Interop (Inter Operation) Hasznos ha együtt tudunk működni más technikákkal. Milyen együttműködés? Natív hívások / COM komponensekkel elérni, szolgáltatásokat elérni. Platform hívás (PInvoke)

7.oldal A Win API natív - nem managed hívás-t is el tudjam érni (egy felületet elérni) Adott valahol egy dll, amit valahogy hívnak valami szignatúrával. //ld. MSDN Nekünk meg kell határozni statikus függvényként + speciális attribútum a függvény elé: DllImport. pl. unicode-os verzió "függvény név"= "függvény a dll"-ben (de lehet propertyként is megadni.) [DllImport("msi.dll", CharSet = CharSet.Unicode)] static extern Int32 MsiEnumProducts(Int32 index, [Out] StringBuilder productguid); (ez lehetővé teszi a MsiEnumProducts fv hívását a programunkban) Fel kell sorolni a paramétereket, hogy milyen típus legyen. Definiálni kell a struktúrát bytrera pontosan mint a natív struktúra, de hogy épül fel ilyen struktúra? És milyen a fv-ek szignatúrája? Erre van egy ONLINE leírás ami segí a Pinvoke : http://pinvoke.net/ Itt rákeresek függvényre. Jó esetben van példa is! public NativeCalls Milyen programokat telepítettünk erre a gépre? Amíg success addig kérdezzük le a nevét a telepített cuccoknak? Length-et ad vissza, (puffer overload lehet) mennyi memória kell biztonságosan lefoglaljuk a cuccot? A StringBulder automatikusan elvégzi ezt nekünk. Ha kifele akarjuk adni: OUT kulcsszó. COM elérése.net-ből COM referencia hozzáadása Add Reference COM fül MS Word... OK Mit csinál? Beszélgethetünk egy Worddel! Word és a COM osztály: a könyvtár elérhető C++.NET COM-os felületből, így programozott technikával létrehozható word dokumentum (test.doc létrejött) Bonyolult, de lehet használni. Így bármely objektum elérhető AcrobatReader, Maple, Matlab és elérhetőek a szolgáltatásai. pl: Word doksiból PDFet konv Adobe COM interfacet hívogatjuk... "Office korszakban" jelent meg és kezd eltűnni. using System;

8.oldal using System.Runtime.InteropServices; using Word = Microsoft.Office.Interop.Word; using System.IO; namespace Interop public class COMInterop public COMInterop() public static void Demonstrate() object missing = Type.Missing; object filename = @"c:\download\test.doc"; string text = "This Document has been created using COM Interop!"; if (File.Exists((string)fileName)) File.Delete((string)fileName); Word._Application wordapp = null; try wordapp = new Word.ApplicationClass(); wordapp.visible = false; Word._Document doc = wordapp.documents.add(ref missing, ref missing, ref missing, ref missing); object startpos = 0; object endpos = 0; Word.Range range = doc.range(ref startpos, ref endpos); range.text = text; doc.saveas(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); doc.close(ref missing, ref missing, ref missing); finally try catch if (wordapp!= null) wordapp.quit(ref missing, ref missing, ref missing); Marshal.ReleaseComObject(wordApp); GC.Collect(); GC.WaitForPendingFinalizers();

9.oldal.NET alapszolgáltatások 2.... 1 Directory-k kezelése... 1 Dátumkezelés... 1 Stream-ek... 2 Futási környezet... 3 Protocol-spec hálózati szolgáltatások... 4 Socket-ek... 5 Együttműködés - Interop (Inter Operation)... 6