Net remoting
Download
1 / 18

.NET Remoting - PowerPoint PPT Presentation


  • 91 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' .NET Remoting' - claude


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Net remoting

.NET Remoting

Łukasz Zawadzki


Plan prezentacji
Plan prezentacji

  • Co to jest .NET Remoting

  • Definicja AppDomain

  • Typy zdalnych obiektów

  • Sposoby przekazywania obiektów(MBV i MBR)

  • Formatery serializacji

  • Dwa sposoby tworzenia aplikacji(konfigruacja z XML i konfiguracja z poziomu kodu)

  • Zarządzanie stanem zdalnego obiektu


Co to jest net remoting
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


Co to jest appdomain
Co to jest AppDomain??

  • Rodzaj abstrakcyjnego obiektu reprezentującego domenę aplikacji (zbiór procesów aplikacji)


Typy zdalnych obiekt w
Typy zdalnych obiektów

  • Singlecall

  • Singleton

  • COA( Client Activated Object)


Sposoby przekazywania obiekt w
Sposoby przekazywania obiektów

  • MBV( Marshal by value)

  • MBR( Marshal by reference)

  • serializable


Formatery serializacji
Formatery serializacji

  • Do czego służą formatery??

  • Interfejs IRemotingFormatter

  • Dwa rodzaje formaterów : SoapFormatter( oparty na Simple Object Access Protocol) i BinaryFormatter


Konfiguracja
Konfiguracja

  • Klasa obiektu zdalnego:

    namespace ServerClass

    { public class MainClass : System.MarshalByRefObject {  public int add(int a, int b)  {      return a+b;   } }

    }


Konfiguracja xml
Konfiguracja XML

  • Nazwa pliku konfiguracyjnego : „*.cfg”

  • Po stronie serwera :

    Config.cfg

    <configuration> <system.runtime.remoting>  <application>   <service>    <wellknown mode="SingleCall" objectUri="MyServer"       type="ServerClass.MainClass, ServerClass„/>   </service>   <channels>    <channel ref="tcp" port="8881"/>   </channels>  </application> </system.runtime.remoting>

    </configuration>


Konfiguracja xml1
Konfiguracja XML

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

    }


Konfiguracja xml2
Konfiguracja XML

  • Po stronie klienta

    <configuration> <system.runtime.remoting>  <application>   <channels>    <channel ref="tcp">      <clientProviders>       <formatter ref="binary"/>      </clientProviders>    </channel>   </channels>   <client>  <wellknown  url="tcp://localhost:8881/MyServer"   type="ServerClass.MainClass,  ServerClass"/>   </client>  </application> </system.runtime.remoting>

    </configuration>


Konfiguracja xml3
Konfiguracja XML

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

    }


Konfiguracja z poziomu kodu
Konfiguracja z poziomu kodu

  • Serwer:

    public static void Main()

    {  try  { int port = 8881;

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

    }


Konfiguracja z poziomu kodu1
Konfiguracja z poziomu kodu

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

    }


Zarz dzanie stanem
Zarządzanie stanem

  • InitialLeaseTime(czas przy inicjalizacji)

  • SponsorshipTimeout ( przedawnienie po nieudanym połączeniu)

  • RenewOnCallTime( o jaki czas przedłużamy życie obiektu przy każdym odwołaniu się do niego)


Przyk ad
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;

}


Inicjalizacja samodzielna
Inicjalizacja samodzielna

// kod już bezspośrednio po stronie klienta

ILease lease = (ILease)RemotingServices.GetLifetimeService(ZdalnyObiekt);

TimeSpan expireTime = lease.Renew(TimeSpan.FromSeconds(60));


Podsumowanie
Podsumowanie

  • Codeguru.pl

  • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconnetremotingoverview.asp


ad