ProgSieciowe 15 Budowa id 39746 Nieznany

background image

Budowa aplikacji sieciowych

dr Zbigniew Lipi

ń

ski

Instytut Matematyki i Informatyki

ul. Oleska 48

50-204 Opole

zlipinski@math.uni.opole.pl

background image

Zagadnienia

• Obiektowe technologie programowania rozproszonego: DCOM, Java RMI, Corba.

• Interfejs programowy Winsock.

Przykład programu klient-serwer UDP Echo (j

ę

zyk C, C++).

Ś

rodowisko .Net, interfejs programowy Winsock.

Przykład programu klient-serwer UDP Echo (j

ę

zyk C#).

• Komunikacja z bazami danych, obiekty ADO.

Przykład programu: SqlQuerry (j

ę

zyk ASP).

• Usługi WWW (web servcies).

• Standard Corba.

background image

3

Component Object Model (COM)

COM+

Distributed Component Object Model (DCOM)

background image

4

COM+ jest rozszerzeniem technologii komponentowej COM (Component Object Model), umo

ż

liwiaj

ą

c

ą

budow

ę

usług z wykorzystaniem Microsoft Transaction Server (MTS).

Obiekty COM+ słu

żą

do:

buforowania danych (resource pooling),

rozł

ą

czania aplikacji,

publikowania zdarze

ń

(event publication),

obsługa transakcji rozproszonych.

Typy aplikacji COM+:

serwer

proxy (klient)

biblioteka.

W

ś

rodowisku .Net obiekty COM+ s

ą

zdefiniowane w obszarze nazw System.EnterpriseServices.

Co to jest COM+?

background image

MTS słu

ż

y od kolejkowania wiadomo

ś

ci, zarz

ą

dzania pami

ę

ci

ą

, zarz

ą

dzania w

ą

tkami, zarz

ą

dzania

zdarzeniami.

Usługi COM+:

Automatic Transaction Processing.

BYOT (Bring Your Own Transaction), usługa pozwala na definiowanie dziedziczenia mi

ę

dzy

transakcjami.

Just-in-Time Activation, usługa aktywuje obiekt, gdy ten wywołuje metod

ę

, deaktywuje go gdy

metoda zwróci warto

ść

.

Loosely Coupled Events, usługa słu

ż

y do zarz

ą

dzania zdarzeniami (manages object-based

events).

Object Construction, usługa przekazuje warto

ść

typu string do tworzonego obiektu.

Object Pooling, usługa kolejkuje obiekty (provides a pool of ready-made objects).

Private Components, chroni komponenty przed wywołaniem przez zewn

ę

trzne procesy (protects

components from out-of-process calls).

Queued Components, odpowiada za asynchroniczne kolejkowanie wiadomo

ś

ci (provides

asynchronous message queuing).

Role-Based Security.

SOAP Service.

Synchronization, zarz

ą

dza procesami współbie

ż

nymi.

Services without Components, pozwala aplikacjom korzysta

ć

z usług COM+ które nie maj

ą

zaimplementowanych ServicedComponent object lub nie maj

ą

skonfigurowanego katalogu COM+ .

Co to jest COM+?

background image

DCOM – model, technologia firmy Microsoft słu

żą

ca do budowy systemów rozproszonych (distributed

systems). Obiekty DCOM mog

ą

komunikowa

ć

si

ę

mi

ę

dzy sob

ą

poprzez sieci internetowe.

DCOM jest rozszerzeniem modelu COM.

Technologia COM/DCOM jest niezale

ż

na od j

ę

zyka implementacji.

J

ę

zyk i kompilator MIDL (Microsoft Interface Definition Language) słu

ż

y do specyfikowania interfejsów

mi

ę

dzy serwerem a klientem, definiowania metod i obiektów COM/DCOM.

Co to jest Distributed Component Object Model (DCOM)?

background image

Podstawowe poj

ę

cia technologii COM/DCOM:

klient

program który wywołuje metody na serwerze COM/DCOM.

serwer -

program który udost

ę

pnia obiekty COM/DCOM klientowi.

interfejs – wskazuje na grup

ę

funkcji które s

ą

wywoływane za pomoc

ą

obiektów COM/DCOM.

klasa COM/DCOM – (zwana ko-klas

ą

) definiuje obiekt który implementuje interfejsy COM/DCOM.

obiekt COM/DCOM – instancja ko-klasy (klasa COM/DCOM).

marshaling

przekazywanie danych (parametrów) mi

ę

dzy klientem a serwerem COM/DCOM.

Marshaling – mechanizm zbierania i formatowania danych w celu przesłania ich

do innego procesu.

Co to jest Distributed Component Object Model (DCOM)?

background image

Klient przekazuje (marshals) i odbiera (un-marshals) dane za pomoc

ą

obiektu proxy.

Obiekt proxy dostarcza te same interfejsy co COM/DCOM serwer ale ich nie implementuje

(implementacja jest na serwerze).

Serwery s

ą

komponentami pasywnymi, tzn. odpowiadaj

ą

tylko na

żą

dania klienta.

Klient:

• uruchamia, aktywuje serwer,

żą

da obiektu DCOM i interfejsu (podaje CLSID, IID),

• wywołuje metody na serwerze,

• zwalnia interfejsy, mo

ż

e zamkn

ąć

lub zdeaktywowa

ć

serwer.

Co to jest Distributed Component Object Model ?

background image

Obiekty COM/DCOM musz

ą

by

ć

unikalne w skali

ś

wiata.

Liczby słu

żą

ce do numerowania obiektów COM/DCOM nazywaj

ą

si

ę

UUID, Universally Unique Identifier (Open Software Foundation).

GUID, Globally Unique Identifier (Microsoft).

GUID jest liczb

ą

z zakresu 0 - 2^128.

Przykład GUID'a zapisanego w układzie szesnastkowym

"50709330-F93A-11D0-BCE4-204C4F4F5020".

Poniewa

ż

, GUID jest 128 bitowym typem danych, w j

ę

zyku C++ do zapisu GUID’ów stosuje si

ę

struktur

ę

Co to jest Distributed Component Object Model ?

typedef struct

_GUID

{

unsigned long

Data1;

unsigned short

Data2;

unsigned short

Data3;

unsigned char

Data4[8];

} GUID;

background image

Do identyfikacji klas i interfejsów stosuje si

ę

ż

ne typu GUID’ów:

CLSID, Class ID, GUID jednoznacznie identyfikuj

ą

cy klas

ę

DCOM któr

ą

klient chce u

ż

y

ć

.

IID, Interface ID, GUID identyfikuj

ą

cy interfejs.

Program słu

żą

cy do generowania GUID’ów nazywa si

ę

guidgen.exe.

Program słu

żą

cy do rejestrowania obiektów COM/DCOM w rejestrach nazywa si

ę

regsvr32.

Przykład. Rejestracja komponentu proxy stub marshalserverps.dll.

\> regsvr32 marshalserverps.dll

Co to jest Distributed Component Object Model ?

background image

Komponenty DCOM do komunikacji wykorzystuj

ą

protokół Remote Procedure Call (RPC, RFC 5513,

RPCSEC_GSS, RFC 5403).

GSS-API - Generic Security Services Application Programming Interface

Komponenty COM do komunikacji wykorzystuj

ą

protokół LPC (Local Procedure Call).

Service Control Manager (SCM) - słu

ż

y do odnajdywania komponentów DCOM, uruchamia i zatrzymuje

serwer COM/DCOM, wywołuje Interfejsy COM/DCOM , zarz

ą

dza komunikacj

ą

mi

ę

dzy procesami.

Np. SCM wykorzystuje do uruchomienia serwera interfejs IremoteActivation, wywołuj

ą

c na serwerze

funkcje RPC RemoteActivate().

Uwaga:

DCOM

client stub - proxy,

sever stub - stub

Java RMI, Corba

client stub - stub,

sever stub - skeleton.

Co to jest Distributed Component Object Model ?

Komponenty bior

ą

ce udzia

ł

w komunikacji mi

ę

dzy klientem a serwerem DCOM.

background image

Protokół Remote Procedure Call

A.R. Thurlow, RPC: Remote Procedure Call Protocol Specification Version 2,RFC 5531, May 2009.

Protokól RPC został opracowany w celu wykonywania rozproszonych oblicze

ń

.

B. J. Nelson, Remote procedure call. Tech. Rep. CSL-81-9, Xerox Palo Alto Research Center, Palo Alto, Calif. 1981.

Funkcje protokołu RPC:

specyfikacja procedur RPC,

obsługa mechanizmu kojarzenia zapyta

ń

i odpowiedzi,

obsługa mechanizmu uwierzytelnienia klienta i serwera RPC.

Portokół RPC korzysta w wartwie transportowej z protokołów TCP i UDP.

background image

Protokół Remote Procedure Call

Ź

ródło. A.D. Birrell, B. J. Nelson, Implementing Remote Procedure Calls, XEROX CSL-83-7, October 1983.

Ź

ródło. A.D. Birrell, B. J. Nelson, Implementing Remote Procedure Calls, XEROX CSL-83-7, October 1983.

background image

Java Remote Method Invocation

background image

Technologia Java RMI została opracowana tak, aby budowa aplikacji rozproszonych

była podobna do budowy aplikacji niesieciowych, obowi

ą

zywała ta sama składnia i semantyka,

mo

ż

na było posługiwa

ć

si

ę

lokalnymi obiektami Javy.

Specyfikacja Java RMI

http://download.oracle.com/javase/6/docs/platform/rmi/spec/rmiTOC.html

Typowa aplikacja RMI składaja si

ę

z dwóch komponentów serwera i klienta.

Serwer tworzy obiekty i udost

ę

pnia je klientowi poprzez referencje.

Klient mo

ż

e poprzez referencje wywoływa

ć

zdalnie metody danego obiektu.

Java RMI jest mechnizmem pozwalaj

ą

cym klientowi i serwerowi komunikowa

ć

si

ę

(przekazywa

ć

parametry do

zdalnych obiektów i odbiera

ć

zwracane warto

ś

ci przez zdalnie wywołane metody).

W Java RMI definicja zachowania systemu w procesie generowania usługi sieciowej (remote service) jest okre

ś

lona za

pomoc

ą

interfejsów Javy (Java interface).

Implementacja zachowania systemu i usługi jest zapisana w klasie i wykonywana na serwerze.

Co to jest Java RMI?

background image

Aby klient RMI mógł wywoła

ć

metod

ę

na serwerze RMI musi:

zlokalizowa

ć

zdalny obiekt ,

zkomunikowa

ć

si

ę

z nim (przekaza

ć

parametry, odebra

ć

dane),

pobra

ć

definicj

ę

klas z serwerów.

Co to jest Java RMI?

Server RMI odwołuje si

ę

do rejestów aby skojarzy

ć

(bind) zdalny obiekt z jego nazw

ą

.

Klient RMI szuka obiektów po ich nazwach w rejestrach serwera RMI aby wywoła

ć

metod

ę

obiektu na serwerze.

Klient i serwer RMI mog

ą

pobra

ć

np. z serwera WWW, definicj

ę

klas.

Klient odnajduje serwer i obiekty za pomoc

ą

:

standardowych usług katalogowych (DNS) lub usług,

Java Naming and Directory Interface,

RMI Registry, port 1099.

Ź

ródło. http://download.oracle.com/javase/6/docs/platform/rmi/spec/rmi-objmodel2.html

background image

W Java RMI istniej

ą

dwa typy klas które mog

ą

implementowa

ć

interfejs.

Pierwszy typ implementuje zachowanie interfejsu, wówczas program wykonywalny jest uruchamiany na serwerze.

Drugi typ klasy implementuje interfejs jako klasa proxy, klasa uruchamiana jest przez klienta.

Co to jest Java RMI?

background image

Implementacja Java RMI zbudowana jest na trzech warstwach (abstraction layers):

warstwa Stub and Skeleton. W tej warstwie przechwytywane s

ą

metody wywołane przez klienta i przekierowywane do

serwera (remote RMI service).

warstwa zdalnej referencji (Remote Reference Layer).
W tej warstwie odbywa si

ę

interpretacja i zarz

ą

dzanie referencjami do obiektów serwera utworzonymi przez klienta,

budowane jest poł

ą

czenie unicastowe (1-1).

Aktywowanie nieaktywnych (u

ś

pionych) obiektów serwera nast

ę

puje za pomoc

ą

ROA (Remote Object Activation).

warstwa transportowa, obsługa poł

ą

czenia TCP mi

ę

dzy wirtualnymi maszynami Javy.

Ponad protokołem TCP, RMI stosuje protokół JRMP (Java Remote Method Protocol).
Opracowywana wersja RMI-IIOP implementuje protokoły OMG stosowane w Corbie Internet Inter-ORB Protocol i IIOP.
W tej warstwie mo

ż

e te

ż

by

ć

zaimplementowana transmisja bezpoł

ą

czeniowa w protokole UDP.

Co to jest Java RMI?

background image

Szablon proxy.

Interfejs jest implementowany jako stub (klasa typu proxy), uruchamiany na ho

ś

cie klienta, RealSubject jest klas

ą

implementuj

ą

c

ą

usług

ę

na serwerze.

Skeleton jest klas

ą

pomocnicz

ą

, słu

ż

y do obsługi komunikacji mi

ę

dzy stubem a obiektami serwera.

Co to jest Java RMI?

background image

Co to jest WinSock?

Windows Sockets jest implementacja gniazd BSD (University of California-Berkeley Sockets API).

1993 - edycja WinSock wersja 1.1.

1996 - WinSock wersja 2.0.

Windows Sockets jest interfejsem programowym warstwy transportowej modelu OSI pozwalaj

ą

cym budowa

ć

aplikacje

sieciowe oparte o protokoły rodziny TCP/IP.

Windows Sockets 2 definiuje interfejsy komunikacyjne do obsługi wielu standardów i usług:

DNS,

NetWare Service Advertising Protocol (

SAP) name provider, standard X.509 (PKI),

Quality of service,

transmisji w trybie multicast, multipoint.

background image

W skład specyfikacji WinSock2 wchodz

ą

:

WinSock 2 API (budowa aplikacji)

WinSock 2 Service Provider Interface (udost

ę

pnianie interfejsów WinSock 2 ró

ż

nym protokołom transportowym).

Komponenty Windows Open System Architecture (WOSA):

WinSock Service Provider Interface (SPI), nazwy funkcji zaczynaj

ą

si

ę

od ‘WSP’

WinSock Provider Upcall, nazwy funkcji zaczynaj

ą

si

ę

od ‘WPU’.

Nazwy funkcji Windows Sockets 2 zaczynaj

ą

si

ę

do WSA.

Przykład:

WinSock 1.1: connect()

WinSock 2.0: WSAConnect().

Co to jest WinSock?

background image

Przykładowe funkcje WinSock API:

WSAStartup()

funkcja inicjuje u

ż

ycie przez proces biblioteki WS2_32.DLL.

socket()

funkcja tworzy gniazdo o okre

ś

lonym typie.

gethostbyname()

funkcja pobiera nazw

ę

hosta z bazy hosta.

connect()

funkcja buduje poł

ą

czenie do okre

ś

lonego gniazda.

send()

funkcja wysyła dane do poł

ą

czonego gniazda.

sendto()

funkcja wysyła dane do konkretnego odbiorcy.

closesocket()

funkcja zamyka gniazdo.

WSACleanup()

funkcja ko

ń

czy u

ż

ycie biblioteki WS2_32.DLL.

bind()

funkcja kojarzy adres lokalny hosta z gniazdem.

recvfrom()

funkcja odbiera datagramy i przechowuje adres nadawcy

WSAGetLastError()

funkcja zwraca status bł

ę

du ostatniej nieudanej operacji.

Struktury WinSock API:

WSADATA

struktura zawiera informacje o implementacji gniazd (Windows Sockets).

sockaddr_in

struktura zawiera adres IP i numer portu odbiorcy danych.

hostent

struktura jest u

ż

ywana przez funkcje do przechowywania informacji o ho

ś

cie.

Co to jest WinSock?

background image

1.

Instrukcje preprocesorowe:

Co to jest WinSock? Aplikacja UdpEchoClient. J

ę

zyk C, C++.

WSADATA wsd;

SOCKET s;

char

*sendbuf = NULL;

int

iRet, dwRecipientSize;

SOCKADDR_IN recipient;

int

iPort = DEFAULT_PORT;

// Numer portu odbiorcy

DWORD

dwCount = DEFAULT_COUNT,

// Liczba wiadomosci do wyslania

dwLength = DEFAULT_BUFFER_LENGTH;

// Dlugosc bufora do wysylania

char

chRecipient[128]= DEFAULT_RECIPIENT;

// Adres IP lub nazwa hosta odbiorcy

#include

<winsock2.h>

#include

<iostream>

using namespace

std;

#define

DEFAULT_PORT 5150

#define

DEFAULT_COUNT 1

#define

DEFAULT_BUFFER_LENGTH 1

#define

DEFAULT_RECIPIENT

"10.60.17.109"

2. Funkcja main(). Definiowanie i inicjowanie zmiennych i obiektów.

background image

Co to jest WinSock? Aplikacja UdpEchoClient. J

ę

zyk C, C++.

WSAStartup

(MAKEWORD(2, 2), &wsd);

s =

socket

(AF_INET, SOCK_DGRAM, 0);

recipient.sin_family = AF_INET;

recipient.sin_port = htons((

short

)iPort);

recipient.sin_addr.s_addr = inet_addr(chRecipient);

sendbuf =

new char

;

memset(sendbuf,

'Q'

, dwLength);

connect

(s, (SOCKADDR *)&recipient,

sizeof

(recipient));

iRet =

send

(s, sendbuf, dwLength, 0);

cout <<

"Do "

<< inet_ntoa(recipient.sin_addr) <<

" wyslano wiadomosc: "

<< *sendbuf << endl;

dwRecipientSize =

sizeof

(recipient);

iRet =

recvfrom

(s, sendbuf, dwLength, 0, (SOCKADDR *)&recipient, (

int

*) &dwRecipientSize);

cout <<

"Od "

<< inet_ntoa(recipient.sin_addr) <<

" odebrano wiadomosc: "

<< *sendbuf <<

endl;

closesocke

t(s);

delete

sendbuf;

WSACleanup

();

background image

1.

Instrukcje preprocesorowe.

Co to jest WinSock? Aplikacja UdpEchoServer. J

ę

zyk C, C++.

#include <winsock2.h>

#include <iostream>

using namespace

std;

#define

DEFAULT_PORT 5150

#define

DEFAULT_COUNT 1

#define

DEFAULT_BUFFER_LENGTH 1

// 4096

WSADATA

wsd;

SOCKET

s;

char

*recvbuf = NULL;

int

iRet;

DWORD

dwSenderSize;

SOCKADDR_IN

sender, local;

int

iPort = DEFAULT_PORT;

// Numer portu odbiorcy

DWORD

dwCount = DEFAULT_COUNT,

// Liczba wiadomo

ś

ci do odebrania

dwLength = DEFAULT_BUFFER_LENGTH;

// D

ł

ugo

ść

bufora do obioru

char

chInterface[32];

// IP hosta do obioru datagramów

2. Funkcja main(). Definiowanie i inicjowanie zmiennych i obiektów.

background image

Co to jest WinSock? Aplikacja UdpEchoServer. J

ę

zyk C, C++.

WSAStartup

(MAKEWORD(2,2), &wsd);

s =

socket

(AF_INET, SOCK_DGRAM, 0);

local.sin_family = AF_INET;

local.sin_port = htons((

short

)iPort);

local.sin_addr.s_addr = htonl(INADDR_ANY);

bind

(s, (SOCKADDR *)&local,

sizeof

(local));

recvbuf =

new char

;

dwSenderSize =

sizeof

(sender);

iRet =

recvfrom

(s, recvbuf, dwLength, 0, (SOCKADDR *)&sender, (

int

*) &dwSenderSize);

cout <<

"Od "

<< inet_ntoa(sender.sin_addr) <<

" odebrano wiadomosc: "

<< *recvbuf << endl;

memset(recvbuf,

'Z'

, dwLength);

connect

(s, (SOCKADDR *)&sender,

sizeof

(sender));

iRet =

send

(s, recvbuf, dwLength, 0);

cout <<

" Do "

<< inet_ntoa(sender.sin_addr) <<

" wyslano wiadomosc: "

<< *recvbuf << endl;

closesocket

(s);

delete

recvbuf;

WSACleanup

();

background image

Obszar nazw System.Net.Sockets

Klasa UdpClient, IPEndPoint

Obiekty klasy UdpClient dostraczaj

ą

usług w protokole User Datagram Protocol.

Obiekt klasy IPEndPoint reprezentuje odbiorc

ę

danych poprzez jego adres IP i numer portu.

Programowanie aplikacji sieciowych w .Net. WinSock

background image

1. Przypisanie warto

ś

ci parametrom pocz

ą

tkowym. Parametry:

ServerName, ServerPort, SendMessage

.

2. Utworzenie obiektu Client.

3. Wysłanie wiadomosci ‘

żą

danie Echa’.

4. Utworzenie obiektu IPEndPoint.

.Net. WinSock. Aplikacja UdpEchoClient.

String

server = “m40.math.uni.opole.pl”;

// nazwa lub adres IP serwera

int

servPort = 7;

// port serwera

byte

[] SendMessage =

Encoding

.ASCII.GetBytes(“Hello”);

//konwersja stringu “Hello” na tab. obiektów

UdpClient client =

new

UdpClient();

client.Send(SendMessage, SendMessage.Length, server, servPort);

IPEndPoint remoteIPEndPoint =

new

IPEndPoint(IPAddress.Any, 0);

background image

5. Odebranie odpowiedzi Echa.

6. Zamkni

ę

cie obiektu Client.

.Net. WinSock. Aplikacja UdpEchoClient.

byte

[] rcvPacket = client.Receive(

ref

remoteIPEndPoint);

client.Close();

background image

1. Przypisanie warto

ś

ci parametrom pocz

ą

tkowym.

2. Utworzenie obiektu client.

3. Utworzenie obiektu IPEndPoint.

4. Odebranie wiadomo

ś

ci “

żą

danie Echa”.

5. Wysłanie odpowiedzi Echa (wysłanie wiadomo

ś

ci Echo replay).

int

servPort = 7;

UdpClient client =

null

;

client =

new

UdpClient(servPort);

IPEndPoint remoteIPEndPoint =

new

IPEndPoint(IPAddress.Any, 0);

for

(;;)

// serwer odbiera datagramy w niesko

ń

czonej p

ę

tli.

byte

[] byteBuffer = client.Receive(

ref

remoteIPEndPoint);

client.Send(byteBuffer, byteBuffer.Length, remoteIPEndPoint);

Console.WriteLine(

"echoed {0} bytes."

, byteBuffer.Length);

.Net. WinSock. Aplikacja UdpEchoServer.

background image

ActiveX Data Objects (ADO)

background image

ADO jest

technologi

ą

firmy Microsoft.

komponentem Active-X (ACTIVE eXchange).

automatycznie instalowany z serwerem www Microsoft IIS.

interfejsem programowym dost

ę

pu do baz danych.

Kontrolka Active-X - wcze

ś

niejsza nazwa kontrolka OLE, jest przykładem obiektu typu COM, komponent

realizuj

ą

cy okre

ś

lon

ą

funkcjonalno

ść

, który mo

ż

e by

ć

zagnie

ż

d

ż

any w aplikacje, okna dialogowe, strony HTML.

Plik z rozszerzeniem *.ocx

Obiekty ADO:

ADO Command

ADO Connection

ADO Error

ADO Field

ADO Parameter

ADO Property

ADO Record

ADO Recordset

ADO Stream

ADO DataTypes

Co to jest ADO, ActiveX Data Objects?

background image

Obiekt Command – stosowany do wykonania kwerend do bazy danych w celu utworzenia, uaktualnienia, dodania,

pobrania, usuni

ę

cia (create, add, retrieve, delete, update) rekordu.

Je

ż

eli kwerenda słu

ż

yła do pobrania danych, to dane s

ą

zwracane jako obiekt RecordSet (zbiór rekordów).

Oznacza to,

ż

e aby odzyska

ć

dane z obiektu (RecordSet) nale

ż

y posłu

ż

y

ć

si

ę

metodami, zdarzeniami, properties,

collections, obiektu Recordset.

Przykład u

ż

ycia.

Co to jest ActiveX Data Objects?

set objCommand=Server.CreateObject(

"ADODB.command"

)

set objConnection=Server.CreateObject(

"ADODB.connection"

)

Obiekt Connection –obiekt słu

ż

y do budowy i otwarcia poł

ą

czenia z baz

ą

danych.

Przykład u

ż

ycia.

background image

Obiekt Error - obiekt zawiera dane o bł

ę

dach powstałych przy wykonaniu pojedynczych operacji na bazie danych.

Przykład u

ż

ycia.

Co to jest ActiveX Data Objects?

for

each objErr

in

objConn.Errors

response.write(objErr.Description )

response.write(objErr.HelpContext)

response.write(objErr.HelpFile)

response.write(objErr.NativeError)

response.write(objErr.Number)

response.write(objErr.Source)

response.write(objErr.SQLState)

next

Obiekt Field – obiekt przechowuje informacje o kolumnie danych w obiekcie Recordset.

Przykład u

ż

ycia.

set objField=Server.CreateObject(

"ADODB.field"

)

background image

Co to jest ActiveX Data Objects?

Obiekt Parameter – obiekt słu

ż

y do uzyskania informacji o parametrach u

ż

ytych w procedurach składowanych (stored

procedures) lub kwerendach.

Cztery typy parametrów: input, output, input/output, return.

Przykład składni.

objectname.

property

objectname.method

Obiekt Property - obiekt reprezentuje dynamiczne charakterystyki obiektów ADO zdefiniowanych dla ró

ż

nych

typów baz danych (db providers).
Przykład u

ż

ycia.

set objProperty=Server.CreateObject(

"ADODB.property"

)

background image

Obiekt Record (ADO ver. 2.5) – obiekt słu

ż

y do przechowania wiersza danych z Recordsetu, katalogu lub pliku.

Przykład u

ż

ycia:

Co to jest ActiveX Data Objects?

objectname.

property

objectname.method

Obiekt Recordset - obiekt słu

ż

y do przechowywania danych (zbioru rekordów) z tabeli. Obiekt Recordset

składa si

ę

z rekordów i kolumn (pól, ang. Fields).

Recordset mo

ż

e uaktualni

ć

dane na dwa sposoby: immediate updating, batch updating.

Przykład u

ż

ycia:

Obiekt Stream (ADO version 2.5) – obiekt stosowany do czytania, zapisywania, zarz

ą

dzania strumieniem

danych.

set objRecordset=Server.CreateObject(

"ADODB.recordset"

)

background image

Kursory ADO s

ą

parametrami metod obiektów ADO.

Kursory definiuj

ą

usługi kursora (cursor service).

Typy kursorów ADO:

Dynamic cursor – pozwala na przegl

ą

d operacji dodania, zmiany, usuni

ę

cia wykonane przez innego u

ż

ytkownika.

Keyset cursor – usługa podobna do usługi kursora ‘dynamic’, za wyj

ą

tkiem: braku mo

ż

liwo

ś

ci przegl

ą

dania operacji

dodania przez innego u

ż

ytkownika, braku dost

ę

pu do rekordów które inny u

ż

ytkownik usun

ą

ł. Dane zmienione przez

innego u

ż

ytkownika s

ą

widoczne.

Static cursor – pozwala dokona

ć

‘statycznego’ kopiowania rekordsetów w celu znalezienia danych lub

wygenerowania raportów. Operacje dodania, zmiany, usuni

ę

cia wykonane przez innego u

ż

ytkownika s

ą

niewidoczne.

Typ kursora dost

ę

pny tylko dla obiektów typu klient rekordset.

Forward-only cursor – pozwala przejrze

ć

rekordset. Operacje dodania, zmiany, usuni

ę

cia wykonane przez innego

u

ż

ytkownika s

ą

niewidoczne.

Kursor Forward-only mo

ż

e by

ć

ustawiony poprzez property ‘CursorType’ lub poprzez parametr ‘CursorType’ w

metodzie Open().

Co to jest ActiveX Data Objects?

background image

Proces budowy poł

ą

czenia z baz

ą

danych za pomoc

ą

obiektów ADO:

1.

Utworzenie poł

ą

czenia ADO z baz

ą

danych.

2.

Otwarcie poł

ą

czenia.

3.

Utworzenie recordseta.

4.

Otwarcie recordseta.

5.

Pobranie danych do recordseta.

6.

Zamkni

ę

cie recordseta.

7.

Zamkni

ę

cie poł

ą

czenia.

Co to jest ActiveX Data Objects?

background image

Co to jest ActiveX Data Objects?

1-2. Utworzenie i otwarcie poł

ą

czenia z baz

ą

danych. Baza northwind.mdb.

Utworzenie i otwarcie poł

ą

czenia z baz

ą

danych za pomoc

ą

komponentu ODBC.

set conn=Server.CreateObject(

"ADODB.Connection"

)

conn.Provider=

"Microsoft.Jet.OLEDB.4.0"

conn.Open

"c:/webdata/northwind.mdb”

set conn=Server.CreateObject(

"ADODB.Connection"

)

conn.Open

"northwind"

3. Utworzenie recordseta.

set rs=Server.CreateObject(

"ADODB.recordset"

)

background image

Co to jest ActiveX Data Objects?

4-5. Otwarcie i pobranie danych do recordseta.

Czytanie dnych z rekordseta.

6. Zamkni

ę

cie recordseta.

7. Zamkni

ę

cie poł

ą

czenia.

rs.Open

"Select * from Customers"

, conn

for each

x

in

rs.fields

response.write(x.name)

response.write(

" = "

)

response.write(x.value)

Next

rs.close

conn.close

background image

Active Server Pages

background image

ASP oznacza skrót Active Server Pages

ASP jest programem wykonywanym przez komponent IIS (Internet Information Services).

Plik *.asp mo

ż

e zawiera

ć

: tagi j

ę

zyka HTML, XML, skrytpy (VB scirpt, Java script, ….) .

Skrypty w plikach *.asp s

ą

wykonywane na serwerze.

Żą

dane strony *.asp przez przegladark

ę

internetow

ą

s

ą

przekazywane przez serwer WWW do silnika ASP,

skrypty s

ą

wykonywane i do klienta (przegladarki internetowej) zwracane s

ą

dane w formie HTML bez skryptów.

Zalet

ą

takiego rozwi

ą

zania jest,

ż

e przegl

ą

darki internetowe nie musz

ą

obsługiwa

ć ż

adnych j

ę

zyków

skryptowych.

Co to jest ASP?

background image

ASP oznacza skrót Active Server Pages

ASP jest programem wykonywanym przez komponent IIS (Internet Information Services).

Plik *.asp mo

ż

e zawiera

ć

: tagi j

ę

zyka HTML, XML, skrytpy (VB scirpt, Java script, ….) .

Skrypty w plikach *.asp s

ą

wykonywane na serwerze.

Żą

dane strony *.asp przez przegladark

ę

internetow

ą

s

ą

przekazywane przez serwer WWW do silnika ASP,

skrypty s

ą

wykonywane i do klienta (przegladarki internetowej) zwracane s

ą

dane w formie HTML bez skryptów.

Zalet

ą

takiego rozwi

ą

zania jest,

ż

e przegl

ą

darki internetowe nie musz

ą

obsługiwa

ć ż

adnych j

ę

zyków

skryptowych.

Co to jest ASP?

background image

Skrypty w plikach ASP zawarte s

ą

mi

ę

dzy znakami <% a… %>.

Przykład pliku *.asp.

Co to jest ASP?

<html>

<body>

<%

response.write(

"Hello World!"

)

%>

</body>

</html>

background image

Co to jest ASP?

<%@ language=

"javascript"

%>

<html>

<body>

<%

Response.Write(

"Hello World!"

)

%>

</body>

</html>

Domy

ś

lnym j

ę

zykiem skryptowym dla stron ASP jest VBScript.

Aby zagnie

ź

dzi

ć

skrypty pisane w innych j

ę

zykach nale

ż

y u

ż

y

ć

atrybutu language.

background image

Przykład: strona www wykonana w ASP.

Co to jest ASP?

<html>

<body>

<%

dim h

h=hour(now())

response.write(

"<p>"

& now())

response.write(

"</p>"

)

If h<12 then

response.write(

"Jest przed po

ł

udniem"

)

else

response.write(

"Jest po po

ł

udniu!"

)

end

if

%>

</body>

</html>

background image

Usługi WWW

Web Services Architecture, W3C Working Group 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)

