Komponentarkitekturer

Like dokumenter
Komponentarkitekturer. En historie om mellomvare

CORBA Component Model (CCM)

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

Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan

Distribuerte objekter og objekt-basert mellomvare

Distributed object architecture

RM-ODP og Multimedia middleware (M3W):

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

2. HVA ER EN KOMPONENT?

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

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

Distributed object architecture

A Study of Industrial, Component-Based Development, Ericsson

AlgDat 10. Forelesning 2. Gunnar Misund

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

Læringsmål for forelesningen

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

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

Oppsummering. Thomas Lohne Aanes Thomas Amble

1 Generelt om Avian Traveller

Software installasjon og andre ettertanker

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

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

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

Web Services. Olav Lysne

Java. Henrik Lieng Høgskolen i Oslo og Akershus

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

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

Programmeringsrammeverk som kan installeres på Windows Mobiloperativsystem

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

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

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

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

Operativsystemer og grensesnitt

TTM4175 Hva er kommunikasjonsteknologi?

AlgDat 12. Forelesning 2. Gunnar Misund

Beskjed fra Skagestein

Innledende Analyse Del 1.2

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

TTM4175 Hva er kommunikasjonsteknologi?

Overordnet beskrivelse

Scientific applications in distributed systems

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

P L A N I A 8 S Y S T E M K R A V PLANIA 8 SYSTEM KRAV. Plania 8 Systemkrav.docx av 8

Systemarkitektur. INF1050: Gjennomgang, uke 07

Kapittel 7: Mer om arv

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

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

INF1300 Introduksjon til databaser

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

NB! Endring i undervisningsplanen

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

INF5120 Oblig gjennomgang

Kontakt oss i Egroup for mer informasjon!

Installasjonsveiledning

Technical Integration Architecture Teknisk integrasjonsarkitektur

Hva betyr tjenesteorientert arkitektur for sikkerhet?

UNIVERSITETET I OSLO

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

Fra krav til objekter. INF1050: Gjennomgang, uke 05

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

Forprosjektrapport. Utvikle en plattform for digitalisering av foosballbord.

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

Innføring i SOAP. Agenda

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

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

INF 5120 Obligatorisk oppgave Nr 2

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

Sentral Policy Basert Autorisasjonsløsning

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

Model Driven Architecture (MDA) Interpretasjon og kritikk

ephorte Integration Services (eis) produktbeskrivelse

Transkript:

Komponentarkitekturer INF 5040 høst 2004 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 2004 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 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 2004 2

Gjenbruk av komponenter 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 2004 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 2004 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 C1 U A G X A Y C2 V Z C3 Frank Eliassen, SRL & Ifi/UiO 10 INF 5040 høst 2004 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 2004 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 2004 7

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 en reglene for utplassering (installasjon), komposisjon og aktivering av komponenter. Frank Eliassen, SRL & Ifi/UiO 15 En implementasjon av en komponentplattform kalles gjerne en container! Containerens ansvar "livssyklushåndtering "systemtjenester "sikkerhet "dynamisk installasjon og aktivering av nye komponenter Komponenter Container/Applikasjonstjener Kontraktsfestede grensesnitt spesifisert av komponentplattformen Frank Eliassen, SRL & Ifi/UiO 16 INF 5040 høst 2004 8

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)! 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 17 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 18 INF 5040 høst 2004 9

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 19 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 20 INF 5040 høst 2004 10

EJ objektet!request Interceptor " Delegerer forespørsler til bønner " Representerer implisitt mellomvare 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 21 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 22 INF 5040 høst 2004 11

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 23 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 24 INF 5040 høst 2004 12

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 25 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 26 INF 5040 høst 2004 13

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 27 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 28 INF 5040 høst 2004 14

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 29 Java 2 Enterprise Edition rannmur Klient RMI-IIOP EJ container EJ EJ EJ JDC RMI-IIOP Klient Klient HTTP XML 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 30 INF 5040 høst 2004 15

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 31 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 32 INF 5040 høst 2004 16

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 33 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 34 INF 5040 høst 2004 17