OO-Middleware. Objektorienterad middleware

Relevanta dokument
Objektorienterad middleware. OO-Middleware. Några centrala begrepp. Komponent vs objekt


Johan.Sall.2535 Thomas.Wahlsten Distribuerade System HT 2002

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

Datasäkerhet och integritet

A metadata registry for Japanese construction field

Isolda Purchase - EDI

Beijer Electronics AB 2000, MA00336A,

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Support Manual HoistLocatel Electronic Locks

Kursplan. MT1051 3D CAD Grundläggande. 7,5 högskolepoäng, Grundnivå 1. 3D-CAD Basic Course

Swedish adaptation of ISO TC 211 Quality principles. Erik Stenborg

2.1 Installation of driver using Internet Installation of driver from disk... 3

Alias 1.0 Rollbaserad inloggning

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

Introduktion till Entity Framework och LINQ. Källa och läs mer

Swedish National Data Service

Distribuerade affärssystem

SVENSK STANDARD SS :2010

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Surfaces for sports areas Determination of vertical deformation. Golvmaterial Sportbeläggningar Bestämning av vertikal deformation

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Styrteknik: Binära tal, talsystem och koder D3:1

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

OFTP2: Secure transfer over the Internet

Distribuerade system. CORBA eller RMI

Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH

Distribuerade System, HT03

IPv6 i Mobilnät. Mattias Karlsson. mattias.karlsson@telenor.com

Rosetta. Ido Peled. A Digital Preservation System. December Rosetta Product Manager

SWESIAQ Swedish Chapter of International Society of Indoor Air Quality and Climate

Flytta din affär till molnet


Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Taking Flight! Migrating to SAS 9.2!

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Användarhandbok. MHL to HDMI Adapter IM750

Support for Artist Residencies

Health café. Self help groups. Learning café. Focus on support to people with chronic diseases and their families

Byggdokument Angivning av status. Construction documents Indication of status SWEDISH STANDARDS INSTITUTE

Web Services. Cognitude 1

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

PROFINET MELLAN EL6631 OCH EK9300

Introduktion ICAO-EASA.

Introduction to the Semantic Web. Eva Blomqvist

Kursplan. IK1004 Java - Grafiska användargränssnitt med Swing. 7,5 högskolepoäng, Grundnivå 1. Java - GUI Programming with Swing - Undergraduate Level

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

The present situation on the application of ICT in precision agriculture in Sweden

Creo Customization. Lars Björs

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

icore Solutions. All Rights Reserved.

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

LARS. Ett e-bokningssystem för skoldatorer.

Föreläsning 8. Designmönster

Hur integrera Active Directory och DNS? Rolf Åberg, Simplex System

This work by. Fredrik Wendt. is licensed under a. Creative Commons

Ren Katt. Författare Deepa Balsavar Illustratör Kanchan Bannerjee. Översatt av Bokkok.se

Modern webbutveckling. av Robert Welin-Berger

Enterprise App Store. Sammi Khayer. Igor Stevstedt. Konsultchef mobila lösningar. Teknisk Lead mobila lösningar

Preschool Kindergarten

TRENDERNA SOM FORMAR DIN VERKLIGHET 2014 ÅRETS IT AVDELNING

Sri Lanka Association for Artificial Intelligence

Course syllabus 1(7) School of Management and Economics. FEN305 Reg.No. EHVc 2005:6 Date of decision Course Code. Företag och Marknad I

Förändrade förväntningar

Application Note SW

CM FORUM. Introduktion till. Configuration Management (CM) / Konfigurationsledning. Tobias Ljungkvist

LEX INSTRUKTION REPLIKERING UPPGRADERING

Byggritningar Ritsätt Fästelement. Construction drawings Representation of fasteners SWEDISH STANDARDS INSTITUTE

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Flytta din affär till molnet

Voice over IP / SIP. Switching Costs SIP. Motivation for VoIP. Internet Telephony as PBX replacement. Internet Telephony Modes.

The Swedish National Patient Overview (NPO)

William J. Clinton Foundation Insamlingsstiftelse REDOGÖRELSE FÖR EFTERLEVNAD STATEMENT OF COMPLIANCE

endast har ett korrekt alternativ. Om

The GEO Life Region. Roland Norgren - Process Manager R&I. Creating the tools for the Healthy and Wellbeing Life.

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Om oss DET PERFEKTA KOMPLEMENTET THE PERFECT COMPLETION 04 EN BINZ ÄR PRECIS SÅ BRA SOM DU FÖRVÄNTAR DIG A BINZ IS JUST AS GOOD AS YOU THINK 05