• SOAP (ang. Simple Object Access Protocol)

• UDDI (ang. Universal Description, Discovery and Integration)

• HTML (ang. HyperText Markup Language)

• XML (ang. eXtensible Markup Language) (xml, xml dtd, xml schema)

• WSDL (ang. Web Services Description Language)

background image

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.

background image

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

ź

.

background image

Simple Object Access Protocol (SOAP)

Przyk

ł

ad: struktura widomo

ś

ci SOAP.

Pe

ł

na struktura widomo

ś

ci SOAP opisana jest w specyfikacji SOAP

http://www.w3.org/TR/soap/

<soap:Envelope>

<soap:Body>

<NazwaTagu1>

<Element1> … </Element1>

</NazwaTagu1>

</soap:Body>

</soap:Envelope>

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).

background image

Dokument WSDL słu

ż

y do opisu usługi WWW.

Dokument WSDL umo

ż

liwia odnalezienie usługi WWW w Internecie.

Dokument WSDL 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.

Web Services Description Language

<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>

Przykład. Prosty dokument wsdl.

background image

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 WWW: Silnia

background image

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));

}

}

background image

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.

//

/// <remarks/>

[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;

/// <remarks/>

public

Silnia() {

this

.Url =

"http://localhost/silnia.asmx"

;

}

background image

Plik silnia.cs ,cd. 1

/// <remarks/>

public event

silniaCompletedEventHandler silniaCompleted;

/// <remarks/>

[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]));

}

