Utisci korisnika

Pre nepunih mesec dana kupila sam paket kurseva: PRIPREME ZA POLAGANJE CAMBRIDGE INTERNATIONAL DIPLOMA IN BUSINESS. Obično neki opšti utisak formiramo na kraju, ali ja u ovom trenutku želim sa…

"Želim da kazem da iako sam tek na pola, da sam oduševljena ovim načinom na koji stvari funkcionisu!" Stanislava Kraguljac, Beograd


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: XML tehnologije i veb servisi

Modul: Distribuirane aplikacije

Autor: Vladimir Marić

Naziv jedinice: Tehnologije XML veb servisa


Materijali vezani uz ovu lekciju:

- Test tehnologije xml veb servisa
- Tehnologije XML veb servisa (PDF dokument)



Tehnologije XML veb servisa

Tri osnovne tehnologije na kojima su bazirani XML veb servisi su: HTTP (Hypertext Transfer Protocol), Extensible Markup Language (XML), Simple Object Access Protocol (SOAP).

.NET framework obezbeduje podršku za ove tehnologije.


Osnove HTTP-a

HTTP je standardni protokol (W3C) za prenos dokumenta putem Interneta. Lokacija resursa na internetu se vrši preko mehanizma koji se naziva URL (Uniform Resource Locator).

Podrazumevani port za HTTP je port 80. HTTP je protokol bez stanja, kada klijent dobije odgovor na zahtev, konekcija na server se zatvara.


Struktura HTTP zahteva

Na slici 1. je prikazana opšta struktura HTTP zahteva. Ispod toga se nalazi primer HTTP zahteva.

 

 

Slika 1. Struktura i primer HTTP zahteva


Struktura HTTP odgovora

Na slici 2. je prikazana opšta struktura HTTP odgovora. Ispod se nalazi primer HTTP odgovora.

 

 

Slika 2. Struktura HTTP odgovora


HTTP GET zahtev

Nema tela poruke. Query String je deo HTTP zahteva koji se nalazi iza znaka pitanja.
Velicina ovog stringa je ogranicena na 1024 bajta. Odgovor na HTTP GET zahtev je standardni HTTP odgovor.


HTTP POST zahtev

Query String nije deo URL–a. informacije o zahtevu se nalaze u telu poruke. Pogodan je za slanje vece kolicine podataka ka serveru.


.NET klase za rad sa HTTP-om

U prostoru imena System.Veb nalaze se klase HttpWebRequest i HttpWebResponse. Ove klase omogucavaju jednostavan pristup http hederima. Klasa HttpWebRequest podržava sinhroni i asinhroni zahtev. Klase StreamReader i StreamWriter se koriste za citanje  i kreiranje razlicitih tokova.


XSD šeme

XSD šema je dokument koji opisuje strukturu XML dokumenta. XSD šema se sastoji od elemenata koji su prosti tipovi ili kompleksni tipovi. Kompleksni elementi pored atributa mogu da sadrže i elemente potomke. Unutar WSDL dokumenta definišu se XSD šeme koje opisuju tipove podataka i strukturu dokumenta.


Definisanje elemenata

Unutar xsd dokumenta potrebno je definisati tipove podataka pojedinih elemenata. U primeru na slajdu definisan je element Iznos koji je tipa xs:double i dozvoljene su null vrednosti. Pored ugradenih tipova podataka moguce je definisati i sopstvene tipove podataka.

Definisanje prostog tipa podataka

U primeru koji sledi definisan je prost tip podataka pod nazivom acctTypeCode. Ovaj tip podataka predstavlja stringove dužine dva karaktera. Zatim je definisan element tipRacuna koji je tipa acctTypeCode.

<xsd:simpleType name="acctTypeCode">
   <xsd:restriction base="xsd:string">
      <xsd:pattern value="[A-Z]{2}"/>
   </xsd:restriction>
</xsd:simpleType>
<xsd:element name="tipRacuna" type="acctTypeCode"/>


Definisanje kompleksnog tipa podataka

Na ovom primeru je pokazan primer definisanja kompleksnog tipa podataka pod nazivom acct. Ovaj tip podataka se sastoji od uredene sekvence elemenata prostog tipa. Na kraju je definisan element Account tipa acct. Na slajdu je data i jedna instanca ovog elementa (deo XML dokumenta).

<xsd:complexType name="acct">
   <xsd:sequence>
      <xsd:element name="description  type="xsd:string"/>
      <xsd:element name="number" type="xsd:string"/>
      <xsd:element name="type" type="xsd:string"/>
      <xsd:element name="balance" type="xsd:decimal"/>
   </xsd:sequence>
   <xsd:attribute name="status" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="account" type="acct"/>


<account status="active">
 <number>1234-5X</number>
 <type>CK</type>
 <balance>5000.00</balance>
</account>


Grupe elemenata (atributa)

Grupe elemenata (atributa) se koriste za definisanje kompleksnih tipova podataka. U ovom  primeru je definisana grupa elemenata pod nazivom acct, a zatim se posredstvom nje definiše kompleksni tip podataka checkingAcct.

