27
Tema 5. Arquitectura de las aplicaciones con acceso a BD Desarrollo de Sistemas de Información Marta Elena Zorrilla Pantaleón DPTO. DE MATEMÁTICAS,ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY‐NC‐SA 3.0

Desarrollo de Sistemas de Información - ocw.unican.es · Torre et al. Guía de Arquitectura N‐Capas DDD .NET ... en java o C# pero es un parche que solo ... n‐capas) Diferentes

Embed Size (px)

Citation preview

Tema5.ArquitecturadelasaplicacionesconaccesoaBD

DesarrollodeSistemasdeInformación

MartaElenaZorrillaPantaleónDPTO.DEMATEMÁTICAS,ESTADÍSTICAY

COMPUTACIÓN

EstetemasepublicabajoLicencia:CreaIveCommonsBY‐NC‐SA3.0

UC‐MartaZorrilla

REFERENCIAS

  Libros

  ScoOW.Ambler.TheDesignofaRobustPersistenceLayerFor

RelaIonalDatabases.2005hOp://www.ambysoZ.com/downloads/persistenceLayer.pdf

  ClintonBegin,BrandonGoodin,LarryMeadors.iBaIsinacIon.

NewYork:Manning,cop.2007.

  CésardelaTorreetal.GuíadeArquitecturaN‐CapasDDD.NET

4.0.KrassisPress,2011

2

UC‐MartaZorrilla

REFERENCIAS

  Recursosweb

  iBaIshOp://ibaIs.apache.org/

  HibernatehOp://www.hibernate.org/

  ComparaIvaFrameworks:hOp://crowdranking.com/crowdrankings/t420g0‐‐best‐java‐persistence‐frameworks

  DataSkillsforAgileSoZwareDeveloperhOp://www.agiledata.org/essays/developerSkills.html

  EncapsulaIngDatabaseAccess:AnAgile"Best"PracIcehOp://www.agiledata.org/essays/implementaIonStrategies.html

  ScoOAmbler'sArIclesandOtherWriIngshOp://www.ambysoZ.com/onlineWriIngs.html

  ComparisonandBenchmarksonORMBaOle.NEThOp://ormeter.net/

3

UC‐MartaZorrilla

INTRODUCCIÓN

  Mayoritariamente,losSistemasdeInformaciónhacenusodebasesdedatosrelacionalesparalapersistenciadesusdatos.EnmenormedidaseusanBDorientadasaobjetoy/uObjeto‐relacionales.YestátomandorelevancialasBDXML,comoconsecuenciadelintercambiodedatosyestándaresdelaindustria.

  SQL,estándardesde1987,esellenguajedeinterrogaciónydefiniciónampliamenteadoptado.Hasidoextendidoparaabordarelmodeladodelosdatosobjetual(OR)ysemi‐estruturado(XML).Envigor,estándarSQL:2008.

  Limitaciones:sólounapartedeSQLesrealmenteestándarcuandotrabajascondisIntosgestoresdeBD

  Afavor:declaraIvo,potente,ampliamenteuIlizado

4

UC‐MartaZorrilla

INTRODUCCIÓN

  Porotraparte,lossistemasdeinformaciónsevenmuyafectadosporloscambiosnormaIvosyorganizaIvosdelascorporaciones,loqueconllevaacambiosenlosrequisitosyconInuasadaptacionesenelsoZware.

  ParalelamentelastecnologíasnoparandeavanzarydeproponergrancanIdaddealternaIvasquepermitenconstruiraplicaciones,quesiguiendounaarquitecturamodular,seadaptenmuybienadiferentesescenarios.

  ¿Cómoabordarlo?

  Analicemoslahistoria

5

UC‐MartaZorrilla

REVISIÓN HISTÓRICA 6

Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos

Procesamiento Procesamiento Procesamiento Procesamiento

Presentación Presentación

Procesamiento

Presentación

Procesamiento

PresentaciónPresentaciónPresentación Presentación

Procesamiento

Desdelosaños80hastalaactualidadlaarquitecturadelasaplicacionessehaidomodificandopasandodesdeunaarquitecturacentralizada(todoenelhost)aunadistribuida,enelquesereparteelaplicaIvoenvariasmáquinas(clienteyservidores)aprovechandoasílascapacidadesgráficasydecómputodecadaIpodeequipo