School of Management and Economics Reg. No. EHV 2008/245/514 COURSE SYLLABUS. Business and Market I. Business Administration.

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Teknisk rapport SIS-TR 18:2007 Publicerad/Published: Utgåva/Edition: 1 Språk/Language: svenska/swedish ICS: ;

HANTERING AV UPS CX

School of Management and Economics Reg. No. EHV 2008/220/514 COURSE SYLLABUS. Fundamentals of Business Administration: Management Accounting

Strategy for development of car clubs in Gothenburg. Anette Thorén

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Stad + Data = Makt. Kart/GIS-dag SamGIS Skåne 6 december 2017

Biblioteket.se. A library project, not a web project. Daniel Andersson. Biblioteket.se. New Communication Channels in Libraries Budapest Nov 19, 2007

ISTQB Testarens ledstjärna

F1 SBS EC Utbildning AB

Transkript:

OO-Middleware Datakom 2 DAVC03 Stefan Alfredsson (material inspirerat av Annika Wennström, Sören Torstensson) Objektorienterad middleware Utökad mekanism för objekt Objekt består av data (tillstånd) och metoder Metoder åtkomliga via gränssnitt (interface) Anropa metoder på en annan maskin (remote method invocation) Fjärrobjekt (distribuerat objekt): objekt och interface på olika maskiner Exempel: Java RMI, Corba, DCOM,.NET,... 1

Några centrala begrepp Objekt vs komponent Objektreferens IDL Statiska vs dynamiska anrop Komponent vs objekt Komponent är en ofta förekommande term, men har ingen formell definition Några karaktäristiska drag finns dock Den är större än ett objekt Den är autonomt och kan göra vissa uppgifter på egen hand Den kan ha ett grafiskt gränssnitt, kan vara distribuerad (jmf Java Beans) Kan innehålla applikations- eller affärslogik, men kan också vara av mer teknisk natur En komponent är binär, och oberoende av programspråk 2

Fjärrobjekt Objektreferens Skapas när objekt skapas/instansieras Identifierar/representerar objekt Talar om vart objektet är instansierat Klienter får objektref från t.ex. namnservice Klienten vet inte vad objektref innehåller (opaque) Lokala- och fjärrobjekt hanteras olika pga effektivitet 3

Exempel på objektreferens IOR:000000000000001949444c3a48656c6c 6f576f726c642f48656c6c6f3a312e300000 000000000001000000000000006800010200 0000000f3139332e31302e3232322e313432 0000b737000000000019afabcb0000000002 1a4b04520000000800000000000000000a00 000000000001000000010000002000000000 000100010000000205010001000100200001 01090000000100010100 Interface Definition Language (IDL) Deklarativ språkgrupp Definierar objekts gränssnitt Klient och server kan vara skrivna i olika språk Proxy och skelett genereras av IDL kompilator Används inte av alla oo-mellanvaror, t.ex. Java RMI stödjer bara Java 4

Anrop Statiska anrop Proxy och skelett måste vara kända vid kompiliering Ändring i interface kräver omkompilering Dynamiska anrop Generella stubbar tillhandahålls av underliggande system Proxy och skelett behövs inte vid kompilering Inte nödvändigt att interface är känt vid kompilering Exempelprodukter Java RMI Jini Corba 5

Java RMI RMI Remote Method Invocation Klient/Serverbaserat Server skapar objekt, lämnar ut referens Klient använder referens, anropar metod på objektet via ett lokalt proxyobjekt Klient kan skicka egna objekt som argument! 6

