Przetwarzanie rozproszone

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Usługi sieciowe Wykład 5 DHCP- debian
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Równoległość w środowisku rozproszonym
Mechanizmy pracy równoległej
Programowanie Wizualne WYKŁAD 5
Wzorce.
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
Systemy rozproszone W. Bartkiewicz
Przypisywanie adresów TCP/IP
Tworzenie portali z wykorzystaniem technologii Sun Java Enterprise Systems Joanna Kosińska
SQL Server Native XML Web Services
WEB SERVICE Stefan Rutkowski.
Rozszerzalność systemów rozproszonych
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Nguyen Hung Son Uniwersytet Warszawski
.NET - możliwości Jarosław Balcer & Jan Góralski.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Internet Communication Engine
Systemy rozproszone Komunikacja (I)
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Gniazda komunikacji sieciowej w języku Java
Longhorn - Usługi terminalowe
.NET Remoting Łukasz Zawadzki.
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Paweł Fałat Katedra Informatyki Stosowanej
Język Java Wielowątkowość.
Przegląd zagadnień Struktura sieci systemu Windows 2003
USŁUGA FTP 1. Definicja FTP. FTP (File Transfer Protocol, ang. protokół transmisji plików) jest protokołem typu klient-serwer, który umożliwia przesyłanie.
C# Windows Forms Zastosowania Informatyki Wykład 3
Jakub Binkowski Visual C# MVP webEFS sp.j.. GET i POST.
Test Doubles Adam Gabryś , v1.1,
Integracja aplikacji Wykład 2
Web Serwisy w praktyce Technologie internetowe ( )
Programowanie urządzeń mobilnych – wykład IV
Tworzenie aplikacji mobilnych
Programowanie Windows na przykładzie C# część 1
Programowanie obiektowe – zastosowanie języka Java SE
Wykonał: Michał Nikołajuk
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Programowanie sieciowe w Javie
OCPJP Inner classes.
Aplikacje TCP i UDP. Łukasz Zieliński
Autor: Marta Pelczar. PHP:  Najprostszą drogą, by uruchomić serwer internetowy na własnym domowym komputerze jest skorzystanie z programu XAMPP.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
1 Programowanie sieciowe Protokoły sieciowe, model warstwowy DOD, protokoły TCP i UDP, adresy IP, porty, gniazda, operacje na adresach - klasa InetAddress.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Konfiguracja VPN Serwera – Windows 7
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Paweł Starzyk Obiektowe metody projektowania systemów
XML w serwisach webowych. Zapotrzebowanie na serwisy XML.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.
Programowanie Obiektowe – Wykład 6
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Komponentowe systemy rozproszone
Wątki, programowanie współbieżne
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Podstawy sieci komputerowych
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
PGO - Projektowanie i implementacja pierwszych klas
Zapis prezentacji:

Przetwarzanie rozproszone Domeny Aplikacji ( AppDomain ) AppDomain A AppDomain B Pakiet A1 Pakiet B1 . . Pakiet Bm Pakiet An

tworzenie nowej domeny aplikacji // Ustawienie ApplicationBase na bieżący katalog AppDomainSetup info = new AppDomainSetup(); info.ApplicationBase = @"file:\\" + System.Environment.CurrentDirectory; // Utworzenie domeny aplikacji AppDomain dom = AppDomain.CreateDomain("RemoteDomain", null, info);

// Załadowanie pakietu Display // i utworzenie egzemplarza typu Display BindingFlags flags = (BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance); ObjectHandle objh = dom.CreateInstance ("Display", "Display.Disp", // plik, klasa false, flags, null, null, null, null, null); // Rozpakowanie obiektu Object obj = objh.Unwrap(); // Rzutowanie do aktualnego typu Disp h = (Disp)obj; // Wywołanie metody h.Show("Dobry wieczór!"); Domain

AppDomain A AppDomain B Wątek AP1 Wątek AP2 Wątek BP1 Aplikacja rozproszona AppDomain A AppDomain B Dane wspólne Dane wspólne Wątek AP1 Stos lokalny Pamięć lokalna Wątek AP2 Stos lokalny Pamięć lokalna Wątek BP1 Stos lokalny Pamięć lokalna

WCF Windows Communication Foundation Technologie wymiany danych pomiędzy aplikacjami IPC ( Inter Process Communication, Named Pipes ) DCOM, COM+ ( Distributed Common Object Model ) MSMQ ( Microsoft Message Queuing ) NET . Remoting XML Web Services NET.Networking (gniazda, klasy: transportowe, protokółów) Peer – to – Peer WCF Windows Communication Foundation

