Mostrando entradas con la etiqueta servidores base de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidores base de datos. Mostrar todas las entradas

sábado, 20 de febrero de 2016

Aplicaciones Web (II)

La arquitectura de tres niveles se basa en tres capas:
  • Capa de presentación: Se encarga de mostrar la información recibida por parte del servidor web al cliente. Es el código del lado del cliente formado por el lenguaje de marcado como HTML o lenguajes como CSS, Javascript...
  • Capa lógica: Es la capa principal y más compleja, ya que es la encargada del funcionamiento de la aplicación web. Las peticiones http gestionadas por el servidor web buscara el recurso solicitado y hará a su vez una petición de traducción al servidor de aplicaciones traduciendo el código del lado del servidor escrito en un lenguaje predeterminado. Este resultado se enviará al servidor web y este a su vez al cliente. Esta capa divide el código del lado del servidor en tres partes: 
    • Modelo: Es la asociación entre la información entrante por la capa de negocio, por ejemplo lenguaje SQL del servidor de base de datos; y el formato o lenguaje de programación de la aplicación del lado del servidor de aplicaciones. 
    • Vista: Es la presentación expuesta al usuario en el navegador. 
    • Controlador: Comunica y maneja las peticiones realizadas por cliente/servidor.
  •  Capa de negocio: Es la capa donde se encuentran los datos. Los datos son información, y debe siempre permanecer protegida ante ataques mal intencionados y oculta ante los usuarios. Se gestiona mediante un sistema de gestión de bases de datos. El servidor de aplicaciones, realizará una petición al servidor de base de datos para obtener datos necesarios para la aplicación, por ejemplo el login a Gmail.



Desarrollo y lenguajes:
Los desarrolladores de aplicaciones web son programadores que dependiendo del lado cliente/servidor donde se encuentren, usarán un lenguaje de programación distinto.


  • Programación Back-end: Una persona que se dedique a desarrollar aplicaciones web del lado del servidor, trabajara con lenguajes como PHP, Python, Ruby, .Net, SQL, Javascript, etc. Es la parte oculta al usuario y encargada del funcionamiento de la aplicación. 
  • Programación Front-end: Parte del desarrollo encargada de la apariencia final cara al usuario desde el navegador. Los lenguajes típicos son HTML5, CSS, Javascript entre otros. 
  • Programación Full-stack: Debido a la arquitectura de tres niveles y la diferenciación de back-end y front-end, existirán desarrolladores encargados de una parte de la aplicación web. Por ejemplo un desarrollador de back-end, programara en PHP y en SQL para el acceso a las bases de datos. Sin embargo, se considera un lenguaje full-stack a aquel que se usa tanto en el lado del cliente como en el servidor, un ejemplo claro es Javascript.



Existe una variedad amplia de lenguajes de programación para crear aplicaciones web, siempre ayudados de un marco de trabajo o frameworks. Los lenguajes más usados son:
  • Javascript: Es un lenguaje usado en el lado del cliente, pero esta escalando puestos obteniendo mucha fuerza en el lado del servidor debido al servidor node.js y el uso del framework Angular.js creado por Google.
  • Perl: Es un lenguaje muy potente para el manejo de ficheros tomando características del lenguaje C.
  • Python: Es un lenguaje sencillo y potente, muy usando en aplicaciones de redes y seguridad informática. Tiene un framework bastante conocido llamado Django.
  • Ruby: Es un lenguaje interpretado sencillo y potente como python. Posee un framework llamado Ruby on Rails, que permite la creación de aplicaciones web con buenos resultados visuales siguiendo el modelo MVC (Modelo-Vista-Controlador), y se puede instalar en cualquier servidor web. 
  • Java: Es un lenguaje potente y versátil con grandes posibilidades de crear aplicaciones web de todo tipo. Muy potente en aplicaciones relacionadas con la red. 
  • C#: Lenguaje creado por propietarios, Microsoft. Usado para servidores .NET.
  • PHP: Es un lenguaje scripting del lado del servidor más utilizado. Se basa en el lenguaje C y en Perl, y se encuentra incrustado en código HTML de una página web, mediante la apertura de una etiqueta <?php. La página web tendrá una extensión distinta, en este caso .php, donde el servidor web detecta que es de un tipo de aplicación realizando dicha petición al servidor de aplicaciones. Existe un framework llamado Zend.
  •  JSP: Es similar al anterior pero basado en Java. La extensión de este tipo de archivos son .jsp.
  • ASP: De igual similitud a los dos anteriores pero basado en Microsoft. 


 Tipos de servidores web existentes en el mercado. Los más populares son:
  • Apache: Es un servidor web muy potente y usado. Es gratuito y de código abierto. Para programar en PHP, lo mas normal es usar un servidor web Apache.
  • nginx: Su característica principal en la que destacar es la prestación que ofrece cuando hay que atender numerosas conexiones. Esta cogiendo actualmente bastante aceptación en el mercado. 
  • IIS: Es propietario de Microsoft. Tiene licencia, aunque aparece como componente en los sistemas operativos Windows Server. 
  • Apache Tomcat: Servidor web para ejecutar aplicaciones de tipo Java.
  • Node.js: Servidor web de Javascript con el modulo Express.js.