/// <remarks/>

public

System.

IAsyncResult

Beginsilnia(

int

n, System.

AsyncCallback

callback,

object

asyncState) {

return this

.BeginInvoke(

"silnia"

,

new object

[] {

n}, callback, asyncState);

}

/// <remarks/>

public int

Endsilnia(System.

IAsyncResult

asyncResult) {

object

[] results =

this

.EndInvoke(asyncResult);

return

((

int

)(results[0]));

}

/// <remarks/>

public void

silniaAsync(

int

n) {

this

.silniaAsync(n,

null

);

}

background image

Plik silnia.cs, cd. 2.

/// <remarks/>

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));

}

}

/// <remarks/>

public new void

CancelAsync(

object

userState) {

base

.CancelAsync(userState);

}

}

background image

Plik silnia.cs, cd. 3.

/// <remarks/>

[System.CodeDom.Compiler.GeneratedCodeAttribute(

"wsdl"

,

"2.0.50727.3038"

)]

public delegate void

silniaCompletedEventHandler(

object

sender, silniaCompletedEventArgs e);

/// <remarks/>

[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;

}

/// <remarks/>

public int

Result {

get

{

this

.RaiseExceptionIfNecessary();

return

((

int

)(

this

.results[0]));

}

}

}

background image

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 );

}

}

