From: gumartinm Date: Tue, 2 Oct 2012 05:28:19 +0000 (+0200) Subject: I am dead X-Git-Url: https://git.gumartinm.name/?a=commitdiff_plain;h=fb91f666c695229fc982d011dfd8aed9a884ecbc;p=PFCLatex%2F.git I am dead --- diff --git a/capitulo3/capitulo3.tex b/capitulo3/capitulo3.tex index 2185025..658d761 100644 --- a/capitulo3/capitulo3.tex +++ b/capitulo3/capitulo3.tex @@ -1 +1,66 @@ -\chapter{MVC, JQuery, Android, Java, PostGIS} +\chapter{Herramientas y tecnologías utilizadas} + +\section{Full-stack framework} + + +Un \emph{full-stack framework\footnote{Framework en Castellano es traducido como marco de trabajo}}, es una solución que incluye seguridad, enrutamiento de URIs, caché, hooks y muchas otras características. Cuando se usa un framework de estas características el desarrollador se adhiere a los estándares y guías que el framework marca para escribir e implementar el código. Además este tipo de frameworks ofrecen todas las librerías y herramientas que el programador necesita para (en este caso que nos ocupa) desarrollar páginas y servicios Web. Ejemplos de estos frameworks en PHP son: + +\begin{itemize} + \item CakePHP. + \item Symfony. +\end{itemize} + + + +\section{Glue frameworks} + +Como contra parte a \emph{full-stack frameworks} encontramos los \emph{glue frameworks} donde se da más libertad al programador para implementar su propio código, clases, helpers, o librerías. Un \emph{glue framework} no te ata ni hace que el código siga unos estándares determinados. Usualmente estos tipos de frameworks requieren de más código y más diseño y desarrollo en el lado de los desarrolladores; sin embargo, el desarrollador no está limitado a ningún tipo de funcionalidad o estándares. Unos pocos ejemplos de \emph{glue frameworks} son: + +\begin{itemize} + \item Zend. + \item Codeigniter. +\end{itemize} + + +\section{Symfony} + +Symfony es un marco de trabajo para el desarrollo de aplicaciones Web escrito en PHP que sigue el paradigma del modelo vista controlador (MVC) Su objetivo es incrementar la velocidad y la eficiencia del desarrollo web. Symfony trae muchas características muy útiles que ayudan a que el desarrollador se concentre en la lógica del negocio de la aplicación en lugar de en la implementación o en los objetos paginadores Web o en las abstracciones con la capada de base de datos. Sin embargo, todo tiene un coste, y es el aprendizaje de cómo usar todas las características que hacen de Symfony un marco de trabajo muy útil~\cite{C3:SymfonyBook14}. + +El objetivo de Symfony es acelerar la creación y mantenimiento de aplicaciones web y remplazar tareas de codificación repetitivas. Está diseñado para optimizar el desarrollo de aplicaciones web a través de varias características clave. Así, Symfony separa las reglas de negocio de la aplicación web, de la lógica del servidor y de las vistas o presentación al usuario. Contine numerosas herramientas y clases que permiten acortar el tiempo de desarrollo y aplicaciones web compleja. También automatiza tareas comunes así que el desarrollador puede enfocar su actividad enteramente en las tareas relacionadas con casos específicos de la aplicación. Como resultado final de estas características, con Symfony no hay necesidad de reinventar la rueda cada vez que una nueva aplicación web es construida. + +Está escrito completamente en PHP y actualmente se usa en sitios web con alta demanda de páginas. Es compatible con la mayoría de servidores de bases de datos disponibles a la fecha como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se ejecuta en entors *NIX y Windows. + +\subsection{Características de Symfony} + +Symfony ha sido diseñado para alcanzar los siguiente requisitos: + +\begin{itemize} + \item Fácil instalación y configuración en la mayoría de plataformas. + \item Independiente del tipo de servidor de base de datos. + \item Simple de usar en la mayoría de casos, pero flexible para adaptarse a casos complejos. + \item Cumple con la mayoría de prácticas recomendadas para el desarrollo Web así como con muchos patrones de diseño también recomendado para este tipo de desarrollos. + \item Código leíble, con phpDocumento para fácil mantenimiento. + \item Fácil de extender y permite la integración con librerías de otros vendedores. +\end{itemize} + +\subsection{Características de proyectos Web automatizados} + +A continuación se enumeran la mayoría de las características comunes que existen entre proyectos web y que pueden ser automatizadas: + +\begin{itemize} + \item Capa de internacionalización ya construida dentro de Symfony para datos, traducción de interfaces y localización del contenido. + \item La capa presentación usa plantillas y layouts que pueden ser construidos por diseñadores HTML sin necesidad de ningún conocimiento del framework. Los helpers recuden la cantidad de código de presentación que hay que escribir. + \item Los formularios soportan validación automatizada, asegurando una buena calidad de los datos almacenados en la base de datos y un experiencia de usuario más agradable. + \item Existe una cache de gestión que reduce el uso de ancho de bando y la carga del servidor. + \item Las listas son más fáciles de usar gracias a la paginación, clasificación y filtrado automatizados. +\end{itemize} + +\subsection{Object-Relational Mapping, ORM} + +Las bases de datos son relacionales. PHP y Symfony por otro lado están orientados a objetos. Para acceder a una base de datos en la forma en la que se haría si estuvieran orientadas a objetos se necesita un interfaz de traducción de la lógica de objetos a la relacional. Este interfaz es el ORM. + +Un ORM está constituido de objetos que dan acceso a datos y de reglas de negocio. Un beneficio de una capa de abstracción objeto-relacional es que previene de usar una sintaxis que es específica a una base de datos determinada. Esto significa que migrando de un sistema de base de datos en el medio de un proyecto debería ser fácil. + +En el ORM, la capa de abstracción, encapsula la lógica de los datos. El resto de la aplicación no necesita saber las queries SQL y usando los objetos en lugar de las records de la base de datos y clases en lugar de tablas tiene otro beneficio: se pueden añadir nuevos métodos de acceso a las tablas. Por ejemplo si se tiene una tabla llamada Cliente con dos campos, PrimerNombre y Apellido, se puede añadir un nuevo campo Nombre que se compongan de los dos sin necesidad de hacer ninguna modificación el tabla o en la base de datos, simplemente añadiendo un nuevo método al objeto que representa la tabla de la base de datos que devuelva el PrimerNombre y el Apellido concatenados como Nombre. + +Symfony soporta dos ORMs escritos en PHP que son open source: Propel y Doctrine e integra ambos de ellos, cuando se crea un nuevo proyecto se elige qué ORM usar. diff --git a/myrefs.bib b/myrefs.bib index be02b19..f4fd3bd 100644 --- a/myrefs.bib +++ b/myrefs.bib @@ -186,3 +186,12 @@ year = {2010}, keywords = "GPS, location, risks, mobile, university", } + +@misc{C3:SymfonyBook14, + author = {{Sensio Labs}}, + title = "The Symfony Reference Book", + howpublished = "Website", + note = {\url{http://www.symfony-project.org/get/pdf/reference-1.4-en.pdf}}, + year = {2012}, + keywords = "ads, advertising, mobile, opera, report", +}