En cuanto al sistema operativo donde instalar nuestro servidor web, podemos mencionar tres opciones:
  • Windows: Actualmente es el sistema operativo a nivel usuario que más demanda existe en el mercado. Tenemos la opción de instalar un servidor web Apache o IIS propietario de Microsoft. Lo ideal en este entorno de trabajo, es usar un Windows Server como sistema operativo del servidor. 
  • Linux: Su cuota de mercado es mucho menor que la de Windows pero en cuanto a sistema operativo posee numerosas herramientas y un entorno comunitario muy rico para el desarrollo web. Debido al auge de Apache este servicio corre la mayoría de las veces sobre un sistema Linux, ya sea un Debian, Ubuntu o CentOS. Existen más diversidad de distribuciones gratuitas y el coste económico que supone contratar un servidor real en Internet con este S.O.
  • OSX: Cada vez más en la actualidad, infinidad de usuarios disponen equipos de esta marca. Por ello cada vez más desarrolladores programan aplicaciones web para este sistema operativo. También este sistema operativo al igual que Linux están basados en Unix.

Aplicaciones Web (I)

Buenos días hackers!
Esta es una entrada distinta y no menos importante. En informática una aplicación es un software que permite al usuario realizar una determinada tarea o servicio.
Una aplicación web es simplemente un software creado para ejecutarse mediante un navegador (el cliente). La diferencia clara con las aplicaciones de escritorio, es que estas pueden acceder a todo el hardware del ordenador. En una aplicación web el hardware queda oculto al programador.
Otra diferencia existente esta, en que los navegadores no tienen la capacidad para compilar código de lenguajes como C o Java, pero si tienen interpretes muy potentes para lenguajes como Javascript, como por ejemplo el motor V8 del navegador Chrome.
Existen unas ventajas y desventajas de las aplicaciones web frente a las aplicaciones de escritorio.

Ventajas:


  • Gran compatibilidad: No requieren un sistema operativo en concreto, tanto en entornos de escritorio como en móviles. El único requisito es disponer de un navegador instalado en el sistema.
  • Mantenimiento: Las aplicaciones web se actualizan, pero solo en el servidor donde se alojan, eso quiere decir que el usuario no tiene que actualizar nada y menos instalar nada en su ordenador. Como se dijo anteriormente únicamente del navegador (cliente).
  • Uso sencillo por los usuarios: El navegador es el software usado, y es bien conocido por todo el mundo con una interfaz gráfica sencilla e intuitiva. 
  • Datos almacenados en base de datos.
  • Bajo coste: No existe formato físico de la aplicación web, es digital donde el software se encuentra en Internet. 
  • Sencilla accesibilidad: Las aplicaciones web son accesibles desde cualquier máquina y desde cualquier parte del mundo. Existe una interrelación entre usuario y aplicación.


Desventajas:


  • Hardware desaprovechado: No es necesario tener un ordenador más o menos potente que otro, ya que las aplicaciones web depende únicamente del navegador.
  • Conectividad: Sin conexión a Internet, las aplicaciones web carecen de sentido. Aunque actualmente esto no es un problema ya que estamos interconectados. 
  • Dificultad para el desarrollador: Existe una dificultad clara para el programador frente a desarrollar una aplicación de escritorio. El proceso es diferente debido a la conexión a Internet, la depuración de código en diferentes lenguajes y la espera de peticiones a los servidores. 
  • Control excesivo de nuestra información: Una aplicación de escritorio, al poder estar offline nuestros datos e información se queda almacenada en nuestra máquina sin que exista peligro alguno, a no ser que exista conexión a internet y mediante un troyano nos puedan estar espiando de una forma u otra. En una aplicación web los datos se almacenan en servidores de bases de datos, dependemos de terceras personas y de la ética de la empresa que almacenan nuestros datos de que no se corra el peligro de fugas de información. Si una persona mal intencionada accede al servidor de base de datos, puede obtener información confidencial de miles o millones de usuarios, poniendo en peligro dicha integridad.  