Usługa silnia

background image

Usługa silnia

background image

Usługa silnia

background image

Plik silnia.asmx

Usługa silnia

background image

Common Object Request Broker Architecture (CORBA)

background image

CORBA jest komercyjnym standardem Object Management Group (OMG).

http://www.omg.org/

Głównym celem grupy OMG jest upowszechnianie technologii zorientowanych obiektowo słu

żą

cych budowie du

ż

ych,

rozproszonych systemów informatycznych.

Aby zrealizowa

ć

swoj

ą

misj

ę

OMG stworzyła Model Referencyjny OMA (Object Management Architecture Reference

Model) definiuj

ą

cy standard architektury rozproszonych systemów Informatycznych, podstawy dla innych standardów i

specyfikacji:

Meta Object Facility (MOF) specification,

Unified Modeling Language (UML) specification,

XML Metadata Interchange (XMI) specification,

Common Warehouse Metamodel (CWM) specification,

Common Object Request Broker Architecture (CORBA) specification,

ułatwiaj

ą

cych tworzenia aplikacji w

ś

rodowisku rozproszonym.

Standard Corba

background image

W modelu referencyjnym OMA komponenty systemu: klient, serwer, baza danych, interfejs s

ą

obiektami.

Obiektem jest dowolna encja która dostarcza usług

