Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl

Podobne dokumenty
Programowanie komponentowe

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Komunikacja i wymiana danych

Dostęp do komponentów EJB przez usługi Web Services

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Simple Object Access Protocol

SOAP. Autor: Piotr Sobczak

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Rozproszone systemy Internetowe

Wybrane problemy modelu usługowego

Plan wykładu. Technologia Web Services. Web Services a WWW

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

Programowanie współbieżne i rozproszone

Wielowarstwowe aplikacje internetowe. Web Services. Autorzy wykładu: Maciej Zakrzewicz Marek Wojciechowski. Web Services

Tworzenie i wykorzystanie usług sieciowych

Mechanizmy pracy równoległej. Jarosław Kuchta

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Budowa aplikacji sieciowych. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.

XML w elektronicznej wymianie danych i integracji aplikacji

XML w elektronicznej wymianie danych i integracji aplikacji

Programowanie internetowe

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Rozdział ten przedstawia jeden ze sposobów implementacji usług sieciowych XML i aplikacji klienckich w PHP. Oprogramowanie

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Rozproszone technologie Web Services

Web Services. Technologie Biznesu Elektronicznego. Konrad Kunicki. Politechnika Wrocławska, Wydział Informatyki i Zarządzania

Komunikacja międzysystemowa

29. Poprawność składniowa i strukturalna dokumentu XML

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Wprowadzenie do technologii XML

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wybrane działy Informatyki Stosowanej

Usługi sieciowe (Web Services)

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Programowanie współbieżne i rozproszone

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Podstawy (X)HTML i CSS

Rozproszone systemy internetowe

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

1 Wprowadzenie do J2EE

Programowanie Komponentowe WebAPI

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Wywoływanie metod zdalnych

Równoległość w środowisku rozproszonym. Jarosław Kuchta Programowanie Współbieżne

XML extensible Markup Language. Paweł Chodkiewicz

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Zastosowanie informatyki w gospodarce Wykład 4

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Stan zaawansowania prac dotyczących zamówienia na opracowanie i wdrożenie rdzenia systemu e Urząd.

XML w elektronicznej wymianie danych, integracji aplikacji i bezpieczeństwie

Ministerstwo Finansów

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Wywoływanie metod zdalnych

Wybrane działy Informatyki Stosowanej

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Rola języka XML narzędziem

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Model semistrukturalny

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Wybrane działy Informatyki Stosowanej

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Web Service y w Javie

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Platforma.NET Wykład 13 Tworzenie usług sieciowych SOAP i WCF. Spis treści. Marek Sawerwain. 7 czerwca Notatki. Notatki

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Mydło i spółka. Aplikacje rozproszone. Serwisy sieciowe Broker usług. Serwisy sieciowe. Serwisy sieciowe, WWW (Web Services) Internet

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Integracja Obieg Dokumentów - GiS Spis treści

XML - wprowadzenie. <message> <text> Dobrze </text> </message> <message> <text> Źle </message> </text> <message> <message> <text> Źle.

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Elementarz HTML i CSS

Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

XML i nowoczesne technologie zarządzania treścią

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHNICZNA 1

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Języki programowania wysokiego poziomu WWW

Microsoft IT Academy kurs programowania

rk HTML 4 a 5 różnice

76.Struktura oprogramowania rozproszonego.

Wprowadzenie do usług internetowych

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Tworzenie i wykorzystanie usług

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Klasy cd. Struktury Interfejsy Wyjątki

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Standard HL7 (cel, protokoły, zastosowanie) Piotr Dybski Jan Flik

Raport z przebiegu prac czwartej grupy problemowej

Wykład 1: HTML (XHTML) Michał Drabik

używane skróty: HTTP - protokół do transferu tekstu, hipertekstu, zbiorów binarnych URL - jednolity lokalizator zasobów

JAX-RS czyli REST w Javie. Adam Kędziora

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

Transkrypt:

Budowa aplikacji sieciowych. Usługi WWW dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl

