arquitectura por capas

Upload: husseingabriel

Post on 14-Oct-2015

41 views

Category:

Documents


0 download

DESCRIPTION

Arquitectura Por Capas

TRANSCRIPT

  • 5/24/2018 Arquitectura Por Capas

    1/15

    Home A rchiv e Contact Subscribe Sign in

    DEC

    11.

    Software y Aplicaciones WebBlog de desarrollo de software y a plicaciones web

    Arquitectura de N-Capas y N-Niveles

    Lo que se conoce como arquitectura en capas es en realidad un estilo de programacin dondeel objetivo principal es separar los diferentes aspectos del desarrollo, tales como las

    cuestiones de presentacin, lgica de negocio, mecanismos de almacenamiento, etc.

    Los que aprendieron a programar con Pa scal,recuerdan que con ese lenguaje todo estaba enla misma porcin de cdigo.A lo mejor un progrador cuidadose organizaba lascosas en "units", pero al final todo es taamontonado.

    Vamos a dejar de lado los servicios que e l SistemaOpera tivo facilita para el manejo de a rchivos, estoes imprescindible.

    Figura 1

    Muchos de nosotros debe mos recordar que desde la apa ricin de los motores de base de datos e xisten dos"niveles" perfectamente definidos. Quiero resaltar el uso del trmino "nivel" y no el de "capa" porque nosignifican lo mismo. El trmino capa se utiliza para referenciar a las distintas "partes" en que una aplicacinse dividide desde un punto de vista lgico; mientras que "nivel" corresponde a la forma fsica en que seorganiza una aplicacin.

    Cuandoprogramaba enCOBOL las cosastambin se haciancomo en Pascal,pero habainstalaciones dond ese poda utilizaruna Base de Datosy codificar laaplicacin conCOBOL; de estemodo ya tenamos

    una separacin enniveles:

    Se puede observarcon total claridad elnivel de aplicacin(seguramente enella existe cdigode presentacin ylgica de negocio) yel nivel de datos(donde est la o lasbases de datos del a organizacin). Elobjetivo de esteesquema fue ysigue siendo el delograr un nicorepositorio de

    datos para laorganizacin ymltiplesaplicaciones queutilizan esos datos.

    Figura 2

    Ahora consideremos el ejemplo de un componente que permita grabar los programas de televisin emitidos.Este componente tiene un sistema de almacenamiento, dado que hace falta "guardar" las instrucciones sobreel da y hora se desea grabar el programa en particular; obviamente existe una porcin de lgica de negocio,la que se refiere a los paso s ne cesarios para capturar el programa de televisin y grabarlo; finalmente ha yuna interfz de usua rio que permite a las personas ver y editar las instrucciones de grabacin.

    Podemos decir desde un punto devista lgico que existen tres capas, yhasta que no veamos el cdigo que

    Ejemplosde ProgramacinJulio Tentor

    Pginas

    Victima del spamI'm backEl XML Web Server ControlXML y ADO.NET - parte 2XML y ADO.NET - parte 1ABM con ADO.NETUn poco de ADO.NET - parte 5Un poco de ADO.NET - parte 4Un poco de ADO.NET - parte 3Un poco de ADO.NET - parte 2Un poco de ADO.NET - parte 1Un poco de MP3

    Publicaciones Recientes

    Arquitectura de N-Capas y N-Niveles(40)Hugo wrote: Excelente el blog y elartculo. Y el conocim... [More]Arquitectura de N-Capas y N-Niveles(40)

    Oscar Mancera wrote: Simpre leo lasactualizacinoes de este post, y me ...[More]Arquitectura de N-Capas y N-Niveles (40)

    jtentorwrote: Por lo que dices, tu clasecontroladora tiene dos ... [More]Arquitectura de N-Capas y N-Niveles(40)Janier wrote: Hola Julio, primeramentefelicitarlo por el gran p... [More]Arquitectura de N-Capas y N-Niveles(40)

    jtentorwrote: Estimado, Efectivamentecada capa puede ser un DL... [More]Arquitectura de N-Capas y N-Niveles(40)Christian wrote: Hola Julio. Muy bueno tuartculo y quierop... [More]Arquitectura de N-Capas y N-Niveles(40)

    jtentor wrote: Estimado Rodrigo; Eso quela logica de negocio un... [More]Arquitectura de N-Capas y N-Niveles(40)Rodrigo Santamaria wrote: Buenosdias Julio. Nuevamente muchasgraciaspor ... [More]Arquitectura de N-Capas y N-Niveles (40)

    jtentorwrote: Ary, si se puede afirmarque es una arquitectura e... [More]Arquitectura de N-Capas y N-Niveles (40)Ary wrote: Hola, estoy trabajando en unaplicacin, que ... [More]Arquitectura de N-Capas y N-Niveles (40)Mariam wrote: me encanto el articulo , nolo habia podido entend... [More]Arquitectura de N-Capas y N-Niveles (40)Allanwrote: Muy buen publicacin![More]Arquitectura de N-Capas y N-Niveles (40)Rodrigo Santamaria wrote: Buenasnoches. Gracias por todo el esfuerzo, no... [More]Becas Control F(11)

    jtentor wrote: Hi, this blog usesBlogEngine, you can find it at ... [More]

    Becas Control F(11)squaretrade scam wrote: Hello there! Iknow this is somewhat off topic but...[More]

    Comment RSS

    ComentariosRecientes

    ASP.NET (31)Blog (4)BlogEngine (5)Celulas (9)Estructura de Datos (10)General (1)Instrucciones (2)MiniCommerce (1)Personal (6)Pro ramacion 35

    Categoras

    converted by Web2PDFConvert.com

    http://www.jtentor.com.ar/category/feed/General.aspxhttp://www.jtentor.com.ar/category/General.aspxhttp://www.jtentor.com.ar/category/feed/Celulas.aspxhttp://www.jtentor.com.ar/category/Celulas.aspxhttp://www.jtentor.com.ar/category/Personal.aspxhttp://www.jtentor.com.ar/post/Becas-Control-F.aspx#id_ac50154a-df65-49f5-94c9-dcf7dab77b00http://www.scamdata.com/http://www.jtentor.com.ar/post/Becas-Control-F.aspxhttp://jtentor.com.ar/http://jtentor.com.ar/post/Arquitectura-de-N-Capas-y-N-Niveles.aspxhttp://jtentor.com.ar/http://www.jtentor.com.ar/post/Un-poco-de-MP3.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-2.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-2.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-4.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-5.aspxhttp://www.jtentor.com.ar/post/XML-y-ADONET-parte-1.aspxhttp://www.jtentor.com.ar/post/El-XML-Web-Server-Control.aspxhttp://shots.snap.com/?source=&campaign=snap-shots-logohttp://www.jtentor.com.ar/post/Victima-del-spam.aspxhttp://www.jtentor.com.ar/page/Julio-Tentor.aspxhttp://www.jtentor.com.ar/http://www.jtentor.com.ar/archive.aspxhttp://www.jtentor.com.ar/archive.aspxhttp://www.jtentor.com.ar/contact.aspxhttp://www.jtentor.com.ar/http://www.jtentor.com.ar/http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/category/Programacion.aspxhttp://www.jtentor.com.ar/category/feed/Programacion.aspxhttp://www.jtentor.com.ar/category/Personal.aspxhttp://www.jtentor.com.ar/category/feed/Personal.aspxhttp://www.jtentor.com.ar/category/MiniCommerce.aspxhttp://www.jtentor.com.ar/category/feed/MiniCommerce.aspxhttp://www.jtentor.com.ar/category/Instrucciones.aspxhttp://www.jtentor.com.ar/category/feed/Instrucciones.aspxhttp://www.jtentor.com.ar/category/General.aspxhttp://www.jtentor.com.ar/category/feed/General.aspxhttp://www.jtentor.com.ar/category/Estructura-de-Datos.aspxhttp://www.jtentor.com.ar/category/feed/Estructura-de-Datos.aspxhttp://www.jtentor.com.ar/category/Celulas.aspxhttp://www.jtentor.com.ar/category/feed/Celulas.aspxhttp://www.jtentor.com.ar/category/BlogEngine.aspxhttp://www.jtentor.com.ar/category/feed/BlogEngine.aspxhttp://www.jtentor.com.ar/category/Blog.aspxhttp://www.jtentor.com.ar/category/feed/Blog.aspxhttp://www.jtentor.com.ar/category/ASPNET.aspxhttp://www.jtentor.com.ar/category/feed/ASPNET.aspxhttp://www.jtentor.com.ar/syndication.axd?comments=truehttp://www.jtentor.com.ar/post/Becas-Control-F.aspx#id_ac50154a-df65-49f5-94c9-dcf7dab77b00http://www.scamdata.com/http://www.jtentor.com.ar/post/Becas-Control-F.aspxhttp://www.jtentor.com.ar/post/Becas-Control-F.aspx#id_b57ed250-ca7b-4aee-8686-d7df799915dahttp://jtentor.com.ar/http://www.jtentor.com.ar/post/Becas-Control-F.aspxhttp://jtentor.com.ar/post/Arquitectura-de-N-Capas-y-N-Niveles.aspxhttp://jtentor.com.ar/http://www.conjuntosenlinea.com/http://jtentor.com.ar/http://jtentor.com.ar/http://jtentor.com.ar/http://www.jtentor.com.ar/post/Un-poco-de-MP3.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-1.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-2.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-3.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-4.aspxhttp://www.jtentor.com.ar/post/Un-poco-de-ADONET-parte-5.aspxhttp://www.jtentor.com.ar/post/ABM-con-ADONET.aspxhttp://www.jtentor.com.ar/post/XML-y-ADONET-parte-1.aspxhttp://www.jtentor.com.ar/post/XML-y-ADONET-parte-2.aspxhttp://www.jtentor.com.ar/post/El-XML-Web-Server-Control.aspxhttp://www.jtentor.com.ar/post/IM-back.aspxhttp://www.jtentor.com.ar/post/Victima-del-spam.aspxhttp://www.jtentor.com.ar/page/Julio-Tentor.aspxhttp://www.jtentor.com.ar/page/Ejemplos-de-Programacion.aspxhttp://__dopostback%28%27ctl00%24loginstatus1%24ctl02%27%2C%27%27%29/http://www.jtentor.com.ar/syndication.axdhttp://www.jtentor.com.ar/contact.aspxhttp://www.jtentor.com.ar/archive.aspxhttp://www.jtentor.com.ar/http://www.jtentor.com.ar/http://shots.snap.com/?source=&campaign=snap-shots-logohttps://www.previewshots.com/accounts/signup.php?source=www.jtentor.com.ar&campaign=viral-foot
  • 5/24/2018 Arquitectura Por Capas

    2/15

    escribi el desarrollador vamos a creerque es as.

    Lo que no se puede negar es que hayun nico nivel, todo esta empotradoen algn componente de hardwaredentro del equipo.

    Es importante destacar que hace faltaseparar el cdigo de presentacin delcdigo de lgica de nego cio, porque e lfabricante puede desarrollar esteequipo para que muestre lasinstrucciones en un display del mismoequipo o utilizar el televisor; lacuestin es que el cdigo depresentacin tiene que poderintercambiarse, lo cul es una de lasventajas del desarrollo en capas.

    Figura 3

    La necesidad de contar con porciones de la aplicacin que se puedan "intercambiar" sin tener quemodificar el resto de la aplicacin es lo que impulsa el desarrollo en capas; de este modo nosencontramos con el siguiente diagrama:

    Figura 4

    Ahora tenemos 2 niveles y en el primero deellos diferenciamos 2 capas, de esta maneraestamos diciendo que la capa de presentacininteractua con la capa de lgica de negocion;Desde la filosofa de arquitectura en capas,esto significa que la capa de lgica de

    negocios presenta una "interfaz" parabrindar servicios a la capa de presentacin .

    Del mismo modo, en el diagrama estamosdiciendo que existe otro nivel donde seencuentra una capa encargada de los datos.Esta capa no se muestra como un "paquete" o"ensamblado" dado que se trata(generalmente) de un motor de base de datosque puede o no e jecutarse en e l mismo equipo.Indudablemente esta capa tambin presentauna "interfaz" para brindar sus servicios a lacapa que es t por encima.

    Lo importante y que siempre debe mos recordares que las capas inferiores brindan servicios alas capas superiores (independientemente delnivel en que se encuentren).

    La clave del desarrollo en capas es que una capa

    solamente debe utilizar lo que la "interfaz" de la o lascapas inferiores le brindan, de este modo se pudenintercambiar las capas respetando la "interfaz", queviene a ser como un "contrato entre capas"

    Ahora escribiendo nuevo cdigo podemos intercambiar la capa de presentacin sin afectar el resto de laaplicacin. El problema se presenta cuando queremos intercambiar la Capa / Nivel de Datos, esto significaque necesitamos utilizar otro motor de base d e datos y resulta que los fabricantes de motores de bases dedatos si bin respetan los estnd ares, incorporan caractersticas valiosas en sus productos. Una aplicacinque pretenda utilizar la "potencia" o caractersticas particulares de un motor de base de datos,inevitablemetne incorporar en la Capa d e Lgica de Negocios algo de cdigo que no es compatible con otrosmotores de base de datos. En consecuencia, cambiar la capa de datos significa corregir la capa de lgica denegocios.

    Las buen as prcticas de diseo y des arrollo indican que se de be trabajar sobre el siguiente diagrama:

    SQL (2)UML (1)Vacaciones (2)WCF (2)WebSite (13)XML (8)

    Que desea buscar Buscar

    Incluir comentarios en labsqueda

    asp.net blog blogengine celulascursos estructura de datos

    jujuya spne t personal

    programacion sq l teamdjnettheaspberries wcfwebsite xml

    Marcas (Tags)

    2013June (1)2010August (1)2009October (9)

    August (12)July (3)June (5)February (2)2008December (4)August (1)July (5)June (2)May (4)April (4)March (4)February (3)January (3)2007December (2)

    Month List

    Mads KristensenAl Nyveldt

    RazorAnt Software acquires ProfitTrainRazorPDF Samples

    Ruslan TurASP.NET Globalization in BlogEngine.NETUpdater utility for BlogEngine 2.9

    John DyerColoring Hebrew Vowels and Accents inHTML/CSSThis Site Bes t Vi ewed in Google Glass

    Scot t Hanselman's

    BlogRoll

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.hanselman.com/blog/http://feeds.feedburner.com/ScottHanselmanhttp://feedproxy.google.com/~r/johndyer/~3/iwa6HsC_j8Y/http://feedproxy.google.com/~r/johndyer/~3/3ATgq14SfyY/http://johndyer.name/http://johndyer.name/syndication.axdhttp://feedproxy.google.com/~r/rtur/~3/Txke3q4Nx1U/post.aspxhttp://feedproxy.google.com/~r/rtur/~3/F5_zMRCdh8w/post.aspxhttp://rtur.net/blog/http://feeds.feedburner.com/rturhttp://feedproxy.google.com/~r/razorant/~3/vYVBuuZ0rQ4/post.aspxhttp://feedproxy.google.com/~r/razorant/~3/e93Px6HOro8/post.aspxhttp://www.nyveldt.com/blog/http://feeds.feedburner.com/razoranthttp://www.madskristensen.dk/http://feeds.feedburner.com/netslavehttp://www.jtentor.com.ar/2007/12/default.aspxhttp://www.jtentor.com.ar/2008/01/default.aspxhttp://www.jtentor.com.ar/2008/02/default.aspxhttp://www.jtentor.com.ar/2008/03/default.aspxhttp://www.jtentor.com.ar/2008/04/default.aspxhttp://www.jtentor.com.ar/2008/05/default.aspxhttp://www.jtentor.com.ar/2008/06/default.aspxhttp://www.jtentor.com.ar/2008/07/default.aspxhttp://www.jtentor.com.ar/2008/08/default.aspxhttp://www.jtentor.com.ar/2008/12/default.aspxhttp://www.jtentor.com.ar/2009/02/default.aspxhttp://www.jtentor.com.ar/2009/06/default.aspxhttp://www.jtentor.com.ar/2009/07/default.aspxhttp://www.jtentor.com.ar/2009/08/default.aspxhttp://www.jtentor.com.ar/2009/10/default.aspxhttp://www.jtentor.com.ar/2010/08/default.aspxhttp://www.jtentor.com.ar/2013/06/default.aspxhttp://www.jtentor.com.ar/?tag=/xmlhttp://www.jtentor.com.ar/?tag=/websitehttp://www.jtentor.com.ar/?tag=/wcfhttp://www.jtentor.com.ar/?tag=/theaspberrieshttp://www.jtentor.com.ar/?tag=/teamdjnethttp://www.jtentor.com.ar/?tag=/sqlhttp://www.jtentor.com.ar/?tag=/programacionhttp://www.jtentor.com.ar/?tag=/personalhttp://www.jtentor.com.ar/?tag=/jujuyaspnethttp://www.jtentor.com.ar/?tag=/estructura-de-datoshttp://www.jtentor.com.ar/?tag=/cursoshttp://www.jtentor.com.ar/?tag=/celulashttp://www.jtentor.com.ar/?tag=/blogenginehttp://www.jtentor.com.ar/?tag=/bloghttp://www.jtentor.com.ar/?tag=/aspnethttp://www.jtentor.com.ar/category/XML.aspxhttp://www.jtentor.com.ar/category/feed/XML.aspxhttp://www.jtentor.com.ar/category/WebSite.aspxhttp://www.jtentor.com.ar/category/feed/WebSite.aspxhttp://www.jtentor.com.ar/category/WCF.aspxhttp://www.jtentor.com.ar/category/feed/WCF.aspxhttp://www.jtentor.com.ar/category/Vacaciones.aspxhttp://www.jtentor.com.ar/category/feed/Vacaciones.aspxhttp://www.jtentor.com.ar/category/UML.aspxhttp://www.jtentor.com.ar/category/feed/UML.aspxhttp://www.jtentor.com.ar/category/SQL.aspxhttp://www.jtentor.com.ar/category/feed/SQL.aspx
  • 5/24/2018 Arquitectura Por Capas

    3/15

    Figura 5

    Ahora si tenemos las tan famosas 3 capas,pero hay que hacer un par de aclaracionespara que nadie se confunda.

    La nueva capa, se denomina Capa de Acceso a Datos(o Capa de Persistencia) que no es lo mismo queCapa de Datos.

    La capa de acceso a datos es una porcin

    de cdigo que justamente realiza elacceso a los datos. De esta maneracuando es necesario cambiar el motor debase de datos, solamente tendremos quecorregir esa capa.

    Mientras que la capa de datos (en el nivelde datos) es donde estn los datos y secorresponde directamente con ladefinicin de esquemas, tablas, vistas,

    procedimientos almacenadaos y todo loque se pueda o deba poner en un motorde base de datos.

    Los arquitectos estn felices con este diagrama, sin embargo los desarrolladores tienen un problema. Resultaque los componentes de la capa de lgica de nego cios n ecesitan referenciar a instancias de las "clases deldominio" (las que representan las entidades del negocio) y los componentes de la capa de acceso a datostambin tienen que referenciarlas para po der "rellenar" tales instancias con los datos qu e obtienen de lascapas inferiores.

    Figura 6 (a) Figura 6 (b)

    La porcin de diagrama de laFigura 6 (a) muestra algo queno se debe hacer, porque los

    componentes no pueden caeren un ciclo de referenciasrecursivo, no podracompilarse la aplicacin culde los dos ensamblados deberesolverse antes para podercompilar e l otro?

    Una posible solucin sepresenta en la Figura 6 (b),donde se muestra que ladeclaracin de las"Entidades" se realiza en lacapa de acceso a datos.

    Bin esto tambin tiene unproblema, la capa de acceso adatos surge porque noqueremos "tocar" la lgica denegocio cuando cambiamos el

    nivel de datos, y con esteesquema e stamos incluyendoen la capa de acceso a datosuno de los aspectos msimportantes, que es nuestradefinicin del dominio de laaplicacin; los cambios en lacapa de acceso a datospueden impactar en lasentidades.

    Para pequeas aplicacionesesto puede funcionar, inclusose puede poner ambas capasen un nico ensamblado condiferentes nombres deespacio (namespace) pero ala larga traer problemas.

    La solucin que sa tisface a los arquitectos y a los desarrolladores, es la siguiente:

    Ahora tenemos otra capams, la capa deEntidades quecorresponde al dominio

    ompu er en.comIntroducing ASP.NET vNextFixing System.Core 2.0.5 FileLoadException,Portable L ibrari...

    Microsoft Security BulletinsVulnerabilities in M icrosoft Office Could AllowRemote Code...Vulnerability in Windows Shell Handler CouldAllow Elevation...

    Seguridad MicrosoftPeriodo de requisito de Actualizacin deWindows 8.1 es ex...ALERTA - BOLET N DE SEGURIDAD DEMICROSOFT PARA MAIO DE 2014

    Dino Esposito's WebLogProgramming MVC2 is out with codeCrushed by c omplexityme too, and for a longtime

    Scot tGu's BlogAzure: VM Sec urity Extensions, ExpressRouteGA, Reserved IP s...Azure: 99.95% SQ L Database SLA, 500 GBDB Size, Improved Per...

    The Off icial Microsoft SilverlightSite

    Download OPML file

    XHTML 1.0 The Extensible HyperTextMarkup Language (Second Edition)

    Enlaces Desarrolladores

    C# Corner

    Las opiniones en este blog sepropo rcionan "TAL CUAL", singarantas, no confieren derechos y noreflejan, necesariamente, la opininde quienes me contratan.Algunas cuestiones que se comentanen e l blog no son reales, cualquiersimilitud con a lguna pe rsona viva omuerta no es ms que unacoincidencia, tampoco significa que

    necesite terapia, soy asi. Copyright 2007-2010

    Declaracin

    Este sitio implementa publicidadbasada en intereses

    Propaganda

    Bachiller porInternet

    aiuhs.org

    Obtn tu DobleTitulacin en Lnea

    Estudia por Internet

    desde tu casa.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://aspalliance.com/http://www.c-sharpcorner.com/http://msdn.microsoft.com/es-ar/default.aspxhttp://www.w3.org/TR/xhtml1/http://www.jtentor.com.ar/opml.axdhttp://silverlight.net/blogs/jesseliberty/default.aspxhttp://silverlight.net/blogs/MainFeed.aspxhttp://weblogs.asp.net/scottgu/archive/2014/04/29/azure-99-95-sql-database-sla-500-gb-db-size-improved-performance-self-service-restore-and-business-continuity.aspxhttp://weblogs.asp.net/scottgu/archive/2014/05/12/azure-vm-security-extensions-expressroute-ga-reserved-ips-internal-load-balancing-multi-site-to-site-vpns-storage-import-export-ga-new-smb-file-service-api-management-hybrid-connection-service-redis-cache-remote-apps-and-more.aspxhttp://weblogs.asp.net/scottgu/default.aspxhttp://weblogs.asp.net/scottgu/rss.aspxhttp://weblogs.asp.net/despos/archive/2009/11/12/crushed-by-complexity-me-too-and-for-a-long-time.aspxhttp://weblogs.asp.net/despos/archive/2010/06/12/programming-mvc2-is-out-with-code.aspxhttp://weblogs.asp.net/despos/default.aspxhttp://weblogs.asp.net/despos/rss.aspxhttp://blogs.technet.com/b/seguridad/archive/2014/05/13/alerta-bolet-205-n-de-seguridad-de-microsoft-para-maio-de-2014.aspxhttp://blogs.technet.com/b/seguridad/archive/2014/05/15/periodo-de-requisito-de-actualizaci-243-n-de-windows-8-1-es-extendido.aspxhttp://blogs.technet.com/seguridad/default.aspxhttp://blogs.technet.com/seguridad/rss.xmlhttps://technet.microsoft.com/en-us/library/security/MS14-027https://technet.microsoft.com/en-us/library/security/MS14-023http://www.microsoft.com/technet/security/current.aspxhttp://www.microsoft.com/technet/security/bulletin/secrss.aspxhttp://feeds.hanselman.com/~/63494050/0/scotthanselman~Fixing-SystemCore-FileLoadException-Portable-Libraries-and-Windows-XP-support.aspxhttp://feeds.hanselman.com/~/63807318/0/scotthanselman~Introducing-ASPNET-vNext.aspx
  • 5/24/2018 Arquitectura Por Capas

    4/15

    Figura 7

    de la ap licacin.

    En esta capa seencuentra la declaracinde las entidades de laaplicacin, de maneraque se puedenreferenciar desde otrascapas sin entrar en ciclosrecursivos decompilacin.

    Adems este esquemapermite una totalindependencia entre lalgica de negocios(Business Model) y lasentidades (DomainModel). Por supuestoque ambas partes estnrelacionadas por loscasos de uso y otrosrequerimientos de laaplicacin.

    Por otro lado, esteesquema facilita laincorporacin, en la capade acceso a datos, decomponentes tipo ORM -Objet / RelationalMapping que permiten"mapear" (representar)objetos en un esquemarelacional. Esto funciona

    bin dado que las basesde datos ms utilizadas(por su mejorperformance) son lasbases de datosrelacionales y no lasorientadas a objetos (almenos por aho ra).

    El nivel de cooperacin que presentan las organizaciones requiere que las aplicaciones de software de lasdistintas organizaciones interactuen unas con otras. El problema es que algunas de ellas no se ejecutan enla misma plataforma o estn desarrolladas con marcos de trabajo diferentes. La solucin fue presentadacomo SOA - Service Oriented Architecture, que brinda entre otras cosas una forma estandard de publicar yutilizar se rvicios, conocidos comunmente como se rvicios web (web services).

    La Figura 8muestra comolos usuariosfinales,mediante lautilizacin dehardware osoftwareliviano,puedenacceder a loque sedenomina elnivel declientes oaplicacionesque

    bsicamentese constituyende la capa deresentacin

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDF
  • 5/24/2018 Arquitectura Por Capas

    5/15

    Figura 8

    consumen losserviciospublicados porla mismaorganizacin.Este tipo deaplicacionesson en generalsitios oportales en laweb.

    Puedenimplementarsesoluciones del

    tipo cliente -servidor endonde elusuario finalaccede demanera directaa unaaplicacin deescritorio queconsume losserviciospublicados aligual que lasaplicacionespara hardwarey/o softwareliviano.

    Aplicacionesde otras

    organizacionestambinpueden utilizarlos serviciospublicados porunaorganizacinen particular,obviamenteesto necesitade acuerdoscomerciales ycredencialesparaautenticar yautorizar aquienesconsumen losservicios.

    La pregunta ahora es: Los servicios publicados forman parte de la capa de lgica de negocio?

    En algunos caso, como por ejemplo recuperar la informacin de un inmueble podemos decir que el servicio ensi mismo no presenta lgica alguna.

    En otros casos, como por ejemplo pagar la factura de un servicio pblico desde la cuenta bancaria del usuariofinal si prese nta un n ivel de lgica que no tiene que ver con la lgica del negocio (sea de la institucin pblicao del banco). Se trata de la lgica de la transaccin que involucra dos organizaciones diferentes (aplicacionesdiferentes), consecuentemente debe existir un mecanismo que permita confirmar la realizacin de todos los"pasos" que cada una de las organizaciones requiere; esto no rmalmente se conoce como WorkFlow.

    De esta manera surje otra capa ms, la capa de Servicios Publicados que pued en o no incluir componentes deWorkFlow pero inevitablemente deben estar por a rriba de la capa de lgica de negocios. La Figura 9 muestrael diagrama completo incluso con el componente escencial de la aplicacin: el Esquema de Seguridad, ascomo la lnea de vida de las entidades e n relacin a las distintas capas.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDF
  • 5/24/2018 Arquitectura Por Capas

    6/15

    Marcas: programacion, website

    Marcadores - Bookmarksdigg+, reddit+,del.icio.us+,Google+, dzone+, facebook+

    Pablo-

    Figura 9

    Espero que mis consideraciones les sirvan y po r supuesto estoy dispuesto a deba tir otras o piniones.

    Categoras: Programacion| WebSite

    Comments (40)| RSS

    C o m m e n t s ( 3 9 )Saturday, December 27, 2008 10:54 AM

    Muy buenos ejemplos y detalles.

    Currently rated 4.4 by 21people

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/post/feed/Arquitectura-de-N-Capas-y-N-Niveles.aspxhttp://www.jtentor.com.ar/category/WebSite.aspxhttp://www.jtentor.com.ar/category/Programacion.aspxhttp://www.jtentor.com.ar/?tag=/websitehttp://www.jtentor.com.ar/?tag=/programacionhttp://www.jtentor.com.ar/post/rate/5http://www.jtentor.com.ar/post/rate/4http://www.jtentor.com.ar/post/rate/3http://www.jtentor.com.ar/post/rate/2http://www.jtentor.com.ar/post/rate/1http://www.facebook.com/share.php?u=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspxhttp://www.dzone.com/links/add.html?url=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspx&title=Arquitectura+de+N-Capas+y+N-Niveleshttp://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspx&title=Arquitectura+de+N-Capas+y+N-Niveleshttp://del.icio.us/post?url=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspx&title=Arquitectura+de+N-Capas+y+N-Niveleshttp://reddit.com/submit?url=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspx&title=Arquitectura+de+N-Capas+y+N-Niveleshttp://digg.com/submit?phase=2&url=http%3a%2f%2fwww.jtentor.com.ar%2fpost%2fArquitectura-de-N-Capas-y-N-Niveles.aspx&title=Arquitectura+de+N-Capas+y+N-Niveles
  • 5/24/2018 Arquitectura Por Capas

    7/15

    cristian

    Yunier

    jtentor

    Yunier

    Yunier

    jtentor

    Thursday, February 19, 2009 8:16 PM

    Gracias por el articulo!... me ayudo a afianzar varios conceptos.

    Thursday, A pril 30, 2009 3:15 AM

    amigo el artculo est muy bueno, necesito saber como puedo justificar lautilizacin de la arquitecturaen capas y no de otra arquitectura para el siguiente caso: si tengo una mismaaplicacin publicada en dosservidores, donde en un servidor se publicar la aplicain as como los mtodos delnegocio de la aplicain,

    q sern consumidos por la aplicacin publicada en el otro servidor.

    Gracias de antemano.

    Thursday, A pril 30, 2009 9:27 AM

    La justificacin arranca por el solo hecho que hay dos servidores con la misma apliccin,es inaceptable llevar el mantenimiento por separado de ambas instalaciones. Enconsecuencia la arquitectura de la "la aplicacin" es en capas, las que podran ser:datos, lgica, servicios, Interfaz 1, Interfaz 2. De este modo las interfacesconsumen los servicios provistos; un buen esquema para ello es el de la figura 9,

    sin embargo puede considerarse que una de las interfaces acceda directamente a lalgica mientras que la otra lo haga por medio de servicios web, pero esto puede llevar adesarrollar entidades separadas para hacer lo mismo. Me parece que hay que realizar un anlisisde conveniencia sobre esta alternativa contra una en la que ambas interfaces consuman serviciosweb. Esto ltimo me parece mejor porque si hacen falta dos interfaces es porque hay algnaspecto del usuario final que as lo requiere, por lo tanto el soporte para cada interfaz podr serdiferente e independiente del resto de la aplicacin.Espero que sirva.

    Thursday, A pril 30, 2009 9:54 AM

    ok, muchas gracias.

    Wednesday, May 06, 2009 12:13 PM

    amigo estuve leyendo un artculo (del cual obtuve algo de informacin para la tesis)y me surgiuna duda en un fragmento del artculo:

    en el articulo se refiere a: "la estructura en capas se ha constituido en un estndara la hora de

    desarrollar aplicaciones distribuidas para sistemas empresariales dejando obsoleto el clsicomodelo cliente-servidor".

    Sin embargo, la distribucin de capas lgicas en diferentes capas fsicas constituye en granmedidaun caso particular de la arquitectura cliente/servidor. Cmo se puede explicar esta aparente"contradiccin"?

    Thursday, May 07, 2009 12:39 AM

    La arquitectura cliente-servidor se conoce tambin como arquitectura de dos capas,consecuentemente cualquier arquitectura de N-capas es una evolucin de ella.Actualmente las aplicaciones tiene la forma de sitios o portales en la web (ancuando se utilicen solo en una intranet), antes de la WWW lo que tenamos eranaplicaciones (clientes) que se distribuan en las mquinas de todos los usuarios ypor medio de la red accedan a una base de datos comn (servidor); desde mi

    punto de vista eso era una arquitectura de dos niveles: interfaz + lgica en la aplicacin del ladodel cliente (1er nivel) y capa de datos del lado del servidor (2do nivel). Ese 1er nivel puede haberestado o no dividido en capas.

    Es cierto que el modelo cliente-servidor es obsoleto dado que mantener cientos de mquinasactualizadas con la ltima verisn de la aplicacin es un problema, es mucho mejor que losusuarios utilicen un cliente liviano (browser) para acceder a un sito o portal, solamente hay quemantener ese sitio o portal. Sin embargo no es la estructura en capas la que deja obsoleta elmodelo, existen aplicaciones cliente-servidor construidas en capas; lo que deja obsoleto almodelo es la complejidad de su mantenimiento.

    La arquitectura en capas (y niveles) de hecho es cliente-servidor donde cada capa solicita unservicio de la ca a inferior, esto facilita el intercambio de ca as sin tener ue modificar toda la

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/http://www.jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    8/15

    sofia

    jtentor

    Hernan

    jtentor

    arquitectura. De manera que decir que ese modelo est obsoleto es una equivocacin deconceptos; lo que si se puede afirmar es que el clsico modelo cliente-servidor es el ejemplo mssencillo de una arquitectura en capas y niveles, en particular en dos niveles.

    Yo dira que la distribucion de capas lgicas en diferentes capas fisicas consituye el caso generalde la arquitectura cliente-servidor, la cual se inci con dos niveles y actualemente presenta N-niveles y N-capas.

    Saludos.

    Thursday, June 11, 2009 3:49 AM

    mas que un comentario mira ami me enseearon que tres capas solo era la presentcion ,logica de negocio y accesoa detaso pero nunca me hablaron de la capa depersistencia de datos, ademas dime que opinas de que si una aplicacion estadividida en tres capas pero alcolocar las dos primeras capas en una sola maquinaya se trat de un cliente servidor y de dos capas es correcto esto.que opinas del modelo mvc es una buena arquitectura , tres cpas es aplicable para

    cualquier lenguaje de programacion por ejemplo php

    Thursday, June 11, 2009 4:30 AM

    Cierto, cuando se ensea se indica que tres capas significa presentacin, lgica y accesoa datos. Es lo que presenta la figura 4, adems en esa figura se marca laposibilidad que la capa de datos se encuentre en otro equipo de manera quetambin se conoce como cliente-servidor. Recordemos que capa es un conceptolgico y nivel es un concepto fsico; cliente-servidor puede ser de dos capas: la queesta en el servidor que es la de acceso a datos y la que que est en el cliente que

    tendr codigo de presentacin y de lgica, ahora si esa parte (la del cliente) se divide en doscapas para diferenciar el cdigo de presentacin con el cdigo de lgica de negocio entoncestenemos cliente-servidor y tres capas.El termino "persistencia" es muy frecuente entre los desarrolladores que utilizan Java mientrasque "acceso a datos" es ms utilizando por otros desarrolladores; sin embargo mbosrepresentan el componente de software que facilita el acceso a los datos.El modelo MVC ha tomando mucha "fuerza" en los ltimos aos gracias a la publicacin deframeworks que obligan a desarrollar las aplicaciones al menos en tres capas: Model, View,Controller. Obviamente al incorporar la capa de vista (view) se trata de un modelo para usuariosfinales, sin embargo no es aplicable si vamos a desarrollar una aplicacin que publique serviciosweb para que otras aplicaciones las consuman y entonces debemos armar nuestra propiaarquitectura.PHP cuenta con buenos marcos de trabajo orientados al modelo MVC por ejemplohttp://www.symfony-project.org/.

    Saturday, June 20, 2009 3:50 AM

    Hola Julio, un gusto escribirte, estoy desarrollando un e-commerce de venta de libros,ms conocidosimplemente como "carrito de compras". Dentro de la "arquitectura base" estoyplanteando la"descripcin de las capas lgicas y servicios". El sistema debe soportar seguridad,errores, idioma,

    bitcora y persistencia. Lo que hice es: UI->BLL->DAL. La pregunta es, dnde y como inclurseguridad, errores, idioma, bitcora y persistencia?. Muchas gracias!.

    Saturday, June 20, 2009 10:51 PM

    Hernan, los aspectos de seguridad, errores, idioma, etc. forman parte de lafuncionalidad exigida al producto de software; no constituyen una capa o niveldesde el punto de vista arquitectnico, se trata de "modulos" y en consecuencia

    dependiendo de su naturaleza pueden organizarse en capas (concepto lgico) y/oen nivel (concepto fsico).

    Seguridad, se trata de usuarios y grupos (roles o funciones) que requiere una interfaz deusuario para login, administracin de usuarios y grupos, obviamente existe cierta lgica losusuarios una vz autenticados deben pasar por los filtros de acceso (no todos pueden hacer detodo en la aplicacin) y finalmente requiere de un almacenamiento de manera que tambenpresenta componente en la capa de acceso a datos.

    Errores, se debe controlar capturando las excepciones y actuando en consecuencia; en generallo que debe hacerse es avisar que ha ocurrido un error y no pudo realizarse la operacin. Dehecho no lo considero una funcionalidad, sino un requisito propio del desarrollo de software.Siempre se debe controlar los errores puede ser que la base de datos no est en lnea entoncesel primer intento de conectarse provocara un error que debe ser interceptado y avisarle alusuario que est ocurriendo.

    Idioma, indudablemente cae en todo lo que es interfz de usuario; sin embargo puede ser queciertos mensajes tengan su origen en alguna "capa" inferior de modo que se posible incorporaralguna gestin de idiomas en estas capas. Actualmente todos los entornos de ejecucin puedendetectar el idioma del cliente (browser) y de acuerdo a eso presentar la interfaz de usuarioadecuadamente, para ello hace falta un mecanismo automtico de seleccin de textos y porsupuesto una forma de guardarlos; algunos entornos son ms faciles que otros pero en generlhacen lo mismo.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/http://www.symfony-project.org/http://www.jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    9/15

    Alex

    jtentor

    Bitacora, para esto hay componentes disponibles para todas las plataformas que son totalmenteconfigurables y pueden registrar en un "log" todo lo que ocurre; quen ingresa, cuando lo hace,que hace, de todo.

    Persistencia, es la capa de acceso a datos y para ello hay productos como Hibernate que facilitanla independencia total del motor de base de datos.

    Repito, todo esto es "funcionalidad" puede ir en alguna o todas las capas de tu arquitectura.Otra cosa sera que esta aplicacin deba publicar el ranking de libros ms vendidos de maneraque otras aplicaciones puedan acceder a esa informacin y mostrarla, en este caso se debeimplementar un servicio web o simplemente un RSS, y en este caso se agrega una "capa" que esla de servicios (no interactua con usuarios sino con aplicaciones).

    Espero que sirva.

    Sunday, January 03, 2010 6:12 AM

    Hola Julio, acabo de leer este artculo y me parece muy interesante, al igual que todo elblog en conjunto.

    Actualmente estoy preparando un examen enfocado desde la perspectiva de lastecnologas .NET, y tengo varias dudas respecto a a la distribucin en capas/nivelesde una aplicacin en relacin al empleo de servicios web.

    En primer lugar, creo entender que los servicios web normalmente son empleados tanto desde lacapa de lgica de aplicacin, como desde la capa de presentacin (o desde cualquier capa en lacual sea necesario). Su uso, si no me equivoco depender de las necesidades de cada una de lascapas. Por ejemplo, si realizo una llamada a un servicio web que devuelve un listado de

    productos que van a ser mostrados en el navegador, la llamada a dicho servicio web serarealizada desde la capa de presentacin. En cambio, si por ejemplo la aplicacin ha de comprobarciertos ndices econmicos para ajustar los precios de ciertos productos, y dichos ndices sondevueltos por un servicio web, en este caso la llamada ser realizada desde la capa de lgica denegocio; ya que an habr que realizar el ajuste de precios en funcin de los ndices obtenidos.Estoy en lo cierto?

    Por otro lado, dispongo de un listado de preguntas tipo examen, y no se muy bien como enfocaruna de ellas, que trata sobre el tema al que hace referencia este artculo. La pregunta es lasiguiente:

    "Explica cules son las ventajas de trabajar con una aplicacin de tres capas (presentacin,lgica de negocio y persistencia) cuando se desarrolla una aplicacin que utiliza un servicio Web".(las ventajas de emplear una aplicacin particionada en capas son evidentes, pero hay querealizar un enfoque en lo que respecto a dicha estructura en el caso del empleo se servicios web)

    En un principio tan slo se me ocurre la siguente ventaja:

    1. Mejor redistribucin del trfico de datos de la aplicacin, suponiendo que cada una de lascapas se ejecute en un nivel diferente.

    No se s i estoy olvidando algn detalle respecto a temas de seguridad o respecto a algn otroaspecto relativo al empleo de servicios web.

    Se te ocurre algo que se me est escapando?

    Saludos!

    Sunday, January 03, 2010 12:05 PM

    Alex, gracias por tus comentarios y aporte. Puedo agregar lo siguiente:

    Efectivamente los servicios web se pueden consumir desde cualquier capa, porsupuesto hay que tener en mente que un servicio web tiene un proposito queprobablemente indique donde debe consumirse. Por ejemplo en la capa de acceso adatos puede enmascarse detrs de un clase que brinde "datos" a una aplicacion el

    consumo y manipulacin de esos datos mediante un servicio web. Otro ejemplo es lo que estocurriendo con Silverlight, que es un imponente marco de trabajo para la interfaz de usuario querealiza la lgica y el acceso a datos mediante servicios web, de este modo se puede convertir confacilidad viejas aplicaciones en las conocidas RIA (Aplicaciones ricas de Internet)

    Como ventaja de trabajar en capas y/o niveles me parece ms importante la escalabilidad delproducto el futuro mantenimiento y extensin o ampliacin del mismo. Imaginemos unaorganizacin que comienza con un portal de comercio electronico y luego, al crecer dedice asociara sus clientes como revendedores de sus productos; indudablemente estos clientes deberantener un acceso al sistema ms agil que el portal estandard de comercio electrnico. Es ahdonde una aplicacin desarrollada en capas (ensamblados) y niveles (dferentes equipos) cobramucha importancia dado que la parte del producto que utiliza el portal estandard de comercioelectrnico utiliza una lgica y un acceso a datos determinado, que puede reutilizarse y/oampliarse para aquella parte del producto de software que necesitarn los revendoderescambiando algunas partes de la interfaz de usuario por servicios web que dichos revendedorespueden consumir directamente desde sus propias aplicaciones.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    10/15

    Alex

    Jose

    jtentor

    carlos

    OscarM

    Como desventaja, estoy de acuerdo en que un proyecto planeado en capas y niveles implica mscdigo; en general las herramientas actuales (Visual Studio) generan cdigo listo para usar perotodo en una sola clase e incluso embebido en la misma interfz de usuarios. No quiero decir queesto est mal, lo que ocurre es que hay que analizar el producto y su futuro para tomardecisiones sobre la arquitectura del mismo y por supuesto es el cliente quin decide si va a pagarun poco ms para desarrollar un producto escalable de facil mantenimiento y expansin o en elfuturo cuando desea cambiar haya que volver a desarrollar cosas que ya estn hechas pero nose pueden utilizar dado que el cdigo esta todo mezclado y el costo de introducir cambios esmayor.

    En particular yo veo lo de seguridad como un mdulo vertical entre las capas y niveles, con lo

    que quiero decir que esta parte de toda aplicacin debe estar presente en todas las capas yniveles, sin embargo no debe olvidarse que al respecto los sistemas operativos actuales hanavanzando muchsimo y las aplicaciones deberan utilizar esos servicios de seguridad, el problemase presenta cuando se trata de aplicaciones multiplataforma pero en este caso estamoshablando de grandes desarrollos y seguramente se puede cubrir los costos de semejantedesarrollo.

    Finalmente conincido contigo en que la mejor distribucin del trafico de datos es una ventaja,especialmente cuando se trata de aplicaciones que requieren mucho acceso a datos; el poderutilizar un servidor dedicado solamante al motor de base de datos permite utilizar una granja deservidores para atender a miles - millones de usuarios y cuando el motor de base de datos tequeda chico, se amplia a una base de datos distribuda cambiando solamente un nivel de toda laaplicacin. Pero obsevemos que nuevamente estamos hablando de escalabilidad, mantenimiento,expansin.

    Espero que s irva. Saludos.

    Sunday, January 03, 2010 6:51 PM

    Excelente y completa respuesta!, muchas gracias!

    Tu blog a pasado a ser uno de mis favoritos rapidamente.

    Saludos!.

    Tuesday, January 05, 2010 5:43 PM

    Hola saludos desde Quito, quiero agradecerte por el excelente articulo que has hecho,quiero hacerte una pregunta con respecto a los servicios web y la logica denegocio, estas dos capas deben estar necesariamentes en el mismo nivel o si sepueden dividir en dos niveles ?. si la respuestas es no y si, por favor podrias

    decirme como hago esto?, ya que la logica de negocio vendria hacer una dll, comoreferencio a mi servico web ya en implementacion?

    Gracias de antemano.

    Thursday, January 21, 2010 12:01 PM

    Jose, los servicios web por su escencia son otra capa y de hecho otro nivel (funcionanen otro equipo, salvo en el momento de desarrollo que lo hacemos todo en unasola maquina). La lgica de negocio puede estar detras, en otra capa o en el mediodel servicio web en el caso que el servicio sea algo complejo como por ejemplo loque te permite utilizar paypal o las tarjetas de crdido; ellos publican un servicio alque se accede desede cualquier pgina, pero el proceso se realiza detras del

    servicio. Otra posibilidad es que una organizacin acuerdo con su proveedor un servicios deordenes de compra, en este caso el proveedor publica el servicio y la organizacin utiliza supropia lgica para armar las ordenes de compra que se envian el servicio web, lo quedesencadenar un envo, remito y posterior factura. De manera que la lgica puede estar o no

    junto al servicio eso se debe evaluar de acuerdo a la aplicacin y al tamao (escala) de laaplicacin.Respecto a los dll, cuando se arma un servicio web inevitablemente hay que publicarlo porseparado, consecuentemente es otro dll, ahora este servicio puede o no tener varios proyectosdentro de la solucin y entonces contara con varias dll. Fijate los ejemplos que estn enwww.jtentor.com.ar/.../...cation-Foundation-1.aspxEspero que te sirva.

    Saturday, November 26, 2011 12:02 AM

    Superbastatne interesante este articulo

    Wednesday, December 14, 2011 12:12 AM

    Muchas gracias por esas explicaciones tan bien construidas, porque indudablementepermiten que todos aquellos que estamos en ese camino del aprendizaje nosayude.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://desarrollandomitesis.blogspot.com/http://www.jtentor.com.ar/post/Windows-Communication-Foundation-1.aspxhttp://www.jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    11/15

    carlos

    jtentor

    carlos

    jtentor

    Gracias.

    Tuesday, December 27, 2011 11:59 AM

    Muy interesante la informacion que brindas,quisiera hacer una consulta tengo unproyecto que esta estructurado en capas capas en preseetacion,entidad,negocio,datos...y tengo aumentarle seguridad ami proyecto y eh estadoinvestigando y eh encontrado sobre la capa de seguridad pero no tengo idea comoimplementar esta capa..porfavor me podrian dar luces acerca del tema..gracias deantemano.

    Tuesday, December 27, 2011 12:22 PM

    Carlos, lo primero que tenemos que tener en cuenta es que una "capa" no es lo mismoque una "funcionalidad" que el producto de software brinda. Por ejemplo un carrode compra en un sitio de comercio electrnico es una "funcionalidad" que el clientepide; esa funcionalidad se puede implementar monoliticamente o en capas, es deciruna capa o porcin de software que contiene los elementos de la interfaz deusuario (grilla de artculos, botones para cancelar, agregar, pagar, etc), otra capa

    que contiene la lgica (calcular totales, verificar stock, aplicar descuentos, etc) y seguramenteotra capa de acceso a los datos (objetos que presentan los datos en algn formato, obviamentelos traen de algn lado).En el caso de seguridad, esta mal expresado pensar que hay una "capa de seguridad" enrealidad es una "funcionalidad" del producto de software y como tal se implementa en diferentescapas. Por ejemplo para que un usuario pueda hacer el login en la aplicacin, hace falta uncomponente de interfaz de usuario que muestre al menos los dos campos "nombre de usuario"y "password" el boton de aceptar y el de cancelar; opcionalmente pueden estar los botones para

    "olvide el password", "registrarse", "ayuda", y otras cosas que se nos ocurre. Como dije eso vaen la capa de presentacin que podra ser Silverlight o Windows Forms; luego por debajo deesta capa debe existir una capa de lgica que es la que valida los datos ingresados y solicita a lacapa de acceso a datos busque la informacin en la base de datos. El ltimo diagrama de estepost muestra cmo sera.Lo que ocurre es que en general se utiliza algn componente echo que nos brinda lafuncionalidad, en el caso de .NET ese componente es el Membership Provider, que tiene todos loscomponentes que necesitas para la interfaz de usuario, ademas tiene las clases de lgica ypersistencia necesarias. Tambin podras ver las Bussiness Applications con Silverlight 4 osuperior te facilitan lo mismo pero con Silverlight.Implementar seguridad en un proyecto, no significa crear usuarios y permitir que hagan login. Lacuestin es que se debe definir los roles o grupos de usuarios y luego definir que partes de laaplicacin pueden ser accedidas por integrantes de estos grupos, finalmente se organizan estoscomponentes en carpetas (directorios) y se restringe el acceso a dichas carpetas para losusuarios que no son de los grupos habilitados. Esto se hace en archivos web.config que estnen cada directorio con las opciones que te permite el administrador de usuarios y grupos en el

    Visual Studio.Creo que en http://anotherblog.codeplex.com/ hay un buen ejemplo de cmo se puede hacer.Espero que te sirva.

    Sunday, January 15, 2012 3:14 PM

    Holas gracias por la informacin..,,,muy buena.Tengo otra consulta cual seria el tipola infraestructura necesaria para un modelo que contienepresentacin,negocio,data y entidad puesto que la aplicacin que se estarealizando esta en asp.net. ,actualmente me informaron que deberia ser cliente yservidor..pero quisiera saber si no hay otra alternativa de infraestructura.graciaspor su respuesta.

    Monday, January 23, 2012 6:34 PM

    Carlos, la infraestructura es lo que se conoce como un "requisito no funcional". A mi megusta la denominacin "atributo de calidad del software"; dado que es el cliente elque tiene que indicar el nivel de accesibilidad que la aplicacin debe tener; estodefine si se puede o no utilizar internet o al menos define los niveles de seguridadque la aplicacin tendr. Por otro lado si el cliente dice que deben incorporarsecambios en no ms de una hora de haberse aprobado, entonces una aplicacin

    cliente-servidor puede ser complicada de mantener (hay que cambiar el software cliente en todaslas mquinas y nunca se sabe si una maquina quedo sin actualizar, lo que implica un desarrollocon verificacin de versiones y releases; en cuyo caso sera mejor una aplicacin web donde solose cambia los componentes del servidor web y a partir de ese momento todos los que ingresanlo hacen con la nueva versin).Una aplicacin web aunque funcione en un servidior web dentro de la red privada de laorganizacn (sin internet) resulta ms facil de mantener pero no es tan atractiva como unaaplicacin de escritorio (cliente-servidor); actualmente se puede usar Silverlight y tambin HTML5lo que te permite lograr mejores presentaciones pero eso requiere de mejores equipos paraacceder al sitio y de un razonable ancho de banda (si es una red local todo anda bien, pero en

    internet a veceds es lenta)En general se considera que las aplicaciones Cliente-Servidior son aquellas en las que el cdigo"cliente" contienen lo que yo denomino capa de presentacin, capa de lgica de negocios y capade acceso a datos; mientras que el cdigo "servidor" resulta ser un motor de base de datospuesto en alguna mquina; incluso he visto que la base de datos solo tiene tablas y una queotra relacin, todo se hace mediante cdigo SQL incrustado en porciones de cdigo en lo quellaman "cliente".

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/http://anotherblog.codeplex.com/http://www.jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    12/15

    Cristian

    Miriam Gomez

    rekuplex

    Kleyvert

    Rodrigo Santamaria

    Allan

    Mariam

    Ary

    jtentor

    Desde mi punto de vista cuando una aplicacin cuenta con dos "niveles" ya es consideradaCliente-Servidor, record que "nivel" se utiliza para indicar que corren en equipos distintos o almenos en entornos de ejecucin diferentes.

    Si tu aplicacin tiene bien dividida la capa de presentacin de las otras, es posible que puedasdesarrollar (si te lo pagan) varias infraestructuras, una con windows-form (cliente servidior) otraweb-application con un portar de intranet o internet.

    De todos modos te recomiendo charlar con el cliente para definir que quiere hoy y que piensaque va a necesitar dentro de 6 o 12 meses de manera que se pueda plantear un producto desoftware que evolucione sin complicaciones.

    Thursday, February 02, 2012 5:23 PM

    Felicitaciones por el blog! Este articulo me saco muchas dudas a la hora de trabajar encapas, como bien se dice en un comentario cuando nos ensean el trabajar encapas, solo mencionan las la de presentacin, la de negocios y la de datos. :-D yen el momento de ponerlo en prctica, topas con otra realidad. Gracias.

    Thursday, September 27, 2012 6:27 PM

    Hola soy Miriam desde Mxico. Muy bien explicado tu articulo.. gracias!!!

    Friday, September 28, 2012 5:08 AM

    muchisimas gracias por el articulo, muy bien explicado cada concepto.

    Friday, October 26, 2012 4:32 PM

    Hola buenas, excelente articulo, explica muy bien el concepto de la arquitectura encapas, saludos desde Caracas, Venezuela!

    Monday, November 05, 2012 12:30 AM

    Buenas noches. Gracias por todo el esfuerzo, no solo por el articulo taninteresante, si no por el empeo que le ponen al responder las preguntas.Gracias de verdad.

    Friday, November 16, 2012 1:03 AM

    Muy buen publicacin!

    Friday, February 01, 2013 4:24 AM

    me encanto el articulo , no lo habia podido entender hasta ahora, gracias

    Tuesday, March 05, 2013 3:31 PM

    Hola, estoy trabajando en un aplicacin, que tiene como objetivo el desarrollo de uncompilador a bytecodes, he separado la logica de funcionamiento en dos mdulos,uno para realizar la fase de anlisis(chequeo lxico, sintctico y semntico) y otropara realizar la fase de sntesis(generacin de cdigo intermedio y optimizacin), mipregunta es la siguiente, puedo afirmar que estoy utilizando una arquitectura en Ncapas??

    Tuesday, March 05, 2013 4:34 PM

    Ary, si se puede afirmar que es una arquitectura en capas.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://jtentor.com.ar/http://jtentor.com.ar/post/Arquitectura-de-N-Capas-y-N-Niveles.aspx
  • 5/24/2018 Arquitectura Por Capas

    13/15

    Rodrigo Santamaria

    jtentor

    Particularmente se puede decir que hay dos capas una para el anlisis y la otrapara la sntesis. Esta ltima capa podria incluso separarse en subcapas una para lageneracin de cdigo intermedio y la otra para la optimizacin.

    La escencia de las capas es que presentan una interfaz con otra capa de modo que lacomunicacin o colaboracin se realiza por medio de esa interfaz, que se supone es conocida opublicada y no va a cambiar. En el futuro es posible cambiar la capa respetando la interfaz.

    Si el compilador que estas desarrollando tuviese como destino el cdigo ensamblador de algnmicroprocesador, podra tener una capa que genera cdigo para procesadores intel y lo optimizabajo algn criterio; en otro momento esa capa podra cambiarse por un generador de cdigoRISC tambin optimizado bajo algn criterio.

    Es ms en el futuro podra realizarse una configuracin que permita al usuario, mediante unarchivo de configuracin o una seleccin en tiempo de ejecucin, definir el tipo de cdigo agenerar y de este modo el compilador generara cdigo con uno u otro mdulo pero la fase deanlisis lexico, sintctico y semntico sera la misma.

    En este caso el destino de tu compilador son bytecodes, pero podra ser el lenguaje intermediode ejecucin de la plataforma .NET y entonces.

    Espero que te sirva.

    Thursday, March 07, 2013 11:38 AM

    Buenos dias Julio.

    Nuevamente muchas gracias por el articulo y por responder estas preguntas.

    Estoy organizando un grupo de trabajo, tengo dos ingenieros, y un diseadorweb. entonces pesnse en poner un ingeniero en la capa de negocio y otro en la

    capa de datos, y que el diseador desarolle el UI, pero surgio una controversia que espero nosayudes a solucionar. Ya decidimos que la primer capa que desarrollaremos es la UI, entonces quees lo logico, que a partir de toda la informacion recogida y con la interfaz desarrollada yaprobada por el usuario, se continue con la capa de datos, o con la de negocio?.

    Para mi, como se empezo con la interfaz, despues se debe contruir la logica del negocio y realizarun documento donde se solicite al otro ingeniero que queremos que nos proovea la Base dedatos.

    Para el otro Ing es: que despues de tener la interfaz, se realiza la capa de datos, (modelo E-R,consultas, SP. etc.) y despues de esto entra la logica del negocio y une las dos capas.

    Julio. Que nos aconcejas?. y aprovecho para otra pregunta. tienes algun ejemplo de tres capasque tenga Linq.

    muchas Gracias por tu colaboracion.

    Thursday, March 07, 2013 2:13 PM

    Estimado Rodrigo;

    Eso que la logica de negocio une las dos capas no es as; la logica de negocio hacecosas necesarias para el negocio, como por ejemplo en un proceso de facturacinvalidar ciertas caracteristicas de un cliente para poder aplicar un descuento.

    De ninguna manera la logica de negocio se debe considear como un "adaptador" entre la capa dedatos y la interfaz de usuario, para esos existen componentes que son justamente

    "adaptadores"; estos componentes se construyen cuando las dos cosas que necesitamos quecolaboren o interactuen presentan interfaces diferentes, entonces hacemos un adaptador comolos de la corriente de dos a tres patas o al reves.

    Tampoco es correcto decir que como tengo la interfaz de usuario continuo con la logica denegocio para poder escribir un documento con las necesidades de datos. De ese modo la capade datos indirectamente es dependiente de la interfaz de usuario; cuando en realidad ambascapas son dependientes de las necesidades del cliente, una misma capa de datos puede tenerdos interfaces de usuario, una para pc y otra para tablet.

    De manera que no importa que se continua haciendo, es ms si se t iene dos equipos de trabajopodra encargarse a cada uno de ellos una capa diferente. Pero para eso lo que se necesita teneres la interfaz definida.

    Cada capa se relaciona con otras mediante una interfaz perfectamente definida. En consecuencialo primero que deberan hacer es definir las interfaces y luego todos pueden construir las capasrespetando las interfaces.

    Es probable que ciertas partes de la interfaz de usuario no muestre o requiera algunos atributos(campos) de objetos que se almacenan en la base de datos, de manera que el desarrollo detodas las partes debera ser INCREMENTAL y no como lo estas pensando uno despues del otro.

    Pensar en utilizar una arquitectura en capas es trabajr un poco ms ahora para que en el futurosea mas facil hacer que el producto evolucione, a lo mejor tengo que almacenar en otro formato

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://jtentor.com.ar/http://www.conjuntosenlinea.com/
  • 5/24/2018 Arquitectura Por Capas

    14/15

    Christian

    jtentor

    y debo descartar mi actual base de datos para almacenar la informacin en otra; unaarquitectura en capas me permitira con tranquilidad implementar ese cambio o requerimiento demantenimiento.

    Finalmente mi sugerencia es que en una maana o tarde de trabajo definan las interfacesescenciales entonces cada uno podr avanzar con el contenido de cada capa tratando demantener las interfaces. Por supuesto que no se va a poder, entonces en un par de dias en unanueva reunin informan los cambios que hacen falta en las interfaces y avanzan en el proceso dedesarrollo.

    Cuando digo interfaces lo hago genricamente, tambin puede ser clases abstractas que luegose especializaran en otras clases. Por ejemplo en un sistema de facturacin se puede pensar que

    la interfaz de usuario recibe un objeto que implementa la interfaz IFacturable que tiene ciertosmetodos que le pertine interactura en un proceso de facturacin, de ese modo nos o lvidamos dela clase del objeto simplemente pensamos en su comportamiento. Igualmente ocurre en la logicade negocio el objeto IFacturable puede ser un producto (lapices) o un servicio (horas de chofer)que obviamente son objetos de clases diferentes, sin embargo ambos implementan lasoperaciones necesarias para ser facturados. Luego cada objeto implementar mecanismos dealmacenamiento seguramente tambien bajo la forma de interfaces de manera que podrnrealizarce con diferentes objetos.

    No tengo ejemplo en Linq. Espero que les sirva.

    Sunday, A pril 21, 2013 3:04 PM

    Hola Julio.Muy bueno tu artculo y quiero ponerlo en prctica en c# y con oracle.Tengo un par de preguntas que me gustara me aclares.

    Las 4 capas del nivel de aplicacin que se observan en la figura #7 puede serconvertidas en DDLs?

    es decir cada una puede ser un proyecto en C# y pueden ser referenciadas una a la otrarespetando la secuencia?

    Y la nica capa del nivel de datos de la figura #7, se refieren a los triggers, stored procedures yfunctions de la base de datos?es decir todo el cdigo que se pueda escribir con PL/SQL(oracle) o T-SQL (MS sql server)?

    S tuvieras cdigo fuente en c# de este esquema que necesito y que puedas compartirme teagradecera mucho.

    Gracias.

    Sunday, A pril 21, 2013 8:42 PM

    Estimado,

    Efectivamente cada capa puede ser un DLL, de este modo en el futuro sera posiblecambiar uno de ellos respetando las interfaces de comunicacin.

    Cuando se trata de un pequeo proyecto, puede ser un espacio de nombres(namespace) dentro del mismo DLL, pero en el futuro los cambios implicaran la recompilacincompleta del producto; lo que no es grave pero puede haber dependencias no pensadas.

    Lo que yo denomino capa/nivel de datos se trata de todo lo que puedas o debas hacer en elmotor de base de datos, como tu dices PL/SQL o T-SQL; basicamente procedimientosalmacenados, funciones, vistas que oculten las verdaderas tablas, etc.

    Si la portabilidad es un problema, la interfaz (procedimentos y funciones) deberan respetar losestndares y no utilizar las particularidades que cada motor de base de datos ofrece, esto facilitala capa siguiente que es la de acceso a datos; caso contrario esta capa (la de acceso a datossuele ser muy dependiente del motor de base de datos).

    Muchos productos reemplazan la capa de acceso a datos con un ORM del tipo NHibernate (en elcaso de C#), actualmente Microsoft ofrece productos con funcionalidad de capa de acceso adatos como ser el Entity Framework y todo lo que tiene que ver con LINQ; prometen laindependencia del motor de base datos o en todo caso la total dependencia de su producto.

    Mi experiencia me indica que vale la pena hacer un esfuerzo (diseo y desarrollo) paraaprovechar las ventajas/particularidades de los motores de base de datos, claro que debedocumentarse bien para poder portar el producto a otro motor, suele suceder cuando sedesarrolla un producto pequeo que resulta ser un "hit" y luego requiere mayor potencia en labase de datos. Muchos problemas surgen por el crecimiento en el volumen de datos y lacantidad de transacciones por unidad de tiempo.

    Puedes ver un ejemplo de capas de acceso a datos y capa de datos en este proyectohttps://anotherblog.codeplex.com/,te bajas el codigo y lo revisas; enAnOtherBlog.Core.Providers.SQL puedes ver el cdigo para acceder a los datos en una base dedatos relacional. Tal como esta planteado el producto utiliza una fabrica abstracta (patron dediseo) para el proveedor de datos, lo que permite cambiar este producto desarrollando lasclases necesarias sin tener que manipular el resto del proyecto.

    Espero que te sirva.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttps://anotherblog.codeplex.com/,http://jtentor.com.ar/
  • 5/24/2018 Arquitectura Por Capas

    15/15

    Janier

    jtentor

    Oscar Mancera

    Hugo

    +

    Monday, A pril 29, 2013 5:58 PM

    Hola Julio, primeramente felicitarlo por el gran post que ha creado.

    Quisiera hacerle una pregunta.

    He desarrollado en sistema en Java el cual no usa base de datos, sino ficheros detexto almacenados en directorios en la PC. El sistema tiene entidades y una clase

    controladora, la cual gestiona los ficheros y las ventanas(GUIs) del sistema

    Necesito que ese sistema tenga la arquitectura en N-Capas

    alguna sugerencia ???

    Gracias de antemano

    Tuesday, April 30, 2013 10:19 AM

    Por lo que dices, tu clase controladora tiene dos responsabilidades muy importantes yque yo recomendara separar.

    Una de ellas es gestionar los ficheros, que en tu caso viene a ser la capa de accesoa datos; la otra responsabilidad es la de manejar la interfaz de usuario que no esun tema menor.

    Yo recomiendo separar estas responsabilidades en dos clases o capas (en tu caso hasta puedenser packages) para que de ese modo la capa controlador (pura), la que dialoga con la interfaz de

    usuario solo reciba informacin de otros objetos que sern los encargados de gestionar losficheros.

    Si te tomas el trabajo de definir unas cuantas interfaces, para definir el comportamientonecesario para manejar la interfaz de usuario y otras para definir el comportamiento de gestinde datos entonces podras desarrollar clases que implementan esas interfaces con la ventaja queen el futuro podras cambiar la interfaz de usuario o la forma de almacenar los datos y tuaplicacin continuara sin problemas porque no tienes una clase que asume ambasresponsabilidades.

    Obviamente esto se piensa y disea cuando alguien lo paga, cuando es un trabajo pequeosuele ser mas rpido utilizar un wizard que crea unas cuantas clases que lo hacen todo. Porsupuesto en el futuro hay que tirar eso a la basura y hacer un nuevo prouducto, esto hastapuede ser redituable para los que viven de hacer software; sin embargo cuando se trata del ciclode vida completo, desarrollo y mantenimiento es prudente pensar en los aos que ese productodebe continuar funcionando y adaptandose a nuevo hardware, tendencias de mercado, etc.

    Tu proyecto tiene una apariencia a MVC (Model-View-Controller), que es una arquitectura encapas solo que el controlador se encarga del "control" de la interfaz de usuarios y el modelo(model) vendria a ser tus entidades que supuestamente obtienen su contenido de algun lado;eso viene a estar detras como una capa o clases encargadas del almacenamiento.

    Para que la arquitectura en capas se visualize con claridad te sugiero que utilices packagesdiferentes para cada clase dentro de una estructura jerrquica de nombres.

    Espero que te sirva.

    Tuesday, A pril 30, 2013 12:31 PM

    Simpre leo las actualizacinoes de este post, y me permito con mucho respetodecir que es una gran contribucion al conocimiento colectivo. Muchas gracias.

    Tuesday, June 11, 2013 7:08 PM

    Excelente el blog y el artculo. Y el conocimiento vertido al responder los comentarios. Seagradece.

    Pingbacks and trackbacks (1)

    Soportado por BlogEngine.NET 1.6.2.1

    Diseo de Mark Wagner , Adaptado por Ahmad Masykur y Julio Tentor.

    converted by Web2PDFConvert.com

    http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttp://www.jtentor.com.ar/http://www.masykur.web.id/http://blogs.crsw.com/mark/articles/152.aspxhttp://www.dotnetblogengine.net/http://jtentor.com.ar/