żą

danych przez klienta.

Główn

ą

zasad

ą

modelu OMA jest to,

ż

e ka

ż

dy obiekt jest albo obiektem

żą

daj

ą

cym usługi (klientem), obiektem

realizuj

ą

cym usług

ę

(serwerem) lub jednym i drugim.

Podstawowym elementem architektury w modelu OMA jest broker poprzez który obiekty komunikuj

ą

si

ę

mi

ę

dzy sob

ą

.

Komunikacja mi

ę

dzy obiektami odbywa sie poprzez interfejsy.

Standard Corba

background image

System rozproszony to system typu klient-serwer w którym wyst

ę

puje du

ż

a ilo

ść

klientów i serwerów (multitier client-

server system).

Corba jest implementacj

ą

warstwy po

ś

redniej (middleware layer) w trójwarstwowej architekturze

systemu informatycznego:

Warstwa Prezentacji (Presentation Layer)

Warstwa Po

ś

rednia (middleware, Buisness Logic Layer)

Warstwa Danych (Data Layer).

Technologia wykorzystana do opracowania standardu Corby jest:

zorientowana obiektowo

oparta o zorientowane obiektowo interfejsy, interfejsy oddzielone s

ą

od implementacji obiektów (obiektów w cz

ęś

ci

klienta, serwera, brokera)

