Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005.

Slides:



Advertisements
Liknende presentasjoner
Webbasert administrasjonssystem for fondsforvaltere Martin Lie 20. april 2006.
Advertisements

Del 3 : Patterns (Kap 16 – kap 20, Craig Larman) Arne Maus Inst. for informatikk, UiO.
Memento Object Behavioral Design Pattern. Lagre og hente tilstander • Et system inneholder ofte mekanismer som trenger gjenbruk av tilstander • Memento.
Progress Software AS.NET-strategi Bjørn Haugen Account Manager PUG møte 27.mars 2003.
FEIDE,  autorisasjon og informasjonstilgang Seniorrådgiver IKT-arkitektur Carl-Fredrik Sørensen Bruk av en tjenesteorientert arkitektur for å etablere.
JSP presentasjon Arild Strømhylden NTNU 26 June 2014.
Java Teknologi Teknikker Økosystem Johannes Brodwall
”Verifiser Forventet Funksjonalitet”
JavaOne 2006 Markus Bjartveit Krüger
SOA & Business Process Track Driv konsistens og best practices inn i ditt tjenestedesign : Web Service Software Factory Det er klare fordeler.
Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Side 1 Hibernate utvikling i praksis JavaZone 2004 Eivind Waaler, Bekk – Versjon 1.0.
Objektorientert programmering Objektorientert systemutvikling
Programmering av dynamiske websider i C# - hva er det, og hvordan undervise? Tom Heine Nätt.
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Grunnleggende testteori
Prototyping In 140 Sommerville kap. 8. Mål Forstå hensikten med prototyping i forskjellige utviklingsprosjekt Forstå forskjellen mellom evolusjonær og.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
GoF GoF er fire systemutviklere, Gang of Four GoF fikk utgitt boken Design Patterns høsten 1994 Boken Design Patterns er en klassiker Design Patterns beskriver.
Gruppe 5: Performance, Modifiability Tor-Erik Christian Bernt Johannes.
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Løsning hos RSH Norge En gjennomgang av løsning hos Reitan Servicehandel Norge Edvard Gundersen – ProfitBase AS Løsningsarkitekt.
Kontroll og overvåking av integrasjonsløsninger App Platt Conference – SOA & Integration Track Martin Rauan Gisle Åsberg Communicate Norge.
”Virksomhetsportaler og rollestyrte arbeidsflater”
  © Steria FitNesse som nyttig verktøy Smidig FitNesse som nyttig verktøy Anders Vindvad.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Design patterns: State og Strategy
