Komponentarkitekturer. En historie om mellomvare

Like dokumenter
Komponentarkitekturer

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

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

CORBA Component Model (CCM)

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

OpenCOM. Del av et forskningsprosjekt ved Lancaster University, UK

CORBA Objektmodell (Java RMI)

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Distribuerte objekter og objekt-basert mellomvare

Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan

Distribuerte objekter og objekt-basert mellomvare

Distributed object architecture

Distribuerte objekter og objekt-basert mellomvare

RM-ODP og Multimedia middleware (M3W):

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

Utfordringer til mellomvare: Multimedia

2. HVA ER EN KOMPONENT?

J2EE. CMP Entity Beans, Transaksjoner, JSP

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

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

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

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

Distributed object architecture

A Study of Industrial, Component-Based Development, Ericsson

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

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

INF5120 Oblig 1c4 - Gruppe 19

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

1 Generelt om Avian Traveller

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

Dynamisk konfigurering av komponentbaserte tjenester

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

HØGSKOLEN I SØR-TRØNDELAG

Oppsummering. Thomas Lohne Aanes Thomas Amble

Programmeringsrammeverk som kan installeres på Windows Mobiloperativsystem

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

Læringsmål for forelesningen

J2EE. Katalogtjenester, JNDI og Enterprise Beans

AlgDat 10. Forelesning 2. Gunnar Misund

Software installasjon og andre ettertanker

Web Services. Olav Lysne

Generiske mekanismer i statisk typede programmeringsspråk

Java. Henrik Lieng Høgskolen i Oslo og Akershus

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

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

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

Scientific applications in distributed systems

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

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

AlgDat 12. Forelesning 2. Gunnar Misund

Innledende Analyse Del 1.2

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

Overordnet beskrivelse

Distribuert ObjektArkitektur. Faglærer : Tom Røise. IMT3102 Objektorientert systemutvikling 1. OOSU 11.nov 2010

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

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

TTM4175 Hva er kommunikasjonsteknologi?

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

Beskjed fra Skagestein

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

Utfordringer til mellomvare: Multimedia

Forprosjektrapport. Utvikle en plattform for digitalisering av foosballbord.

Systemarkitektur. INF1050: Gjennomgang, uke 07

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

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

TTM4175 Hva er kommunikasjonsteknologi?

Fakultet for informasjonsteknologi, Løsning på eksamen i TDT4190 Distribuerte systemer Torsdag 9. juni 2005,

Model Driven Architecture (MDA) Interpretasjon og kritikk

Innføring i SOAP. Agenda

Fra krav til objekter. INF1050: Gjennomgang, uke 05

Operativsystemer og grensesnitt

En ny generasjon standarder for bygging av geografisk infrastruktur Modellering av tjenester

Sentral Policy Basert Autorisasjonsløsning

INF 5120 Obligatorisk oppgave Nr 2

Installasjonsveiledning

INF5120 Oblig gjennomgang

Kapittel 7: Mer om arv

ephorte Integration Services (eis) produktbeskrivelse

Hva betyr tjenesteorientert arkitektur for sikkerhet?

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

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

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

ԣ ˢܝ Ί! Delphi 8 for.net!

Introduksjon til Distribuerte System (DS)

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

JavaServer Pages (JSP)

NB! Endring i undervisningsplanen

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

INF5120 Eksamen Løsningsforslag Oppgave 1a,b COMET

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

Fra krav til objektdesign

INF1300 Introduksjon til databaser

Kontakt oss i Egroup for mer informasjon!

API: Application programming interface, eller programmeringsgrensesnitt

Forslag til løsning. Oppgave 1

Technical Integration Architecture Teknisk integrasjonsarkitektur

(MVC - Model, View, Control)

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Læringsmål for forelesningen

Transkript:

Komponentarkitekturer INF 5040 høst 2003 foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 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 2 INF 5040 høst 2003 1

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 Også typisk stor granularitet og binære Frank Eliassen, SRL & Ifi/UiO 3 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? (Se EJ og CORA Component Model seinere) Frank Eliassen, SRL & Ifi/UiO 4 INF 5040 høst 2003 2

