Windows Communication Foundation (WCF) Vizuális Programozás
J.Zs.Cs.: Vizuális programozás (c) 2010 WCF Elosztott rendszerek Korábbi technológiák: DCOM, COM+/Enterprise Services, MSMQ, .NET Remoting, ASP web services (XML-alapú webszolgáltatások), named pipe, socket, peer-to-peer (P2P)... J.Zs.Cs.: Vizuális programozás (c) 2010
Szolgáltatásorientált architektúra több autonóm szolgáltatás működik együtt úgy, hogy üzeneteket küldenek a határaikon túlra jól definiált interfészek segítségével Alapelvek Jól látható határok A szolgáltatás funkcionalitása csak az interfészeken keresztül jelenik meg. A külső hívó csak így tud kommunikálni a szolgáltatással és nem ismeri a megvalósítás részleteit. Itt nem cél az, mint a régebbi technológiáknál, hogy helyi objektumnak lássunk egy távoli objektumot. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 Alapelvek A szolgáltatások függetlenek A szolgáltatás, amennyire lehet, magányos sziget. A szolgáltatás és az ügyfele különböző nyelven íródhatnak, különböző futtatórendszer-környezetet használhatnak, más operációs rendszer alatt működhetnek. A szolgáltatások szerződésen keresztül és nem az implementáción keresztül kommunikálnak Osztályok és metódusok nem adhatók át a szolgáltatáshatáron keresztül. Szabályalapú kompatibilitás A WSDL-ben (Web Services Description Language) vagy a WS-Policy-ban leírt szabályokat, házirendet használjuk. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 Architektúra Szolgáltatások kommunikációja Kliens Szolgáltatás Szöveg A B C Szöveg A B C Szöveg A B C Üzenetek Végpont J.Zs.Cs.: Vizuális programozás (c) 2010 Forrás: http://msdnkk.hu/Storage/_common/InduloKeszlet/NET35/3/WCF-WF_ujdonsagok_(Benedek_Zoltan).pptx
J.Zs.Cs.: Vizuális programozás (c) 2010 Forrás: http://msdnkk.hu/Storage/_common/InduloKeszlet/NET35/3/WCF-WF_ujdonsagok_(Benedek_Zoltan).pptx Végpont A Address – a végpont címe http://www.mkk.hu/pizzaorderservice/porder Szolgáltatás C Contract – szerződés [ServiceContract] interface IPizzaOrder { … } WSDL Szöveg A B C Szöveg A B C B Binding – kötés Hogyan? Encoding + transzport + magasabb szintű szolgáltatások (biztonság, megbízhatóság, stb.) Service Host Pl.: BasicHttpBinding, WSHttpBinding, NetTcpBinding Service type class PizzaOrderService: IPizzaOrder { … } Address: Hol? Contract: Mit? Binding: Hogyan? Service host J.Zs.Cs.: Vizuális programozás (c) 2010 Befogadó process: konzol alk., service, IIS, Windows Forms alk.
J.Zs.Cs.: Vizuális programozás (c) 2010 Kötés a hálózati protokollokat, a kódolási mechanizmusokat és a szállítási réteget definiálja HTTP-alapú kötések – Ezeket akkor használjuk, ha XML-webszolgáltatás protokollon keresztül kell dolgozni, vagyis amikor különböző rendszerek (más operációs rendszer, más programozási architektúra) között zajlik a kommunikáció. TCP-alapú kötések – Ezeket akkor használjuk, ha mind a szolgáltatás, mind a kliens legalább .NET 3.0 keretrendszer fölött fut. (Lehetnek különböző gépeken!) Itt jobb lesz a teljesítmény, ha XML-formátum helyett kompakt bináris formátumba kódoljuk az üzeneteket. MSMQ-alapú kötések – Az MSMQ a Microsoft üzenetsor-kezelő megoldása. Itt arról van szó, hogy az alkalmazás egy üzenetsorba küld üzenetet, nem pedig közvetlenül a másik alkalmazásnak. Amikor a címzett készen áll, hogy elolvassa az üzenetet, kiveszi az üzenetsorból és feldolgozza. Ez akkor hasznos, ha az üzenet küldője és feldolgozója nem azonos időben fut. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 HTTP-alapú kötések BasicHttpBinding – Ez a kötés szállításra a HTTP-t, üzenetkódolásra pedig az alapértelmezett szöveg/XML-t használja. WS-I Basic Profile 1.1. kompatibilis. Ezt a kötést főleg a visszamenőleges kompatibilitás miatt használjuk, pl. olyan alkalmazásoknál, amik ASP.NET webszolgáltatásokkal kell, hogy kommunikáljanak. WSHttpBinding – Az előzőhöz hasonló, de ez már támogatást nyújt a tranzakciókhoz, a megbízható üzenetküldéshez és a WS-címzéshez. Bináris adatkódolást is tud. WSDualHttpBinding – Az előzőhöz hasonló, de duplex szerződésekhez használható. (A szolgáltatás és a kliens oda-vissza tud üzenetet küldeni egymásnak.) Csak a SOAP biztonsági beállításait használja, és megbízható üzenetküldést követel meg. WSFederationHttpBinding – Akkor érdemes használni, ha a biztonság a legfontosabb szempont. Támogatja a WS-Federation protokollt, lehetővé téve felhasználók hatékony azonosítását és engedélyezését. Együttműködik a CardSpace technológiával is. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 TCP alapú kötések NetNamedPipeBinding – Egy számítógépen levő .NET alkalmazások közötti kommunikációhoz jó. NetPeerTcpBinding – Biztonságos kötést biztosít peer-to-peer (egyenrangú) hálózatokhoz. NetTcpBinding – Biztonságos és optimalizált kötés .NET alkalmazások közötti kommunikációhoz, amelyek különböző gépeken vannak. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 MSMQ-alapú kötések MsmqIntegrationBinding – Olyan MSMQ-alkalmazásokkal lehet vele kommunikálni, amelyek COM-ot, natív C++-t vagy a System.Messaging névtérben definiált típusokat használnak. NetMsmqBinding – Alkalmas különböző gépeken lévő .NET alkalmazások közötti kommunikációra. J.Zs.Cs.: Vizuális programozás (c) 2010
J.Zs.Cs.: Vizuális programozás (c) 2010 Szerződés A WCF-szolgáltatás által elérhetővé tett összes metódus leírása. Interfész Nyilvános osztály Struktúra J.Zs.Cs.: Vizuális programozás (c) 2010
Architektúra - csatornák Kliens Szolgáltatás Allkalmazás Szolgáltatás obj. Client runtime Protocol channel (Channel proxy) Protocol channel Dispatch runtime Protocol channel Protocol channel Protocol channel Protocol channel Transport channel Transport channel Channel stack Channel stack J.Zs.Cs.: Vizuális programozás (c) 2010 Forrás: http://msdnkk.hu/Storage/_common/InduloKeszlet/NET35/3/WCF-WF_ujdonsagok_(Benedek_Zoltan).pptx
Egyszerű WCF-alkalmazás A szolgáltatás szerelvénye: Ez a .dll tartalmazza a külső hívók számára elérhető funkcionalitást leíró osztályokat és interfészeket. Az őt hosztoló folyamat: A szolgáltatás dll-jének szüksége van egy Windows-folyamatra, amely futtatja őt. Erre két lehetőség van: IIS (Internet Information Services), WAS (Windows Activation Service a Vistában) vagy pedig egy tetszőleges típusú alkalmazás (pl.: konzol vagy form), amely ServiceHost típusú objektumot hoz létre és az Open() metódussal elindítja a szolgáltatást. Itt kell megadni egy vagy több végpontot is, amelyek lehetővé teszik a szolgáltatáshoz való hozzáférést. A végpont az, ami az ABC-ből áll (adress, binding és contractname). WCF-ügyfél: Ez az alkalmazás a kliens, aki hozzáfér a szolgáltatáshoz egy közbeépülő proxy-osztályon keresztül. J.Zs.Cs.: Vizuális programozás (c) 2010