Persistencia

UC‐MartaZorrilla

LAYERS AND TIERS

  EsimportantedisInguirlosconceptosde“Capas”(Layers)y“Niveles”(Tiers)

  LasCapas(Layers)seocupandeladivisiónlógicadeloscomponentesqueconsItuyenelsoZware,ynoIenenencuentadóndeestaráubicadosvsicamente.

  LosNiveles(Tiers)serefierenalosdisIntosequiposendondeloscomponentessoZwaresedesplegarán.

  Ambosusannombressimilares(presentación,proceso/servicio,negocioydatos),peroesimportantenoconfundirlos.

7

UC‐MartaZorrilla

CARACTERÍSTICAS DE LAS APLICACIONES

  Aplicacionescentralizadas(1Ier)(desde1970a..):

  Interfacesorientadasatexto

  DesarrolladoprincipalmenteconCobol,ylenguajes4GLqueembebíanellenguajeSQLdelgestordeBD(Informix‐4GL,Oracle,etc.)

  Aplicacioneseficientes,ágiles,peropocousables

  2Ier(1990‐95):

  Interfacesgráficasenclienteconcapacidaddeprocesamiento.

  SebasabaenlainvocacióndeinstruccionesSQLdesdecliente.Avecesestasinstruccioneseranprocedimientosalmacenadosque,incluíannosóloelSQLsinotambiénlógicadenegocio.Sellevabatodoelcómputoalservidor.

  RecordemosquelosprocedimientosalmacenadossiguenlenguajeprocedimentalynodeclaraIvo.Impideportabilidad.

  Lasaplicacionespresentabanproblemasdeescalabilidadyrendimientoysudespliegueeraunalocura“elinfiernodelasdlls”

  Herramientas:VB,PowerBuilder,OracleForms,…conAPIODBC.Prob.Conelpooldeconexiones

8

UC‐MartaZorrilla

CARACTERÍSTICAS DE LAS APLICACIONES

  3‐IeroN‐Ier(1994‐…):  Interfaces“thin”y“thick”  SurgenconlallegadadeInternetyelprotocolohOp.  Sedividelaaplicaciónencapadepresentación,denegocioyde

datos.  Losprocedimientosalmacenadossellevanalacapadenegocios

(comollamadasaprocedimientosremotos)dondesemejoraelrendimientoconunagesIónmásopImizadadelpooldeconexionesylosrecursosdegestor.

  EstossonmuyeficientesencuantoaquemanipulanlainformaciónqueestáenelpropiogestorperosonmásdivcilesdeescribiryprobarpuesnoestánligadosalasmetodologíassoZwareactuales(orientadasaobjetosvistosdesdelaperspecIvadeaplicación).

  AlgunosgestoresyapermitenlaprogramacióndeprocedimientosenjavaoC#peroesunparchequesoloresuelvelaportabilidaddelaBD.

9

UC‐MartaZorrilla

CARACTERÍSTICAS DE LAS APLICACIONES

  3‐IeroN‐Ier(1994‐…):  InlineSQL:aconInuaciónaparecieronlenguajescomoSQLJ

(estandarizadoenSQL2003)queembebíainstruccionesSQLenjavaperonohasidomuyuIlizado.  SQLnoestándary,portanto,nosepuedehacerunparser

general

  Necesidaddeunprecompilador

  DificultadparaintegrarloenlosIDEdedesarrollo

  DynamicSQL:resuelveelproblemadelprecompilador,escribiendoelSQLenunstring.EstorequiereunaAPIparaconfigurarlosparámetrosyrecuperarlosdatos(JDBC,ADONet)  Ventaja:flexibilidadparaconstruirdinámicamentelasSQLs

  Inconveniente:muchocódigorepeIIvocadavezquequieresejecutarunaconsulta.AdemáselSQLpuedevenirconcatenadoloqueresultadivcildeleerymantener

10

UC‐MartaZorrilla

EJ. SQLJ Y JDBC 11

SQLJ

estándar estático

#sql [ctx] { SELECT MAX(SALARY), AVG(SALARY) INTO :maxSalary, :avgSalary FROM DSN8710.EMP };

JDBC

no estándar dinámico