Gjenbruk av komponenter Web server Worflow logic 1. Price order 2. ill order to customer 3. Fulfill order Pricing component illing component Fulfillment component Frank Eliassen, SRL & Ifi/UiO 5 Komposisjon I Komponenter og komposisjon Komposisjon er den grunnleggende metode for konstruksjon, utvidelse og gjenbruk i komponent-basert programvareutvikling Jfr (implementasjons) arv i objektorienterte tilnærminger Komponenter er til for komposisjon Frank Eliassen, SRL & Ifi/UiO 6 INF 5040 høst 2003 3

Komposisjon II Connection-oriented programming Komposisjon av pre-fabrikerte komponenter 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 C1 C2 Frank Eliassen, SRL & Ifi/UiO 7 Tredjeparts-komposisjon Komposisjonen kan gjøres av tredjepart Eksempel Connections, outgoing and ingoing interfaces Forbinder matchende grensesnitt Kan gjøres under kjøretid 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 8 INF 5040 høst 2003 4

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 9 Indirection Frakobling av inngående og utgående grensesnitt ved mellomliggende komponenter X C1 U A G A Y C2 V Z C3 Frank Eliassen, SRL & Ifi/UiO 10 INF 5040 høst 2003 5

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. Krever mer eksplisitt koding av relasjoner mellom entiteter (designed in vs patched in) Frank Eliassen, SRL & Ifi/UiO 11 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 12 INF 5040 høst 2003 6

Eksplisitt mellomvare 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 13 Implisitt mellomvare 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 14 INF 5040 høst 2003 7

Grensesnitt og kontrakter En standard utviklings, utplasserings og kjøretidsomgivelse kan utformes som en mengde kontraktsfestede grensesnitt Hva inneholder en kontrakt? Mengde provided og required grensesnitt Pre og post betingelser/invarianter Annet (ikke-funksjonelle krav) Kontrakten inngås mellom komponenter og containere Kalles en komponentarkitektur Komponenter Container/Applikasjonstjener Kontraktsfestede grensesnitt spesifisert av komponentarkitekturen Containerens ansvar livssyklushåndtering systemtjenester sikkerhet dynamisk innføring av nye komponenter Frank Eliassen, SRL & Ifi/UiO 15 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 16 INF 5040 høst 2003 8

Enterprise Java eans (EJ) Komponent-arkitektur for utplasserbare ( deployable ) tjener-side komponenter i Java. Litteratur: http://java.sun.com/j2ee/overview.html http://www.theserverside.com/books/masteringej/ Part I: gir introduksjon til komponentarkitekturer og EJ Tre typer enterprise beans Session beans (verb) Transiente, applikasjonslogikk (forretningsregler ) Entity beans (substantiv) Persistente, data-relatert logikk (oppdatere tilstand til entiteter) Message driven beans Logikk for å motta asynkrone meldinger og evt kalle session beans Frank Eliassen, SRL & Ifi/UiO 17 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 18 INF 5040 høst 2003 9

EJ objektet Request Interceptor Delegerer forespørsler til bønner Utfører implisitt mellomvare-aksjoner Client code 1. Call a method 5. Return result EJ Object 2. Call middleware API 4. Method return 3. Call a bean EJ Container/Server Transaction service Security service Persistence service Enterprise ean Frank Eliassen, SRL & Ifi/UiO 19 Home objektet EJ objektfabrikk Oppretter, lokaliserer og fjerner EJ objekter Klienter lokaliserer Home objekter vha navnetjeneste Client code 3. Return EJ object reference EJ Container/Server 1. Create EJ object Home Object 2. Create EJ object EJ Object Enterprise ean Frank Eliassen, SRL & Ifi/UiO 20 INF 5040 høst 2003 10