Tilstede Hakon gruppen Systek Ragnvald Blindheim, CTO for ICA Ahold
Farvel til applikasjonsserveren Fra kompleksitet til kontroll.
Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown En subjektiv sammenligning Johannes Brodwall.
Copyright © 2003 Systek J2EE Teknologier Java Workshop CBA Johannes Brodwall, Systek as.
INF 295 Algoritmer og datastrukturer Forelesning 2 - kapittel 1 Hans F. Nordhaug (Ola Bø)
Implementering av caching ved hjelp av Spring Christian Vestøl
Tjenesteorientert arkitektur Hvordan statistikkproduksjonen støttes og forbedres av en tilpasset IT arkitektur Nordisk statistikermøte København.
Fitnesse i PDMT 05. mai 2008 Finn-Robert Kristensen Systemarkitekt.
Hovedfagspresentasjon
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Copyright © 2007, SAS Institute Inc. All rights reserved. Hvordan tilpasse SAS rapporteringsmuligheter til ulike behov Odd-Inge Hansen SAS Institute AS.
Andreas Olsen, Henrik Larsen Toft, Trond Gjertsen, Vegard Gillestad MASTEROPPGAVER VED BCCS: ESYSBIO PROJECT.
The Peer-to-Peer Architecture Av Ingunn Lund og Anja Lønningen.
Eziz Annagurban Veiledere: Sven-Olai Høyland Carsten Helgesen
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
Presentasjon av masteroppgave
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Easy answer Hovedprosjekt nr 56 våren 2001: ”web  interface  MobilSvar” - grensesnitt for innlegging av personlig velkomstmelding.
1 GeoPortal – Rammeverk Introduksjon. 2 Teknisk rammeverk - Interoperabilitet Interoperabilitet evne til å kommunisere, kjøre programmer, eller overføre.
Malvik Videregående Skole Overvåking av brukeraktivitet og fjerndistribuering av Windows 2003 Server.
Hovedprosjekt RIS og SUS ved Q-Free ASA av Øyvind Lystad Rune Storm Sivertsen.
Struktur FE2: Interface Controller Session Bean Session Beans Query BeanConverter Bean Data transfer objectsEJB entities Database.
J2ME- og Web-basert Instant Messaging System. Oppgavebeskrivelse Selvstendig system J2ME- og Web-basert Internasjonalisering.
X10 webservices/IM -> mobilklient. Oppdragsgiver:
INF H131 Avanserte byggeblokker (Maxfield kap.13 og 17) Kap 13: Embedded prosessorer (prosessorkjerner) Kap 17: Virtuelle komponenter (Intellectual.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
VirusLab Utvikling av en profesjonell applikasjon.
Copyright © 2003 Systek Java Safari Java Workshop CBA Johannes Brodwall, Systek as.
Presentasjon av. Hovedprosjekt for: Stian Watn, 3ddt & Vegard Ebbestad, 3ddt.
Objektorientert design
Konstruksjon og Testing Torsdag 30. september 2004 Av Even Aasland Harald Ueland.
Having a crack at a new stack
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005

Agenda  Introduksjon til eksisterende design  Fordeler og ulemper  Mål for ny løsning  Verktøy for jobben  Ny løsning!  Fordeler og ulemper  Erfaringer

Oversikt over hele applikasjonen Brukergrensesnittlag DB PatientViewPortlet……… Tjeneste- og forretningslag PatientService……… Portal … …

Detaljer om tjeneste- og forretningslaget  Gruppert i 5 tjenester med ca 70 metoder  Forretningslogikken er implementert i POJOs og pakket inn i stateless session beans  Inneholder også annen funksjonalitet felles for alle tjenester som  Caching av resultater fra tjenestekall  Logging av eksekveringstid på alle kall

Detaljert design for en tjeneste Brukergrensesnittlag DB Portlet Tjeneste- og forretningslag Business delegate Stateless session bean Caching Tjeneste-implementasjon Data access object Service interface POJOs

Flere tjenester… Brukergrensesnittlag DB Portlet Tjeneste- og forretningslag Data access object Service interface Business delegate Stateless session bean Caching Tjeneste-implementasjon Data access object 2 Service interface 2 Business delegate 2 Stateless session bean 2 Caching 2 Tjeneste-implementasjon 2

Fordeler og ulemper  Enkelt å jobbe med fra klienten sin side  Service interfaces forhindrer inkonsistens mellom lagene  All testing av logikk kan gjøres i IDE pga bruk av POJOs  Rammeverkskode er tungt å vedlikeholde  Endring i tjenestegrensesnittet krever oppdatering mange steder  Vanskelig å implementere nye ikke-funksjonelle krav

Ny visjon!  En tjeneste skal kun bestå av spesifikasjon i et interface og implementasjon  Gjøre business delegaten helt generisk  Benytte AOP for å løse ikke-funksjonelle krav som:  Caching  Logging  Men:  Ikke røre grensesnittet, forretningslogikk, dataaksesskode eller testkode!  Ikke føre til endringer i hvordan klienten forholder seg til tjenestelaget  Grensesnittet skal fremdeles være remote

Verktøy for jobben  Dynamiske proxyer for å generere business delegate  Generisk stateless session bean for å beholde tilgjengelighet utenfra  Spring for å knytte sammen tjenestene bak EJBen  Spring AOP for implementering av caching og logging

Dynamiske proxyer PatientService +findPatient(…) : Patient[] +retrievePatient(…) : Patient Invocation handler public Object invoke(Object proxy, Method m, Object[] args) PatientService patientService = (PatientService) Proxy.newProxyInstance (PatientService.class.getClassLoader(), new Class[] { PatientService.class }, businessDelegateHandler);

Stateless session bean wrapper public Object callServiceTransactionSupported(...) throws Throwable; public Object callServiceTransactionRequired(...) throws Throwable;  Enkel å bygge på grunn av dynamisk proxy i front  Inneholder ingen logikk som ikke lar seg teste utenfor en J2EE-container

Spring som lettvektscontainer public class PatientServiceImpl implements PersonService { private PatientDataAccess patientDataAccess; public PersonServiceImpl (PatientDataAccess patientDataAccess) { this.patientDataAccess = patientDataAccess; }... }

Spring AOP  Integrert del av Spring  Krever kun endring i Spring-konfigurasjon for å ta i bruk  Fungerer godt for konfigurering av oppførsel på klassenivå  Benytter egen xml-fil for detaljert styring av oppførsel på metode-nivå

Service interface Caching advice Logging advice Nytt design Service impl Generic service facade Dummy facadeStateless session bean facade Service invocation handler Service DAO interface Logging advice DAO impl Dynamic proxy Spring Eget rammeverk

Flere tjenester Service B Caching advice Logging advice Service impl B Generic service facade Dummy facadeStateless session bean facade Service invocation handler Service B DAO B Logging advice DAO impl B Service A Caching advice Logging advice Service impl A DAO A Logging advice DAO impl A Service C Caching advice Logging advice Service impl C DAO C Logging advice DAO impl C Service AService C

Strategi for å implementere dette  Gode enhetstester!  Jobb fra topp til bunn  Ta kontroll over instansiering av BD  new PatientService() => ServiceFactory.getPatientService()  Sørg for at klienten forholder seg til et interface  Legg over et og et sett med tjenester i nytt rammeverk inkludert minimal konfigurasjon i Spring  Gjør nødvendig refactoring på DAOene for å skille de i grensesnitt og implementasjon  Knytt DAOene inn via Spring  Legg på advices  Alle enhetstester skal gå på grønt under hele refactoringen!

Resultat av redesignet  Høyere produktivitet  Mindre rammeverkskode å forholde seg til  Har fått muligheter for caching på DAO- laget gratis  IOC gjør det enklere å benytte mock- objects i enhetstester  Har fungert stabilt i produksjon i 9 mnd

Erfaringer fra bruk av AOP  Gir en løsere kobling mellom rammeverkskode og forretningslogikk  Gjør det mulig å gjenbruke rammeverkskode  Fjerner ikke behov for å vite om logikken  Konfigurering av aspekter i Spring kan virke rotete  Debugging med AOP er vanskelig  Lange og stygge stack-tracer