Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Przetwarzanie rozproszone Domeny Aplikacji ( AppDomain ) AppDomain A Pakiet A1 Pakiet An...... AppDomain B Pakiet B1 Pakiet Bm......"— Zapis prezentacji:

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

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 Aplikacja rozproszona AppDomain AAppDomain B Wątek AP1 Stos lokalny Pamięć lokalna Wątek AP2 Stos lokalny Pamięć lokalna Wątek BP1 Stos lokalny Pamięć lokalna Dane wspólne

5 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 F1(x) Rzeczywisty zastępca Kanał : HTTP, TCP { BIN, SOAP } Serwer Klient Obiekt zdalny F1(x) NET. Remoting SingleCall, Singleton, ClientActivated pliki konfiguracyjne, konfiguracja programowa

8 W C F : Windows Communication Foundation Klient (client) Zastępca (proxy) Nosiciel (host) 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 usług kontrakt danych kontrakt komunikatów kontrakt błędów

15 Kontrakt usług 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 "; } [OperationContract] 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

21 Wyrocznia HTTP

22 Powiązanie TCP // plik konfiguracyjny nosiciela Wyrocznia TCP

23 Powiązanie IPC // plik konfiguracyjny nosiciela 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 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 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; [DataMember] public string LastName; [DataMember] public int Album; public double Score; }

28 // 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, "http://localhost:8091/Babka"); serviceHost.Open(); }}}

30 klient // 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

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

35 Wydajność kanałów

36 TimePerf


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

Podobne prezentacje


Reklamy Google