Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Przetwarzanie rozproszone

Podobne prezentacje


Prezentacja na temat: "Przetwarzanie rozproszone"— Zapis prezentacji:

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

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

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

4 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

5 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

6 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

7 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

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

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

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

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

12 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

13 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

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

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

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

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

18 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

19 // 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)

20 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"/>

21 <!-- Add this so MEX knows the address of service -->
<host> <baseAddresses> <add baseAddress=" </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

22 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=" </baseAddresses> </host> </service> Wyrocznia TCP

23 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=" </baseAddresses> </host> </service> Wyrocznia IPC

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

25 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

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

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

28 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

29 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, " serviceHost.Open(); }}}

30 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(" PoradaClient pytia = new PoradaClient(basicBinding, address); } } } Prog

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

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

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

34 klient Single DodawanieClient licz = new DodawanieClient();
int odp, start = 3; Console.WriteLine("Dodaj "); 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

35 Wydajność kanałów

36 TimePerf


Pobierz ppt "Przetwarzanie rozproszone"

Podobne prezentacje


Reklamy Google