Innpakking og utplassering Innpakking For å levere og utplassere en komponent kreves et standardisert arkivformat som pakker inn separate filer (komponent-kode og meta-data) Ejb-jar fil Fil som inneholder all informasjon som er nødvendig for å utplassere en komponent i en container-omgivelse Deployment descriptor XML fil som beskriver konfigurasjon (ulike grensesnitt og bean-klasser), krav til mellomvaretjenester, etc Frank Eliassen, SRL & Ifi/UiO 21 Connection-oriented programming og EJ Ingen støtte for connection-oriented programming!! Følger tradisjonell objekt-orientert komposisjon (tredjepart kan ikke binde EJer) Styrken er automatisk komposisjon av komponentinstanser med passe tjenester og ressurser Automatisk konfiguering av nødvendig implisitt mellomvare ut fra behov spesifisert i en deploymentdescriptor (transaksjoner, persistens og sikkerhet) (Javaeans har imidlertid støtte for connectionoriented programming) Frank Eliassen, SRL & Ifi/UiO 22 INF 5040 høst 2003 11

Java 2 Enterprise Edition En (spesifikasjon av en) plattform for utvikling og kjøring av forretningskritiske systemer Definerer tjenester bibliotek protokoller kjøremiljø Målet med J2EE er å gjøre det lettere å utvikle applikasjoner med flerlagsarkitektur Inkluderer EJ komponent-arkitektur Frank Eliassen, SRL & Ifi/UiO 23 Flerlagsarkitektur Krav om åpenhet og distribusjon Større fleksibilitet enn tradisjonelle klient-tjener systemer Deler presentasjon, data og forretningslogikk i egne programkomponenter, uavhengig av presentasjon og datarepresentasjon Flerlagsarkitektur bygger på komponentmodeller Frank Eliassen, SRL & Ifi/UiO 24 INF 5040 høst 2003 12

Flerlagsarkitektur tjeneste forespørsel resultat tjeneste forespørsel resultat Forretningslogikklag data Data/tjenester Applikasjonslogikk Webklienter Wapklienter Filsystemer Eksisterende applikasjon Applikasjoner tjeneste forespørsel resultat MV-tjenester data Database server Frank Eliassen, SRL & Ifi/UiO 25 J2EE API spesifikasjoner Enterprise Java eans: Komponentmodell for å bygge gjenbrukbare tjenerkomponenter Java Database Connectivity (JDC): Javagrensesnitt mot relasjonsdatabaser Java RMI over the Internet-OR Protocol (RMI-IIOP): Fjernmetodeanrop mellom Java VM basert på IIOP. Java Message Service: Asynkron kommunikasjon vha meldinger Java IDL: En Java CORA OR som implementerer et subsett av CORA spesifikasjonen Java Server Pages (JSP): Dynamisk generering av web-sider Java Servlets: Servlets er komponenter som utplasseres på en webtjener Java Transaction Service (JTA): Transaksjonstjeneste... Frank Eliassen, SRL & Ifi/UiO 26 INF 5040 høst 2003 13

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 27 Java 2 Enterprise Edition rannmur Klient Klient Klient RMI-IIOP HTTP XML EJ container EJ EJ EJ JDC RMI-IIOP EJ container EJ EJ EJ JDC Klient HTTP XML HTTP XML Web container RMI-IIOP Klient-lag Mellom-lag EIS-lag Frank Eliassen, SRL & Ifi/UiO 28 INF 5040 høst 2003 14

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 29 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 30 INF 5040 høst 2003 15

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 31 Oppsummering Komponenter Programmering etter LEGO-prinsippet Kontraktsmessige grensesnitt og komposisjon Støtte for connection oriented programming Komponentarkitektur Spesifiserer kontraktsfestede grensesnitt mellom komponenter og applikasjonstjenere. Java: EJ, CORA: CCM, Microsoft: COM+/.NET Java 2 Enterprise Edition (J2EE) en standard utviklings-, utplasserings- og kjøretidsomgivelse for distribuerte EJ objekter Frank Eliassen, SRL & Ifi/UiO 32 INF 5040 høst 2003 16