PreparedStatement stmt = conn.prepareStatement( "SELECT MAX(SALARY), AVG(SALARY)“ + " FROM DSN8710.EMP"); rs = stmt.executeQuery(); if (!rs.next()) { // Error -- no rows found } maxSalary = rs.getBigDecimal(1); avgSalary = rs.getBigDecimal(2); if (rs.next()) { // Error -- more than one row found } rs.close(); stmt.close();

UC‐MartaZorrilla

CARACTERÍSTICAS DE LAS APLICACIONES

  3‐IeroN‐Ier(1994‐…):  Actualmente,lasoluciónadoptadaesdiseñarunacapaque

realiceelmapeoobjeto‐relacional.

  SussiglasORMserefierenalmapeodeobjetosdelsoZwaredeaplicaciónarelacionesotupasdelmodelorelacionalparasupersistenciayrecuperaciónposterior.

  SuusoseexIendetambiénaotrastecnologíasnorelacionales(BDXML,ficheros,etc.)

  Ventajas:  MuchasherramientasORMgenerancódigoSQLdirectamente,

realizanconvenientementelagesIóndetransacciones,ofrecenposibilidadesdecaching

  Algunas,estándiseñadasconciertasreglasqueobliganaquelaBDestánormalizadaperfectamente,loqueinfluyenegaIvamenteensurendimiento.MuchasempresasconstruyensupropioORM.

12

UC‐MartaZorrilla

ARQUITECTURA LÓGICA

  User‐interfaceclassesshouldnotdirectlyaccessyourpersistencemechanisms.

  Domainclassesshouldnotdirectlyaccessyourpersistencemechanisms.

  Theclass‐typearchitectureisorthogonaltoyourhardware/networkarchitecture

13

UC‐MartaZorrilla

ARQUITECTURA FÍSICA

Classtype StandAlone Fat‐client Thin–client N‐=er

UserInterface Client Client Client Client

Controller/process

Client Client Server ApplicaIonserver

Domain/business

Client Client Server ApplicaIonserver

Persistence Client Server Server DatabaseServer

System Client Allmachines Allmachines Allmachines

14

2Ier‐c/s 3Ier‐c/s1Ier‐c/s

UC‐MartaZorrilla

NECESIDAD DE LA CAPA DE PERSISTENCIA

  Persistenciaeslacapacidaddeunlenguajedeprogramaciónoentornodedesarrollodeprogramaciónpara,almacenaryrecuperarelestadodelosobjetosdeformaquesobrevivanalosprocesosquelosmanipulan.

  ¿Esnecesaria?Si,debidoaldesajustedeimpedanciaentreelmodelodedatosdelosparadigmasdeprogramaciónorientadosaobjetosyeldelosgestoresdebasesdedatos(relacionales,OR,xml,etc).Paraelcasorelacional,

  Modelodeobjetos(objetosconatributos,métodosyrelacionesconotrosobjetos)debedescomponerseenvariastablas(deacuerdoalasrelaciones1:NyN:M)paraalmacenarseysurecuperaciónrequierevariosJOINs

  EnlosgestoresrelacionaleselaccesoesasociaIvo,estoes,basadoenelcontenido(valordeclave)ynonavegacional,basadoenelmovimientoentreregistrosindividuales.

  LosgestoresproveeIposdedatosquenoIenenloslenguajesdeprogramaciónOO(p.ej.Interval,Date).

15

UC‐MartaZorrilla

REQUISITOS A CUMPLIR

  Lacapadepersistenciaencapsulaelcomportamientonecesarioparaescribir,recuperar,actualizaryborrarobjetos(delaaplicaciónsoZware)a/desdeelgestordealmacenamientopersistente(relacional,XML,ficheros,etc.).

  Estadebesoportar,deacuerdoaScoOAmbler(2005):  Diferentesmecanismosdepersistencia(relacional,XML,ficheros,etc.).  Encapsulacióncompleta:nodebesernecesarioescribirningunalíneade

códigoqueaccedaalgestordepersistencia,debensersuficientelosmétodosdefinidosenlacapadepersistencia

  AccionessobrevariosobjetosalIempo(borrarvariosobjetosoconsultarlos,etc.)

  Transaccionessimplesyanidadas(todoonadaoconcommitparcial)  Extensibilidad:fácilparasusItuirlosmecanismosdepersistencia

existentesypoderincorporarnuevascaracterísIcas

  IdenIdaddeobjetospersistentes:lacapadepersistenciadebeasociarunidenIficadoracadaobjetopersistentequesirvaparalocalizardeformaunívocaelobjetoguardadoenelgestordepersistencia

16

UC‐MartaZorrilla

REQUISITOS A CUMPLIR

  Estadebesoportar(cont.):

  Cursores:debepoderrecuperarelnúmerodeobjetosquesele

pidanyevitarelmanejodevolúmenesgrandesdedatos

  Proxies:complementaalcursor,unobjetoquerepresentaaotro

perosintraerloamemoriahastaquesesoliciteexpresamente

  MúlIplesarquitecturas:debepoderadaptarseacualquierIpode

arquitectura(centralizada,c/s,n‐capas)

  Diferentesgestores:siseproduceuncambiodegestorlasaplicacionesnosevenafectadas

  MúlIplesconexiones:debepermiIrabrirconexionesadiferentes

basesdedatosdentrodeunamismaaplicación

  SuporteadriversnaIvosynonaIvos(JDBC,ODBC,…)

  ConsultasSQL:aunquesedebeevitarelSQLenelcódigoOO,en

ocasionesesnecesarioporrendimientoydebepermiIrse.

17

UC‐MartaZorrilla

MECANISMOS DE PERSISTENCIA 18

ScoOAmbler,2005

UC‐MartaZorrilla

MECANISMOS DE PERSISTENCIA

  AccesodirectoaBD.ImplicaelusodirectodelaBDhaciendousodeunainterfazestandarizadayunlenguajedeconsultasoportadoporelgestor.Noexistecapadepersistenciaentreelgestorylaaplicación.

  Mapeadores:mecanismosquesebasanenlatraducciónbidireccionalentrelosdatosencapsuladosenlosobjetosdelalógicadeunSistemaOOyelmodelodedatosdelafuentededatos.Elmapeadoreselencargadoderealizarlaconversiónentreparadigmas,biendeformamanualoautomáIca.

  Generadoresdecódigo:usarherramientasgeneradoresdecódigobasadasenpatronespararesolverlapersistencia,centrándoseeldesarrolladorenelcódigoqueresuelvelalógicadenegocio.

19

UC‐MartaZorrilla

MECANISMOS DE PERSISTENCIA

  Orientaciónaaspectos:paradigmaorientadoamodularizarlasaplicacionesendeterminadosconceptos,unodeelloseslapersistencia

  Lenguajesorientadosaobjetos:uIlizarfuncionalidadesdepersistenciaprovistasporelpropiolenguajedeprogramaciónevitandolainclusióndeframeworks.

  Libreríasestándarusandotécnicascomolaserializacióndeobjetos(nogesIonatransaccionesniincorporalenguajesdeconsulta);lenguajesqueproveanpersistenciaousandolenguajesqueintegrenunlenguajedeconsultasobreelsistemapersistentecomoOQL,HQL.

  Prevalencia,técnicaparahacerpersistenteslosdatosqueestánenmemoriappal.usandotécnicasdeserialización.Manejantransaccionesypuedenrecuperarunestadoestablesicaeelsistema.

20

UC‐MartaZorrilla

FRAMEWORKS DE PERSISTENCIA

  Frameworkesunconjuntodelibreríasoclasesqueproporcionaunainfraestucturaqueactúadesoporteparadesarrollaraplicaciones.Estoes,esunesquemaopatrónparaeldesarrollodeunaaplicacióncompletaodeunaparteespecíficadelamisma.

  Losframeworks,adiferenciadeunconjuntodelibrerías,ofrecenunaseriedeserviciosparaimplementarelartefactosoZwareocultandosucomplejidadalprogramadoryahorrandoIempodeprogramación.Porotraparte,estámáslimitadouncambioensufuncionalidad.

  Frameworkdepersistenciaesunmarcodetrabajoquesesitúaentrelalógicadenegocioylacapadebasededatos,abstrayendounodelotro.

21

UC‐MartaZorrilla

FRAMEWORKS PARA JAVA

  IbaIs:  MyBa=sisapersistenceframeworkavailableforJavaand.NETthat

couplesobjectswithstoredproceduresorSQLstatementsusinganXMLdescriptororannotaIons.

  Hibernate:  Hibernateisanobject‐relaIonalmapping(ORM)libraryfor

theJavalanguage,providingaframeworkformappinganobject‐orienteddomainmodeltoatradiIonalrelaIonaldatabase.

  OpenJPA:  OpenJPAisanopensourceimplementaIonofthe

JavaPersistenceAPIspecificaIon.Itisanobject‐relaIonalmapping(ORM)soluIonfortheJavalanguage,whichsimplifiesstoringobjectsindatabases

  EclipseLink  EclipseLinkistheopensourceEclipsePersistenceServicesProjectfrom

theEclipseFoundaIon.ThesoZwareprovidesanextensibleframeworkthatallowsJavadeveloperstointeractwithvariousdataservices,includingdatabases,webservices,ObjectXMLmapping(OXM),andEnterpriseInformaIonSystems(EIS).EclipseLinksupportsanumberofpersistencestandards

22

UC‐MartaZorrilla

OTROS FRAMEWORKS PARA JAVA

  Torque

  Castor

 OJB

  Cayenne

  JDBM

  PBeans

  SimpleORM

  JULP(JavaUltra‐LitePersistence)

  Smyle

  Speedo

  XORM

  JDBCPersistence

  JDOGenie

  LiDO

  JDOToolkit

  FronIerSuite

  Jrelay

  IntelliBO

  kodoJDO

 ….

23

UC‐MartaZorrilla

OTROS FRAMEWORKS PARA NET

  Sqlclient

  EnItyFramework

  LINQtoSQL

  BTLToolkit

 DataObjects.Net

  LinqConnect

 Nhibernate

 OpenAccesss

  Etc….

24

UC‐MartaZorrilla

IBATIS

  iBaIsesunframeworkquefacilitaeldiseñodelacapadepersistenciauIlizadaenlasaplicacionesJavaparaaccederanuestrorepositoriodedatos.

  iBaIsunelosObjetosconlassentenciasSQLmedianteundescriptorXML.

  iBaIsnecesitaunoomásficherosconlassentenciasSQLqueusaráelprograma

  IbaIsnecesitaunficherodeconfiguraciónenXMLdondeseindiquenlosparámetrosdeconexiónalabasededatosylosficherosdemapeoXML

25

UC‐MartaZorrilla

HIBERNATE

  HibernateesunaherramientadeMapeoobjeto‐relacionalparalaplataformaJava(ydisponibletambiénpara.NetconelnombredeNHibernate)quefacilitaelmapeodeatributosentreunabasededatosrelacionaltradicionalyelmodelodeobjetosdeunaaplicación,mediantearchivosdeclaraIvos(XML)quepermitenestablecerestasrelaciones.

  Hibernatenorequiereconocerelmodelodedatosalcualseaccede.SeIeneunaaplicaciónOrientadaaObjetosyélmapeaeldiseñoOOenunacapadepersistencia.

  LamayordiferenciaentreHibernateeiBATISprovienedelhechodequeelúlImobasasufuncionamientoenelmapeodesentenciasSQLqueseincluyenenficherosXML.Esosignificaque,alcontrarioqueHibernate,requiereconocimientodeSQLporpartedelprogramador.Porotraparte,permitelaopImizacióndelasconsultas,yaseaconlenguajeestándaroconSQLpropietariodelmotordebasededatosuIlizado.ConiBATIS,siempresesabeloqueseestáejecutandoenlabasededatosypermitegenerarconsultasdinámicasmuypotentes.

26

UC‐MartaZorrilla

HIBERNATE VS IBATIS

  HibernatefacilitaeldesarrolloalnotenerporquetenerconocimientoalgunoacercadeSQL,perosedesaconsejaparadesarrollosenlosqueladefinicióndelmodelodedatosestáyadefinidoosilasrelacionesenelmodelodedatosvanasercomplejas.

  Porotraparte,HibernatealuIlizarsupropiolenguajedeconsultadedatos,loconvierteenmulImotordebasededatos.

  IbaIssoportalaposibilidaddealmacenarconsultasenlacaché(usaOpenSymphonyCache)ypooldeconexiones(usaYacarta).

  EndefiniIva,HibernateseparamáslacapadenegocioypersistenciaqueIbaIsenlaqueeldesarrollador“define”elenlace(menosniveldeabstracción).

  UsaremosIbaIsenlasprácIcas.

27