Programvarekomponenter og distribuerte system. INF 5040 høst foreleser: Frank Eliassen

Like dokumenter
Komponentarkitekturer

Komponentarkitekturer. En historie om mellomvare

OpenCOM. Del av et forskningsprosjekt ved Lancaster University, UK

CORBA Component Model (CCM)

Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan

CORBA & Java RMI & J2EE & CORBA CCM OMG & CORBA

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

CORBA Objektmodell (Java RMI)

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare

RM-ODP og Multimedia middleware (M3W):

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Distribuerte objekter og objekt-basert mellomvare

2. HVA ER EN KOMPONENT?

Distributed object architecture

Utfordringer til mellomvare: Multimedia

Oppsummering og pensumkommentarer. INF5040 høst forelesere: Frank Eliassen, Olav Lysne. Innhold og mål

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Oppsummering og pensumkommentarer. INF5040 høst forelesere: Frank Eliassen, Olav Lysne. Innhold og mål

AlgDat 10. Forelesning 2. Gunnar Misund

A Study of Industrial, Component-Based Development, Ericsson

Oppsummering. Thomas Lohne Aanes Thomas Amble

Software installasjon og andre ettertanker

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

INF5120 Oblig 1c4 - Gruppe 19

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

AlgDat 12. Forelesning 2. Gunnar Misund

DCOM. 21. oktober Mai et al. Hva er egentlig en komponent?

Generiske mekanismer i statisk typede programmeringsspråk

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Implementering av caching ved hjelp av Spring. Christian Vestøl

Dynamisk konfigurering av komponentbaserte tjenester

J2EE. CMP Entity Beans, Transaksjoner, JSP

Distributed object architecture

Jini. Overblikk. Gruppe 1: Odd-Wiking Rahlff, Arnor Solberg og Finn Haukebøe

Web Services. Olav Lysne

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Programmeringsrammeverk som kan installeres på Windows Mobiloperativsystem

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Utfordringer til mellomvare: Multimedia

Læringsmål for forelesningen

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

HØGSKOLEN I SØR-TRØNDELAG

Arkitektur. 4 april Mål for forelesningen: Se på kriterier for design, arkitektur av komponent og prosess. Kriterier. Komponenter.

Læringsmål for forelesningen

Model Driven Architecture (MDA) Interpretasjon og kritikk

Læringsmål for forelesningen

Java. Henrik Lieng Høgskolen i Oslo og Akershus

INF5120 Oblig gjennomgang

Anbefaling om bruk av HL7 FHIR for datadeling

Operativsystemer og grensesnitt

Tilstandsmaskiner med UML og Java

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

Fra krav til objektdesign

Introduksjon til Distribuerte System (DS)

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

INF1300 Introduksjon til databaser

Scientific applications in distributed systems

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

INF5120 Eksamen Løsningsforslag Oppgave 1a,b COMET

COM. Hva er COM? The Component Object Model. Microsoft sitt rammeverk for å lage og bruke komponenter

Generelt om operativsystemer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Kapittel 7: Mer om arv

INF3110 Programmeringsspråk. Velkommen til kurset INF 3110/4110. Programmeringsspråk 1/24

INF 3110/4110. Velkommen til kurset. Programmeringsspråk. Først det praktiske

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Overordnet beskrivelse

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

UDDI norsk katalog for registrering av tjenester (WMS, WFS, WCS, WS) i Norge digitalt

Beskjed fra Skagestein

Forslag til løsning. Oppgave 1

Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP

INF2810: Funksjonell Programmering. Tilstand og verditilordning

Systemarkitektur. INF1050: Gjennomgang, uke 07

Objekt med Java. Harald Yndestad Høgskolen i Ålesund

INF1300 Introduksjon til databaser

Hva betyr tjenesteorientert arkitektur for sikkerhet?

Eksamen INF

Navngivning av XML elementer

Pensum: fra boken (H-03)+ forelesninger

Arkitektur. Kirsten Ribu Høgskolen i Oslo

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

Dalane Videregående Skole Egersund VK2 2, Økonomisk- administrative fag

TTM4175 Hva er kommunikasjonsteknologi?

ԣ ˢܝ Ί! Delphi 8 for.net!

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet

