260 likes | 515 Views
WSDL Interface. WSDL Compiler. Service. Server. Server Skeleton. Client Stub. Client. SOAP. HTTP. JAX-WS Runtime. V izualizavimo sistemų k ūrimas WEB’e. Vizualizavimo Sistemos. Paruošė: IG-08 grupės studentas Andrius Mikalajūnas. WEB vizualizavimo sistemos.
E N D
WSDL Interface WSDL Compiler Service Server Server Skeleton Client Stub Client SOAP HTTP JAX-WS Runtime Vizualizavimo sistemų kūrimasWEB’e Vizualizavimo Sistemos Paruošė: IG-08 grupės studentas Andrius Mikalajūnas
WEB vizualizavimo sistemos Kaip sukurti WEB vizualizavimo sistemą? • Kaip sukurti kliento-serverio architektūrą? • Kokius WEB programavimo įrankius pasirinkti? • Kaip suderinti WEB programavimo įrankius su vizualizavimo programavimo įrankiais? WEB vizualizavimo sistemos poreikiai: • Vizualizavimo severiai dažniausiai turi kelis klientus, darančius daug request’ų (dažniausiai didelių), • Tokiais atvejais geriausiai tinka stateful protokolai/serveriai, saugojantys užklausos būseną arba autentifikuojantys klientą: • Cashing, • Saugumas, • Progres feedback – serveris siunčia klientui unrequested data, • Streaming – siunčiam tik tiek informacijos, kiek leidžia tinklas. • Labiausiai WEB paplitęs protokolas HTTP yra žemo lygio stateless.
WEB: Protokolai TCP/IP protokolai • TCP veikiapastovaussujungimoprincipuiružtikrina, kadvisiišsiųstipranešimaibus gautilygiai ta pačiatvarka, FTP, SFTP, SCP protokolai: • Skirti failų persiuntimui tinklais, • FTP naudoja TCP, SFTP naudoja SSH prptokoklus. HTTP: • Labiausiai paplitęs tarp serverių ir naršyklių, • Puikiai tinka, kai serveris gauna smulkius requestus iš 1000 klientų, • Stateless protokolas su visais iš to išplaukiančiais trūkumais! RCP ar RMI tipo protokolai (virš HTTP): • Gerai tinka žemo lygio užduotims (paskirstyti skaičiavimai), • Priklauso nuo realizacijos, nes kliento kviečiama procedūra būtinai turi būti įdiegta serveryje tokiu pačiu pavadinimu, SOAP: • Aukšto lygio protokolas pranešimams koduoti naudojantis XML kalbą, kuri puikiai tinka struktūriniams heterogeniniams duomenims aprašyti, • Žemame lygyje naudoja HTTP protokolą su visais jo trūkumais, • Žemame lygyje geriau tiktų stateful tipo protokolas.
WEB vizualizavimo sistemos Standartinis WEB serveris (Apache HTTPServer): • Standartinis stateless HTTP protokolas. • Užpildoma HTML forma, parametrams persiųsti HTTP protokolu, • CGI (Common Gateway Interface) – protokolas, apibrėžiantis, kaip turi bendrauti WWW serveris ir jo vykdomos programos, kurios apdoroja iš naršyklės gautą informaciją ir/arba generuoja dinaminius puslapius. • C++ ir CGI • Perl ir CGI, • Python ir CGI, • PHP ir CGI. Pats seniausias (1993) ir pakankamai paplitęs sprendimas: • Nėra labai patikimas ar universalus, • Sparta – kiekviena užklausa apdorojama atskiro proceso, todėl serverio resursai yra išnaudojami nepakankamai, • Lengvai realizuojamas su PHP.
WEB vizualizavimo sistemos Parametrai: • PHP + CGI, • HTML forma, • JavaScript. SVE: • Python script, • VTK. Atvaizdis: • JavaScript.
WEB vizualizavimo sistemos Parametrai: • PHP + CGI, • HTML forma, • JavaScript. SVE: • CGI kviečia Python scenarijų, • VTK. Atvaizdis: • JavaScript.
WEB RPC (Remote Procedure Call): • Realizuoja kliento-serverio architektūrą paskirstytiems skaičiavimams, • Naudoja TCP arba UDP protokolus, • Sąsaja tarp kliento ir serverio aprašoma IDL (Interface Description Language) kalba ir sukompiliuojama kompiliatoriumi rpcgen. • Standartas nepriklauso nuo programavimo kalbos ar platformos, nors dažniausiai remiasi C, • Nėra objektiškai orientuotas, • Palaiko tik sinchronines komunikacijas. Kliento-serverio sistemos diegimas: • Rašoma RPC IDL sąsaja, • Sąsaja kompiliuojama su rpcgen kompiliatoriumi tam, kad sugeneruoti “Client stub” ir “server skeleton”, • Rašoma serverio dalis, • Rašoma kliento dalis, • Kodas kompiliuojamas su RPC biblioteka (priklauso nuo realizacijos), • Paleidžiamas serveris, • Paleidžiamas klientas, nurodant serverio IP adresą. XML-RPC naujesnis variantas: • RPC protokolas koduojantis kvietimus XML kalba (derinant prie SOAP), • Pranešimai perduodami HTTP protokolu.
RPC IDL Interface RPC Compiler Server Server Skeleton Client Stub Client TCP/IP RPC Runtime WEB vizualizavimo sistemos Duomenų srauto valdymas kliento-serverio sistemoje: • RPC technologija.
WEB vizualizavimo sistemos RMI (Remote Method Invocation): • Java kalba parašytų programų RPC analogas, • Klientas kviečia metodą, įdiegtą nutolusiame serveryje, • Nušlifuota sistema (nuo Java 1.1 versijos), kurios architektūra daug kur paprastesnė nei CORBA ar RMI/IIOP, • Objektiškai orientuota technologija, • Pagrindinis sistemos trūkumas – stipri orientacija į Java programavimo kalbą, • Specifinis komunikacijos protokolas JRMP. Kliento-serverio sistemos diegimas : • Java kalba rašoma RMI sąsaja, • Rašomas Java objektas, realizuojantis sąsają, • Sąsaja kompiliuojama su RMI kompiliatoriumi rmic tam, kad sugeneruoti “Client stub” ir “server skeleton” (nuo Java 1.2 serverio skeleto neliko), • Rašoma serverio dalis, registruojanti RMI objektą, • Rašoma kliento dalis, • Java kodas kompiliuojamas kompiliatoriumi javac, • Paleidžiamas RMI Nameserver (rmiregistry), • Paleidžiamas klientas.
RMI Interface in Java A class that implements a RMI Interface Object Server Server Skeleton Client Stub Client TCP/IP Java RMI Nameserver (rmiregistry) WEB vizualizavimo sistemos Duomenų srauto valdymas kliento-serverio sistemoje : • Java RMI. RMI Compiler (rmic) JRMP
WEB vizualizavimo sistemos CORBA (Common Object Request Broker Architecture): • OMG standartų sistema paskirstytam darbui Internete, • Turi savo duomenų tipų sistemą, kuri artima Java ar C kalboms, • Objektų ir jų metodų apibrėžimai rašomi IDL kalba, • Naudoja IIOP (internet inter ORB protocol) protokolą, • ORB (Object Request Broker) yra technologijos pagrindas, • Duomenų perdavimo standartai yra dvejetainiai, todėl CORBA plačiai naudojama dirbant su dideliais duomenų srautais, • Palaiko sinchronines ir nesinchronines komunikacijas, • CORBA standartas yra labai sudėtingas! Kliento-serverio sistemos diegimas : • Rašoma CORBA IDL sąsaja, • Sąsaja kompiliuojama su IDL kompiliatoriumi tam, kad sugeneruoti “Client stub” ir “Server skeleton”, • Rašomas CORBA objektas, realizuojantis sąsają, • Rašoma serverio dalis, registruojanti CORBA objektą, • Rašoma kliento dalis, • Kompiliuojamas kodas, • Paleidžiamas CORBA serveris, • Paleidžiamas CORBA klientas.
CORBA IDL Interface Object IDL Compiler Server Server Skeleton Client Stub Client IIOP TCP/IP ORB WEB vizualizavimo sistemos Duomenų srauto valdymas kliento-serverio sistemoje : • CORBA.
WEB vizualizavimo sistemos RMI-IIOP (remote method invocation over internet inter orb protocol): • Bandymas sujungti RMI ir CORBA technologijas, • Siekiant supaprastinti programavimą, atsisakyta IDL kalbos, • Automatiškai generuotas kodas daug kur pakeistas refleksijos metodais, kas mažina greitį, • CORBA ir RMI/IIOP naudoja tuos pačius ryšio protokolus ir turi iš esmės tą patį objekto-tarno-orbo organizacijos planą. Microsoft .NET Remoting: • Microsoft technologija nutolusių metodų kvietimui tinkle, • DCOM (Distributed Component Object Model) technologija, • ORPC protokolas, pagrįstas OSF DCE RPC. Apibendrinančios savybės: • Žemo lygio detalės paslepiamos nuo vartotojo, • Nėra pagrįsti atvirais standartais, todėl sunku dirbti heterogeninėse aplinkose, • Naudoja specifinius protokolus, • Sąsajos apibrėžiamos binariniu formatu, kurį vartotojui sunku interpretuoti, • Klientai glaudžiai susiję su objektais serveryje. Pakeitus klientą, tenka modifikuoti ir serverį.
WEB paslaugos (servisai) WEB paslaugos – programinės įrangos sistemos užtikrinančios komunikacijas tarp kompiuterių tinkle: • SOA (Service Oriented Architecture) architektūra, • Klientas ir serveris keičiasi XML kalbos pranešimais, • Remiasi atviro standarto protokolais HTTP ir SOAP. WSDL – XML kalbos specifikacija, skirta WEB paslaugų aprašymui, UDDI – pramonės standartas paslaugoms registruoti. WEB paslaugos realizuojamos įvairiose platformose. • Java EE 5, • Apache Axis2, • Microsoft .NET.
WEB serveriai WEB serveriai – programos priimančios ir vykdančios HTTP pageidavimus bei jas vykdantys kompiuteriai: • HTTP request, HTTP respond, • Logging saugomi įvykai, • Statinis turinys persiunčiamas klientui iš egzistavusio serveryje failo, • Dinaminis turinys persiunčiamas klientui iš failo, kurį sugeneravo serveryje paleista programa (aplikacija). Aplikacijų severiai – orientuoti dinaminio turinio kūrimui: • WEB Container – talpina WEB aplikacijasarbapaslaugas, • WEB application framework – WEB aplikacijų arba paslaugų kūrimo platformos, • Glaudi integracija su duomenų bazėmis, • Tinka WEB vizualizavimo sistemoms kurti! Sertifikuoti Java EE 5 standarto aplikacijų serveriai: • Sun Java System Application Server Platform Edition 9.0, pagrįstas atvirojo kodo GlassFish, • Apache Geronimo 2.0, • IBM WebSphere Application Server Community Edition 2.0, pagrįstas Apache Geronimo.
Java WEB programavimo standartas Java EE standartas (platforma) skirtas WEB serverių programavimui Java kalba: • JDBC (Java Database Connectivity), • RMI (Remote Method Invocation), • JMS (Java Message Service), • WEB paslaugos, • XML (Extensible Markup Language). Specifiniai Java EE įrankiai: • Enterprise JavaBeans– serverio komponentės architektūra moduliniam verslo aplikacijų konstravimui (surinkimui). • Servlets– WEB serverio dinaminio turinio kūrimo API (Java), • Portlets– įjungiami vartotojo sąsajos komponentai, talpinami WEB portaluose, • JavaServer Pages– dinaminiam HTML ar XML dokumentų generavimui (pakeitė CGI scenarijus), Paskutinė versija Java EE 5: • Ankstesnis pavadinimas J2EE.
Karkasai (Frameworks) Apache Axis–atvirojo kodo karkasas WEB paslaugoms (XML) kurti: • Java ir C++ kalbomis realizuotas SOAP serveris, • Įvairūs API WEB paslaugų generavimui ir dislokavimui, • Apache Tomcat konteineris, realizuojantis: • Java Servlet • JavaServerPages (JSP). Apache Axis2 naujai suprojektuota Apache Axis versija: • Java ir C++ kalbos, • Gali funkcionuoti kaip nepriklausoma serverio aplikacija. Spring's Remote Access framework skirtas darbui su RPC technologijomis Java platformoje: • Specifinis (Spring’s) RMI, • Standartinis Java RMI, • RMI-IIOP arba CORBA, • SOAP ir integracija su Apache Axis frameworku, • Enterprise JavaBean cliento integracija (stateless sesijos).
WSDL Interface WSDL Compiler Service Server Server Skeleton Client Stub Client SOAP HTTP JAX-RPC Runtime WEB paslaugų technologijos WEB paslaugųdiegimaskliento-serverioarchitektūroje: • J2EE platformos JAX-RPC.
WEB paslaugų technologijos J2EE standartas: • JAXP (Java API for XML Processing) – dirba su XML dokumentais, • JAXB (Java API for XML Binding) – apdoroja XML dokumentais su JavaBeans komponentų klasėmis, • JAX-RPC (Java API for XML based RPC) –naudoja SOAP/HTTP. • JAXM (Java API for XML Massaging) ir SAAJ (SOAP with Attachments for Java) standartiniu būdu siuntinėja SOAP pranešimus WEB’e. • JAXR (Java API for XML Registries) registruoja WEB paslaugą UDDI registruose.
WSDL Interface WSDL Compiler Service Server Server Skeleton Client Stub Client SOAP HTTP Axis SOAP Engine WEB paslaugų technologijos WEB paslaugųdiegimaskliento-serverioarchitektūroje: • Apache Axis platformos Axis SOAP Engine, • Aplikacijų serveris Apache Tomcat.
WEB paslaugų technologijos WEB paslaugų realizavimas Apache Axis platformoje: • Rašoma Java sąsaja, • Java sąsaja kompiliuojama su Java2WSDL ir gaunama WSDL sąsaja, • WSDL sąsaja kompiliuojama su WSDL2 Java, generuojami “client-side stub” ir “server-side skeleton”, • Rašomas paslaugos kodas, atitinkantis WSDL sąsają, • Rašomas kliento kodas, • Kodai kompiliuojami su javac kompiliatoriumi, • Rašomas WSDD failas, kuris dislokuoja paslaugą Apache Tomcal aplikacijų serveryje, • Startuoja klientas ir naudojasi paslauga. Apache Tomcat • Vienaspopuliariausių aplikacijų serverių, • Anksčiau žinomas kaip Jakarta Tomcat.
WSDL Interface WSDL Compiler Service Server Server Skeleton Client Stub Client SOAP HTTP JAX-WS Runtime WEB paslaugų technologijos WEB paslaugųdiegimaskliento-serverioarchitektūroje: • Java EE 5.0 platformos JAX-WS. • Aplikacijųserveris GlassFishv2.
WEB paslaugų technologijos GlassFishyra atvirojo kodo Sun Microsystemsaplikacijų serverisJava EE platformai. Komercinė versija vadinamaSun Java System Application Server 9.x. Bazinio kodo pagrindas paimtas iš Apache Tomcat Web konteinerio, pridėjus Grizzly komponentą, pagrįstą Java NIO technologija (spped and scalability): • Integruotas į Netbeans 6.0 IDE, • JAX-WS (Java API for XML Web Services) –pakeitė JAX-RPC API J2EE platformoje. Pereita nuo RPC prie dokumentų stiliaus WEB paslaugų, kurių kūrimas palengvinamas anotacijų pagalba, • JAXB vykdymo metu “bindina” XML dokumentus į Javaobjektus. • Palaiko Spring 2.0 karkasą.
WEB paslaugų technologijos JAXB “bindina” XML schemas į Javaobjektus : • JAXB suteikiametoduskaip “unmarshal” XML dokumetusį JAVA objektusir“marshal” JAVA objektusį XML dokumentus. • Į glassfish'ąv2 yraįtrauktasJAX-WS 2.1 kuris vidujekviečiaJAXB “bindinimo” kompiliatoriųxjc.
WEB paslaugų technologijos Netbeans 6.0 WEB paslaugų projektuotojas (designer): • Patogiai aprašomi perduodami parametrai.
WEB vizualizavimo sistemos Vizualizavimo sistemos pavyzdys: • GlassFish aplikacijų serveris, JAX-WS, • 3 “public” metodai ir jų parametrai, • Xj3D Browser rodomas X3D geometrijos failas.