.NET Remoting Łukasz Zawadzki.

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Programowanie Wizualne WYKŁAD 5
Programowanie obiektowe
Dzisiejszy wykład Wyjątki.
Klasy i obiekty.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Decyzje projektowe w .NET Framework
WEB SERVICE Stefan Rutkowski.
Sposoby implementacji asocjacji
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Nowa wersja C# Autor: Piotr Sobczak
Visual Studio Codename „Orcas”, LINQ
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 1.
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
.NET - możliwości Jarosław Balcer & Jan Góralski.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Internet Communication Engine
Tworzenie ASP.NET Web Form
Przetwarzanie rozproszone
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Gniazda komunikacji sieciowej w języku Java
Longhorn - Usługi terminalowe
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Paweł Fałat Katedra Informatyki Stosowanej
Język C# Copyright, 2004 © Adam Czajka.
Jakub Binkowski Visual C# MVP webEFS sp.j.. GET i POST.
Test Doubles Adam Gabryś , v1.1,
Integracja aplikacji Wykład 2
Programowanie urządzeń mobilnych – wykład IV
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tworzenie aplikacji mobilnych
Programowanie Windows na przykładzie C# część 1
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
Wykonał: Michał Nikołajuk
C# Cz.7 Refleksja, Atrybuty
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Internetowe surfowanie
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Technologie Programowania seminarium
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Język C# .NET Maria DEMS.
Programowanie sieciowe w Javie
Adam Ptaszek Krystian Formiński
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 +
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
1 Programowanie sieciowe Protokoły sieciowe, model warstwowy DOD, protokoły TCP i UDP, adresy IP, porty, gniazda, operacje na adresach - klasa InetAddress.
Kurs języka C++ – wykład 4 ( )
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Programowanie sieciowe w Javie Michał Kuciapski
Paweł Starzyk Obiektowe metody projektowania systemów
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Programowanie sieciowe w Javie RMI Wykład 11 mgr inż. Michał Misiak.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Programowanie Obiektowe – Wykład 6
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Windows Workflow Foundation
Aplikacje i usługi internetowe
Zapis prezentacji:

.NET Remoting Łukasz Zawadzki

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?? 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?? Rodzaj abstrakcyjnego obiektu reprezentującego domenę aplikacji (zbiór procesów aplikacji)

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

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

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

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

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 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 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 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 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 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 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 // 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 // kod już bezspośrednio po stronie klienta ILease lease = (ILease)RemotingServices.GetLifetimeService(ZdalnyObiekt); TimeSpan expireTime = lease.Renew(TimeSpan.FromSeconds(60));

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