Michał Jankowski. Remoting w.net 2.0

Podobne dokumenty
Co to jest.net Remoting?

Wykład 6 Dziedziczenie cd., pliki

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Systemy Rozproszone - Ćwiczenie 6

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Wywoływanie metod zdalnych

Aplikacje RMI

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie rozproszone w języku Java

Wywoływanie metod zdalnych

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Tworzenie i wykorzystanie usług sieciowych

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Platformy Programistyczne Zagadnienia sieciowe i wątki

Dostęp do komponentów EJB przez usługi Web Services

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Programowanie obiektowe

Tworzenie aplikacji rozproszonej w Sun RPC

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Aplikacje RMI Lab4

Zaawansowane aplikacje WWW - laboratorium

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Współbieżność w środowisku Java

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Aplikacje w środowisku Java

Java Developers Day. Implementacja ESB przy użyciu Mule. ESB Mule Obsługa zamówień DEMO

Serwery Statefull i Stateless

Laboratorium 10 - Web Services

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

1 Wprowadzenie do J2EE

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie w języku Java. Bazy danych SQLite w Javie

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Zaawansowane aplikacje internetowe - laboratorium

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Tworzenie i wykorzystanie usług

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Metody Metody, parametry, zwracanie wartości

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Java: interfejsy i klasy wewnętrzne

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

76.Struktura oprogramowania rozproszonego.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Wykład 5 Okna MDI i SDI, dziedziczenie

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Dokumentacja do API Javy.

Wykład 4: Klasy i Metody

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Aplikacje w środowisku Java

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server {

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

Programowanie 2. Język C++. Wykład 3.

KLASY, INTERFEJSY, ITP

Programowanie współbieżne i rozproszone

Wprowadzenie. Dariusz Wawrzyniak 1

1. CZYM JEST SERIALIZACJA

12. Wirtualne sieci prywatne (VPN)

Programowanie Komponentowe WebAPI

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Programowanie obiektowe

JAX-RS czyli REST w Javie. Adam Kędziora

1 Atrybuty i metody klasowe

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Obiekty w plikach wykonywalnych, marshaling

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Transkrypt:

Michał Jankowski Remoting w.net 2.0

Co to jest? Remoting jest zbiorem funkcji pozwalającym na komunikacje miedzy aplikacjami zarówno w obrębie jednego komputera jak i poprzez sieć Pozwala na komunikację za pomocą różnych sposobów Następna technologii DCOM Odpowiednik RMI z Java lub systemu przetwarzania rozproszonego COBRA

Przesyłanie wyników Przez referencje (ang. Marshal by reference - MBR) obiekty istnieją jedynie na serwerze i tylko tam wykonywane są wszystkie metody danej klasy. Podczas komunikacji przekazywana jest jedynie referencja do obiektu, a nie obiekt. Powoduje to, że klient nie zna implementacji metod serwera, a jedynie może uzyskać wynik jej wywołania. W celu skorzystania z tej opcji nasza klasa musi dziedziczyć z klasy MarshalByRefObject. Przez wartość (ang. Marshal by value MBV), klient posiada pełną informację na temat obiektu. Dodatkowo w tym przypadku musimy zapewnić możliwość zdalnego przekazywania obiektu przez medium komunikacyjne przedstawić obiekt zdalny do serializacji. W tym celu przed definicją klasy obiektu wstawiamy atrybut [Serializable]. Obiekt po przesłaniu jest wykorzystywany w kontekście lokalnym.

Typy obiektów ServerActivatedObjects SOA obiekty aktywowane przez serwer: SingleCall dla każdego wywołania metody na serwerze tworzona jest instancja klasy zdalnej, która istnieje tylko w czasie działania metody, a po jej zakończeniu jest niszczona (nie może przechowywać stanu, ale zapewnia łatwą skalowalność) Singleton dla każdej wywołanej metody serwer sprawdza czy istnieje już obiekt tej klasy i jeśli tak to korzysta z niego, a jeśli nie to go tworzy, a następnie wywołuje metodę na rzecz tego obiektu. Powoduje to, że serwer może przechować stan tego obiektu, a co za tym idzie obsłużyć kilku klientów w tym samym kontekście. ClientActivatedObjects COA obiekty aktywowane przez klienta.

Jak z tego korzystać klasa usługowa class Oblicz : MarshalByRefObject { } //Dodawanie dwoch liczb public double Dodaj( double a, double b) { return a + b; } //Odejmowanie liczby b od a public double Odejmij( double a, double b) { return a - b; } //Mnożenie dwóch liczb public double Mnoz( double a, double b) { return a * b; } //Dzielenie liczby a przez b, pomijam wyjątek dzielenia przez 0 public double Dziel( double a, double b) { return a / b; }

Serwer - konfiguracja <? xml version = " 1.0 " encoding = " utf-8 "?> < configuration > < system.runtime.remoting > < application > < channels > < channel ref = " http " port = " 5000 " /> </ channels > < service > < wellknown mode = " SingleCall " type = " Serwer.Oblicz,Serwer " objecturi = " Kalkulator " /> </ service > </ application > </ system.runtime.remoting > </ configuration >

Serwer - kod class ObliczSerwer { public static void Main() { //Konfiguruje serwer System.Runtime.Remoting.RemotingConfiguration.Configure(AppDoma in.currentdomain.setupinformation.configurationfile, false); //Czeka na naciśnięcie przycisku Console.WriteLine("Nacisnij przycisk w celu zakonczenia aplikacji"); Console.ReadLine(); } }

Klient poznajemy obiekt public interface IOblicz { double Dodaj(double a, double b); double Odejmij(double a, double b); double Mnoz(double a, double b); double Dziel(double a, double b); }

Klient komunikacja z serwerem using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Http; class ObliczKlient { } public static void Main() { //Definicja kanału HttpChannel chan = new HttpChannel(); //Rejestracja kanału ChannelServices.RegisterChannel(chan, false); //Tworzenie klasy pośredniczącej dla zdalnego obiektu IOblicz kalkulator = (IOblicz) Activator.GetObject(typeof(IOblicz), "http://localhost:5000/kalkulator"); Console.WriteLine("3.5*2.1="+kalkulator.Mnoz(3.5, 2.1)); }

Binarne przesyłanie danych < clientproviders > < formatter ref = " binary " /> </ clientproviders > //Definicja formatera BinaryClientFormatterSinkProvider formatter = new BinaryClientFormatterSinkProvider (); //Definicja kanału HttpChannel chan = new HttpChannel ( null, formatter, null ); //Rejestracja kanału ChannelServices.RegisterChannel(chan, false );

Zmiana protokłu < channels > < channel ref = " tcp " port = " 5000 " /> </ channels > TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan, false); ComplexNumber cn = new ComplexNumber(1.1,2.2); IComplexNumbersCalculator calculator = (IComplexNumbersCalculator) Activator.GetObject(typeof(IComplexNumbersCalculator), "tcp://localhost:801/complexnumberscalculator");

Szyfrowanie < channel ref = " tcp " port = " 5000 " secure = " true " protectionlevel = " EncryptAndSign " /> None występuje tylko uwierzytelnianie (Win 95 / 98 / ME) Sign dane są podpisywane, w celu zapewnienia spójności danych EncryptAndSign dane są kodowane i podpisywane w celu zapewnienia poufności i spójności danych. ChannelServices.RegisterChannel(chan, true );

Dziękuję za uwagę