W C F : Windows Communication Foundation udostępnianie usług (operacji), kolekcji danych, komputer lokalny, sieć lokalna, internet zarządzanie usługodawcą: system Windows IIS : Internet Information Services WAS : Windows Activation Service (Win 7, WS) AppFabric (Windows Server) Juval Löwy, Programowanie usług WCF, Helion – O'Reilly, 2012

Przeźroczysty zastępca SingleCall, Singleton, ClientActivated NET . Remoting Obiekt zdalny Klient F1(x) F1(x) Przeźroczysty zastępca Serwer Rzeczywisty zastępca Kanał : HTTP, TCP { BIN, SOAP } pliki konfiguracyjne, konfiguracja programowa

W C F : Windows Communication Foundation Klient (client) Nosiciel (host) Zastępca (proxy) Kontrakt (contract) Plik konfiguracyjny (configuration file) Plik konfiguracyjny (configuration file)

ABC technologii WCF A : adres ( address ) - lokalizacja usługi, kolekcji danych B : powiązanie ( binding ) - protokóły, kodowanie, transport C : kontrakt ( contract ) - definicje udostępnianych metod, kolekcji danych A + B + C  punkt końcowy ( endpoint )

Adresy ( lokalizacja kontraktu ) składnia adresu [ adres_bazowy ] / [ opcjonalny URI ] adres bazowy [ rodzaj_transportu ] [ komputer lub domena ] [ : opcjonalny numer portu ]

Rodzaje adresów adresy TCP net.tcp//localhost:8004/NowaUsługa net.tcp//150.254.3.2:7000/DalekaUsługa adresy HTTP http://localhost // port domyślny 80 http://libra:500/Matematyka adresy IPC net.pipe://localhost/DużaRura adresy MSMQ net.msmq://localhost/Kol_A // publiczna net.msmq://localhost/private/Kol_B // prywatna

Powiązania ( protokół transportowy / kodowanie ) powiązanie podstawowe ( interoperacyjne ) HTTP, HTTPS / tekstowe, MTOM ( SOAP Message Transmission Optimization Mechanism ) basicHttpBinding powiązanie TCP ( intranet, tylko WCF ) TCP / binarne ( Microsoft specific ) netTcpBinding

powiązanie IPC ( ten sam komputer ) IPC / binarne ( Microsoft specific ) netNamedPipeBinding powiązanie WS ( interoperacyjne WS-*) HTTP, HTTPS / tekstowe, MTOM wsHttpBinding powiązanie MSMQ MSMQ / binarne ( Microsoft specific ) netMsmqBinding

Rodzaje kontraktów kontrakt danych kontrakt komunikatów kontrakt usług kontrakt danych kontrakt komunikatów kontrakt błędów

Kontrakt usług interfejsy realizowane przez dedykowane klasy biblioteka .dll udostępniająca : interfejsy realizowane przez dedykowane klasy metody definiowane w klasach

// kontrakt - udostępnianie interfejsu using System.ServiceModel; namespace Wyrocznia { [ServiceContract] // ew. nazwa usługi, domena public interface IPorada [OperationContract] string Odpowiedz (string pytanie); } public class Babka : IPorada { public string Odpowiedz (string pytanie) { return " Tak! "; } } } // .dll

// udostępnianie metod [ServiceContract] public class WhereWhen { [OperationContract] public string Where ( ) { return " Miami "; } public string When ( ) { return " Tomorrow "; } }

using System.ServiceModel; // nosiciel using Wyrocznia; // .dll w katalogu domyślnym namespace NosicielWyroczni { class Nosiciel static void Main(string [ ] args) { using (ServiceHost sHost = new ServiceHost ( typeof ( Babka ))) { sHost.Open(); Console.WriteLine("Nosiciel jest czynny."); Console.WriteLine("Naciśnij Enter aby zakończyć..."); Console.ReadLine( ); } } } // aplikacja konsolowa

// klient // uruchomić nosiciela // AddServiceReference  Wróżka, PoradaClient ( usługa, obiekt interfejsu ) // dodać referencję usługi Wróżka using KlientWyroczni.Wróżka; namespace KlientWyroczni { class Program { static void Main ( string [ ] args ) { using ( PoradaClient babka = new PoradaClient ( )) string odp = babka.Odpowiedz ( " Jak żyć ? " ); Console.WriteLine( "Wyrocznia powiedziała : " + odp ); } } } // można użyć svcutil.exe (NET.SDK)

Plik konfiguracyjny nosiciela <?xml version="1.0"?> <configuration> <system.serviceModel> <services> <service name="Wyrocznia.Babka" behaviorConfiguration="WyroczniaMEXBehavior"> <endpoint address="" binding="basicHttpBinding" contract="Wyrocznia.IPorada"/> <!-- Enable the MEX endpoint --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