niezale

ż

na od platformy systemowej

niezale

ż

na od j

ę

zyka w którym implementowane s

ą

aplikacje (klient, serwer)

niezale

ż

na od lokalizacji klienta i serwera. Zadaniem brokera jest odebra

ć

zapytanie (request) od klienta, znale

źć

serwer, przekaza

ć

zapytanie na serwer, przekaza

ć

odpowied

ź

klientowi.

Standard Corba

background image

Zadania brokera:

zarz

ą

dzanie poł

ą

czeniem klient-serwer,

zarz

ą

dzanie pami

ę

ci

ą

,

przekazywanie zapyta

ń

i odpowiedzi mi

ę

dzy klientem a serwerem,

kontrola dost

ę

pu do usług,

obsługa bł

ę

dów w komunikacji mi

ę

dzy klientem a serwerem,

zarz

ą

dzanie jako

ś

ci

ą

poł

ą

czenia (QoS).

Standard Corba

background image

W modelu OMA rozró

ż

nia si

ę

cztery kategorie interfejsów:

Object Services, interfejsy wykorzystywane przez aplikacje pracuj

ą

ce w

ś

rodowisku rozproszonym.

Common Facilities, interfejsy do usług wykorzystywanych przez aplikacje niezale

ż

nie od ich

komercyjnego zastosowania.