Pensum: fra boken (H-03)+ forelesninger

Programvareutvikling hos Sun Microsystems. Jørgen Austvik Sun Microsystems Database Technology Group

Objekt-interaksjon. INF 5040 høst 2006

Forprosjektrapport. Utvikle en plattform for digitalisering av foosballbord.

Sentral Policy Basert Autorisasjonsløsning

UKEOPPGAVER 2: SYSTEMUTVIKLINGSPROSESSER OG PROSJEKTARBEID INNSPILL TIL SVAR

UNIVERSITETET I OSLO

Transkript:

Programvarekomponenter og distribuerte system INF 5040 høst 2006 foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 1 Litteratur Szyperski, C., Gruntz, D., Murer, S., Component Software eyond Object- Oriented Programming, Second Edition, Addison Wesley/ACM Press, 2002 Ikke definert pensum utover forelesningen Frank Eliassen, SRL & Ifi/UiO 2 INF 5040 høst 2006 1

En historie om mellomvare Første generasjons mellomvare Utelukkende basert på klient-tjerner modellen Eksempler inkluderer Open Group s DCE Andre generasjons mellomvare asert på distribuert objekt-teknologi Eksempler inkluderer CORA and Java RMI Tredje generasjons mellomvare? asert på kommende komponent-teknologi Frank Eliassen, SRL & Ifi/UiO 3 Fremveksten av komponent-teknologier Hva er en komponent [Szyperski]? a unit of composition with contractually specified interfaces and explicit context dependencies only in this context, a component can be deployed independently and is subject to third-party composition Frank Eliassen, SRL & Ifi/UiO 4 INF 5040 høst 2006 2

Rasjonale for komponenter Tid til markedet Forbedret produktivitet/ redusert kompleksitet Fokus på gjenbruk Programmering ved montasje (fabrikasjon) i stedet for utvikling (engineering) Reduserte krav til kunnskaper Viktigste fordel: utvikling av tjener-siden? (Jfr EJ og CORA Component Model seinere) Frank Eliassen, SRL & Ifi/UiO 5 Gjenbruk av komponenter Frank Eliassen, SRL & Ifi/UiO 6 INF 5040 høst 2006 3

Komposisjon Komponenter og komposisjon Komposisjon er den grunnleggende metode for konstruksjon, utvidelse og gjenbruk i komponent-basert programvareutvikling I motsetning til (implementasjons) arv i objekt-orienterte tilnærminger Komponenter er til for komposisjon Frank Eliassen, SRL & Ifi/UiO 7 Connection-oriented programming Komposisjon av pre-fabrikerte komponenter inding av inngående- og utgående grensesnitt (provided/required interfaces) Reflekterer retningen på metodekall Ikke retningen til dataflyten Utgående grensesnitt De metodekall en komponent potensielt kan utstede Støtte for distribusjon? Når bindingen kan gjøres mellom ulike adresserom og maskiner C1 C2 Frank Eliassen, SRL & Ifi/UiO 8 INF 5040 høst 2006 4

Tredjeparts-komposisjon Komposisjonen kan gjøres av tredjepart Eksempel Connections, outgoing and ingoing interfaces Forbinder matchende grensesnitt Kan gjøres under kjøretid av tredjepart Kan typisk gjøres ved å sette et passe attributt i komponenten med det utgående grensesnitt (setxxx) U C1 A X A C2 V Y Frank Eliassen, SRL & Ifi/UiO 9 Mange connection mønstre En-til-en, en-til-mange, mange-til-en, mange-tilmange U A X A Y C2 C1 V Z C3 Frank Eliassen, SRL & Ifi/UiO 10 INF 5040 høst 2006 5

Indirection Frakobling av inngående og utgående grensesnitt ved mellomliggende komponenter C1 U A V G X A Y Z C2 C3 Frank Eliassen, SRL & Ifi/UiO 11 Komposisjon vs arv The fragile base class problem (Szyperski) Med bruk av arv, er det ofte vanskelig å modifisere en superklasse (base class) uten å påvirke uavhengig utviklede subklasser Fordeler ved komposisjon ygger på message forwarding ikke arv Message forwarding er enklere men mindre uttrykksfull enn arv. Komposisjon krever mer eksplisitt koding av relasjoner mellom entiteter (designed in vs patched in) Frank Eliassen, SRL & Ifi/UiO 12 INF 5040 høst 2006 6

