Debreceni Egyetem Informatikai Kar Információ Technológia tanszék. XML alapú szolgáltatások
|
|
- István Hegedüs
- 8 évvel ezelőtt
- Látták:
Átírás
1 Debreceni Egyetem Informatikai Kar Információ Technológia tanszék XML alapú szolgáltatások Témavezető: Dr. Adamkó Attila egyetemi adjunktus Készítette: Pogány Tamás programtervező informatikus Debrecen 2010
2 Tartalomjegyzék 1. Mi a webszolgáltatás? A webszolgáltatás előnyei A webszolgáltatás hátrányai Az ős-webszolgáltatások XML-RPC SOAP Bevezetés A névtér A névtér A névtér A névtér Összefoglalás WSDL UDDI WS-Security A Microsoft válasza: WCF A WCF alapfogalmai A WCF beépített kötései (binding) Egyszerű WCF szolgáltatás készítése Előkészületek A tényleges kódok Végpontok beállítása Host alkalmazás
3 4.5. Beépített kliens használata Saját kliens használata Összefoglalás Adatok átküldése a hálózaton Általános kérdések Egyszerű adattípusok Objektumok Kivételkezelés Autentikáció és autorizáció Tanúsítvány létrehozása Autentikáció szerver oldal Autentikáció kliens oldal Autorizáció Egyéb biztonsági kérdések Tűzfalak Mex endpoint kikapcsolása Message security Transport security Egy konkrét példa: Mail Gateway Specifikáció WCF interfész A WCF osztály A webszolgáltatás összeállítása A kód használata Összefoglalás Irodalomjegyzék
4 1. Mi a webszolgáltatás? A webszolgáltatás alkalmazások közötti adatcserére szolgáló protokollok és szabványok gyűjteménye. Különböző programnyelveken megírt alkalmazások kommunikálnak egymással valamilyen hálózaton (leggyakrabban Internet, vagy akár Intranet) keresztül, melyek akár különböző platformokon is futhatnak. A webszolgáltatások nyílt szabványokat használnak, a fejlesztésért főként a W3C 1 felel. A webszolgáltatás kliens-szerver alapú. A szerver az általa publikált szolgáltatást (ami nem más, mint meghívható metódusok összessége) nyújtja a külvilág felé, melyet a kliensek valamilyen formában meghívnak, majd feldolgozzák a szerver válaszát. Minden kommunikáció XML 2 segítségével történik, így biztosítható a platformok közötti átjárhatóság, illetve szükség esetén egyszerűsödik a hibakeresés is. Az XML az esetek többségében SOAP 3 vagy XML-RPC 4 üzenet. A hálózaton történő továbbítás lehetséges HTTP 5, FTP 6, SMTP 7, vagy XMPP 8 protokollok segítségével. Azonban az alkalmazások túlnyomó többsége a HTTP kapcsolatot használja, egész egyszerűen azért, mert így biztosítható, hogy a szolgáltatás tűzfalakon keresztül is elérhető legyen. A szerver által nyújtott szolgáltatásokat egy speciális XML fájl, az úgynevezett WSDL (Web Service Definition Language) írja le. A WSDL fájlt (és ezáltal a szolgáltatást magát) az UDDI (Universal Description, Discovery, and Integration) protokoll szerint propagálják a külvilág felé, a biztonságról pedig a WS-Security protokoll szerint gondoskodnak. 1 World Wide Web Consortium 2 Extensible Markup Language 3 Simple Object Access Protocol 4 XML Remote Procedure Call 5 HyperText Transfer Protocol 6 File Transer Protocol 7 Simple Mail Transfer Protocol 8 Extensible Messaging and Presence Protocol 4
5 1.1. A webszolgáltatás előnyei A szolgáltatás egésze szempontjából teljesen lényegtelen, hogy a kliens és a szerver milyen nyelven íródtak, milyen platformon futnak, vagy éppen fizikailag hol vannak A felhasznált szabványok nyíltak A HTTP használatával biztosítható a tűzfalakon keresztüljutás Egy-egy szolgáltatást több, különböző feladatot ellátó kliens is használhat 1.2. A webszolgáltatás hátrányai Figyelni kell a biztonságra, a HTTP miatt főleg az adatbiztonságra A hálózati továbbítás miatt sok esetben lassú, a kliensnek akár másodperceket is várnia kell a válaszra Nem támogatja a tranzakciókezelést 5
6 2. Az ős-webszolgáltatások 2.1. XML-RPC Az XML-RPC minden XML alapú RPC 9 szolgáltatás őse, 1998 óta létezik. Lényege, hogy egy XML dokumentumot küldenek, általában HTTP POST módszerrel a szervernek, amely a kérést feldolgozva szintén XML-ben küldi a választ. A szolgáltatás minimalista, a küldött és a kapott XML fájlok rendkívül egyszerűek, könnyen kezelhetőek. Összesen kilenc, egyszerű adattípus használható vele, ezek: array, base64, boolean, datetime, double, integer, string, struct és nil. Az egyszerűségből fakad legnagyobb hátránya: egész egyszerűen nincs elég elérhető típus (tipikusan kollekcióknál) a magasszintű programozási nyelvek objektumainak szerializálására. Egy tipikus XML-RPC kérés így néz ki: <?xml version="1.0"?> <methodcall> <methodname>pelda.osszead</methodname> <params> <param><value><int>1</int></value></param> <param><value><int>2</int></value></param> </params> </methodcall> 1. kód XML RPC kérés Látható, hogy meg kell adni a meghívandó metódus nevét, és a paramétereit. Megjegyzendő, hogy a <params> node akkor is kell, ha nincsenek paraméterek. Egy erre a hívásra érkezett válasz így néz ki: <?xml version="1.0"?> <methodresponse> <params> <param><value><int>3</int></value></param> </params> </methodresponse> 2. kód XML RPC válasz 9 Remote Procedure Call 6
7 Amennyiben a szerver nem tudja végrehajtani a kérést, úgy egy speciális fault XML-t küld, amely tartalmazza a hiba kódját, és szöveges leírását is. Kérdés, hogy a kliens mi módon szerezhet tudomást a szerveren meghívható metódusokról, azok specifikációjáról, leírásáról. Erre három beépített függvénye van az XML-RPC-nek: Függvény system.listmethods system.methodsignature system.methodhelp Jelentés Egy sztring-tömbben (array típus) visszaadja a meghívható metódusokat Megadja a paraméterként átadott nevű metódus specifikációját, vagy specifikációit (szintén array) Ha elérhető a paraméterként megadott metódus dokumentációja, akkor visszatér azzal, ha nem, akkor üres sztringgel 1. táblázat XML RPC függvények metódus lekérdezéshez 2.2. SOAP Bevezetés Az XML-RPC továbbfejlesztéseként még 1998-ban megjelent, 2003-tól pedig W3C ajánlás lett (1.1-es verzió), jelenleg az 1.2-es a legfrissebb. Nem kizárólagosan RPC-k kezelésére készült, hanem általános üzenetküldésre. Előnye, hogy a HTTP mellett HTTPS 10, vagy akár SMTP protokollal is használható, platform-és nyelvfüggetlen. Számos nyelv beépített támogatást tartalmaz SOAP üzenetek kezelésére. Hátránya, hogy lassú (összehasonlítva például a CORBA 11 -val), különösen nagy méretű üzeneteknél, valamint nem minden nyelv támogatja megfelelően (pl. a PHP 12 ). 10 HTTP Secure 11 Common Object Request Broker Architecture 12 Hypertext Preprocessor 7
8 Maga a SOAP üzenet egy XML fájl, és SOAP Envelope-nak (SOAP boríték) hívjuk. A boríték egy fejlécből és egy üzenettörzsből áll. Minden egyes elem névtérben található, amely az emberi olvasást nehézkessé teszi. Ugyanakkor a névterek használatának előnye a névütközések elkerülése. A SOAP belső működéséhez a Schema-t használja, egy elem teljes névtere megegyezés szerint az elemet leíró Schema fájl. Egy SOAP kérés a következőképpen nézhet ki: <soapenv:envelope xmlns:soapenv=" xmlns:xsd=" xmlns:xsi=" xsi:schemalocation=" <soapenv:body> <req:echo xmlns:req = " <req:category>classifieds</req:category> </req:echo> </soapenv:body> </soapenv:envelope> Erre érkezett válasz: 3. kód SOAP kérés <soapenv:envelope xmlns:soapenv=" xmlns:xsd=" xmlns:xsi=" xsi:schemalocation=" <soapenv:header> <wsa:replyto> <wsa:address> </wsa:address> </wsa:replyto> <wsa:from> <wsa:address> </wsa:address> </wsa:from> <wsa:messageid> ECE5B3F187F29D28BC
9 </wsa:messageid> </soapenv:header> <soapenv:body> <req:echo xmlns:req = " <req:category>classifieds</req:category> </req:echo> </soapenv:body> </soapenv:envelope> 4. kód SOAP válasz Látható, hogy a SOAP borítékon belül négyféle névtér létezik, valamint hogy egy egyszerű kérés is milyen mennyiségű fizikai adatot jelent A névtér Ez a névtér definiálja a SOAP boríték felépítését, vagyis az Envelope, Body, Fault, és Header elemeket, azok egymáshoz viszonyított helyzetét. Legkülső elem az Envelope, ennek különálló gyerekelemei a Header, Body, és Fault node-ok A névtér Az encodingstyle attribútum az XML dokumentumban használt adattípusok definiálására való. Bármely elemen megjelenhet, lefelé terjed. Már nem támogatott A névtér Ez a névtér definiálja az XML-ben elérhető különböző primitív (pl. boolean) és komplex (pl. group) típusokat, az elérhető elemeket, attribútumokat, ezek alapértelmezett értékét és egymáshoz viszonyított sorrendjét A névtér Ez a névtér együtt használatos az XMLSchema névtérrel. Attribútumokat definiál, melyek segítségével típust adhatunk meg (xsi:type), null elemet definiálhatunk (xsi:nil), vagy a schema dokumentum helyét (xsi:schemalocation) tudjuk megadni. 9
10 Összefoglalás A SOAP jóval kifinomultabb hibakezeléssel rendelkezik, mint az XML-RPC. A hibaüzenetben rendelkezésre áll a hibakód, a hiba kiváltója, valamint egy részletes hibaleírás (pl. melyik sorban történt a hiba). A SOAP adattípusait tekintve is gazdagabb, támogatott típusai: boolean, integer, double, sztring, tömb, asszociatív tömb, objektum, kevert típus. Ezek segítségével már alkalmas objektumok továbbítására a hálózaton WSDL A WSDL egy XML alapú webszolgáltatás-leíró nyelv, és szorosan kötődik a SOAP-hoz, a webszolgáltatás nyilvános felületét írja le. Egy webszolgáltatás igénybe venni kívánó kliens a WSDL fájlból tudja meg, milyen metódusok érhetőek el a szerveren, és hogyan óta létezik, a WSDL 2.0 pedig 2007 óta W3C ajánlás. A használt speciális adattípusok a WSDL fájlba vannak ágyazva Schema formátumban. Ugyanúgy névtereket használ, mint a SOAP, és igen terjedelmes XML-t jelent, egyszerű szolgáltatás esetén is. A nyelvi implementációk automatikus WSDL generálási lehetőséggel rendelkeznek. <?xml version="1.0"?> <wsdl:definitions name="stockquote" targetnamespace=" xmlns:tns=" xmlns:xsd1=" xmlns:soap=" xmlns:wsdl=" <wsdl:types> <xsd:schema targetnamespace=" xmlns:xsd=" <xsd:element name="tradepricerequest"> <xsd:complextype> <xsd:all> <xsd:element name="tickersymbol" type="string"/> </xsd:all> </xsd:complextype> </xsd:element> <xsd:element name="tradeprice"> <xsd:complextype> <xsd:all> 10
11 <xsd:element name="price" type="float"/> </xsd:all> </xsd:complextype> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="getlasttradepriceinput"> <wsdl:part name="body" element="xsd1:tradepricerequest"/> </wsdl:message> <wsdl:message name="getlasttradepriceoutput"> <wsdl:part name="body" element="xsd1:tradeprice"/> </wsdl:message> <wsdl:porttype name="stockquoteporttype"> <wsdl:operation name="getlasttradeprice"> <wsdl:input message="tns:getlasttradepriceinput"/> <wsdl:output message="tns:getlasttradepriceinput"/> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="document" transport=" <wsdl:operation name="getlasttradeprice"> <soap:operation soapaction=" <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="stockquoteservice"> <wsdl:documentation>my first service</documentation> <wsdl:port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location=" </wsdl:port> </wsdl:service> </wsdl:definitions> 5. kód Egy egyszerű WSDL fájl 11
12 2.4. UDDI Az UDDI egy platformfüggetlen, XML alapú nyilvántartó rendszer, a webszolgáltatások harmadik alapvető eleme (a SOAP és a WSDL mellett), szintén 2000 óta létezik. SOAP üzenetekkel kérdezhető le, és a WSDL dokumentumokhoz biztosít hozzáférést. Az UDDI-t mint egy brókert képzelték el a webszolgáltatások világában. Ha egy cég új webszolgáltatást vezet be, akkor azt be kell jegyeznie a brókernél, a kliensek pedig a brókertől tudják meg, hogy ilyen szolgáltatás egyáltalán létezik, és veszik fel a kapcsolatot a szolgáltatóval. Az UDDI ilyen módon kritikus komponense a webszolgáltatásnak, különösen a pénzért igénybe vehetőknek. 1. ábra Az UDDI ahogy elképzelték 2.5. WS-Security A WS-Security egy olyan kommunikációs protokoll, mely eszközöket tartalmaz a webszolgáltatások biztonságossá tételéhez. Viszonylag későn, 2004-ben jelent meg, 1.1-es verzióját 2006-ban érte el. A WSS leírja, hogyan használjunk webszolgáltatásokban SAML és Kerberos titkosítást, vagy éppen tanúsítványokat. Leírást tartalmaz a SOAP üzenetek aláírásáról, és titkosításáról. Fontos megjegyezni, hogy meglévő, jól bevált szabványokra épít, mint az XML DigitalSignature, XML Encryption, vagy X
13 Szükségszerűen jött létre, hiszen a SOAP kommunikáció miatt tudnunk kell autentikálni a szolgáltatást igénybe venni akaró felet, aláírni az üzenetet, és titkosítani azt. Ilyen módon ismertté válik a hívó, aki egyben képes lesz ellenőrizni, hogy a kommunikáció során harmadik fél nem változtatta-e meg az üzenetet, illetve harmadik fél nem férhet hozzá illetéktelenül a küldött üzenethez. Elemeit tekintve, a WS-SecurityPolicy a titkosítási követelményeket írja le, a WS- Interoperability azért felelős hogy a különböző megvalósítások kompatibilisek legyenek egymással. A WS-SecureConversation leírást tartalmaz, hogy a titkosítási kulcsok igénylése vagy éppen generálása hogyan történik. A WS-Trust a biztonsági tokenek kibocsátásáról, megújításáról, ellenőrzéséről rendelkezik, a WS-RM a megbízható üzenetküldésről, a WS- Authorization pedig az autorizációs kérdésekről. A WS-Security üzenetszintű titkosítást jelent, az átviteli közeggel nem foglalkozik. Ha biztonságos átvitelt szeretnénk, akkor a WSS mellett / helyett Transport Layer Security-t (TLS) kell használnunk, ez webszolgáltatás esetén például HTTPS-t jelent. Folyamatát tekintve először a hívó azonosítása zajlik le egy UserNameToken, Kerberos ticket, vagy éppen X.509 tanúsítvánnyal. Természetesen a UserNameToken-ben a jelszó hash-elve van. A szolgáltatás ellenőrzi, hogy a hívó jogosult-e meghívni az adott metódust, majd előállítja a nyers választ. Következik a nyers üzenet aláírása, ami persze önmagában nem elég, hogy harmadik fél illetéktelenül hozzáférjen a tartalmához, csak az üzenet érintetlenségének megállapítására jó. X.509 esetén a tanúsítvány segítségével ír alá, Kerberos esetén a session kulccsal, UserNameToken esetén pedig a jelszóval. Következik az aláírt üzenet titkosítása, amely lehet szimmetrikus, és aszimmetrikus. Szimmetrikus kódolásnál mindkét félnek rendelkeznie kell ugyanazzal a titkosítási kulccsal, ezt adott esetben problémás megoldani. Alternatíva, ha már az autentikációt tanúsítvánnyal oldjuk meg, akkor aszimmetrikus kódolással dolgozzunk. Megjegyzendő, hogy csak a SOAP üzenet Body része kerül titkosításra, a fejléc nem. 13
14 3. A Microsoft válasza: WCF A korai webszolgáltatások nagy hátránya, hogy elsajátításuk nehéz, nagy szakértelmet kíván. Más technológiát kell alkalmaznunk IPC 13 esetén, szöveges, vagy bináris átvitelnél. Változik a kód, a programot újra kell fordítani. A WCF 14 a 3.0-s.NET Framework-ben jelent meg először, 2006-ban. Szolgáltatás orientált alkalmazásokat lehet a segítségével létrehozni, és a korábbiaktól eltérően egységes modellt nyújt a fejlesztőknek. A kód változtatása nélkül, egy konfigurációs fájl szerkesztésével alkalmas bináris, szöveges, IPC, vagy akár P2P 15 kommunikációra. Számos szolgáltatása van biztonság, tranzakció kezelés, és biztonságos átvitel terén. Teljes körű diagnosztikai funkciókkal rendelkezik, úgymint: naplózás, nyomkövetés, teljesítményszámlálók A WCF alapfogalmai Endpoint: A szerver végpontokon keresztül nyújt szolgáltatásokat a kliensnek. Minden endpoint három részből áll: Address, Binding, Contract, erre szoktak ABC néven hivatkozni. Address: A végpont címe, egy URI 16, ahol a szolgáltatás elérhető. Binding: A kommunikáció módját adja meg. Lehet a felhasználó által definiált, de számos beépített binding áll rendelkezésre, saját használatára ritkán van szükség. Contract: A szolgáltatás interfészének leírása, vagyis hogy a szolgáltatás milyen műveleteket támogat. 13 Inter-process communication 14 Windows Communication Foundation 15 Peer to peer 16 Uniform Resource Identifier 14
15 3.2. A WCF beépített kötései (binding) BasicHttpBinding: HTTP protokollon alapuló, szöveges XML formátumú küldést definiál. WsHttpBinding: Biztonságos, egyirányú üzenetküldést definiál. WsDualHttpBinding: Biztonságos, duplex üzenettovábbítást és SOAP alapú kommunikációt definiál. NetTcpBinding: Bináris, WCF alkalmazások közötti gép-gép kapcsolaton megvalósított megbízható kommunikációt definiál. Csak.NET-es alkalmazások között használható. NetNamedPipeBinding: Egy gépen futó, IPC kommunikációt definiál. Csak Windows platformon használható. NetMsmqBinding: Várakozási soron alapuló kötés. Előnye, hogy ha a szerver ideiglenesen nem érhető el, a várakozási sor bizonyos időközönként újra próbálkozik a küldéssel. Csak Windows platformon használható. NetPeerTcpBinding: P2P kommunikációt definiál. Látható, hogy ha a kliens és a szerver egyaránt.net-es alkalmazás, akkor számos lehetőség adott a nekünk megfelelő kötés kiválasztására. De ha a kliens vagy a szerver nem.net-es, akkor is bőven marad lehetőség, amiből választhatunk. Természetesen mindig az adott feladathoz leginkább illeszkedő kötést érdemes választani. A basichttpbinding nem támogat semmilyen biztonságot, ellenben van néhány szolgáltatás (tipikusan a régi webszolgáltatások), amelyek egyszerűen nem képesek többre. Leggyakrabban használt kötés a wshttpbinding, biztonságos, és széles körben használt. Ha a kliens és a szerver ugyanazon a gépen van, akkor jelentős sebességnövekedés érhető el a netnamedpipebinding használatával, ugyanis kevesebb hálózati rétegen megy át az üzenet. Nagyszámú adat küldésénél a nettcpbinding jóval gyorsabb a kevesebb átküldendő adat miatt, mint az összes többi. Ha kiemelkedően fontos, hogy az üzenet akkor is 15
16 célba érjen, ha a szerver ideiglenesen nem elérhető, akkor az egyetlen lehetőség a netmsmqbinding használata. Illetve ha a kommunikáció peer to peer kapcsolatot igényel, akkor a netpeertcpbinding-ot kell választanunk. 16
17 4. Egyszerű WCF szolgáltatás készítése 4.1. Előkészületek A példa összeállításához Visual Studio 2008 SP1-et, illetve.net Framework 3.5 SP1-et fogok használni. A korábbi verziókban volt néhány bosszantó hiba, amit már javítottak. WCF projekt létrehozásához a Visual Studio-ban a File/New/Project-ben a WCF kategória alatt a WCF Service Library-t kell választani (1. ábra), majd az elkészült projektben törölni az automatikusan létrehozott IService1.cs és Service1.cs fájlokat. 2. ábra WCF projekt létrehozása 4.2. A tényleges kódok WCF szolgáltatás készítéséhez szükség van egy interfészre, és egy osztályra, ami azt implementálja. Az interfészt el kell látni ServiceContract attribútummal, ami a System.ServiceModel névtérben van. Szükség van még a metódusok fejlécének OperationContract attribútummal ellátására. Egy minimális ilyen interfész: 17
18 using System.ServiceModel; namespace DiplomamunkaLib [ServiceContract] public interface IDiplomamunka [OperationContract] string echo(string input); 6. kód WCF interfész Szükség van még egy osztályra, ami ezt az interfészt implementálja. Itt már nincs szükség attribútumokra. using System; namespace DiplomamunkaLib public class Diplomamunka:IDiplomamunka public string echo(string input) Console.WriteLine(input); return input; 7. kód WCF osztály Ez a szolgáltatás nem fog mást csinálni, mint szerver oldalon kiírja azt, amit a kliens küldött, és visszaadja a kliensnek Végpontok beállítása A Solution Explorerben (2. ábra) az App.config fájlon kattintva érhető el a szerkesztő, Edit WCF Configuration alatt. A beállítási lehetőségek közül egyedül a Services pont az érdekes. Az endpoint konfiguráció nevének végét át kell nevezni Service1-ről Diplomamunkára. A DiplomamunkaLib.Diplomamunkában a Host-ra kattintva (3. ábra) be kell állítani a kiindulási címét a szolgáltatásnak. Erre tökéletes a és 18
19 innentől kezdve a végpontoknak már csak relatív címet kell adni. Fontos megjegyezni, hogy Vistánál és az újabb Windows-okon nincs automatikus portnyitási engedélye a felhasználónak, azt explicit engedélyezni kell a következő paranccsal: netsh http add urlacl url= user=domain\user. A végpontok tényleges beállítása következik. Az első végpontnál névnek tetszőleges sztring beállítható, cél a könnyű azonosíthatóság. Binding-nak egyelőre basichttpbinding-ot használok, Contract-nak pedig a 4.2 pontban létrehozott interfészt kell megadni (4. ábra). A másik endpoint speciális, a szolgáltatás propagálására való, címe mindig mex, binding-ja valamelyik mex-es binding (http kapcsolat esetén mexhttpbinding), contract-ja pedig IMetadataExchange (5. ábra). A konfigurációt menteni kell, majd bezárni a szerkesztőt. 3. ábra Solution Explorer 4. ábra Host beállítása 19
20 5. ábra Endpoint beállításai 6. ábra Mex endpoint 4.4. Host alkalmazás A fent elkészített alkalmazást lefordítva egy dll-t kapunk, ami önmagában még nem elég. Szükség van egy másik alkalmazásra, ami hosztolja. Ez akár IIS 17 is lehet, a gyakorlatban azonban egy Windows Service. Én az egyszerűség kedvéért egy ConsoleApplication-t fogok használni. Előkészületként le kell tiltani a dll automatikus hosztolását, ehhez a Solution Explorer-ben a projekten kattintva, a properties ablak WCF Options részében ki kell kapcsolni a Start WCF Service Host... részt (6. ábra). 17 Internet Information Service 20
21 7. ábra WCF Service host kikapcsolása Ezután hozzá kell adni a solution-höz egy új ConsoleApplication projektet, majd a WCF Service Library-ben lévő, korábban elkészített App.config fájlt átmásolni az új projektbe (7. ábra). 8. ábra A hosztoló projekt hozzáadva A hosztolást a ServiceHost osztály fogja végezni, ami a System.ServiceModel névtérben található, ezt referenciaként hozzá kell adni a projekthez. Hozzá kell még adni referenciaként a korábban elkészített WCF Service Library projektet (8. ábra). 21
22 9. ábra WCF Service Library hozzáadása using System; using System.ServiceModel; using DiplomamunkaLib; namespace DiplomamunkaHost class Program static void Main(string[] args) try ServiceHost host = new ServiceHost(typeof(Diplomamunka)); host.open(); Console.WriteLine("Elindult"); Console.ReadLine(); host.close(); catch (Exception ex) Console.WriteLine(ex.Message); Console.ReadLine(); 8. kód WCF host A solution beállításánál még be kell állítani, hogy csak a hoszt projekt induljon el, és a szerver résszel készen vagyunk. 22
23 4.5. Beépített kliens használata A Visual Studio rendelkezik beépített WCF klienssel. Kiválóan alkalmas a szolgáltatást tesztelni, képes például megjeleníteni a szervernek küldött, és az onnan kapott XML üzeneteket. A kliens a Visual Studio Command Prompt-ból indítható WcfTestClient paranccsal (9. ábra). 10. ábra Beépített WCF kliens Hozzá kell adni a szervert a szolgáltatások listájához, miután Visual Studio-ban elindítottuk. Ehhez a File/Add service menüjében meg kell adni a szolgáltatás címét ( A mex endpoint segítségével automatikusan letöltődik és láthatóvá válik az elérhető metódusok listája (10. ábra), majd a metóduson kattintva, és a Value mezőt kitöltve meghívható a metódus az Invoke gombbal (11. ábra), és kis idő elteltével látható az eredmény is. Alul XML nézetbe átkapcsolva látható, hogy a tényleges üzenet SOAP-ra képződött le, és a válasz is SOAP üzenet. A szerver rész ablakában szintén láthatóak az elküldött értékek. 11. ábra Az elérhető metódusok 23
24 12. ábra Paraméterezés, és metódus meghívása 13. ábra A küldött és kapott XML 24
25 4.6. Saját kliens használata Saját kliens használatához a solution-ben hozzá kell adni egy új projektet, illetve be kell állítani hogy a szerverrel együtt ez is induljon el. A References-en kattintva hozzá kell adni a korábban létrehozott WCF Service-t, mint Service Reference-t. A Discover gombra kattintva automatikusan megtalálja a WCF alkalmazást, és felépíti a hozzá tartozó proxy-t (13. ábra). 14. ábra Referencia hozzáadása Ezek után egy egyszerű WCF kliens így nézhet ki: using System; namespace TestClient class Program static void Main(string[] args) Console.ReadLine(); try DiplomamunkaClient.DiplomamunkaClient client = new TestClient.DiplomamunkaClient.DiplomamunkaClient(); client.open(); Console.WriteLine(client.echo("Próba")); client.close(); catch (Exception ex) 25
26 Console.WriteLine(ex.Message); finally Console.ReadLine(); 9. kód WCF kliens Egyedül a kód elején lévő Console.ReadLine szorul magyarázatra. Előfordulhat, hogy az egyszerre történő indításkor a kliens hamarabb indul el, mint a szerver, ekkor természetesen kivételt kapnánk, ezért lett beiktatva a várakozás Összefoglalás Látható, hogy egy egyszerű kliens és szerver összeállítása egyáltalán nem nehéz, a kód megírásán kívül csak a végpontok összeállítása igényel egy kis odafigyelést, minden más kvázi automatikus. Másik átviteli mód választásánál csak a végpont beállításán kell módosítani, a kódot egyáltalán nem érinti, és a kliensben kell frissíteni a Service Reference-t, ami fájlrendszer szinten szintén egy XML fájl. 26
27 5. Adatok átküldése a hálózaton 5.1. Általános kérdések Akármilyen adatküldési módot is választunk a végpont összeállítása során, a háttérben a tényleges küldés előtt szerializáció történik. A választott kötés függvényében ez XML vagy bináris szerializáció, így követni kell a.net szerializációs szabályait. Fontos ismételten megjegyezni, hogy bináris szerializáció csak.net szerver és kliens között támogatott Egyszerű adattípusok Az egyszerű adattípusokkal nincs tennivaló, mind a két szerializációt további beállítás nélkül támogatják. Egyszerű adattípusok közé tartozik a bool, az int, a string, illetve ezek tömbjei. Típusjelölés csak a tömböknél van, egyéb esetben a típuskonverzió a WSDL fájl alapján történik. Nagyobb mennyiségű adatok esetén érdemes bináris szerializációval dolgozó kötést választani, ez kevesebb átküldendő adatot generál Objektumok XML szerializáció (SOAP) csak olyan osztály objektumaira kérhető, amely publikus, rendelkezik default konstruktorral, az objektumnak körmentesnek kell lennie, és csak a publikus adattagok kerülnek szerializálásra. Az osztályt el kell látni DataContract attribútummal, az adattagokat pedig DataMember attribútummal. Ezek után az objektum átküldhető a hálózaton. Természetesen a megfelelő osztálynak a kliens oldalon is léteznie kell (erős, típusos kötés). Egy helyesen összeállított osztály például: 27
28 using System.Runtime.Serialization; namespace DiplomamunkaLib [DataContract] public class People [DataMember] public string Name get; set; [DataMember] public int Age get; set; public People() public People(string name, int age) this.name = name; this.age = age; 10. kód Egy helyes osztály WCF küldéshez Abban az esetben, ha sok, már korábban meglévő osztályunk van, akkor körülményes lehet azokat attribútumokkal ellátni. Lehetőségünk van a ServiceKnownType attribútumot használni az interfészben, így az osztályok átemelése automatikus lesz. [ServiceKnownType(typeof(People))] [ServiceContract] public interface Idiplomamunka 11. kód ServiceKnownType attribútum Bináris szerializációnál tetszőleges osztályt használhatunk, a privát tagokat is sorosítja, az osztályt Serializable attribútummal kell ellátni, természetesen a DataContract mellett. Lehetőség van akár saját szerializációra is, ekkor a sorosított objektumot mint sztringet (vagy bináris adatot) küldjük át a hálózaton, és a kliens oldalon újra felépítjük. Ennek a megoldásnak az előnye, hogy teljes mértékben kézben tartható a szerializálási folyamat, szükség esetén akár titkosíthatjuk is az objektumot. Egyéni szerializálásnál elhagyhatóak a DataContract és DataMember attribútumok, a szerializációs szabályokat viszont követni kell. 28
29 public string createpeople(string name, int age) People p = new People(name, age); XmlSerializer ser = new XmlSerializer(typeof(People)); StringWriter output = new StringWriter(new StringBuilder()); ser.serialize(output, p); return (output.tostring()); 12. kód Egy megfelelő saját szerializálás szerver oldalon client.open(); string todeserialize = client.createpeople("john", 23); XmlSerializer ser = new XmlSerializer(typeof(People)); People p = (People)ser.Deserialize(new StringReader(toDeserialize)); Console.WriteLine(p); client.close(); 13. kód Objektum visszanyerése kliens oldalon <?xml version="1.0" encoding="utf-16"?> <People xmlns:xsi=" xmlns:xsd=" <Name>John</Name> <Age>23</Age> </People> 14. kód A szerializált objektum 29
30 6. Kivételkezelés WCF webszolgáltatásokban a kivételkezelés a FaultException segítségével történik..net-ben ez az egyetlen olyan kivétel, amely nem a System.Exception-ből öröklődik. Az osztály a System.ServiceModel névtérben található. Különlegessége, hogy generikus kivétel, a generikus típus a ténylegesen történt kivétel típusa. Használatához az interfészben el kell látnunk a szükséges metódust FaultContract attribútummal, paraméterének pedig a tényleges kivételt mint típust megadni. Az attribútumot annyiszor kell felsorolni, ahány különböző kivétel lehetséges a metódusban (vagy használható az Exception is, mint általános kivétel). [OperationContract] [FaultContract(typeof(DivideByZeroException))] double divide(double a, double b); 15. kód Interfész metódus specifikáció, FaultContract attribútummal Az interfészt implementáló WCF osztályban már nem kell attribútumot használni, csupán a metódusban kiváltani a szükséges kivételt, az előző példánál maradva a DivideByZeroException-t, és megindokolni, hogy miért történt a hiba (FaultReason): public double divide(double a, double b) if (b == 0) throw new FaultException<DivideByZeroException> (new DivideByZeroException(), new FaultReason("Nullával osztás")); return a / b; 16. kód A WCF osztályban a szükséges kivétel kiváltása A kliens osztályban lehetőségünk van elérni a FaultReason-ben átadott üzenetet, illetve a tényleges kivétel üzenetét is: 30
31 try DiplomamunkaClient.DiplomamunkaClient client = new TestClient.DiplomamunkaClient.DiplomamunkaClient(); client.open(); Console.WriteLine(client.divide(5, 0)); client.close(); catch (FaultException<DivideByZeroException> ex) Console.WriteLine(ex.Message); Console.WriteLine(ex.Detail.Message); 17. kód A FaultException kezelése kliens oldalon Fontos megjegyezni ismét, hogy a FaultException nem a System.Exception leszármazottja, egy catch(exception ex) ág nem fogja meg ezt a kivételt. A kód lefuttatása előtt ki kell kapcsolnunk egy beállítást a kliens oldali kivétel helyes kezeléséhez. A Tools / Options / Debugging / General lapon ki kell kapcsolni az Enable Just My Code beállítást. Futtatáskor láthatjuk a Nullával osztás hibát, illetve az Attempted to divide by zero hibát. Az első a FaultReason, a második a DivideByZeroException üzenete. Természetesen lehetőség van saját kivételek használatára is, ehhez az ősosztállyal nem rendelkező osztályt el kell látni az 5.3-as fejezetben ismertetett DataContract és DataMember attribútumokokal: [DataContract] public class MyException [DataMember] public string Message get; set; public MyException() public MyException(string msg) this.message = msg; 18. kód Saját kivétel WCF-ben 31
32 Ezek után a kivétel elérhető lesz kliens oldalon is (ServiceReference frissítés után), és az előző bekezdésekben bemutatott módon használható: catch (FaultException<DiplomamunkaClient.MyException> ex) 19. kód Saját kivétel catch ága kliens oldalon 32
33 7. Autentikáció és autorizáció 7.1. Tanúsítvány létrehozása Ahhoz, hogy WCF webszolgáltatásban autentikációt és/vagy autorizációt használjunk, egy tanúsítványra van szükség, melynek természetesen meg kell lennie szerver oldalon (a privát részének), illetve kliens oldalon is (a publikus részének). Tanúsítvány vásárolható nevesebb cégektől, mint a VeriSign vagy a NetLock, ezeknek előnye, hogy a Windows automatikusan megbízhatónak tekinti őket, könnyen kezelhetőek, hátrányuk viszont az áruk. Ha nem kívánunk évi 70 dollár körüli összeget költeni erre, akkor magunknak kell tanúsítványt generálnunk. Először egy gyökértanúsítványt (root certificate) kell generálnunk, ehhez a Visual Studio parancssorában kell kiadni ezt a parancsot: makecert -n CN=DiplomaMunka -cy authority -r c:\rootcert.cer 20. kód Gyökértanúsítvány létrehozása A DiplomaMunka szöveg szabadon változtatható. A generált rootcert.cer fájlt fel kell telepíteni mind a kliens mind a szerver gépre, a Trusted Root Certification Authorities \ Local Computer tárolóba, így válik a gyökértanúsítvány a Windows számára megbízhatóvá. 33
34 15. ábra Tanúsítvány importálása Most létre kell hozni egy szervertanúsítványt, amit az előzőleg létrehozott gyökértanúsítvánnyal írunk alá: makecert -pe -n CN=wcftest -sky exchange -in DiplomaMunka c:\server.cer -sv c:\server.pvk pvk2pfx.exe -pvk c:\server.pvk -spc c:\server.cer -pfx c:\server.pfx 21. kód Szervertanúsítvány létrehozása A generált tanúsítványt (a pfx fájlt) a szerver oldalon kell feltelepíteni, ez tartalmazza ugyanis a publikus és a privát részt is. A Trusted People \ Local Computer tárolóba kell telepíteni. Figyelni kell arra, hogy Windows-ban a tanúsítványoknak is vannak jogosultságaik, ezért vagy az telepítse ezt a tanúsítványt, akinek a nevében a szerver futni fog, vagy a winhttpcertcfg eszközzel utólag be kell állítani a jogosultságot. Következő lépésként (ha a kliens és a szerver külön gépen van) ki kell exportálnunk a szervertanúsítvány publikus részét, ehhez el kell indítanunk az mmc programot, majd betölteni a Certificate beépülőt, a Local Computer tanúsítványokkal, majd megkeresni a Trusted People tárolóban az előbb feltelepített tanúsítványt. 34
35 16. ábra A szervertanúsítvány A tanúsítványon jobb kattintással előjövő menüben az All task \ Export pontot választva elmenthetjük a publikus részt, amit a kliens gépen szintén a Trusted People \ Local Computer tárolóba kell importálnunk, a jogosultságra figyelve. Vagy ha a még rendelkezésre áll a generált server.cer, azt is telepíthetjük Autentikáció szerver oldal Autentikáció létrehozásához először készíteni kell egy validátor osztályt, amely a System.IdentityModel.Selector névtérben található UserNamePasswordValidator osztályból öröklődik, és annak a Validate metódusát definiálja felül. Itt lehet ellenőrizni a felhasználói nevet és jelszót, és amennyiben nem megfelelőek, akkor SecurityTokenException kivételt kell dobni. Az alábbi példa a diploma kezdetű felhasználói neveket és bármilyen 5 karakteres jelszót fogad el: 35
36 using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; namespace DiplomamunkaLib public class MyValidator: UserNamePasswordValidator public override void Validate(string username, string password) if(!username.startswith("diploma") password.length!=5) throw new SecurityTokenException("Failed to authenticate"); 22. kód Saját validátor osztály Ezután be kell állítani, hogy a webszolgáltatás használja is ezt a validátor osztályt, ehhez meg kell nyitni az App.config fájlt a WCF konfigurációszerkesztőben, majd az Advanced \ Service Behaviours-ban hozzá kell adni a servicecredentials pontot a listához. 17. ábra ServiceCredentials hozzáadása Ezután a servicecredentials-ben CustomUserNamePasswordValidationType-nak be kell állítani a létrehozott validátor osztályt, ennek alakja: névtér.osztály, dll. Az én esetemben: DiplomamunkaLib.MyValidator, Diplomamunka. UserNamePasswordValidationMode pedig Custom legyen! 36
37 18. ábra ServiceCredentials beállítása A servicecredentials menüt kibontva a servicecertificate-et a következő értékekre kell állítani: 19. ábra ServiceCertificate beállítása Validátor osztályt wshttpbinding alatt tudunk használni (vagy más biztonságos átvitelt támogató kötés alatt). A binding beállításainál a Security fülön MessageClientCredential-nak UserName-et kell megadni, módnak pedig üzenettitkosítást (Message). 37
38 20. ábra WsHttpBinding beállítása validációhoz 7.3. Autentikáció kliens oldal A 7.2 fejezetben leírtak után a kliensben frissíteni kell a referenciát a szerverre. A kliens app.config-ját megnyitva az identity résznél a dns beállítást le kell cserélni a tanúsítvány CN nevére. Ez az én esetemben wcftest. <identity> <dns value="wcftest" /> </identity> 23. kód Identity beállítása Ha nem magunk által generált tanúsítványt használunk, akkor a konfigurációs fájl szerkesztésével készen vagyunk. Egyébként meg kell nyitni a WCF konfigurációszerkesztőben, és az Advanced \ Endpoint Behaviours-ban létre kell hozni egy új konfigurációt, amihez hozzá kell adni clientcredentials részt (20. ábra), majd annak a servicecertificate \ authentication ágában PeerOrChainTrust-ot beállítani (21. ábra). És természetesen be kell állítani az endpoint-ot, hogy ezt a behaviour-t használja (22. ábra). 38
39 21. ábra Behaviour megadása 22. ábra PeerOrChainTrust megadása 39
40 23. ábra Végpont beállítása Meg kell adnunk a kódban a felhasználói nevet és a jelszót, amivel a szerverre kívánunk csatlakozni. Ha ezek nem megfelelőek, akkor kivételt kapunk. DiplomamunkaClient.DiplomamunkaClient client = new TestClient.DiplomamunkaClient.DiplomamunkaClient(); client.clientcredentials.username.username = "diploma2"; client.clientcredentials.username.password = "12345"; client.open(); Console.WriteLine(client.divide(5, 2)); client.close(); 24. kód Felhasználói név és jelszó megadása 7.4. Autorizáció Ha sikeresen authentikált a kliens, az authorizáció onnantól gyerekjáték. A OperationContext.Current.ServiceSecurityContext.PrimaryIdentit y.name sztringben elérjük a meghíváskor megadott felhasználói nevet, és így könnyedén korlátozható a metódusok meghívása, például az elejükön egy if vizsgálattal. If(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity. Name.Equals("admin") kód Autorizáció példakód 40
41 8. Egyéb biztonsági kérdések 8.1. Tűzfalak Vállalati környezetben tűzfalak megfelelő konfigurálásával korlátozhatjuk a webszolgáltatáshoz való hozzáférést. A webszolgáltatás valamilyen porton figyel, ehhez a porthoz való hozzáférést korlátozhatjuk bizonyos gépekre. Hátránya, hogy nehezen karbantartható, körülményes. Helyette inkább ajánlott autentikációt bevezetni a webszolgáltatásban, vagy a 8.2-es pontban ismertetett módszert alkalmazni Mex endpoint kikapcsolása Kevésbé kézenfekvő, ám adott esetben hatékonyan alkalmazható eljárás. A szerver végpontjainak címét véletlen módon generált sztringekre állítjuk, legeneráltatjuk a kliensben a referencia XML-t, majd a szerveren kikapcsoljuk a mex végpontot. Így a szolgáltatás nem kerül propagálásra, csak az férhet hozzá, aki pontosan tudja hol van (ezért volt szükség a véletlen nevekre, hogy kitalálni se lehessen), vagyis birtokában van a legenerált referencia XML kliens oldalon. Egyéb átviteli titkosítást nem támogató binding-ok (pl. basichttpbinding) esetén ez, illetve a tűzfalas technika alkalmazható csak Message security A WS-Security protokollt követve titkosítható a SOAP üzenet. Előnye, hogy nem pont-pont kapcsolat (közbeékelt harmadik fél) esetén is működik, titkosítható az üzenet egy része is, többféle transzport típussal (TCP 18, named pipe) működik. Hátrány a lassúsága, nem támogatja a stream-elést, illetve nem mindenhol elérhető. 18 Transmission Control Protocol 41
42 8.4. Transport security A transzport rétegben biztosít biztonságos átvitelt, HTTP (wshttpbindig) esetén ez HTTPS, TCP (nettcpbinding) esetén SSL 19 a TCP felett. SSL tanúsítvány kell a használatához, nem működik közbeékelt harmadik fél esetén, viszont gyors, és támogatja a stream-elést. Sokszor együtt használják a message security-val. 19 Secure Socket Layer 42
43 9. Egy konkrét példa: Mail Gateway 9.1. Specifikáció X.Y cég szoftverfejlesztéssel foglalkozik. Egyes termékeikhez funkcionalitást kívánnak használni. Levelezőszervernek Microsoft Exchange-et használnak, melyet nem kívánnak megnyitni a külvilág felé. Elhatározzák, hogy a szolgáltatást WCF webszolgáltatással valósítják meg. Az Exchange szervert csak a webszolgáltatást futtató szerver felé nyitják meg, a külvilág pedig a webszolgáltatással fog kommunikálni. Természetesen autentikációt is bevezetnek, hogy csak az általuk írt szoftverek tudjanak t küldeni. 24. ábra Architektúra 9.2. WCF interfész A szolgáltatáshoz egyetlen sendmail metódusra lesz szükség. A metódus paraméterül kapja az kódolását (pl. ISO ), az Exchange szerver címét (a szolgáltatást felkészítjük arra, hogy bármilyen szervert tudjon használni, amit elér), a használandó portot (általában 25), html formátumban van-e a levél, a feladó címét, a címzett címét, a levél tárgyát és a levél törzsét. 43
44 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace MailService [ServiceContract] public interface ImailService [OperationContract] string SendMail(string encoding, string server, int port, bool htmlmail, string sender, string recipient,string subject, string body); 26. kód A WCF interfész 9.3. A WCF osztály A WCF osztályban nem foglalkozok a FaultContract lehetőségeivel, a kód vagy success eredménnyel fog visszatérni, vagy a hiba szövegével, így a kliensben nem kell a különböző kivételekkel foglalkozni. using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.Net.Sockets; using System.IO; namespace MailService public class SMailService : ImailService //A négy általunk figyelt szerver válaszkód private enum SMTPResponse : int CONNECT_SUCCESS = 220, GENERIC_SUCCESS = 250, DATA_SUCCESS = 354, QUIT_SUCCESS = 221 //Újsor karakter 44
45 private string CRLF = "\r\n"; //Maximum ennyi másodpercet várunk a szerver válaszára private int timeout = 10; public string SendMail(string encoding, string server, int port, bool htmlmail, string sender, string recipient, string subject, string body) try //TCP kliens nyitása a szerver felé TcpClient SmtpServ = new TcpClient(); SmtpServ.Connect(server, port); NetworkStream nstsmtp = SmtpServ.GetStream(); //Író és olvasó stream-ek létrehozása StreamWriter stwsmtp = new StreamWriter(nstSMTP); StreamReader strsmtp = new StreamReader(nstSMTP); //Kész-e a szerver SMTP kérést fogadni if (!Check_Response(nstSMTP, strsmtp, SMTPResponse.CONNECT_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server is not ready" ); //HELO küldése Senddata(stwSMTP, "HELO server"); //Fogadta-e a szerver a HELO-t if (!Check_Response(nstSMTP, strsmtp, SMTPResponse.GENERIC_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server did not respond 250 after HELO" ); //Feladó beállítása Senddata(stwSMTP, string.format("mail From: <0>", sender)); //Rendben volt-e a feladó beállítása if (!Check_Response(nstSMTP, strsmtp, SMTPResponse.GENERIC_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server did not respond 250 after MAIL FROM" ); //Címzett beállítása Senddata(stwSMTP, string.format("rcpt TO: <0>", recipient)); //Rendben volt-e a címzett beállítása if (!Check_Response(nstSMTP, strsmtp, 45
46 SMTPResponse.GENERIC_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server did not respond 250 after RCPT TO" ); //Levéltörzs küldésének indítása Senddata(stwSMTP, "DATA"); //Kész-e a szerver fogadni a levél törzsét if (!Check_Response(nstSMTP, strsmtp, SMTPResponse.DATA_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server did not respond 354 after DATA" ); //Levél törzsének küldése, fejlécek Senddata(stwSMTP, "From: " + sender); Senddata(stwSMTP, "To: " + recipient); Senddata(stwSMTP, string.format("subject: =?0?B?1?=", encoding, base64encode(subject))); string MsgBody = body; if (htmlmail) Senddata(stwSMTP, "Content-Type: text/html; charset=" + encoding + ";"); else Senddata(stwSMTP, "Content-Type: text/plain; charset=" + encoding + ";"); Senddata(stwSMTP, "Content-Transfer-Encoding:base64"+CRLF); //Base64 kódolt törzs küldése Senddata(stwSMTP, base64encode(msgbody)); //Adatküldés vége Senddata(stwSMTP, "."); //Rendben volt-e a törzs fogadása if (!Check_Response(nstSMTP, strsmtp, SMTPResponse.GENERIC_SUCCESS)) throw new FaultException<MailError> (new MailError Text = "Server did not respond 250 after sending DATA" ); //Kapcsolat bontása a szerverrel Senddata(stwSMTP, "QUIT"); //A szerver bontási üzenete, nem érdekel minket a tartalma Check_Response(nstSMTP, strsmtp, SMTPResponse.QUIT_SUCCESS); //Kapcsolatok lezárása stwsmtp.close(); strsmtp.close(); 46
47 nstsmtp.close(); SmtpServ.Close(); catch (FaultException<MailError> ex) return ex.detail.text; catch (FaultException<GeneralError> ex) return ex.detail.text; catch (IOException ex) return "IO error, message is: " + ex.message; catch (Exception ex) return "General error, message is: " + ex.message; return "success"; //Szöveg base64 kódolása küldéshez private string base64encode(string data) try byte[] encdata_byte = new byte[data.length]; encdata_byte = System.Text.Encoding.Default.GetBytes(data); string encodeddata = Convert.ToBase64String(encData_byte); return encodeddata; catch (Exception ex) throw new FaultException<GeneralError> (new GeneralError Text = "Error in base64encode, message is: " + ex.message ); //Szerver válaszának fogadása, timeout funkcióval private bool Check_Response(NetworkStream n, StreamReader s, SMTPResponse response_expected) DateTime timeoutcheck = DateTime.Now; TimeSpan tsp = DateTime.Now timeoutcheck; while (tsp.seconds < timeout) 47
48 if (!n.dataavailable) tsp = DateTime.Now timeoutcheck; continue; string response = s.readline(); string expected = ((int)response_expected).tostring(); if (response.substring(0,expected.length).equals(expected)) return true; return false; return false; //Adat küldése a szervernek private void Senddata(StreamWriter s, string msg) s.writeline(msg); s.flush(); public class MailError public string Text get; set; public class GeneralError public string Text get; set; 27. kód A WCF osztály 9.4. A webszolgáltatás összeállítása A 4.3 fejezetben ismertetett módon létre kell hozni a végpontokat a szolgáltatáshoz, majd a 7. fejezetben ismertetett módszerekkel autentikációt készíteni. A webszolgáltatáshoz hozzáférés természetesen tovább korlátozható tűzfalak használatával. Választani kell egy host alkalmazás-típust, kézenfekvő a Windows Service használata. A kliens alkalmazást a 4.6 és a 7.3 fejezetek szerint kell elkészíteni, és a szolgáltatás használható. 48
49 9.5. A kód használata A webszolgáltatás elég általános ahhoz, hogy tetszőleges típusú SMTP szerverrel képes legyen működni, bármelyik porton. Sok erőforrást nem igényel, ellenben figyelni kell arra, hogy esetenként nagyszámú socket-et foglal, hiszen ő maga is nyit az SMTP szerver felé, illetve a rákapcsolódó kliensek is. Nem érdemes olyan szerverre telepíteni, ahol nagyszámú helyi socket-et igénylő szolgáltatás fut (pl. MSSQL), ilyenkor a szolgáltatás gyakran le fog állni, szabad socket hiányában. A webszolgáltatás kiválóan használható különböző monitorozó alkalmazásokhoz. Alkalmas arra, hogy monitorozó szolgáltatásokat küldési funkcióval egészítse ki. Így a rendszergazdának nem kell az operátor konzol előtt ülnie, hanem automatikusan kaphat értesítéseket ha egy szerver leáll, kritikus szint alá csökken a szabad memóriája, vagy valaki éppen megpróbálja feltörni. Használható hibajegyek automatikus generálására, akár olyan szinten is, ha a hibát megadott időkereten belül nem javítják ki / javul meg magától, akkor értesítse a megfelelő személyeket. Felhasználható olyan értesítések generálására, amire a levelezőszerver alapból nem képes (pl. naptárbejegyzések száma elért egy bizonyos limitet). 49
50 10. Összefoglalás Webszolgáltatások informatikai léptékben mérve régen léteznek. Kezdetben igencsak gyerekcipőben jártak, sok megvalósításuk létezett, és az olyan fontos kérdésekben, mint a biztonság, sokáig nem létezett szabvány vagy ajánlás. A Microsoft ezt a meglévő sokszínűséget próbálta 2006-ban standardizálni a WCF kiadásával. Szemléletmódjuknak megfelelően sikerült egy könnyen használható, gyorsan megtanulható eszközt adniuk a programozók kezébe. Hiszen a fejlesztők meglévő.net tudásukat használva írhattak webszolgáltatást, csupán néhány új fogalmat és eszközt kellett megismerniük. Ügyeltek arra is, hogy a hosztolás a lehető legegyszerűbb legyen, így mind az IIS, mind a létrehozott ServiceHost osztály transzparens módon tudja hosztolni a megírt szolgáltatást. A konfiguráció egy XML fájl segítségével történik, így biztosítva a kényelmet, hogy ha más jellegű átvitelre van szükség, akkor a meglévő webalkalmazást ne kelljen újrafordítani. A Microsoft piaci helyzetét kihasználva hamar elérte, hogy a többi nyelv is támogassa, és használja a WCF-et. Számos standard kötést építettek be, melyeket ma a Java-tól a PHP-ig szinte minden magasszintű nyelv támogat. Az ezek közti kommunikáció, még az objektumok küldése is viszonylag jól megoldott. Ügyeltek ugyanakkor arra, hogy kedvezzenek a saját platformjukon fejlesztőknek, így olyan kötéseket is beleépítettek a WCF-be, amelyek csak.net-es kliens-szerver felállásban működnek, és adott körülmények között sokkal gyorsabbá teszik a kommunikációt. Biztonság terén amit lehetett beleintegráltak, így a fejlesztő a végletekig testre szabhatja alkalmazását. Összességében elmondhatjuk, hogy bár a webszolgáltatás még korántsem egy elterjedt, és széles körben használt technológia [24] [25] (ahogy azt létrehozásakor elképzelték), de a WCF-hez hasonló megoldásoknak köszönhetően nagyon hamar azzá válhat. 50
Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 12. fejezet Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2016. évi jegyzetpályázatának
Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Web-szolgáltatások: SOAP, WSDL
Szolgáltatásorientált rendszerintegráció SOA-alapú rendszerintegráció Web-szolgáltatások: SOAP, WSDL Tartalom Integrációs feladat Service Oriented Architecture Web-service SOAP WSDL Web-szolgáltatás API-k
Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20
Hálózatkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés 2013 1 / 20 Tartalomjegyzék 1 Hálózati Alapismeretek 2 System.Net Namespace 3 Socket Kezelés 4 Példa Tóth Zsolt
Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22
Szerializáció Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22 Tartalomjegyzék 1 Szerializációs Alapfogalmak 2 Szerializációs Megoldások Object Szerializáció XML
Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék
Simon Balázs (sbalazs@iit.bme.hu) Dr. Goldschmidt Balázs Dr. Kondorosi Károly BME, Irányítástechnika és Informatika Tanszék Webszolgáltatások, WS-* szabványok WS-* implementációs architektúra Célkitűzés:
Webszolgáltatások (WS)
Webszolgáltatások (WS) Webszolgáltatások fogalma IBM (lényege) Egy interface, mely a hálózaton keresztül szabványos XML üzenetekkel érhető el és hozzá formálsi XML leírás tartozik. (soap, wsdl) Sun Szoftverelemek,
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez
WebStore. JAX-WS SOAP WebServices, Stateful Session Bean. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 9
WebStore JAX-WS SOAP WebServices, Stateful Session Bean Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 9 Bedők Dávid 2016.01.25. v0.5 SOAP WebServices 1998, 2000 (v1.1), 2003 (v1.2
Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft
Flash és PHP kommunikáció Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft A lehetőségek FlashVars External Interface Loadvars XML SOAP Socket AMF AMFphp PHPObject Flash Vars Flash verziótól függetlenül
Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés
Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS
Osztott alkalmazások fejlesztési technológiái Áttekintés
Osztott alkalmazások fejlesztési technológiái Áttekintés Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Történelem - a kezdetek 2 Mainframe-ek és terminálok Minden a központi gépen fut A
SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.
Service-Oriented Architecture, SOA Az elosztott rendszerek fejlesztésének módja. Célja:az IT eszközök komplexitásának a kezelésének egyszerűsítése könnyebben újrafelhasználhatóság, egymással integrálhatóság
Titkosítás NetWare környezetben
1 Nyílt kulcsú titkosítás titkos nyilvános nyilvános titkos kulcs kulcs kulcs kulcs Nyilvános, bárki által hozzáférhető csatorna Nyílt szöveg C k (m) Titkosított szöveg Titkosított szöveg D k (M) Nyílt
QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2
QBE Édes Otthon lakásbiztosítás tarifáló webservice Fejlesztői dokumentáció 1.0.2 Az ebben a dokumentumban található információ a FoxArt Kft. tulajdona, és bizalmas anyagként került átadásra. Az anyag
SOAP komponensek Delphiben
SOAP komponensek Delphiben (Simple Object Access Protocol) Bevezetés -Azegyszerűen programozható webhozzáférés azt jelenti, hogy a fejlesztők saját programjukat a weben elérhető szolgáltatásokból építik
Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
11. Gyakorlat: Certificate Authority (CA), FTP site-ok
11. Gyakorlat: Certificate Authority (CA), FTP site-ok 11.1. A CA szerver szerepkör telepítése a DC01-es szerverre 11.2. Az FTP szervíz telepítése a DC01-es szerverre 11.3. A szükséges DNS rekordok létrehozása
Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás
Tanúsítványkérelem készítése, tanúsítvány telepítése Microsoft Internet Information szerveren
Tanúsítványkérelem készítése, tanúsítvány telepítése Microsoft Internet Information szerveren Tartalomjegyzék 1. BEVEZETÉS...3 2. A MICROSOFT IIS INDÍTÁSA...3 3. TITKOS KULCS GENERÁLÁSA...3 4. TANÚSÍTVÁNYKÉRELEM
OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)
OCSP Stapling Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. OCSP Stapling támogatással rendelkező webszerverek...
Tartalom. Történeti áttekintés. Történeti áttekintés 2011.03.23. Architektúra DCOM vs CORBA. Szoftvertechnológia
Tartalom D Szoftvertechnológia előadás Történeti áttekintés Architektúra D vs CORBA 2 Történeti áttekintés 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is
Java és web programozás
Budapesti Műszaki Egyetem 2015. 04. 08. 9. Előadás Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val
Hálózati architektúrák és Protokollok GI Kocsis Gergely
Hálózati architektúrák és Protokollok GI - 10 Kocsis Gergely 2015.11.30. FTP File Transfer Protocol Legegyszerűbb FTP parancsok: USER name PASS jelszo CD, RETRIEVE, STORE, MKDIR, RMDIR, HELP, BYE Feladat:
API tervezése mobil környezetbe. gyakorlat
API tervezése mobil környezetbe gyakorlat Feladat Szenzoradatokat gyűjtő rendszer Mobil klienssel Webes adminisztrációs felület API felhasználói Szenzor node Egyirányú adatküldés Kis számítási kapacitás
OOP és UML Áttekintés
OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés
Bánsághi Anna anna.bansaghi@mamikon.net
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64
Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés
Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Szolgáltatás technológiák (WS, WS-*) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék
Szolgáltatás technológiák (WS, WS-*) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Elosztott rendszerek Elosztott rendszerek o Egy hálózaton lévő számítógépek
SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ
SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ GIRODIRECT SZOLGÁLTATÁST IGÉNYBEVEVŐ ÜGYFELEKENEK Verzió: v1.04 Dátum: 2018. január 5. Készítette: A jelen dokumentum tartalma szerzői jogi védelem alatt áll, a mű
DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1
DCOM Áttekintés Miskolci Egyetem Általános Informatikai Tanszék DCOM /1 Mi a DCOM? DCOM: Distributed Component Object Model A Microsoft osztott objektum modellje Bináris együttmÿködési szabvány és annak
WebEC kliens számítógép telepítése és szükséges feltételek beállítása, az alábbi ellenőrző lista alapján történik.
WebEC kliens számítógép telepítése és szükséges feltételek beállítása, az alábbi ellenőrző lista alapján történik.! Feltétel a helyi tűzfalon engedélyezve legyenek a 2443 és a 6443-as portok. 1. HW/SW
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát
Webes alkalmazások fejlesztése
Webes alkalmazások fejlesztése 3. gyakorlat Authentikáció, adatok feltöltése Szabó Tamás (sztrabi@inf.elte.hu) - sztrabi.web.elte.hu Authentikáció Manapság már elvárás, hogy a felhasználó regisztrálni
Bevezető. Servlet alapgondolatok
A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek emelt szint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK EMELT SZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM
Programozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén
C#, OOP. Osztályok tervezése C#-ban
C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat
A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén
A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén Tartalomjegyzék 1. A CAPICOM ACTIVEX KOMPONENS TELEPÍTÉSE...3
2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
Webes alkalmazások fejlesztése 14. fejezet. Szolgáltatások adatkezelése (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 14. fejezet Szolgáltatások adatkezelése (WCF) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2016. évi jegyzetpályázatának
Technikai tudnivalók a Saxo Trader Letöltéséhez tűzfalon vagy proxy szerveren keresztül
Letöltési Procedúra Fontos: Ha Ön tűzfalon vagy proxy szerveren keresztül dolgozik akkor a letöltés előtt nézze meg a Technikai tudnivalók a Saxo Trader Letöltéséhez tűzfalon vagy proxy szerveren keresztül
Access adatbázis elérése OLE DB-n keresztül
Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes
A Java EE 5 plattform
A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 13. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési
Megújított tanúsítvány cseréje a Windows tanúsítványtárban
Megújított tanúsítvány cseréje a Windows tanúsítványtárban Windows operációs rendszeren 1(9) 1. Tartalomjegyzék 1. Tartalomjegyzék...2 2. Bevezető...3 3. Tanúsítvány megújítása...4 3.1. Megújított tanúsítvány
Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem
A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 04. 17. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési
Kommunikáció. 3. előadás
Kommunikáció 3. előadás Kommunikáció A és B folyamatnak meg kell egyeznie a bitek jelentésében Szabályok protokollok ISO OSI Többrétegű protokollok előnyei Kapcsolat-orientált / kapcsolat nélküli Protokollrétegek
.NET alapszolgáltatások 2.
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");
Segédlet kriptográfiai szolgáltatást beállító szoftverhez (CSPChanger)
Segédlet kriptográfiai szolgáltatást beállító szoftverhez (CSPChanger) szoftveres, PKCS#12 formátumú tanúsítvány átalakításához 1(8) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. CSPChanger
Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben
Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben Java GUI készítése, Oracle kapcsolódás JDBC-vel A jelen anyagban egy egyszerűsített megközelítéssel vizsgáljuk
Könyvtári címkéző munkahely
Könyvtári címkéző munkahely Tartalomjegyzék A RENDSZER HARDVER ELEMEI...3 1 RFID CÍMKÉK... 3 2 RFID ASZTALI OLVASÓ... 3 A RENDSZER SZOFTVER ELEMEI... 4 1 KÖNYV CÍMKÉZŐ MUNKAÁLLOMÁS... 4 2 A PC- S SZOFTVEREK
Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0
Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Ön letölthető fájl tartalmazza az Evolut Főkönyv 2013. program telepítőjét. A jelen leírás olyan telepítésre vonatkozik, amikor Ön
Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás. 1.1. Szükséges névterek. 1.2. Attribútumok. 1.3.
Sorosítás (szerializáció) és helyreállítás Cél: a memóriában tárolt adatok egyszerű lemezre mentése és visszatöltése. A sorosítás során létrehozunk egy állományt és egy sorosítást kezelő objektumot. Ez
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
HTTP Hálózat Rétegezett architektúra felhasználók Alkalmazási Web, e-mail, file transfer,... Szállítási Internet Hálózat-elérési Végponttól végpontig terjedő átvitel, Megbízható átvitel, sorrendbe állítás,
applikációs protokollok
Applikációs protokollok Hálózati szolgáltatások 2. applikációs protokollok: HTTP, HTTPS, FTP, SFTP, POP3, IMAP, SMTP Informatikus (rendszerinformatikus) Az OSI modell viszony-, megjelenítési és alkalmazási
Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja
Kommunikáció Folyamatok közötti kommunikáció Minden elosztott rendszer alapja Marshalling Alap primitívek Direkt, indirekt portok Blokkolás, nem blokkolás Pufferelés Megbízhatóság RPC Az RPC jellemzői
Webszolgáltatások kommunikációs overhead-jének becslése
Webszolgáltatások kommunikációs overhead-jének becslése Simon Balázs, sbalazs@iit.bme.hu Dr. Goldschmidt Balázs, balage@iit.bme.hu Dr. Kondorosi Károly, kondor@iit.bme.hu Budapesti Műszaki Egyetem, Irányítástechnika
ÜGYFÉL OLDALI BEÁLLÍTÁSOK KÉZIKÖNYVE
ÜGYFÉL OLDALI BEÁLLÍTÁSOK KÉZIKÖNYVE Felhasználói leírás E-HATÁROZAT 2012 - verzió 1.2 Érvényes: 2012. május 24-től. Azonosító: ehatarozat_ugyfél_ beallitasok_kezikonyv_felh_v1.2_20120524_tol 1/15 1 Tartalom
Bevezetés az SAP világába. 5. Kommunikációs és integrációs technológiák
Bevezetés az SAP világába Zolnai László zolnai@elte.hu http://zolnai.web.elte.hu/bev_sap.html 5. Kommunikációs és integrációs technológiák 1 Rendszerek közötti kapcsolatok SAP és nem-sap rendszerek Vállalaton
Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
Valimed API. REST API a magyarországi orvos pecsétszámok validálására
Valimed API REST API a magyarországi orvos pecsétszámok validálására 1. A Valimedről és a jogi háttérről A Valimed legfőképpen gyógyszergyártóknak és orvosi témában érdekelt online szolgáltatóknak szóló
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
Windows biztonsági problémák
Windows biztonsági problémák Miskolci Egyetem Általános Informatikai Tanszék Miért a Windows? Mivel elterjedt, előszeretettel keresik a védelmi lyukakat könnyen lehet találni ezeket kihasználó programokat
Széchenyi István Egyetem www.sze.hu/~herno
Oldal: 1/6 A feladat során megismerkedünk a C# és a LabVIEW összekapcsolásának egy lehetőségével, pontosabban nagyon egyszerű C#- ban írt kódból fordítunk DLL-t, amit meghívunk LabVIEW-ból. Az eljárás
OEP Betegéletút lekérdezés háziorvosok és vénytörténet lekérdezés patikák számára. API dokumentáció. verzió: 2.01
OEP Betegéletút lekérdezés háziorvosok és vénytörténet lekérdezés patikák számára API dokumentáció verzió: 2.01 2013.03.26 Tartalomjegyzék 1 BEVEZETÉS...3 1.1 A fejlesztés célja...3 2 API ELÉRÉS ÉS MŐKÖDÉS...3
Előnyei. Helyi hálózatok tervezése és üzemeltetése 2
VPN Virtual Private Network A virtuális magánhálózat az Interneten keresztül kiépített titkosított csatorna. http://computer.howstuffworks.com/vpn.htm Helyi hálózatok tervezése és üzemeltetése 1 Előnyei
Elektronikusan hitelesített PDF dokumentumok ellenőrzése
Elektronikusan hitelesített PDF dokumentumok ellenőrzése Adobe Reader beállítása és használata a hitelesített PDF dokumentumok ellenőrzéséhez A dokumentáció szabadon tovább terjeszthető, a legfrissebb
Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen
Osztott rendszerek Krizsán Zoltán 1 Ficsór Lajos 1 1 Általános Informatikai Tanszék Miskolci Egyetem Webalkalmazások fejlesztése tananyag Tartalom Bevezetés A múlt - történelem A jelen Denition Distributed
Hálózatbiztonság Androidon. Tamas Balogh Tech AutSoft
Tamas Balogh Tech lead @ AutSoft Key Reinstallation AttaCK 2017 őszi sérülékenység Biztonsági rés a WPA2 (Wi-Fi Protected Access) protokollban Nem csak Androidon - más platform is Minden Android eszköz,
9. MPI
9. MPI kertesz.gabor@nik.uni-obuda.hu MPI Message Passing Interface Elosztott memóriájú párhuzamos programozási API Gyk. folyamatok közötti kommunikáció de facto ipari standard Több száz előre definiált
MicroSigner Közvetítő Szerver fejlesztői dokumentáció
MICROSEC ZRT. MicroSigner Közvetítő Szerver fejlesztői dokumentáció verzió: 1.0 Ivicsics Sándor, Máté Norbert, Vanczák Gergely 2016.06.09. Tartalom Általános információk... 2 ESign munkamenet létrehozása...
Web-technológia PHP-vel
Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM
PC Connect. Unique ewsletter. program leírás
PC Connect Unique ewsletter program leírás Tartalomjegyzék Bevezető...- 1 - Előkészületek...- 2 - Alap adatok, alap fájlok...- 2 - A program használata...- 3 - E-mail files...- 3 - Swich text...- 4 - Settings...-
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA-
A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA- ÜZENETEK ÉS AZOK KIKERÜLÉSE Jelen jegyzet az ÉTDR Java platformon futtatható alkalmazásainak betöltésekor esetlegesen előugró hibaüzenetek kikerülése végett készült.
Programozási technológia
Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi
Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P
Számítógépes Hálózatok 2007 13. Felhasználói réteg DNS, email, http, P2P 1 Felhasználói réteg Domain Name System Példák a felhasználói rétegre: E-Mail WWW Content Delivery Networks Peer-to-Peer-Networks
Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System
Felhasználói réteg Domain Name System Számítógépes Hálózatok 2007 13. Felhasználói réteg DNS, email, http, P2P Példák a felhasználói rétegre: E-Mail WWW Content Delivery Networks Peer-to-Peer-Networks
DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA AZ INFORMATIKAI PLATFORMON
DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA AZ INFORMATIKAI PLATFORMON 2013. 08. 12 Készítette: FGSZ Zrt. Informatika és Hírközlés Informatikai Szolgáltatások Folyamatirányítás Az FGSZ Zrt. elkötelezett az informatikai
Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.
Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor
Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor Integrált fejlesztő környezet Egységes (vizuális) fejlesztési lehetőségek Bőséges segítség (help) Hibakeresési, nyomkövetési
Windows Screencast teszt
Windows Screencast teszt Question 1 Mely rendszerbeállító komponens opcióit láthatjuk illetve állíthatjuk be legelsőként a Windows Server 2008 telepítése után? a. Initial Configuration Tasks b. Remote
E-Freight beállítási segédlet
E-Freight beállítási segédlet Az E-Freight rendszer működéséhez szükséges programok és beállítások v08 A legújabb verzióért kérjük, olvassa be az alábbi kódot: 1. Támogatott böngészők Az E-Freight az Internet
Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék
Osztott rendszerek (Distributed systems) Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 09. 18. osztottrendszerek / 1 Tartalom Miért kellenek osztott rendszerek Egy kis
DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA A REGIONÁLIS BOOKING PLATFORMON
DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA A REGIONÁLIS BOOKING PLATFORMON 2013. 10. 09 Készítette: FGSZ Zrt. Informatika és Hírközlés Informatikai Szolgáltatások Folyamatirányítás Az FGSZ Zrt. elkötelezett az informatikai
Evolution levelező program beállítása tanúsítványok használatához
Evolution levelező program beállítása tanúsítványok használatához Linux operációs rendszeren, szoftveresen tárolt tanúsítványok esetén 1(9) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3.
XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1
XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1 A gyakorlat célja a webszolgáltatások létrehozásának és igénybe vételének elsajátítása egyszerű példákon keresztül. 1. Két
Számítógépes Hálózatok. 5. gyakorlat
Számítógépes Hálózatok 5. gyakorlat PYTHON ALAPOK V. Socket programozás, UDP 2 Óra eleji kiszh Elérés: https://canvas.elte.hu Számítógépes Hálózatok Gyakorlat 1 3 A kommunikációs csatorna kétféle típusa
LETÉTKEZELŐ NYILVÁNTARTÁSI RENDSZER
LETÉTKEZELŐ NYILVÁNTARTÁSI RENDSZER Felhasználói kézikönyv a területi adminisztrátorok számára 1.2 verzió 2015.május 14. Dokumentum adatlap Projekt/modul megnevezése: Magyar Ügyvédi Kamara Letétkezelő
UNIX / Linux rendszeradminisztráció III. előadás
UNIX / Linux rendszeradminisztráció III. előadás Elektronikus levelezés Alapfogalmak Levelezés hagyományosan: levél írás, fejléc(?), boríték, címzés, feladás, továbbítás, kézbesítés Levelezés elektronikusan:
Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 7. előadás Autentikáció és autorizáció (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Autentikáció
PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról
PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról Az Informatikai Igazgatóság minden aktív egyetemi hallgató és munkaviszonnyal rendelkező egyetemi dolgozó részére úgynevezett proxy
és DKIM. Kadlecsik József MTA Wigner Fizikai Kutatóközpont ISZT 2018, Budapest
Email és DKIM Kadlecsik József MTA Wigner Fizikai Kutatóközpont kadlecsik.jozsef@wigner.mta.hu Tartalom SMTP (ESTMP) DKIM DMARC Tapasztalatok SMTP I. Kliens EHLO client-fqdn MAIL FROM:
VBA makrók aláírása Office 2007 esetén
VBA makrók aláírása Office 2007 esetén Windows tanúsítványtárban és/vagy kriptográfia eszközökön található tanúsítványok esetén Office 2007 alkalmazással 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék...
Segédanyag: Java alkalmazások gyakorlat
Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java
Objektumorientált programozás C# nyelven III.
Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és