170 likes | 351 Views
Jordi Poch Chumillas David Rodriguez Pellicer Enric Agut Gil. Comparativa entre CORBA i Java RMI. Què és CORBA?. Acrònim de Common Object Request Broker Architecture Arquitectura que facilita el desenvolupament d'aplicacions distribuïdes (basada en el model client-servidor)
E N D
Jordi Poch Chumillas David Rodriguez Pellicer Enric Agut Gil Comparativa entre CORBA i Java RMI
Què és CORBA? • Acrònim de Common Object Request Broker Architecture • Arquitectura que facilita el desenvolupament d'aplicacions distribuïdes (basada en el model client-servidor) • Definit per l’OMG (Object Management Group) el 1991. Només defineix l’estàndard, però no du a terme cap implementació. • Vàries implementacions (algunes en codi obert): OpenORB, JavaORB, Visibroker, ORB Plus, ObjectBroker, etc. • Ja inclòs en el JDK 1.4
Característiques de CORBA (I) • Orientat a objectes • Arquitectura no lligada a cap llenguatge de programació ni sistema operatiu • Transparència de localització • Definició de classes mitjançant un llenguatge de definició d'interfícies (IDL) • Gran varietat de polítiques pel que fa als objectes que es creen (persistents / transitoris, activació automàtica / manual, etc.)
Característiques de CORBA (i II) • No diferenciació entre objectes locals / remots • Possibilitat d'implementar client i servidor en llenguatges diferents • Possibilitat d’afegir nous serveis segons les necessitats: servei de transaccions, de persistència, de concurrència, de seguretat, etc.
Aplicacions en CORBA (I) • Passos a seguir per crear una aplicació: • Escriure interfícies en IDL dels objectes remots • Compilar interfícies (idl2java, …) stubs, skeletons • Implementar client i servidor • Implementar els objectes remots definits a les interfícies • Distribuir el codi compilat a cadascun dels nodes (stubs al client, skeletons al servidor)
Aplicacions en CORBA (i II) • Mecanisme per utilitzar un servei: • Servidor crea els objectes remots i els posa (bind) al servei de noms • Servidor fa una sèrie de crides per esperar peticions dels clients • Client obté una referència a un objecte remot a partir del nom d'aquest, mitjançant una crida al servei de noms (resolve) • Client fa crides sobre l'objecte (realment sobre l’stub) com si aquest fos un objecte "normal“ (no remot) • Notem que d’alguna manera s’ha de saber on està el servei de noms (normalment via fitxer de configuració)
Exemple d’IDL module MExemple { interface Persona { typedef sequence<string> llistaCites; readonly attribute string nom; attribute short anyNaixement; attribute string domicili; void AfegirCita(in string hora); llistaCites LlistarCites(); }; };
Què és RMI? • Acrònim de Remote Method Invocation • Mecanisme que facilita el desenvolupament d'aplicacions distribuïdes (basada en el model client-servidor) • Creat i desenvolupat per Sun Microsystems • Forma part de la plataforma java des de la versió 1.1 (1996)
Característiques de RMI • Orientat a objectes • Integrat a qualsevol node on hi hagi una JVM • Definició dels objectes objectes remots mitjançant interfícies java • Usable només en aplicacions realitzades completament en Java • Permet escalabilitat, ja que el servidor pot utilitzar varis threads per tractar les peticions dels clients (multi-threaded) • Seguretat (usa els mecanismes de Java)
Aplicacions en RMI (I) • Passos a seguir per crear una aplicació: • Escriure interfícies en Java • Compilar interfícies (rmic) stubs, skeletons • Implementar client i servidor • Implementar les classes dels objectes definits a les interfícies • Distribuir el codi compilat a cadascun dels nodes (stubs al client, skeletons al servidor)
Aplicacions en RMI (i II) • Mecanisme per utilitzar un servei: • Servidor crea els objectes remots i els posa (bind) al servei de noms • Client obté un objecte a partir del nom d'aquest (lookup) • Client fa crides sobre l'objecte (realment sobre l’stub) com si aquest fos un objecte "normal" • També es necessari posar en marxa dos processos més: el servei de noms (rmiregistry) i l’activador d’objectes (rmid)
Exemple Interfície Java package Mexemple; import java.lang.*; import java.rmi.Remote; import java.rmi.RemoteException; public interface Persona extends Remote { String nom(); short anyNaixement(); void anyNaixement(short any); String domicili(); void domicili(String domicili); void AfegirCita(String hora); ArrayList LlistarCites(); }; };
Bibliografia • www.java.sun.com • www.omg.org • www.corba.org • “Advanced CORBA Programming with C++” de Michi Henning & Steve Vinoski