Usługi WWW W3C Working Group, Web Services Architecture, Note 11 February 2004. Usługa WWW (ang. web service) jest systemem aplikacyjnym zaprojektowanym w celu wspamagania wymiany danych między węzłami w sieciach komputerowych. System aplikacyjny usługi WWW posiada interfejs zaprojektowany w języku WSDL. Inne systemy aplikacyjne wymieniają wiadomości z systemem usługi WWW za pomocą protokołu SOAP, tzn. wiadomości przesyłane są za pomocą protokołu HTTP, dane są w formacie XML. Formalną definicję usługi WWW można znaleźć w specyfikacji języka WSDL http://www.w3.org/tr/wsdl () Usługa WWW korzysta z następujących protokołów i standardów: HTTP (ang. HyperText Transfer Protocol) HTML (ang. HyperText Markup Language) SOAP (ang. Simple Object Access Protocol) XML (ang. extensible Markup Language) (xml, xml dtd, xml schema) WSDL (ang. Web Services Description Language) UDDI (ang. Universal Description, Discovery and Integration)

Simple Object Access Protocol (SOAP) SOAP jest protokolem służącym aplikacjom sieciowym na wymianę danych w protokole HTTP w których struktura danych określona jest w formacie XML. SOAP jest elementem architektury projektu Microsoft.NET. Większość aplikacji sieciowych komunikuje się w Internecie wykorzystując standardowe komponenty takie, jak obiekty DCOM, obiekty CORBA. Obiekty te korzystają z protokolu RPC (ang. Remote Procedure Calls). Wadą tego sposobu komunikacji jest to, że firewalle i serwery proxy blokują tego typu komunikację. Firewalle i serwery proxy zazwyczaj nie blokują komunikacji w protokole HTTP, tzn. port nasłuchiwania serwera WWW jest zazwyczaj otwarty. Protokół SOAP zostal stworzony przez firmę Microsoft w celu wymiany danych w protokole HTTP i formacie XML.

Simple Object Access Protocol (SOAP) Cechy protokołu SOAP jest protokołem warstwy aplikacji w modelu OSI, jest protokołem zaprojektowanym do komunikacji w Internecie, definiuje format przesyłanych wiadomości, jest protokołem niezależnym od platformy systemowej, jest niezależny od języka implementacji usługi WWW, jest oparty o język XML, nie jest blokowany przez firewall e. Wiadomość SOAP ma strukturę dokumentu XML i zawiera następujące elementy (tagi): envelope, zawiera treść wiadomości, header, element opcjonaly, zawiera informacje nagłówkowe, body, zawiera zapytanie i odpowiedź.

Simple Object Access Protocol (SOAP) Podstawowe zasady skladni protokolu SOAP: wiadomość SOAP musi być w formacie XML, wiadomość SOAP musi zawierać tag SOAP Envelope, wiadomość SOAP może zawierać tag SOAP Header, wiadomość SOAP musi zawierać tag SOAP Body, wiadomość SOAP musi korzystać z obszaru nazw SOAP Envelope, wiadomość SOAP musi korzystać z obszaru nazw SOAP encoding, wiadomość SOAP nie musi zawierać odnośnikow do dokumentow DTD, wiadomość SOAP nie musi zawierać instrukcji xml (ang. XML Processing Instructions). Przykład: struktura widomości SOAP. Pełna struktura widomości SOAP opisana jest w specyfikacji SOAP http://www.w3.org/tr/soap/ http://www.w3.org/tr/soap12-part1/ <soap:envelope> <soap:body> <NazwaTagu1> <Element1> </Element1> </NazwaTagu1> </soap:body> </soap:envelope>

XML - extensible Markup Language Język XML jest znakowym językiem opartym o tagi. Tagiem jest element rozpoczynający się od znaku < > i kończący się znakiem </ >. Tagi mogą posiadać atrybuty, atrybuty posiadają wartości. Np. <nazwa_tagu atrybut= wartość > </ nazwa_tagu> Tagi języka XML nie są zdefiniowane, tagi definiuje użytkownik. Do opisu danych w języku XML służą dokumenty DTD (ang. Document Type Definition) lub dokumenty XML Schema. Różnica między językiem html i językiem xml: język html służy do formatowania i prezentacji danych (np. formatowania tekstu, wyboru typu, koloru czcionki, zagnieżdżania obiektów np.gif, odnośników) język xml służy do definiowania struktury danych i transmisji danych. W języku html dane i informacje o strukturze strony WWW zawarte są w tym samym dokumencie (w tym samym pliku). Język xml został stworzony do oddzielenia danych od informacji definiujących sposób (format) prezentacji tych danych.