Hur implementera? Serverobjektet använder interface java.rmi.remote, och deklarerar java.rmi.remoteexception som exception Generera server och klient stubs (rmic) Starta rmiregistry, server, klient Serverexempel registrering... String name = "//host/compute"; try { Compute engine = new ComputeEngine(); Naming.rebind(name, engine); System.out.println("ComputeEngine bound"); } catch (Exception e) { 7

Klientexempel, tjänsteanrop... try { String name = "//host/compute"; Compute comp = (Compute) Naming.lookup(name); Pi task = new Pi(Integer.parseInt(args[1])); BigDecimal pi = (BigDecimal)(comp.executeTask(task)); System.out.println(pi); } catch (Exception e) {... Jini Utvecklas av Sun Microsystems 1999 Nätverksarkitektur optimerad för skalbarhet och förändringar och självständighet www.jini.org Använder Java RMI i botten 8

The purpose of the Jini architecture is to federate groups of devices and soft-ware components into a single, dynamic distributed system. The resulting federation provides the simplicity of access, ease of administration, and support for sharing that are provided by a large monolithic system while retaining the flexibility, uniform response, and control provided by a personal computer or workstation. The architecture of a single Jini system is targeted to the workgroup. Members of the federation are assumed to agree on basic notions of trust, administration, identification, and policy. It is possible to federate Jini systems themselves for larger organizations. (Från The Jini Architecture Specification ) 9

Jinimotivation Samordnande ramverk Enkelt, sömlöst, skalbar interoperabilitet Network plug and play med minsta möjliga adminstration Nätverksansluten mjuk och hårdvara tillhandahåller tjänster Alla enheter kan hitta och använda tillgängliga tjänster Exempel Hitta alla färg-duplex skrivare i närheten Börja brygg kaffe fem minuter innan väckarklockan ringer Låt mobiltelefonen använda bilhögtalarna Mer exempel Digitalkamera pluggas in i nätverket Letar reda på lookup-tjänsten (discovery) Registrerar sitt grässnitt på lookup-tjänsten (join) Säger i princip Jag är en kamera, vill någon ha bilder? Senare: En laptop pluggas in i nätet, letar efter kamera, anropar Camera.Snapshot() Kameran upptäcker att ljuset är för mörkt, och vrider upp det med Light.increase() till det är okej Laptop ber kamera att skriva ut fotot Kamera letar reda på skrivare via lookup-tjänst, och anropar dess utskriftsmetod 10

Bzzz, bzzz Instant On When a jini-enabled device is plugged into the network, it works right away with no fuss Its services and resources are immediately available Impromptu Community Devices working together, creating a personal network or community Connect home appliances and control them centrally Connect to services on the road Resilient Adapts very quickly to changes The community lives on, as users comes and goes Special delivery Services are available on demand, whenever needed Nyckelteknologier Tjänster Namnuppslagning (lookuptjänst) Java Remote Method Invocation (RMI) Leasing Transaktioner Händelser (events) 11

Jini utlovar... Desktop PC Lookup service Printer Service Coffee Maker Network Alarm Clock Service Cell Phone Stereo Speaker Service Imponansfaktorer Drivrutiner tillhandahålls av tjänsten Behöver bara känna till gränssnittet Arbete kan fördelas olika mellan klient och tjänst Leasing-modell hanterar nätverks/klient/serverfel (lease förnyas så länge tjänsten används) Distribuerade transaktioner (2-PC) Flexibel sökning efter egenskaper ( utskriftstjänst, spela upp ljud ) 12

Lite problematik Behöver känna till gränssnitt i förväg och vara överens om de funktioner som tillhandahålls Printer.Skrivut(), Coffee.Brygg(), Coffe.Print() Standardiseras på jini.org Kräver Java VM överallt! Men det finns en surrogatfunktion för att koppla upp utrustning som ej klarar köra JVM Framtiden Stor potential, men har trots det inte slagit igenom Konkurrenter: UPnP, Salutation Kräver väldefinierade gränssnitt till vanliga tjänster (Printer, etc) 13

Overview CORBA - Common Object Request Broker Architecture Developed by OMG (Object Management Group). An architecture for distributed objects. The Object Request Broker (ORB) is the middleware that establishes the client-server relationships between objects. CORBA 3.0 Commercial release at end of 1999 OMG - Object Management Group http://www.omg.org/ Founded in May 1989 by 3Com, American Airlines, Canon, Data General, HP, Philips, Sun, Unisys. Now over 800 members. Vendor independent non-profit operations. Based in Framingham, Massachusetts, USA, but has regular meetings all over the world OMG produces specifications for standardized object software in order to create a component-based software marketplace. 14

Object Orientation Basics Objects and Classes (object types) Object members: Methods (CORBA: operations) Fields (CORBA: attributes) Inheritance Interface ( abstract class )! OMG Reference Model The result of the programmers sweat! User Interface Management, Information Management, System Management, Task Management Finance, Health Care, Telecom, Manufacturing, etc. Application Objects CORBA Facilities CORBA Domains Object Request Broker (ORB) CORBA Services Naming, Event, Transaction, Persistence, Lifecycle, Security, Trader, Concurrency, Externalization, Query, Collection, Relationship, Time, Licensing, Properties " 15

Services in CORBA Application Objects CORBAdomains CORBA Manufacturing, CORBA Med(icine), CORBA Finance, CORBA Telecoms CORBAfacilities: Common services User Interface Management, Information Management, Systems Management, Task Management CORBAservices: OS level object services Naming, Event, Transaction, Persistence, Lifecycle, Security, Trader, Concurrency, Externalization, Query, Collection, Relationship, Time, Licensing, Properties # CORBA Services (1) System level services. Interfaces to services defined by IDL. Several services overlap functions that are available in operating systems and programming languages. May be bundled with ORB products or sold separately. 16

CORBA Services (2) Life Cycle - create, copy, move, delete objects Persistence - permanent storage of objects to file / database Naming - binding of objects to names Event - event handling and event subscription Concurrency - lock services for threads and transactions Transaction - two-phase commit Relationship - dynamically created associations Externalization - convert objects to a binary stream Query - query service CORBA Services (3) Licensing - registration of usage of objects Properties - dynamic information about objects Time - common time service Trader - announce and find services based on service characteristics Collection - handle collections of objects Security - protect objects against unauthorized usage 17

CORBAfacilities User Interface Management displaying, printing, compound documents, help information, Information Management modeling, storage, retrieval, compound documents, interchange of information, encoding, translation,... Systems Management management tools, monitor and control of system resources,... Task Management workflow automation, rule based objects, intelligent agents,... CORBA ORB Architecture 18

Client Stub The client stub has the same interface as the server object that it represents. The client stub acts as a proxy for the server object. The client stub receives calls from the client to the server object performs marshalling of parameters receives results from the server object and forwards them to the client Interface Repository The Interface Repository is a run-time database that contains information about all available IDL interfaces that the ORB recognizes. It can be called to read or write descriptions of registered objects (interfaces) perform type control of method calls The interfaces must be loaded into the Interface Repository when the server object is activated 19

Dynamic Invocation Dynamic Invocation Interface (DII) is an interface for exploring objects during execution. Meta-data about objects can be read from Interface Repository. A dynamic call from a client program does not need a client stub, the client generates the call itself. Dynamic Invocation is not used very much (yet).! Object Adapter The Object Adapter sits on top of the communication system and manages object registration, creates object-id:s, handles calls to objects, activates objects, etc. There are different types of Object Adapters: Basic Object Adapter (BOA) is required by the standard (but it tends to be implemented in a proprietary way) Portable Object Adapter (POA) shall be more strictly standardized " 20

IDL - Interface Definition Language The language used to specify interfaces to CORBA objects It is a declarative language (i.e. no programming language) IDL has become an ISO-standard and is used in other contexts than with CORBA IDL-syntax is similar to C++ syntax (but only declarative parts) $ the same lexical rules as C++ but some new keywords are added $ C++ syntax for declaration of constants, types and operations $ C++ preprocessing features are supported $ future changes to ANSI standard for C++ will be adopted by IDL # An IDL Example interface grid1 { long get(in short n, in short m); void set(in short n, in short m, in long value); }; interface grid2 { void reset(in long value); }; interface grid: grid1, grid2 { }; %& 21

( ( IDL compilation (Java example) IDL-file (xxx.idl) Interface Repository Compilation Client stub (_st_xxx) xxxhelper xxxholder Server Skeleton (_xxximplbase) Interface (xxx) Example (_example_xxx) (inherits) Implementation of Client Implementation of Server Implementation of Main %' IDL language mappings There are mappings from IDL to the following programming languages: ) C/C++ ) Smalltalk ) Cobol ) Ada ) Java ) Nonstd: TCL, PL/1, LISP, Python, Perl,... These languages can be used to implement clients and server objects for CORBA. %% 22

+ ( ( $ $ $ Different ways to invoke a request A request can be invoked in three ways : Synchronous Request, the client stops and waits for the result Deferred Synchronous Request (only dynamic invocation), the client continue to execute and must poll for the result later One-way Request (only dynamic invocation), the client ignores the result %* Protocols for CORBA: GIOP GIOP - General Inter-Orb Protocol is used between ORB:s in order to get interoperability The GIOP specification consists of ) The Common Data Representation (CDR) definition. This is a transfer syntax mapping OMG IDL data types into a low-level representation to be used on the wire ) The GIOP Message Formats. Messages are for object requests, object location and management of communication channels. ) GIOP Transport Assumptions. This is general assumptions regarding the transport layer. %- 23

+ + + + ( ( ( ( ( ( ) Protocols for CORBA: IIOP IIOP - Internet Inter-Orb Protocol is a mapping of GIOP to be carried over TCP/IP. The IIOP specification consists of $ The GIOP specification. $ Internet IOP Message Transport. This part describes how TCP/IP connections are opened and used for GIOP messages. IIOP is the protocol that makes it possible to interconnect ORB:s from different vendors, as well as using CORBA over Internet. Interoperable Object References (IOR) are globally unique names that has to be used between different ORB:s. %. CORBA Products Inprise VisiBroker (Borland+Visigenic) (world leader) IONA Orbix (biggest in Sweden) OOC ORBacus (formerly OmniBroker) GNOME ORBit Included in J2SE 1.4 The Free CORBA page gives a lot of information about CORBA products (both commercial and free): http://adams.patriot.net/~tvalesky/freecorba.html %/ 24