Domain Interfaces, interfejsy specyficzne dla aplikacji z konkretnych podobszarów funkcjonalnych.

Application Interfaces, niestandaryzowane interfejsy dla konkretnych aplikacji.

Model Referencyjny OMA rozró

ż

nia cztery kategorie obiektów:

Obiekty ORB (Object Request Broker),

Obiekty usług (CORBAservices),

Obiekty standardowych usług (Common Facilities - CORBAfacilities),

Obiekty aplikacji (Application Objects).

Standard Corba

background image

Obiekty Corby s

ą

to obiekty z interfejsami zdefiniowanymi w j

ę

zyku IDL.

Obiekty Corby maj

ą

ż

n

ą

reprezentacj

ę

po stronie serwera i klienta:

Implementacja Obiektów Corby po stronie serwera nazywa sie servant’em (aplikacja ‘serwuj

ą

c

ą

’ usługi). Serwer

u

ż

ywa obiektów Corby zaimplementowanych w konkretnym j

ę

zyku (np. C++, Java).

Klasa w której zaimplementowany jest dany obiekt Corby nazywa sie ‘implementation class’.

Servant jest instancja klasy implementuj

ą

cej (implementation class) Obiekt Corby w konkretnej aplikacji (uwaga:

servant nie jest Obiektem Corby, jest implementacja obiektu Corby).