<xsd:group name="acct">
   <xsd:sequence>
      <xsd:element name="description"type="xsd:string"/>
      <xsd:element name="number" type="xsd:string"/>
      <xsd:element name="type" type="acctTypeCode"/>
      <xsd:element name="balance" type="xsd:decimal"/>
   </xsd:sequence>
</xsd:group>


<xsd:complexType name="checkingAcct">
   <xsd:sequence>
      <xsd:group ref="acct" />
   </xsd:sequence>
   <xsd:attribute name="status"type="xsd:string"/>
</xsd:complexType>


Kompozitori

Kompozitori su elementi koji specificiraju sekvencijalni, disjunktivni ili konjuktivni raspored elemenata. Sekvenca elemenata oznacava se sa xsd:sequence i predstavlja uredenu sekvencu elemenata potomaka. Disjunktivni raspored elemenata (izbor jedne od više mogucnosti) oznacava se sa xsd:choice. Konjuktivni raspored elemenata  oznacava se sa xsd:all predstavlja i neuredenu listu elemenata.


xsd:choice

U ovom primeru je prikazan primer kompozitora xsd:choice. Dozvoljava da se samo jedan element definisan unutar kompleksnog tipa pojavi u instanci tog elementa. U primeru na slajdu u instanci XML dokumenta koji implementira prikazanu šemu definiše se ili element Fullname ili se definiše sekvenca koja se sastoji od elemenata Firstname, Middleinitial, Lastname.

<xsd:complexType name="customerName">
   <xsd:choice>
      <xsd:element name="fullname" type="xsd:string" />
      <xsd:sequence>
         <xsd:element name="firstname" type="xsd:string" />
         <xsd:element name="middleinitial" type="xsd:string" minOccurs="0" />
         <xsd:element name="lastname" type="xsd:string" />
      </xsd:sequence>
   </xsd:choice>
</xsd:complexType>


xsd:all

Dozvoljava da se svi elementi unutar kompleksnog tipa pojave u instanci i to u proizvoljnom redosledu.  Definiše neuredenu listu elemenata grupa ili kompozitora.


SOAP

Simple Object Access Protocol (SOAP) je protokol koji se koristi za razmenu informacija u decentralizovanom distribuiranom okruženju. Razmena SOAP poruka je uobicajeni nacin komunikacije sa veb servisima. SOAP poruka se sastoji:

<Envelope> sekcije,
<Body> sekcije,
<Header> sekcije koja je opciona.


Struktura SOAP poruke

Na slici 3. je prikazana struktura SOAP poruke.

 

 

Slika 3. Struktura SAOP poruke


Struktura SOAP poruke

SOAP omotac (Envelope) je koreni elemenat XML dokumenta koji predstavlja SOAP poruku. Opciono sadrži Header i Body elemente. SOAP Heder omogucava da se obezbede dodatne informacije o poruci, npr autentifikacioni podaci. Ako SOAP Envelope elemenat ne sadrži Heder element, onda Body element mora biti prvi element potomak. Body element može da sadrži emente potomke koji se nazivaju ulazi u telo. Body deo SOAP poruke sadrži podatke koji su karakteristicni za poziv metode.  Opcioni deo Body elementa je SOAP Fault.

SOAP greška (Fault) elemenat sadrži informacije o greškama i ima 4 elementa potomka koji predstavljaju kod greške, string greške tj. objašnjenje uzrocnika greške tj. ko je uzrokovao tekucu grešku i detalje o grešci.


 
SOAP omotac i telo

SOAP telo se koristi za definisanje metode koju klijent veb servisa poziva kao i za slanje odgovora klijentu. U primeru na slajdu SOAP omotac se koristi za slanje autentifikacionih podataka.


soap:Fault

Koristi se da se korisniku veb servisa pošalju informacije o grešci nastaloj prilikom poziva veb servisa. Ovaj element predstavlja jedan od ulaza u SOAP telo i predstavlja opcioni element. U ovom primeru je prikazan primer ovog elementa, prikazan je kod greške kao i dodatni podaci o samoj grešci.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
     <soap:Fault>
         <faultcode>123XYZ</faultcode>
         <faultstring>Server Error</faultstring>
         <detail>
            <bank:faultdetails xmlns:bank="urn:OnlineBank">
               <message>Your account is overdrawn</message>
               <errorcode>1234</errorcode>
            </bank:faultdetails>
         </detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>


Primer SOAP zahteva

Posredstvom SOAP protokola zahteva se izvršavanje metode pod nazivom HelloWorld.

<?xml version=”1.0” encoding=”utf-8”?>
<soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:xsd=”http://www.w3.org/2001/XMLSchema”
xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<HelloWorld xmlns=”http://tempuri.org/” />
</soap:Body>
</soap:Envelope>


Primer SOAP odgovora

U sledecem primeru je prikazan odgovor veb servisa na SOAP zahtev, tj. SOAP odgovor na metodu HelloWord. Metoda vraca string Hello World.

<?xml version=”1.0” encoding=”utf-8”?>
<soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”
xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<HelloWorldResponse xmlns=”http://tempuri.org/”>
<HelloWorldResult>Hello World</HelloWorldResult>
</HelloWorldResponse>
</soap:Body>
</soap:Envelope>


Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:0