Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Łukasz Zawadzki.NET Remoting. Plan prezentacji Co to jest.NET Remoting Co to jest.NET Remoting Definicja AppDomain Definicja AppDomain Typy zdalnych obiektów.

Podobne prezentacje


Prezentacja na temat: "Łukasz Zawadzki.NET Remoting. Plan prezentacji Co to jest.NET Remoting Co to jest.NET Remoting Definicja AppDomain Definicja AppDomain Typy zdalnych obiektów."— Zapis prezentacji:

1 Łukasz Zawadzki.NET Remoting

2 Plan prezentacji Co to jest.NET Remoting Co to jest.NET Remoting Definicja AppDomain Definicja AppDomain Typy zdalnych obiektów Typy zdalnych obiektów Sposoby przekazywania obiektów(MBV i MBR) Sposoby przekazywania obiektów(MBV i MBR) Formatery serializacji Formatery serializacji Dwa sposoby tworzenia aplikacji(konfigruacja z XML i konfiguracja z poziomu kodu) Dwa sposoby tworzenia aplikacji(konfigruacja z XML i konfiguracja z poziomu kodu) Zarządzanie stanem zdalnego obiektu Zarządzanie stanem zdalnego obiektu

3 Co to jest.NET Remoting?? Sposób zdalnego wywoływania metod i dostępu do obiektów znajdujących się w różnych AppDomain, procesach, komputerach Sposób zdalnego wywoływania metod i dostępu do obiektów znajdujących się w różnych AppDomain, procesach, komputerach

4 Co to jest AppDomain?? Rodzaj abstrakcyjnego obiektu reprezentującego domenę aplikacji (zbiór procesów aplikacji) Rodzaj abstrakcyjnego obiektu reprezentującego domenę aplikacji (zbiór procesów aplikacji)

5 Typy zdalnych obiektów Singlecall Singlecall Singleton Singleton COA( Client Activated Object) COA( Client Activated Object)

6 Sposoby przekazywania obiektów MBV( Marshal by value) MBV( Marshal by value) MBR( Marshal by reference) MBR( Marshal by reference) serializable serializable

7 Formatery serializacji Do czego służą formatery?? Do czego służą formatery?? Interfejs IRemotingFormatter Interfejs IRemotingFormatter Dwa rodzaje formaterów : SoapFormatter( oparty na Simple Object Access Protocol) i BinaryFormatter Dwa rodzaje formaterów : SoapFormatter( oparty na Simple Object Access Protocol) i BinaryFormatter

8 Konfiguracja Klasa obiektu zdalnego: Klasa obiektu zdalnego: namespace ServerClass { public class MainClass : System.MarshalByRefObject { public int add(int a, int b) { return a+b; } } }

9 Konfiguracja XML Nazwa pliku konfiguracyjnego : *.cfg Nazwa pliku konfiguracyjnego : *.cfg Po stronie serwera : Po stronie serwera :Config.cfg

10 Konfiguracja XML Kod aplikacji serwera: Kod aplikacji serwera: public static void Main() { try { RemotingConfiguration.Configure("C:\\config.cfg"); Console.ReadLine(); } catch(System.Runtime.Remoting.RemotingException e) { Console.WriteLine(e.StackTrace); Console.WriteLine("WYJATEK!!!"); Console.ReadLine(); } }

11 Konfiguracja XML Po stronie klienta Po stronie klienta

12 Konfiguracja XML Kod aplikacji klienckiej: Kod aplikacji klienckiej: static void Main(string[] args) { //konfiguracja klienta z pliku c:\client.cfg RemotingConfiguration.Configure("C:\\client.cfg"); int a, b, c; a=3; b=4; //pośrednik reprezentujący obiekt serwerowy ServerClass.MainClass add=new ServerClass.MainClass(); c=add.add(a, b); Console.WriteLine(c); }

13 Konfiguracja z poziomu kodu Serwer: Serwer: public static void Main() { try { int port = 8881; TcpChannel chnl = new TcpChannel(port); ChannelServices.RegisterChannel(chnl); RemotingConfiguration.RegisterWellKnownServiceType( typeof(MainClass), MyServer", WellKnownObjectMode.SingleCall); TcpChannel chnl = new TcpChannel(port); ChannelServices.RegisterChannel(chnl); RemotingConfiguration.RegisterWellKnownServiceType( typeof(MainClass), MyServer", WellKnownObjectMode.SingleCall); Console.ReadLine(); } catch(System.Runtime.Remoting.RemotingException e) { Console.WriteLine(e.StackTrace); Console.WriteLine("WYJATEK!!!"); Console.ReadLine(); } Console.ReadLine(); } catch(System.Runtime.Remoting.RemotingException e) { Console.WriteLine(e.StackTrace); Console.WriteLine("WYJATEK!!!"); Console.ReadLine(); }}

14 Konfiguracja z poziomu kodu Klient: Klient: static void Main(string[] args) { MainClass mk = (MainClass) Activator.GetObject( typeof(MainClass), tcp://host:port/MyServer"); "); int a, b, c; a=3; b=4; c= mk.add(a, b); Console.WriteLine(c); }

15 Zarządzanie stanem InitialLeaseTime(czas przy inicjalizacji) InitialLeaseTime(czas przy inicjalizacji) SponsorshipTimeout ( przedawnienie po nieudanym połączeniu) SponsorshipTimeout ( przedawnienie po nieudanym połączeniu) RenewOnCallTime( o jaki czas przedłużamy życie obiektu przy każdym odwołaniu się do niego) RenewOnCallTime( o jaki czas przedłużamy życie obiektu przy każdym odwołaniu się do niego)

16 Przykład // metoda wywoływana na rzecz zdalnego obiektu do inicjalizacji charakterystyk czasowych jego życia public override object InitializeLifetimeService() { ILease lease = (ILease)base.InitializeLifetimeService(); if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.FromMinutes(1); lease.SponsorshipTimeout =TimeSpan.FromMinutes(2); lease.RenewOnCallTime = TimeSpan.FromSeconds(2); } return lease; return lease;}

17 Inicjalizacja samodzielna // kod już bezspośrednio po stronie klienta ILease lease = (ILease)RemotingServices.GetLifetimeService(ZdalnyObiekt); TimeSpan expireTime = lease.Renew(TimeSpan.FromSeconds(60));

18 Podsumowanie Codeguru.pl Codeguru.pl brary/en- us/cpguide/html/cpconnetremotingoverview.asp brary/en- us/cpguide/html/cpconnetremotingoverview.asp


Pobierz ppt "Łukasz Zawadzki.NET Remoting. Plan prezentacji Co to jest.NET Remoting Co to jest.NET Remoting Definicja AppDomain Definicja AppDomain Typy zdalnych obiektów."

Podobne prezentacje


Reklamy Google