Klient tworzy obiekt proxy w celu wykorzystania obiektów na serwerze (servant’ow).

Klient który chce wykorzysta

ć

obiekt zaimplementowany przez serwer (wywoła

ć

servant’a) przekazuje wszystkie zapytania

(requests) poprzez brokera (ORB).

Standard Corba

background image

Schemat generowania zapyta

ń

(requests) przez klienta do serwera wygl

ą

da nast

ę

puj

ą

co:

klient wywołuje lokalnie metod

ę

na obiekcie proxy,

ORB ‘pakuje’ parametry z jakimi została wywołana dana metoda i przekazuje na server,

ORB wywołuje wła

ś

ciw

ą

metod

ę

na servan’cie,

ORB zwraca wynik działania metody na serwerze do klienta.

Servant musi by

ć

poł

ą

czony z ORB tak, aby ORB mógł wywoływa

ć

metody na servan’cie gdy

klient generuje zapytanie (request). To poł

ą

czenie jest realizowane poprzez Portable Object Adapter (POA).

POA decyduje który servant b

ę

dzie wywołany gdy przychodzi

żą

danie od klienta i wywołuje danego servant’a.

Konfiguracja i kontrola poł

ą

czenia servant-ORB odbywa sie za pomoc

ą

POA Manager’ów.

Standard Corba

background image

Fazy tworzenia sie obiektu POA na serwerze i budowy komunikacji z servant’em:

Aplikacja na serwerze pobiera referencje od root POA.

Aplikacja tworzy Policy dla tworzonego POA (przykłady policies: thread policy, lifespan policy, object

uniquenes policy).

Aplikacja tworzy ‘child’ POA z root POA (za pomoc

ą

metody create_POA() ).

Tworzenie i aktywowanie servanta.

Aktywowanie POA Managera (POA Manager to obiekt który kontroluje stan POA, tzn. kontroluje czy

ż

adania klienta s

ą

kolejkowane, przetwarzane czy odrzucone).

Aktywowanie POA Managera nast

ę

puje poprzez wywołanie metody activate():

rootPOA.the_POAManager().activate();

Standard Corba

background image

Policy (Policies) to zbiór obiektów przypisanych root POA do kontroli zachowa

ń

POA i obiektów którymi POA zarz

ą

dza (POA

wygenerowane z POA rodzica nie dziedzicz

ą

Policy).

W wersji specyfikacji Corba 2.0 dodano protokół Internet inter-ORB Protocol (IIOP) wykorzystywany do przesyłania

widomo

ś

ci przez Internet.

Protokół IIOP jest implementacj

ą

dla TCP/IP abstrakcyjnego protokołu General inter-ORB protocol (GIOP),

tzn. IIOP wykorzystuje rodzin

ę

protokołów TCP/IP poni

ż

ej warsty Sesji modelu OSI.

Standard Corba

background image

Standard Corby obejmuje nast

ę

puj

ą

ce specyfikacje:

Specyfikacja brokera, Object Request Broker (ORB) Core Specification

Specyfikacja protokołów komunikacyjnych GIP, IIOP (Interoperbillity GIOP, IIOP Specification)

Specyfikacja j

ę

zyka IDL (Interface Definition Languae spcification)

Specyfikacje ‘mapowania’ j

ę

zyka IDL na j

ę

zyki programowania (np. C++, Java, Smaltalk, Ada, ...)

Specyfikacja interfejsów SII, DII (Static Interface Invocation, Dynamic Invocation Interface specification)

Specyfikacja interfejsów SSI, DSI (Static Skeleton Interface, Dynamic Skeleton Interface)

Specyfikacje POA (Portable Object Adapter specification)

Zbiór specyfikacji serwisów Corby.

Standard Corba

background image

Przykładowe narz

ę

dzia (kompilatory IDL, brokerzy) do budowy aplikacji w Corbie:

Progress® Orbacus, Progress® Orbix

http://web.progress.com/

Visibroker®

http://www.borland.com/

Zgodny ze specyfikacj

ą

Corba 3.0.

Interpeter IDL dla Java, C+, C#.

The Inter-Language Unification system (ILU) is a multi-language object interface system

ftp://ftp.parc.xerox.com/pub/ilu/ilu.html

omniORB,

http://omniorb.sourceforge.net/

MICO,

http://www.mico.org/

Brokerzy i narz

ę

dzia Corby


Wyszukiwarka

Podobne podstrony:
ProgrWspolbiezneWstep8 id 39746 Nieznany
cw 15 formularz id 121556 Nieznany
Cwiczenia nr 14,15 RPiS id 1246 Nieznany
III CZP 15 91 id 210268 Nieznany
Filtry akwarium budowa id 1710 Nieznany
cw 15 instrukcja id 121557 Nieznany
Kolokwium 15 listopada 2 id 240 Nieznany
e 08 X 15 01 id 148705 Nieznany
Mobbing (15 stron) id 304456 Nieznany
kpp 15 4b id 249449 Nieznany
Budowa id 94016 Nieznany (2)
Jak dawniej budowano id 223573 Nieznany
Pr dom nr 15 RPiS id 382116 Nieznany
ProgrWspolbiezneWstep8 id 39746 Nieznany
IMG 15 id 211090 Nieznany
36 15 id 36115 Nieznany (2)
budowa i dzialanie FDD id 94136 Nieznany (2)
IS wyklad 14 15 01 09 MDW id 22 Nieznany

więcej podobnych podstron