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

Podobne dokumenty
Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

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

Common Object Request Broker Architecture (CORBA)

Programowanie współbieżne i rozproszone

Komunikacja i wymiana danych

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

Aplikacje RMI

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

Programowanie obiektowe

Wywoływanie metod zdalnych

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Wywoływanie metod zdalnych

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

Programowanie Komponentowe WebAPI

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

1 Wprowadzenie do J2EE

76.Struktura oprogramowania rozproszonego.

Simple Object Access Protocol

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

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

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

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Wybrane działy Informatyki Stosowanej

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

Interfejsy w Javie. Przykład zastosowania interfejsów:

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

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Podejście obiektowe do budowy systemów rozproszonych

Microsoft Interface Definition Language

Tworzenie i wykorzystanie usług sieciowych

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Aplikacja Sieciowa wątki po stronie klienta

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Aplikacje RMI Lab4

Komunikator internetowy w C#

Klient-Serwer Komunikacja przy pomocy gniazd

Programowanie komponentowe

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

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

Programowanie rozproszone w języku Java

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Tworzenie aplikacji rozproszonej w Sun RPC

Ustawienia Zabezpieczeń

Monitorowanie Sieci nonblocking content packet filtering

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

Obiekty w plikach wykonywalnych, marshaling

Programowanie współbieżne i rozproszone

Programowanie obiektowe zastosowanie języka Java SE

Technologie COM i ActiveX COM - Component Object Model

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Wprowadzenie. Dariusz Wawrzyniak 1

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

Wybrane działy Informatyki Stosowanej

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

ActiveX Data Objects (ADO) dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Wykład 6 Dziedziczenie cd., pliki

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

Zaawansowane narzędzia programowania rozproszonego

Programowanie sieciowe

Zaawansowany kurs języka Python

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

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

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Middleware wprowadzenie października 2010

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Wywoływanie procedur zdalnych

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

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

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

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

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Systemy Rozproszone Technologia ICE

Część I -ebxml. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Transkrypt:

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

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.

Co to jest COM+? COM+ jest rozszerzeniem technologii komponentowej COM, 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. 3

Co to jest COM+? 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 Distributed Component Object Model (DCOM)? 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. Podstawowe pojęcia technologii COM/DCOM: klient serwer - program który wywołuje metody na serwerze COM/DCOM. 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? 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? 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ę typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[8]; } GUID;

Co to jest Distributed Component Object Model? Do identyfikacji klas i interfejsów stosuje się róŝ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? Komponenty biorące udział w komunikacji między klientem a serwerem DCOM. Komponenty DCOM do komunikacji wykorzystują protokół RPC (Remote Procedure Calls). Komponenty COM do komunikacji wykorzystują protokół LPC (Local Procedure Calls). 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().

Co to jest Java RMI? Java RMI jest technologią pozwalającą na budowę aplikacji rozproszonych. Technologia Java RMI została opracowana tak, aby budowa aplikacji była podobna do budowy aplikacji niesieciowych, posługiwania się lokalnymi obiektami Javy, obowiązywała ta sama składnia i semantyka. Istotą technologii RMI jest to, Ŝe interfejsy określają zachowanie obiektów a klasy definiują implementację. 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? 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 na hoście klienta.

Co to jest Java RMI? 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 klineta, 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? 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 obsługi komunikacji między stubem a obiektami serwera. Klient odnajduje uslugi (serwer) za pomocą standardowych usług katalogowych lub usług - Java Naming and Directory Interface. - RMI Registry, port 1099.

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.

Co to jest WinSock? 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? 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.

1. Instrukcje preprocesorowe: Co to jest WinSock? Aplikacja UdpEchoClient. 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 #define DEFAULT_RECIPIENT "10.60.17.109" 2. Funkcja main(). Definiowanie i inicjowanie zmiennych i obiektów. 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

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; closesocket(s); delete sendbuf; WSACleanup();

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 2. Funkcja main(). Definiowanie i inicjowanie zmiennych i obiektów. 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

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

Programowanie aplikacji sieciowych w.net. WinSock Obszar nazw System.Net.Sockets Klasa UdpClient, IPEndPoint Obiekt klasy UdpClient dostraczają usług w protokole User Datagram Protocol. Obiekt klasy IPEndPoint reperezentuje odbiorcę danych poprzez jego adres IP i numer portu.