akgrunn for Java og CORA komponentmodeller Kjente problemer med CORA og Java-RMI Hvordan utplasserer jeg min applikasjon? Hvilke tjenester vil være tilgjengelige på en gitt vertsmaskin? Hvem vil aktivisere mine objekter? Jfr forelesning om designutfordringer Hvem forvalter mine objekters livssyklus? => Vi trenger en standard utviklings, utplasserings og kjøretidsomgivelse for distribuerte objekter (CORA, Java) Frank Eliassen, SRL & Ifi/UiO 13 Eksplisitt mellomvare: mangel på separation of concerns Programmerer direkte mot en mellomvare API Applikasjonslogikken må sammenveves med logikk for livssyklushandtering, transaksjoner, sikkerhet, persistens, m.v. Database API Database driver Klient Distr object Sikkerhets API Sikkerhets tjeneste Transaksjons API Trans. tjener Stub Skeleton Frank Eliassen, SRL & Ifi/UiO 14 INF 5040 høst 2006 7

Implisitt mellomvare: bedre støtte for separation of concerns Logikk for livssyklushandtering, transaksjoner, sikkerhet, persistens, m.v. handteres av mellomvaren ehov for mellomvaretjenester erklæres separat og kan seinere endres uten å endre applikasjonskoden Mellomvaren kan endres uten å endre applikasjonskoden Klient Distr object Database API Database driver Request interceptor Sikkerhets API Transaksjons API Sikkerhets tjeneste Trans. tjener Stub Skeleton Frank Eliassen, SRL & Ifi/UiO 15 Komponentplattform En standard utviklings, utplasserings og kjøretidsomgivelse kan utformes som en mengde kontraktsfestede grensesnitt Kontrakten inngås mellom komponenter og en komponentplattform Komponentplattformen definerer reglene for utplassering (installasjon), komposisjon og aktivering av komponenter. For å levere og utplassere en komponent kreves et standardisert arkivformat som pakker inn komponentkode og meta-data Frank Eliassen, SRL & Ifi/UiO 16 INF 5040 høst 2006 8

En implementasjon av en komponentplattform kalles gjerne en container Containerens ansvar livssyklushåndtering systemtjenester sikkerhet dynamisk installasjon og aktivering av nye komponenter f.eks. oppklare avhengigheter dynamisk Komponenter Container/Applikasjonstjener Kontraktsfestede grensesnitt spesifisert av komponentplattformen Frank Eliassen, SRL & Ifi/UiO 17 Kontrakter Hva inneholder en kontrakt? Mengde provided grensesnitt. Noen av disse kan være påkrevd av komponentplattformen Mengde required grensesnitt. Disse må tilbys av andre komponenter tilgjengelig i containeren Pre og post betingelser/invarianter Annet (ikke-funksjonelle krav: transaksjoner, sikkerhet, ytelse,...) Funksjoner defineres både syntaktisk og semantisk int add(int a, int b) pre: a + b <= Integer.MAXINT post: result = a + b Ekstra-funksjonelle krav Garanti: Retur innen 10 ms etingelse: Trenger 1000 CPU-sykler Frank Eliassen, SRL & Ifi/UiO 18 INF 5040 høst 2006 9

Nøkkelspillere OMG og komponenter CORA v3 standarden med CORA Component Model (CCM) Microsoft og komponenter Utvikling av COM/DCOM, COM+ og.net SUN og komponenter Utvikling av Java eans og EJ Frank Eliassen, SRL & Ifi/UiO 19 Enterprise Java eans (EJ) Komponent-arkitektur for utplasserbare ( deployable ) tjener-side komponenter i Java. EJ 3.0: basert på Metadata facility i Java 5 annoteringer i kildekoden Litteratur: http://java.sun.com/j2ee/overview.html Tre typer enterprise beans Session beans (verb) POJO med session bean annotering Transiente, applikasjonslogikk (forretningsregler ) Entity beans (substantiv) POJO med entity bean annotering (men regnes ikke som komponent) Persistente, data-relatert logikk (oppdatere tilstand til entiteter) Message driven beans Logikk for å motta asynkrone meldinger og evt kalle andre beans Frank Eliassen, SRL & Ifi/UiO 20 INF 5040 høst 2006 10

