Készítette: Szabó Zoltán.  Végpontok ABC-je  Beépített kötések  Többszörös kötések használata  Végpontok létrehozása konfigurációs állomány segítségével.

Slides:



Advertisements
Hasonló előadás
Program funkciók USB porton keresztül kommunikál és egy kiegészítő eszköztől (kontrollertől) kapott jel hatására az előre elkészített minta fájlt kinyomtatja.
Advertisements

4. alkalom – Hálózat Kezelés
Információs függvények
A hálózat működése 1. A DHCP és az APIPA
Windows Communication Foundation (WCF)
Kiss-Tóth Marcell Flash és PHP? De még mennyire!
Hálózati és Internet ismeretek
WINDOWS COMMUNICATION FOUNDATION Session és példányosítás.
Az internet és a web A HTML alapjai.  „Úgy gondoljuk, hogy a világpiacon talán öt darab számítógépet tudnánk eladni.” (Thomas Watson, az IBM elnöke,
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
1. Előadás WCF- bemutatás
Social Networking alkalmazás fejlesztése ASP.NET 3.5-tel Árvai Zoltán Consultant, Trainer Számalk Oktatóközpont.
OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Iratkezelő rendszer fejlesztése WPF alapokon
2010/2011.Huszár István1. dia Weboldalak tervezése II. (X)HTML.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Az előd – IIS 6 2 Forrás: Secunia, Forrás: Netcraft, August 2007 Web Server Survey Elterjedtség.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Amit a HTML-ről érdemes tudni
OSI Modell.
Stílus, mesteroldal, témák
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Hernyák Zoltán XML validálás.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
WSDL alapismeretek A WSDL (Web Services Description Language – Web szolgáltatások leíró nyelv) egy XML-alapú nyelv a Web szolgáltatások leírására és azok.
Hálózatkezelés, java.net Elek Tibor
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Előadó: Kárpáti Péter Üzleti folyamatvezérlés nagyvállalati környezetben (BizTalk Server 2004, Office InfoPath 2003 és Windows.
Instant alkalmazások SharePoint platformon. A fejlesztés és a testre szabás határai elmosódtak. A testre szabást végző legtöbbször nem programozó A.
Egyszerű webes alkalmazás fejlesztése
Bevezetés az ebXML-be Forrás: An Introduction to ebXML ebXML and Web Services Practical Considerations In Implementing Web Services Romin IraniRomin Irani.
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
…az ISA Server 2006 segítségével Gál Tamás Microsoft Magyarország.
UDP protokollok User datagram protocol- Felhasználói datagrammprotokoll.
Hálózati architektúrák
LOGO Webszolgáltatások Készítette: Kovács Zoltán IV. PTM.
Űrlapok és keretek.
Az Interneten az állományok mozgatására leggyakrabban az FTP program használatos. Az FTP felhasználók általában az alábbi funkciókkal rendelkeznek: kapcsolódás.
Űrlapok.
Flash és PHP? De még mennyire! Kiss-Tóth Marcell
Weboldalak tervezése (X)HTML.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
ELTE WIFI Beállítási útmutató MS Windows XP-hez
World Wide Web Szabó Péter Számítástechnika-technika IV. évfolyam.
Supervizor By Potter’s team SWENG 1Szarka Gábor & Tóth Gergely Béla.
Java web programozás 11..
Webprogramozó tanfolyam
Apache Ant 2. gyakorlat Alkalmazásfejlesztés /2 Gyakorlat Zalatnai Csongor.
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Webprogramozó tanfolyam
Webszolgáltatás szabványok Simon Balázs
Óravázlat Készítette: Toldi Miklós
Illés Zoltán ELTE Informatikai Kar
Kapcsolatok ellenőrzése
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
C Programozási alapok.
Az XML nyelv (Extensible Markup Language). XML  XML: leíró nyelv (metanyelv)  XML alkalmazás: egy megalkotott nyelv  XML dokumentum: egy új nyelv egy.
A Windows Server 2003 termékcsalád A Windows Server 2003 termékcsaládnak 4 tagja van: Windows Server 2003, Standard Edition Windows Server 2003, Enterprise.
OpenCMS programozói bevezetés Krizsán Zoltán iit me.
DNS. Az interneten használt osztott név adatbázis, a DNS (Domain Name Service) folyton használatos: –minden web lap letöltésnél, –levél közvetítésnél.
Tűzfal (firewall).
IP címzés Gubó Gergely Konzulens: Piedl Péter Neumann János Számítástechnikai Szakközépiskola Cím: 1144 Budapest Kerepesi út 124.
Haladó Programozás Windows Communication Foundation
MIB Dokumentáció.
Előadás másolata:

Készítette: Szabó Zoltán

 Végpontok ABC-je  Beépített kötések  Többszörös kötések használata  Végpontok létrehozása konfigurációs állomány segítségével  Végpontok létrehozása kódból  Szolgáltatás meta adatok közzététele  Beépített kötések módosítása  Saját kötések létrehozása

 A szolgáltatások használatához:  A kliensnek meg kell találnia a szolgáltatást  Tudnia kell, hogyan kommunikálhat a szolgáltatással  Ez hogyan érhető el?  Megoldás: szolgáltatás végpontok használata

 Hogyan hozható létre?  Konfigurációs állomány segítségével  Kódolással  Mit tartalmaz?  Végpontok ABC-jét ▪ Address ▪ Binding ▪ Contract  Viselkedés leírókat

 Address  Hol található a szolgáltatás?  Binding  Hogyan kommunikálhatunk a szolgáltatással?  Conctract  Mit csinál a szolgáltatás?  Ezek a végpontok fő alkotóelemei

 A szolgáltatás egyedi címe (URL)  WS-Addressing szabvány alapján  Scheme ▪ A cím legfelső szintű része ▪ Nem azonos a protokollal  Számítógép ▪ Lehet publikus URL vagy lokális azonosító (localhost)  Port  Útvonal ▪ Elérési út a szolgáltatás fájljaihoz

 A cím változó lehet, függ  Hosztolás (lokális vagy publikus)  Kötés által használt protokoll  Néhány példa:    net.tcp://localhost:8001/OrderService/

 Meghatározza a szolgáltatás elérésének módját  Protokoll  Üzenetek kódolása  Biztonsági követelmények (pl.: SSL)  Számos előre elkészített kötést tartalmaz a WCF  Hogyan válasszuk ki a megfelelő kötést?  Függ a feladattól  A használat környezetétől  Az üzenetek kódolásának típusától

 Számítógépen belüli kommunikáció  netNamedPipeBinding  Gépek közötti kommunikáció  netTcpBinding  netPeerTcpBinding  Nem WCF gépekkel való együttműködés esetén  basicHttpBinding  wsHttpBinding  Üzenetsorok esetén  netMsmqBindig vagy msmqIntergationBinding

BindingNumber of calls processed in 10 seconds WSDualHttpBinding1602 (5773) WSHttpBinding2531 (17257) BasicHttpBinding:17913 NetTcpBinding39957 NetNamedPipeBinding48255  A WSDualHttpBinding és a WSHttpBinding azonban a security kikapcsolásával gyorsíthatóak. Ezen értékek láthatóak a zárójelben.

KötésLeírás basicHttpBindingEz az interoperábilis kötés gyakran használatos korábbi ASMX- en (Active Server Methods) alapuló szolgáltatások felváltójaként. Támogatja a HTTP és HTTPS protokollokat, valamint a sima szöveges és MTOM (Message Optimization Mechanism) kódolási eljárást is. wsHttpBinding ws2007HttpBinding Egy biztonságos és interoperábilis kötés, mely SOAP-ot használ HTTP felett. Támogatja a HTTP és HTTPS protokollokat, illetve a szöveges és MTOM kódolást is. Emellett biztonságot, megbízhatóságot és tranzakció kezelést is nyújt. wsDualHttpBindingBiztonságos és interoperábilis kötés, mely általában duplex szolgáltatás szerződések esetén használatos, mivel támogatja a kétirányú kommunikációt. webHttpBindingOlyan szolgáltatás végpontok létrehozásához előnyös, melyek direkt HTTP és HTTPS információkat küldenek SOAP üzenetek helyett. Biztonságos és interoperábilis.

KötésLeírás wsFederationHttp Binding ws2007Federation HttpBinding Biztonságos, interoperábilis kötés, mely támogatja a WS- Federation protokollt, megadva ezzel a szövetségi szervezeteknek a felhasználók megfelelő hitelesítését. Szintén támogatja a HTTP és HTTPS transzport protokollokat, valamint a szöveges és MTOM kódolást. netTcpBindingBiztonságos kötés, mely WCF alkalmazásokat futtató gépek közötti kommunikációra lett optimalizálva. A TCP protokollt használja, ezen felül biztonságot, megbízhatóságot és tranzakciókezelést nyújt. netNamedPipeBin ding Biztonságos, megbízható, optimalizált megoldást biztosít az azonos gépen futó WCF alkalmazások kommunikációjára. netMsmqBindingEgy várakozó sorral rendelkező kötés, mely alkalmas gépek közötti kommunikációra WCF alkalmazások között.

KötésLeírás netPeerTcpBindingBiztonságos kötés több gép között P2P protokoll használatával TCP felett. msmqIntergationBindingInteroperábilis kötés, melyet meglévő MSMQ alkalmazásokkal való kommunikációhoz használhatunk gépek között. basicHttpContextBindingEz a kötés támogatást nyújt a HTTP sütikhez, valamint engedélyezi a SOAP fejléceket a kontextus cseréhez. netTcpContextBindingEz a biztonságos kötés engedélyezi a SOAP fejlécek használatát a tartalom cseréjekor. wsHttpContextBindingBiztonságos és interoperábilis kötés, mely engedélyezi a SOAP fejléceket a kontextus váltáshoz, emellett támogatja a tranzakciókat, a megbízhatósághoz és biztonsághoz kapcsolódó elemeket.

 A végpontok utolsó fő alkotóeleme  Meghatározza a szolgáltatás által nyújtott  Műveleteket  Az üzenetek felépítését  A műveletek meghívásához szükséges adatokat  Milyen feldolgozást vagy válasz üzenetet kaphat a kliens  Általában egy interface-ben foglal helyet

 Konfigurációs állomány (deklaratív)  web.config IIS hosztolás esetén  app.config WAS esetén  Könnyű változtathatóság  Nincs szükség újrafordításra  Kód (imperatív)  Nem ajánlott

 Egy XML fájl  A fájl gyökéreleme a elem  A szolgáltatások információinak a system.serviceModel elem alatt kell elhelyezkedniük  A services szekció alatt lehet egy vagy több service elem  A service elemben kell végpontot definiálni  A service elem esetén a name attribútum kötelező  Legalább egy végpont definíciót tartalmaznia kell minden service elemnek  Egy állomány leírhat több szolgáltatást és végpontot

ElemLeírás Szolgáltatások ( ), végpontok (endpointBehaviors) viselkedésének leírásához. Minden elemnek rendelkeznie kell egy name attribútummal, mely egyedi kell legyen. Testreszabott kötések megadásához. Minden elemnek egyedi azonosító name attribútuma van, mellyel a szolgáltatások hivatkoznak a kötésekre. Végpontok ( ) listája, melyek segítségével a kliens kapcsolódhat egy szolgáltatáshoz. COM szerződések leírására, melyek lehetővé teszik a COM és WCF közötti együttműködést. Csak a machine.config fájlban adható meg. Olyan viselkedéseket ír le, mely a gépen lévő összes szolgáltatásra és végpontra érvényes.

ElemLeírás A WCF diagnosztikai lehetőségeinek beállításait tartalmazó rész. Ilyen például a nyomonkövetés (tracing), a teljesítmény számlálók, de akár testreszabott üzenetszűrőket is tartalmazhat. Kiegészítések a felhasználó által készített kötések és viselkedések létrehozásához. Kötések és transport protokollok megfeleltetését írja le. Számos útvonalszűrő adható meg ebben a részben. (pl.: megadott típusú üzeneteket mindig ugyanaz a végpont kapja meg.) Csak app.config vagy machine.config tartalmazhatja. A szolgáltatás hoszt környezetének leírásához.

ElemLeírás Szolgáltatásokat összefogó elem. Benne találhatók a szolgáltatás leírók ( ). Minden egyes elem az adott szolgáltatáshoz tartozó beállításokat tartalmazza. Ez a konfigurációs szekció teszi lehetővé a standard, előre felkonfigurált végpontok létrehozását. Ezek a végpontok újrahasznosíthatóak. Ezek a végpontok egy vagy több előre fixált címeket, kötéseket és szerződéseket tartalmaznak.

 A konfigurációs állomány szerkesztéséhez rendelkezésre bocsát egy programot a Visual Studio:  WCF Service Configuration Editor  Ennek használatáról lesz szó a gyakorlati részben  Illetve a következő oldal videóiban: ▪ us/netframework/dd us/netframework/dd939784

<endpoint address=” binding=”wsHttpBinding” contract=”MyNamespace.IOrderService”>

 Hasznos lehet egy szolgáltatást felkészíteni többféle elérési lehetőségre  TCP  HTTP  Több végpont esetén a kliens a számára legmegfelelőbbet választhatja ki

<endpoint address=” binding=”basicHttpBinding” contract=”MyNamespace.IOrderService”> <endpoint address=” binding=”wsHttpBinding” contract=”MyNamespace.IOrderService”> <endpoint address=”net.tcp://localhost:8001/OrderService/” binding=”netTcpBinding” contract=”MyNamespace.IOrderService”>

 Fontos megjegyezni, hogy a végpontok címének egyedinek kell lennie  Ellenkező esetben hibát kapunk  Kivétel, ha egy szolgáltatás 2 különböző szerződést használ ▪ Cím, kötés egyezhet ▪ Viszont ekkor a szerződésnek kell különbözőnek lennie

 Abszolút  address=”  Könnyen érthető  Egyszerűen megadható  Nem túl hatékony több végpont esetén ▪ Sokat kell gépelni, emiatt könnyebb elírni ▪ Változtatás esetén több helyen is módosítani kell

 Relatív  Több végpont megadása esetén hatékonyabb  Szükséges a báziscím megadás ▪ elemen belül ▪ elem segítségével ▪ Több báziscím is megadható

<endpoint address=”” binding=”basicHttpBinding” contract=”MyNamespace.IOrderService”> <endpoint address=”secure” binding=”wsHttpBinding” contract=”MyNamespace.IOrderService”> <endpoint address=”” binding=”netTcpBinding” contract=”MyNamespace.IOrderService”>

 Kódból is megadható minden, amit eddig a konfigurációs állományban megadtunk  Ehhez létre kell hoznunk egy ServiceHost objektumot  AddServiceEndpoint metódusával adhatunk meg végpontokat ▪ Address ▪ Binding ▪ Contract

Uri httpAddress = new Uri(” Uri tcpAddress = new Uri(”net.tcp://localhost:8001/OrderService/”); Uri[] baseAddresses = {httpAddress, tcpAddress}; ServiceHost host = new ServiceHost(typeof(MyNameSpace.OrderService),baseAddresses); host.AddServiceEndpoint( typeof(MyNamespace.IOrderService), new BasicHttpBinding(), ””); host.AddServiceEndpoint( typeof(MyNamespace.IOrderService), new WSHttpBinding(), ”secure”); host.AddServiceEndpoint( typeof(MyNamespace.IOrderService), new NetTcpBinding(), ””);

 A WCF lehetőséget biztosít a meta adatok közzétételére a végpontokon keresztül  HTTP-GET használatával  HttpGetEnabled=true megadásával  Ehhez meg kell adni egy szolgáltatás viselkedést  Majd a szolgáltatás megadásakor hivatkozni kell a viselkedésre(kód vagy konfig)  Ehhez szükség van egy speciális végpontra

 Ezen végpont címe a szolgáltatás címének kiegészítése a mex szóval  A végpontnak a mexHttpBinding kötést kell használnia (esetleg mexNamedPipeBinding vagy mexTcpBinding)  A végpont szerződése az IMetadataExchange interface kell legyen  A megadás történhet konfig fájlban és kódban

<endpoint address=” binding=”basicHttpBinding” contract=”MyNamespace.IOrderService” /> <endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange” />

ServiceHost host = new ServiceHost(typeof(OrderService)); ServiceMetadataBehavior mb; mb = host.Description.Behaviors.Find (); if(mb == null){ mb = new ServiceMetadataBehavior(); mb.HttpGetEnabled = true; host.Description.Behaviors.Add(mb); } Host.AddServiceEndpoint( typeof(MyNamespace.IOrderService), new BasicHttpBinding(), ” Host.AddServiceEndpoint( ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), ”mex”);

 Legtöbb esetben a beépített kötések használata megfelelő  Előfordulhatnak olyan speciális körülmények, amikor szükséges  meglévő kötések módosítása  új kötéstípus létrehozása  A WCF mindkét lehetőséget támogatja

 A legtöbb beépített kötés rendelkezik módosítható tulajdonságokkal, melyekkel igényeiknek megfelelően testre szabhatjuk őket

PropertyLeírásAlapérték AllowCookiesEgy logikai érték, mely meghatározza, hogy a kliens használhat-e sütiket False ByPassProxyOnLocalLogikai érték, mely meghatározza, hogy a lokális címek kikerüljék-e a proxyt. False CloseTimeoutAzt az időt jelzi, mely eltelhet a kapcsolatbontásnál mielőtt az hibát eredményezne. 1 perc HostNameComparison Mode Meghatározza, hogy a hosztnév szükséges-e a szolgáltatás eléréséhez, amennyiben egyezik az URI. StrongWildCard MaxBufferPoolSizeMeghatározza a puffer menedzserhez rendelhető maximális memóriamennyiséget byte

PropertyLeírásAlapérték MaxRecievedMessage Size Az üzenet maximális hosszát határozza meg byte MessageEncodingMegadja az üzenetek kódolásához használt eljárást. (szöveg/XML vagy MTOM) Szöveg NameA kötés neve.Null referencia NamespaceA kötéshez rendelt XML névtér. OpenTimeoutMegadja, hogy mennyi idő telhet el kapcsolat nyitásakor a hiba keletkezéséig. 1 perc ProxyAddressEgy proxy URI címét határozza meg. Amennyiben a UseDefaultWebProxy értéke igazra van állítva, ez a mező figyelmen kívül lesz hagyva. Null referencia

PropertyLeírásAlapérték ReaderQuotasSzöveges tartalmakra alkalmazott megkötések. Pl.: maximális hossz. None RecieveTimeoutMegadja, hogy egy kapcsolat meddig lehet inaktív, mielőtt kivétel keletkezne. 10 perc SendTimeoutMegadja, hogy legfeljebb mennyi ideig tarthat egy írási művelet, mielőtt kivétel keletkezne. 1 perc TextEncodingAz üzenet szövegének kódolásához használt eljárás. UTF8Encoding TransactionFlowMegadja, hogy a kötés támogatja-e a WS- Transactions szabvány. False UseDefaultWebProxyMegadja, hogy a kötés használja-e az automatikusan konfigurált proxyt vagy sem. True

 Kódban  Binding osztály használatával  Konfigurációs állományban  bindingConfiguration property használatával ▪ A módosított kötés nevére hivatkozik  A bindings szekcióban ekkor szerepelnie kell a módosított kötésnek

<endpoint address=” contract=”MyNamespace.IOrderService” binding=”wsHttpBinding” bindingConfiguration=”CloseTimeout” />

ServiceHost host = new ServiceHost(typeof(OrderService)); WSHttpBinding wsBinding = new WSHttpBinding(); TimeSpan ts = new TimeSpan(0, 3, 0); wsBinding.CloseTimeout = ts; host.AddServiceEndpoint( typeof(MyNameSpace.IOrderService), wsBinding, ”

 Vannak olyan ritka esetek, amikor a meglévő kötések még módosításokkal sem tudják kielégíteni az elvárásainkat  A WCF ezért lehetőséget nyújt CustomBinding vagy ún. saját kötés típus létrehozására  A javaslat az, hogy amennyiben lehetséges inkább módosítsunk egy meglévő kötést

 A kötés típusok egy vagy több kötési elemből épülnek fel  A kötési elemek megadják a  Protokollt  Kódolást - kötelező  Átviteli eljárást – kötelező  A kötés létrehozásakor fontos az elemek megadásának sorrendje

ElemLeírás Transaction flowTranzakciók kezelésének megadásához. Opcionális. ReliabilityMegadja, hogy a csatornák megbízható session-t használjanak-e. Lehetővé teszi az üzenetek sorrendhelyes átvitelét. Opcionális. netTcpBinding wsHttpBinding wsDualHttpBinding SecurityOpcionális. Lehetőséget nyújt olyan funkciók megadására, mint autentikáció, authorizáció, védelem és titoktartás. TransportKötelezően megadandó elem. Saját transzport megadása vagy a következők egyike: TCP, NamedPipes, HTTP, HTTPS, MSMQ vagy P2P. EncodingEz a kötelező elem adja meg az üzenetek kódolását. Ez lehet szöveg, bináris vagy MTOM kódolás.

 Konfigurációs állományban  A bindings szekció alatt  A customBinding elem használatával  Kódban  System.ServiceModel.Channels névtér megadásával  BindingElementCollection és CustomBinding létrehozásával

<endpoint address=” contract=”MyNamespace.IOrderService” binding=”customBinding” bindingConfiguration=”NewBinding” />

using System.ServiceModel.Channels; ServiceHost host = new ServiceHost(typeof(OrderService)); BindingElementCollection bec = new BindingElementCollection(); SymmetricSecurityBindingElement ssbe = new SymmetricSecurityBindingElement(); ssbe.LocalServiceSettings.InactivityTimeout = new TimeSpan(0, 10, 0); bec.Add(ssbe); bec.Add(newTextMessageEncodingBindigElement()); bec.Add(new HttpTransportBindingElement()); CustomBinding customBinding = new CustomBinding(bec); host.AddServiceEndpoint( typeof(MyNameSpace.IOrderService), customBinding, ”

 e/2010/06/16/wcf-simple-example-in-visual- studio-2010.aspx e/2010/06/16/wcf-simple-example-in-visual- studio-2010.aspx