.Net. WinSock. Aplikacja UdpEchoClient. 1. Przypisanie wartości parametrom początkowym. Parametry: ServerName, ServerPort, SendMessage. 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 2. Utworzenie obiektu Client. UdpClient client = new UdpClient(); 3. Wysłanie wiadomosci Ŝądanie Echa. client.send(sendpacket, sendpacket.length, server, servport); 4. Utworzenie obiektu IPEndPoint. IPEndPoint remoteipendpoint = new IPEndPoint(IPAddress.Any, 0);

5. Odebranie odpowiedzi Echa..Net. WinSock. Aplikacja UdpEchoClient. byte[] rcvpacket = client.receive(ref remoteipendpoint); 6. Zamknięcie obiektu Client. client.close();

1. Przypisanie wartości parametrom początkowym..net. WinSock. Aplikacja UdpEchoServer. int servport = 7; UdpClient client = null; 2. Utworzenie obiektu client. client = new UdpClient(servPort); 3. Utworzenie obiektu IPEndPoint. IPEndPoint remoteipendpoint = new IPEndPoint(IPAddress.Any, 0); for (;;) // serwer odbiera datagramy w nieskończonej pętli. 4. Odebranie wiadomości Ŝądanie Echa. byte[] bytebuffer = client.receive(ref remoteipendpoint); 5. Wysłanie odpowiedzi Echa (wysłanie wiadomości Echo replay). client.send(bytebuffer, bytebuffer.length, remoteipendpoint); Console.WriteLine("echoed {0} bytes.", bytebuffer.length);

Co to jest ADO, ActiveX Data Objects? 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 ActiveX Data Objects? 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: ProgID set objcommand=server.createobject("adodb.command") Obiekt Connection obiekt słuŝy do budowy i otwarcia połączenia z baza danych. Przykład uŝycia: ProgID set objconnection=server.createobject("adodb.connection")

Co to jest ActiveX Data Objects? Obiekt Error - obiekt zawiera dane o błędach powstałych przy wykonaniu pojedynczych operacji na bazie danych. Przykład uŝycia: 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")

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

Co to jest ActiveX Data Objects? Obiekt Record (ADO ver. 2.5) obiekt słuŝy do przechowania wiersza danych z Recordsetu, katalogu lub pliku. Przykład uŝycia: 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: set objrecordset=server.createobject("adodb.recordset") Obiekt Stream (ADO version 2.5) obiekt stosowany do czytania, zapisywania, zarządzania strumieniem danych.

Co to jest ActiveX Data Objects? 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ŝyytkownik 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 kurosora 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? 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? 1-2. Utworzenie i otwarcie połączenia z bazą danych. Baza northwind.mdb. set conn=server.createobject("adodb.connection") conn.provider="microsoft.jet.oledb.4.0" conn.open "c:/webdata/northwind.mdb Utworzenie i otwarcie połączenia z bazą danych za pomocą komponentu ODBC. set conn=server.createobject("adodb.connection") conn.open "northwind" 3. Utworzenie recordseta. set rs=server.createobject("adodb.recordset")

Co to jest ActiveX Data Objects? 4-5. Otwarcie i pobranie danych do recordseta. Czytanie dnych z rekordseta. rs.open "Select * from Customers", conn for each x in rs.fields response.write(x.name) response.write(" = ") response.write(x.value) next 6. Zamknięcie recordseta. rs.close 7. Zamknięcie połączenia. conn.close

Co to jest ASP? 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? Skrypty w plikach ASP zawarte są między znakami <% a %>. Przykład pliku *.asp. <html> <body> <% response.write("hello World!") %> </body> </html>

Co to jest ASP? 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. <%@ language="javascript"%> <html> <body> <% Response.Write("Hello World!") %> </body> </html>

Co to jest ASP? Przykład: strona www wykonana w ASP. <html> <body> <% dim h h=hour(now()) response.write("<p>" & now()) response.write("</p>") </body> </html> If h<12 then response.write("jest przed południem") else response.write("jest po południu!") end if %>

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 wspamogania wymiany danych między węzłami w sieciach komputerowych. System aplikacyjny usługi WWW posiada interfejs zaprojekowany 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)

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 foramcie 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 zawierac 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/ <soap:envelope> <soap:body> <NazwaTagu1> <Element1> </Element1> </NazwaTagu1> </soap:body> </soap:envelope>

Web Services Description Language 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. Przyklad: 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>

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ą biblitekę 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)); } }

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"; }

Plik silnia.cs /// <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); }

Plik silnia.cs /// <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); }

Plik silnia.cs /// <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])); } }

Usługa silnia 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

Usługa silnia

Plik silnia.asmx Usługa silnia

Standard Corba 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.