<!-- Add this so MEX knows the address of service --> <host> <baseAddresses> <add baseAddress="http://localhost:8090/Babka"/> </baseAddresses> </host> </service></services> <!-- A behavior definition for MEX --> <behaviors> <serviceBehaviors> <behavior name="WyroczniaMEXBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors></behaviors></system.serviceModel> </configuration> Wyrocznia HTTP

Powiązanie TCP Wyrocznia TCP // plik konfiguracyjny nosiciela <service name="Wyrocznia.Babka" behaviorConfiguration="WyroczniaMEXBehavior"> <endpoint address="" binding="netTcpBinding" contract="Wyrocznia.IPorada"/> <!-- Enable the MEX endpoint --> <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:8090/Babka"/> <add baseAddress="http://localhost:8080/Babka"/> </baseAddresses> </host> </service> Wyrocznia TCP

Powiązanie IPC Wyrocznia IPC // plik konfiguracyjny nosiciela <service name="Wyrocznia.Babka" behaviorConfiguration="WyroczniaMEXBehavior"> <endpoint address="" binding="netNamedPipeBinding" contract="Wyrocznia.IPorada"/> <!-- Enable the MEX endpoint --> <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="net.pipe://localhost"/> <add baseAddress="http://localhost:8080/Babka"/> </baseAddresses> </host> </service> Wyrocznia IPC

Asynchroniczne wywołanie usługi kontrakt usługi, nosiciel : bez zmian uruchomić nosiciela po dokonaniu połączenia z nosicielem w oknie AddService Reference wybrać Advanced i zaznaczyć Generate asynchronous operations w programie klienta:

Wyrocznia ASY using (PoradaClient proxy = new PoradaClient()) { proxy.Open(); IAsyncResult result = proxy.BeginOdpowiedz( pytanie, // argument funkcji Odpowiedz // funkcja zwrotna ar => { Console.WriteLine("Wróżka odpowiedziała : " + proxy.EndOdpowiedz(ar)); }, null); // asyncState while (!result.IsCompleted) Thread.Sleep(100); } Wyrocznia ASY

// w programie usługi .dll Kontrakty danych // w programie usługi .dll [ServiceContract] public interface IUniversity { [OperationContract] Student GetStudent ( int album ); }

[DataContract] public class Student { [DataMember] public string ForeName; public string LastName; public int Album; public double Score; }

DataContract // nosiciel bez zmian ( .cs i .config ) // // klient  dodawanie referencji serwisu bez zmian // program : using UnivClient.University; UniversityClient szukacz = new UniversityClient(); string pytanie; UnivClient.University.Student st; pytanie = Console.ReadLine(); st = szukacz.GetStudent( int.Parse ( pyt )); DataContract

ABC definiowane programowo kontrakt .dll bez zmian nosiciel using System.ServiceModel; using Wyrocznia; namespace Nosiciel { class Program { static void Main(string[] args) { ServiceHost serviceHost = new ServiceHost(typeof(Babka)); BasicHttpBinding basicBinding = new BasicHttpBinding(); serviceHost.AddServiceEndpoint(typeof(IPorada), basicBinding, "http://localhost:8091/Babka"); serviceHost.Open(); }}}

klient Prog // AddServiceReference jak poprzednio using System.ServiceModel; using Klient.Wróżka; namespace Klient { class Program { static void Main(string[] args) { BasicHttpBinding basicBinding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress("http://localhost:8091/Babka"); PoradaClient pytia = new PoradaClient(basicBinding, address); ...... } } } Prog

Usługi współużytkowane kontrakt .dll namespace Liczarka { [ServiceContract] public interface IDodawanie [OperationContract] int Dodaj(int start); }

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class Licznik : IDodawanie { static int Obiekty = 0; int Ile = 0; public Licznik() { ++Obiekty; } public int Dodaj(int kto) return kto + ++Ile * 10 + Obiekty * 1000; }}

nosiciel static void Main(string[] args) { Console.WriteLine("***** Nosiciel Single *****"); Licznik lili = new Licznik(); ServiceHost serviceHost = new ServiceHost(lili); // Open the host and start listening. serviceHost.Open(); }

klient Single DodawanieClient licz = new DodawanieClient(); int odp, start = 3; Console.WriteLine("Dodaj 1 ... "); Console.ReadLine(); odp = licz.Dodaj(kto); Console.WriteLine("Kto = {0}, Licznik = {1}, Obiekty = {2}", (odp % 10).ToString(), (odp % 1000 / 10).ToString(), (odp / 1000).ToString() ); Single

Wydajność kanałów

TimePerf