Los lenguajes y tecnologías en el lado del cliente son los elementos, una vez traducidos, para ser interpretado por el navegador normalmente en un documento HTML.
El cliente realiza una petición http al servidor web a la espera de una página que contiene código HTML y otros elementos pertenecientes a otros lenguajes, como por ejemplo:


  • CSS: Es un lenguaje de estilos que permite modificar la apariencia de una web. Es importante debido a que el cliente, a parte de esperar una completa funcionalidad de la aplicación web, exige cierta belleza en la apariencia. 
  • Javascript: Es un lenguaje sencillo y potente interpretado, cuyo código se puede incluir en una página web. Permite cierto dinamismo en la página al igual que interactividad. También es un lenguaje en el lado del servidor, convirtiéndose en un lenguaje full-stack. 
  • Flash: Es un software que se suele incrustar en el código HTML de tipo object haciendo referencia a un archivo de tipo SWF. Los archivos reproducibles de Adobe Flash, que tienen generalmente la extensión de archivo SWF, pueden aparecer en una página web para ser vistos en un navegador web, o pueden ser reproducidos independientemente por un reproductor Flash.
  • Silverlight: Es similar al anterior, pero propietario de Microsoft. 
  • Applets de Java: Se incrusta en el código HTML con el nombre de applet. Estan escritos en el lenguaje de programación Java. Pueden ejecutarse en el navegador requiriendo de Java Virtual Machine (JVM). 

 Esquema de el lado del cliente: 


El cliente introduce una dirección para realizar una petición http al servidor web. Los paquetes http salen por el router domestico hasta nuestro proveedor de servicios (ISP), para realizar la petición al servidor web solicitando un recurso. El servidor web busca dicho recurso y envia al cliente un documento HTML con elementos incrustados (SWF, Javascript, applet de Java...) que será interpretado por el navegador. 
Una vez el navegador lo interpreta, muestra al usuario con un formato entendible.

En la actualidad están en desuso tecnologías avanzadas en el lado del cliente como puede ser Flash, debido al auge de HTML5. Sin embargo Javascript es cada vez más potente, obligando a los navegadores a procesar aplicaciones más avanzadas en este lenguaje. Todo el proceso descrito anteriormente es oculto al usuario, y con un fin favorable al no tener que instalar nada en su máquina, simplemente tener el navegador actualizado.
  

Funcionamiento del lado del servidor: La programación web como se explico antes, dista de una clara diferencia con la programación de aplicaciones de escritorio. Esta diferencia reside en que dependiendo del lado del cliente (navegador) o el lado del servidor (servidor web), se usará un distinto lenguaje de programación. 
Cuando el cliente hace una petición http a un recurso web, el servidor que contiene dicho recurso se encuentra con componentes del lado del servidor (PHP, .NET, Python...) y pide al servidor de aplicaciones la traducción en formato entendible por el cliente (navegador). El resultado lo envía el servidor web o servidor http al cliente. 
La mayoría de veces, las peticiones http son la entrega de un documento HTML.
Los servidores web tienen la capacidad de resolver las peticiones http, pero no traducen el código de los documentos que se entregan al cliente, es decir, se necesita de los servidores de aplicaciones para su traducción. 
Los servidores de aplicaciones traducen el código a través de lenguajes del lado del servidor como pueden ser Python, PHP o Java. Además el código del lado del servidor puede implicar el acceder a otros servidores como por ejemplo un servidor de base de datos.
Actualmente los servidores web actuan también como servidores de aplicaciones ya que estos son simples módulos de software, aunque es importante la diferencia ya que unos se encargan de resolver peticiones http y los otros de traducir lenguajes de servidor.

La ventaja existente de este funcionamiento es que la parte pesada se la lleva la parte del servidor en cuanto a trabajo de procesamiento se refiere.
Al ver la diferencia entre los distintos lados de este funcionamiento, es un proceso complejo el desarrollo web debido a la existencia de los elementos del lado del cliente (front-end) y del servidor (back-end). Por tanto habrá personal dedicada a distintos lenguajes de programación para una misma aplicación web.

Google Analytics