Klient-interaksjon med EJ komponent system Presentation Tier HTML Client HTTP Firewall usiness Partnet System SOAP, WSDL,... Messaging Client C++ Client Java Apps Java Applet Servlet JSP Messaging CORA-IIOP RMI-IIOP RMI-IIOP RMI-IIOP EJ Message- Driven ean EJ Session ean EJ Session ean usiness Tier EJ Session ean EJEntity ean EJ Session ean Frank Eliassen, SRL & Ifi/UiO 21 EJ3.0 implisitt mellomvare Metadata inspiseres av tjenesterammeverk. Nødvendige interceptors veves inn ruk av interceptors for å utføre systemnivåfunksjoner ved kjøretid. Persistens spesifieres ved å annotere de relevante attributter i kildekoden samt avbildning til database (O/R mapping) Frank Eliassen, SRL & Ifi/UiO 22 INF 5040 høst 2006 11

Connection-oriented programming og EJ Ingen støtte for connection-oriented programming!! Følger tradisjonell objekt-orientert komposisjon (tredjepart kan ikke binde EJer, men en EJ kan spesifisere avhengighet til andre komponenter) Styrken er automatisk komposisjon av komponentinstanser med passe tjenester og ressurser som komponent-instansene er avhengige av Automatisk konfigurering av nødvendig implisitt mellomvare ut fra behov spesifisert ved annoteringer eller i en deployment-descriptor (transaksjoner, persistens og sikkerhet) (Javaeans har imidlertid støtte for connectionoriented programming) Frank Eliassen, SRL & Ifi/UiO 23 EJ/J2EE vs CORA EJ komplementerer CORA Mange EJ-tjenere bygger på CORAimplementasjoner EJ-teknologi gjør det lettere å bygge applikasjoner på toppen av CORA sin infrastruktur Frank Eliassen, SRL & Ifi/UiO 24 INF 5040 høst 2006 12

CORA Component Model (CCM) Hva er CCM? En språkuavhengig, komponentmodell for tjenersiden av fler-lagsarkitekturen som understøtter implementasjon, forvaltning, konfigurering og utplassering av CORA applikasjoner Viktige egenskaper En underliggende komponentmodell En innpakkingsteknologi for utplassering av binære, flerspråklige eksekverbare enheter Et container rammeverk som tilbyr implisitt mellomvare for sikkerhet, transaksjoner, persistens og hendelsesbasert kommunikasjon Frank Eliassen, SRL & Ifi/UiO 25 En CORA komponent Støtte for connection-oriented programming Connect/disconnect operasjoner på Receptacles Eller basert på script-språk (del av CCM deployment descriptor) Frank Eliassen, SRL & Ifi/UiO 26 INF 5040 høst 2006 13

Microsoft COM Tilby en komponent objekt-modell basert på prinsippene om binær innkapsling og binær kompatibilitet inær innkapsling: klienter må ikke rekompileres selv om tjenerobjektet endrer seg inær kompatibilitet: klient- og tjenerobjekter kan utvikles med forskjellige utviklingsomgivelser og forskjellige språk Grunnleggende mekanisme for å oppnå binær innkapsling og binær kompatibilitet i COM: skille mellom grensesnitt og implementasjon Støtte for spesifikasjon av utgående grensesnitt COM er en proprietær og de-facto standard COM+ adderer tjenester og interceptors til COM.NET introduserer CLR (Common Language Runtime) m.m. Mer seinere (studentpresentasjoner) Frank Eliassen, SRL & Ifi/UiO 27 Oppsummering Komponenter Programmering etter LEGO-prinsippet Kontraktsmessige grensesnitt og komposisjon Støtte for connection oriented programming Komponentarkitektur Spesifiserer kontraktsfestede grensesnitt mellom komponenter og applikasjonstjenere. Realiserer implisitt mellomvare Java: EJ, CORA: CCM, Microsoft: COM+/.NET Frank Eliassen, SRL & Ifi/UiO 28 INF 5040 høst 2006 14