XML - extensible Markup Language Cechy języka xml: dane muszą być między tagami, dokument xml musi zawierać tag główny (ang. root tag), tagi muszą być prawidłowo zagnieżdżone np. <a>. <b> </b>.. </a>, wartości atrybutów w tagach zawsze muszą być w cudzysłowach np. <font size= 50 > </font> np. <img src= http://www.abc.com >. </img>, poprawny dokument xml musi zawierać deklaracje <?xml version="1.0" encoding="iso-8859-1"?>, język xml uwzględnia spacje między znakami, w definicji tagów rozróżniane są duże i małe litery. Zasady nadawania nazw tagom: nazwa tagu może zawierać litery, cyfry nazwa tagu nie może zaczynać sie od: cyfry, -,. nazwa tagu nie może zaczynać sie od słowa: xml, XML, Xml,. w nazwie tagu nie może być: spacji, :.

XML - extensible Markup Language Plik ksiazki.xml <?xml version="1.0"?> <ListaKsiazek> <Ksiazka Gatunek="Poezja" DataPublikacji="1981" ISBN="1-86103-11-0"> <TytulKsiazki> Pan T. </TytulKsiazki> <ImieAutora> A </ImieAutora> <NazwiskoAutora> M </NazwiskoAutora> <Cena> 5,50 </Cena> </Ksiazka> <Ksiazka Gatunek="Literatura" DataPublikacji="1967" ISBN="0-201-63361-2"> <TytulKsiazki> O i M </TytulKsiazki> <ImieAutora> H </ImieAutora> <NazwiskoAutora> S </NazwiskoAutora> <Cena> 101,01 </Cena> </Ksiazka> <Ksiazka> Gatunek="Filozofia" DataPublikacji="1991" ISBN="1-861001-57-6"> <TytulKsiazki> Dialogi </TytulKsiazki> <NazwiskoAutora> Platon </NazwiskoAutora> <Cena> 20,99 </Cena> </Ksiazka> </ListaKsiazek> Plik ksiazki.html <html> <head> <title> </title> <xml id="dsksiazka" src="ksiazki.xml"> </xml> </head> <body> <table border="1" datasrc="#dsksiazka"> <thead> <tr> <th> Tytul </th> <th> Imie </th> <th> Nazwisko </th> <th> Cena </th> </tr> </thead> <tbody> <tr> <td> <span datafld="tytulksiazki"> </span> </td> <td> <span datafld="imieautora"> </span> </td> <td> <span datafld="nazwiskoautora"> </span> </td> <td> <span datafld="cena"> </span> </td> </tr> </tbody> </table> </body> </html>

WSDL - Web Services Description Language Dokument WSDL służy do opisu usługi WWW. umożliwia odnalezienie usługi WWW w Internecie. jest dokumentem XML. Specyfikacja języka WSDL znajduje się pod adresem http://www.w3.org/tr/wsdl/ Struktura dokumentu WSDL: <porttype> operacje wykonywane przez usługę WWW. <message> wiadomosci wykorzystywane przez usługę WWW. <types> typy danych wykorzystywane przez usługę WWW. <binding> protokoly komunikacyjne wykorzystywane przez usługę WWW. Przykład. Prosty dokument wsdl. <definitions> <types> definition of types...</types> <message> definition of a message...</message> <porttype> definition of a port...</porttype> <binding> definition of a binding...</binding> </definitions>

UDDI - Universal Description, Discovery and Integration Specyfikacja dostępna jest na stronie http://uddi.xml.org/ https://www.oasis-open.org/standards#uddiv3 Standard opisu i wyszukiwania usług WWW, dostarczycieli usług WWW, interfejsów umożliwiających dostęp do usług WWW.

Usługa WWW: silnia 1. Uruchomić serwer WWW (Microsoft IIS). 2. Umieścić w katalogu \wwwroot\ plik silnia.asmx (C:\Inetpub\wwwroot\silnia.asmx ) 3. Utworzyć Web Service Proxy. \>wsdl http://adresserwerawww/silnia.asmx wynik: silnia.cs 4. Utworzyć dynamicznie dołączaną bibliotekę silnia.dll, tzn. skompilować plik silnia.cs. C:\Inetpub\wwwroot >csc /t:library silnia.cs wynik: silnia.dll 5. Skompilować program SilniaTest.cs z linkiem do biblioteki silnia.dll C:\Inetpub\wwwroot> csc /r:silnia.dll SilniaTest.cs Rezultat: SilniaTest.exe 6. Test usługi WWW. Uruchomić program SilniaTest.exe (plik silnia.dll umieścić w tym samym katalogu co SilniaTest.exe). C:\> SilniaTest.exe 8 Rezultat: C:\> Usluga silnia. 8! = 40320

Usługa silnia Plik silnia.asmx <%@ WebService Language="c#" Class="Silnia"%> using System; using System.Web.Services; [WebService(Namespace="http://localhost/")] public class Silnia : WebService { [WebMethod] public int silnia(int n) { if (n == 0) return 1; else return (n * silnia(n - 1));

Usługa silnia

Usługa silnia

Usługa silnia

Plik silnia.cs //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:2.0.50727.3603 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.ComponentModel; using System.Diagnostics; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Serialization; // // This source code was auto-generated by wsdl, Version=2.0.50727.3038. // [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="SilniaSoap", Namespace="http://localhost/")] public partial class Silnia : System.Web.Services.Protocols.SoapHttpClientProtocol { private System.Threading.SendOrPostCallback silniaoperationcompleted; public Silnia() { this.url = "http://localhost/silnia.asmx";

Plik silnia.cs,cd. 1 public event silniacompletedeventhandler silniacompleted; [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://localhost/silnia", RequestNamespace="http://localhost/", ResponseNamespace="http://localhost/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public int silnia(int n) { object[] results = this.invoke("silnia", new object[] { n); return ((int)(results[0])); public System.IAsyncResult Beginsilnia(int n, System.AsyncCallback callback, object asyncstate) { return this.begininvoke("silnia", new object[] { n, callback, asyncstate); public int Endsilnia(System.IAsyncResult asyncresult) { object[] results = this.endinvoke(asyncresult); return ((int)(results[0])); public void silniaasync(int n) { this.silniaasync(n, null);

Plik silnia.cs, cd. 2. public void silniaasync(int n, object userstate) { if ((this.silniaoperationcompleted == null)) { this.silniaoperationcompleted = new System.Threading.SendOrPostCallback(this.OnsilniaOperationCompleted); this.invokeasync("silnia", new object[] { n, this.silniaoperationcompleted, userstate); private void OnsilniaOperationCompleted(object arg) { if ((this.silniacompleted!= null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeargs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.silniacompleted(this, new silniacompletedeventargs(invokeargs.results, invokeargs.error, invokeargs.cancelled, invokeargs.userstate)); public new void CancelAsync(object userstate) { base.cancelasync(userstate);

Plik silnia.cs, cd. 3. [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void silniacompletedeventhandler(object sender, silniacompletedeventargs e); [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class silniacompletedeventargs : System.ComponentModel.AsyncCompletedEventArgs { private object[] results; internal silniacompletedeventargs(object[] results, System.Exception exception, bool cancelled, object userstate) : base(exception, cancelled, userstate) { this.results = results; public int Result { get { this.raiseexceptionifnecessary(); return ((int)(this.results[0]));

Program SilniaTest.cs z linkiem do biblioteki silnia.dll Plik SilniaTest.cs using System; class SilniaTest { public static void Main(string[] argv) { Silnia ms = new Silnia(); int n = Convert.ToInt16(argv[0]); int wynik = ms.silnia(n); Console.WriteLine("Usługa silnia. {0! = {1",n, wynik );

Program SilniaTest.cs z linkiem do biblioteki silnia.dll