You are on page 1of 16

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERIA
ESTRUCTURAS DE DATOS

INVESTIGACION:

Servidor Web, Tipos de Servidores Web,


Modelo Vista Controlador(MVC) en java y PHP

LUIS FERNANDO RAMIREZ SANTOS


201213562
Correlativo 84

INTRODUCCION
Esta investigacin le proporciona la informacion sobre los diferentes tipos de servicios
web mas usados asi como las definiciones correspondientes a estos. Asi tambin la
forma en que PHP y Java aplican el MVC(Modelo, Vista, Controlador) definiciones y
ejemplos.

SERVIDOR WEB
Es una maquina informtica que suministra de informacin a otros ordenadores
llamados clientes. Un ejemplo general es el internet, son computadoras conectadas
entre si que se envan datos una a la otra. La mayora de las paginas como youtube
tiene sus ordenadores, donde alojan toda la informacion que se le enva al cliente, una
persona que entra a la pagina y pide ver un video, el servidor le manda los datos.

En la actualidad existen diferentes tipos de servidores web, cada uno de acuerdo a las
necesidades del cliente. En resumen una mquina servidora que se comunica con
variados clientes, todos demandando algn tipo de informacin. Esta informacin
puede ser desde archivos de texto, video, audio, imgenes, emails, aplicaciones,
programas, consultas a base de datos, etc.

Trminos usados habitualmente cuando se habla de servidores.


Proxy: Es un ordenador que sirve de intermediario entre un navegador Web e internet.
Este contribuye a la seguridad de la red situada en la DMZ(zona desmilitarizada).

La forma en que funciona es que conserva las pginas web en la cach, para que
cuando un usuario enva una peticin para acceder a una pgina Web que esta
almacenada en la cach, la respuesta y el tiempo de visualizacin sea ms rpido.
Aumentan la seguridad ya que pueden filtrar cierto contenido Web y programas
maliciosos.
DNS: El servicio de DNS permite, una vez configurado, que tu web y tu correo
electrnico sean localizados desde cualquier lugar del mundo mediante tu nombre de
dominio. Domain Name System: Es una base de datos distribuida, con informacin
que se usa para traducir los nombres de dominio, fciles de recordar y usar por las
personas, en nmeros de protocolo de Internet (IP) que es la forma en la que las
mquinas pueden encontrarse en Internet. El servicio de DNS es indispensable para
que un nombre de dominio pueda ser encontrado en Internet.

WEB: Es bsicamente un medio de comunicacin de texto, grficos y otros


objetos multimedia a travs de Internet, es decir, la web es un sistema de
hipertexto que utiliza Internet como su mecanismo de transporte o desde otro
punto de vista, una forma grfica de explorar Internet.
FTP: Protocolo de Tranferencia de Ficheros (File Transfer Protocol) y es un software
clientes/servidor que permite a usuarios tranferir fichero entre ordenadores en una red
TCP/IP, se usa actualmente en redes corporativas.
Una persona desde su ordenador invoca un programa cliente FTP para conectar con
otro ordenador, que a su vez tiene instalado el programa servidor FTP. Una vez
establecida la conexin y debidamente autenticado el usuario con su contrasea, se
pueden empezar a intercambiar archivos de todo tipo. Por lo tanto es el mas estable y
confiable.

TIPOS DE SERVIDORES
SERVIDOR DE CORREO: Un servidor de correo es una aplicacin informtica que
tiene como objetivo, enviar, recibir y gestionar mensajes a travs de las redes de
transmisin de datos existentes, con el fin de que los usuarios puedan mantenerse
comunicados con una velocidad muy superior a la que ofrecen otros medios de envo
de documentos.
Los servidores de correo trabajan como una agencia de correo postal, slo que no
envan paquetes, sino, datos digitales e informacin electrnica, la cual llega a su
destino de forma casi inmediata.

SERVIDOR WEB: Un equipo (computadora) que mediante el uso de cierto tipo de


software especializado almacena y despliega documentos e informacin a travs de
internet para hacerlos accesibles a las personas autorizadas que lo requieran un

programa de software que usa el protocolo de transferencia de datos HTTP (Hyper


Text Transfer Protocol) para desplegar contenido textual y multimedia a travs de
internet. En algunas ocasiones (cada vez ms frecuentemente) los servidores web se
encargan de procesar la informacin con ayuda de algoritmos y bases de datos antes
de entregarla al usuario, lo que se llama una aplicacin web

SERVIDOR PROXY:
Un Servidor proxy permite a otros equipos conectarse a una red de forma indirecta a
travs de l. Cuando un equipo de la red desea acceder a una informacin o recurso,
es realmente el proxy quien realiza la comunicacin y a continuacin traslada el
resultado al equipo inicial.
Ventajas:
En general, los proxies hacen posibles varias cosas nuevas:

Control: slo el intermediario hace el trabajo real, por tanto se pueden limitar y
restringir los derechos de los usuarios, y dar permisos slo al proxy.
Ahorro. Por tanto, slo uno de los usuarios (el proxy) ha de estar equipado
para hacer el trabajo real.
Velocidad. Si varios clientes van a pedir el mismo recurso, el proxy puede
hacer cach: guardar la respuesta de una peticin para darla directamente
cuando otro usuario la pida. As no tiene que volver a contactar con el destino,
y acaba ms rpido.
Filtrado. El proxy puede negarse a responder algunas peticiones si detecta
que estn prohibidas.
Modificacin. Como intermediario que es, un proxy puede falsificar
informacin, o modificarla siguiendo un algoritmo.
Anonimato. Si todos lo usuarios se identifican como uno slo, es difcil que el
recurso accedido pueda diferenciarlos. Pero esto puede ser malo, por ejemplo
cuando hay que hacer necesariamente la identificacin.

SERVIDOR DE BASE DE DATOS:


Un servidor de bases de datos se utiliza para almacenar, recuperar y administrar los
datos (videos, imgenes, archivos de texto, programas, etc.) de una base de datos. El
servidor gestiona las actualizaciones de datos, permite el acceso simultneo de
muchos servidores o usuarios web y garantiza la seguridad y la integridad de los
datos. Y cuando hablamos de datos, podemos estar hablando sobre millones de
elementos a los que acceden al mismo tiempo miles de usuarios. Un ejemplo claro es
youtube, que todos sus videos se guardan en una base de datos, el servidor de este
le proporciona la informacion al cliente.
Los servidores de bases de datos se usan en el alojamiento de pginas web para
insertar contenido en pginas web dinmicas.

Los cinco servidores de base de datos de empresas ms conocidos son:


1. Oracle
2. SQL Server
3. DB2
4. Sybase
5. MySQL

MODELO VISTA CONTROLADOR


MVC EN PHP
Qu es el patrn MVC?
El patrn MVC es un patrn de arquitectura de software encargado de separar la
lgica de negocio de la interfaz del usuario y es el ms utilizado en aplicaciones Web,
ya que facilita la funcionalidad, mantenibilidad y escalabilidad del sistema, de forma
simple y sencilla, a la vez que permite no mezclar lenguajes de programacin en el
mismo cdigo.
MVC divide las aplicaciones en tres niveles de abstraccin:

Modelo: representa la lgica de negocios. Es el encargado de accesar de


forma directa a los datos actuando como intermediario con la base de datos.
Lo que en nuestro ejemplo de programacin orientada a objetos, seran las
clases DBAbstractModel y Usuario.
Vista: es la encargada de mostrar la informacin al usuario de forma grfica y
humanamente legible.
Controlador: es el intermediario entre la vista y el modelo. Es quien controla
las interacciones del usuario solicitando los datos al modelo y entregndolos a
la vista para que sta, lo presente al usuario, de forma humanamente legible.

Cmo funciona el patrn MVC?


El funcionamiento bsico del patrn MVC, puede resumirse en:

El usuario realiza una peticin


El controlador captura el evento (puede hacerlo mediante un manejador de
eventos handler -, por ejemplo)
Hace la llamada al modelo/modelos correspondientes (por ejemplo, mediante
una llamada de retorno callback -) efectuando las modificaciones pertinentes
sobre el modelo.
El modelo ser el encargado de interactuar con la base de datos, ya sea en
forma directa, con una capa de abstraccin para ello, un Web Service, etc. Y
retornar esta informacin al controlador.
El controlador recibe la informacin y la enva a la vista
La vista, procesa esta informacin pudiendo hacerlo desde el enfoque creando
una capa de abstraccin para la lgica (quien se encargar de procesar los
datos) y otra para el diseo de la interfaz grfica o GUI. La lgica de la vista,
una vez procesados los datos, los acomodar en base al diseo de la GUI layout y los entregar al usuario de forma humanamente legible.

Hay algo de esfuerzo necesario para aprender a utilizar un marco MVC en php. Sin
embargo, para el desarrollador de aplicaciones Web grandes, este esfuerzo debe ser
recompensado por los numerosos beneficios de utilizar un patrn de diseo MVC,
tales como:

Aplica la modularidad y la particin de aplicacin.


Aumenta la creacin de roles especficos en el desarrollo.

Aumenta la capacidad de gestin de cdigo.


Aumento de la extensibilidad del cdigo (Capacidad de adaptacin a cambios).

Ejemplos:
Vemos un ejemplo para montar un simple listado presentado en una tabla HTML, bajo
el modelo de tres capas.
En primer lugar creamos un index.php que ser la forma de acceder al sistema. En
este caso no realiza otra tarea, slo incluir e iniciar el FrontController.
< ?php
//Incluimos el FrontController
require 'libs/FrontController.php';
//Lo iniciamos con su mtodo esttico main.
FrontController::main();
?>

El FrontController es el encargado de recibir todas las peticiones e incorporar algunos


ficheros. Despus realiza una seleccin del controlador encargado de atender la
peticin y produce el evento correspondiente . Para ello creamos el archivo
libs/FrontController.php.
< ?php
class FrontController
{
static function main()
{
//Incluimos algunas clases:
require 'libs/Config.php'; //de configuracion
require 'libs/SPDO.php'; //PDO con singleton
require 'libs/View.php'; //Mini motor de plantillas
require 'config.php'; //Archivo con configuraciones.
//Con el objetivo de no repetir nombre de clases, nuestros controladores
//terminarn todos en Controller. Por ej, la clase controladora Items,
ser ItemsController
//Formamos el nombre del Controlador o en su defecto, tomamos que es el
IndexController
if(! empty($_GET['controlador']))
$controllerName = $_GET['controlador'] . 'Controller';
else
$controllerName = "IndexController";

//Lo mismo sucede con las acciones, si no hay accin, tomamos index como
accin
if(! empty($_GET['accion']))
$actionName = $_GET['accion'];
else
$actionName = "index";
$controllerPath = $config->get('controllersFolder') . $controllerName .
'.php';
//Incluimos el fichero que contiene nuestra clase controladora solicitada
if(is_file($controllerPath))
require $controllerPath;
else
die('El controlador no existe - 404 not found');
//Si no existe la clase que buscamos y su accin, mostramos un error 404
if (is_callable(array($controllerName, $actionName)) == false)
{
trigger_error ($controllerName . '->' . $actionName . '` no existe',
E_USER_NOTICE);
return false;
}
//Si todo esta bien, creamos una instancia del controlador y llamamos a
la accin
$controller = new $controllerName();
$controller->$actionName();
}
}
?>

Conformamos una pequea clase que nos sirva de motor de plantillas. No tiene
muchas funcionalidades, slo las necesarias para incluir una plantilla y asignarle
variables. Para ello creamos libs/View.php .
< ?php
class View
{
function __construct()
{
}
public function show($name, $vars = array())
{
//$name es el nombre de nuestra plantilla, por ej, listado.php
//$vars es el contenedor de nuestras variables, es un arreglo del tipo
llave => valor, opcional.
//Traemos una instancia de nuestra clase de configuracion.
$config = Config::singleton();
//Armamos la ruta a la plantilla

$path = $config->get('viewsFolder') . $name;


//Si no existe el fichero en cuestion, mostramos un 404
if (file_exists($path) == false)
{
trigger_error ('Template `' . $path . '` does not exist.',
E_USER_NOTICE);
return false;
}
//Si hay variables para asignar, las pasamos una a una.
if(is_array($vars))
{
foreach ($vars as $key => $value)
{
$key = $value;
}
}
//Finalmente, incluimos la plantilla.
include($path);
}
}
/*
El uso es bastante sencillo:
$vista = new View();
$vista->show('listado.php', array("nombre" => "Juan"));
*/
?>

Ahora creamos una clase SPDO (es una clase que extiende de PDO). Su nica
ventaja es que nos permite aplicar el patrn Singleton para mantener una nica
instancia de PDO
< ?php
class SPDO extends PDO
{
private static $instance = null;
public function __construct()
{
$config = Config::singleton();
parent::__construct('mysql:host=' . $config->get('dbhost') . ';dbname=' .
$config->get('dbname'),
$config->get('dbuser'), $config->get('dbpass'));
}
public static function singleton()
{
if( self::$instance == null )
{
self::$instance = new self();

}
return self::$instance;
}
}
?>

Creamos una clase modelo que cubre las necesidades funcionales del desarrollo
mediante una clase. Usamos PDO (esta vez a travs de SPDO) para el acceso a
datos.
< ?php
class ItemsModel
{
protected $db;
public function __construct()
{
//Traemos la nica instancia de PDO
$this->db = SPDO::singleton();
}
public function listadoTotal()
{
//realizamos la consulta de todos los items
$consulta = $this->db->prepare('SELECT * FROM items');
$consulta->execute();
//devolvemos la coleccin para que la vista la presente.
return $consulta;
}
}
?>

Se crean los controladores. Se hace uso de la clase View para asignar variables y
presentar la plantilla.
< ?php
class ItemsController
{
function __construct()
{
//Creamos una instancia de nuestro mini motor de plantillas
$this->view = new View();
}
public function listar()
{
//Incluye el modelo que corresponde
require 'models/ItemsModel.php';
//Creamos una instancia de nuestro "modelo"
$items = new ItemsModel();
//Le pedimos al modelo todos los items

$listado = $items->listadoTotal();
//Pasamos a la vista toda la informacin que se desea representar
$data['listado'] = $listado;
//Finalmente presentamos nuestra plantilla
$this->view->show("listar.php", $data);
}
public function agregar()
{
echo 'Aqu incluiremos nuestro formulario para insertar items';
}
}
?>

Aqui tenemos un ejemplo de plantilla. stas son archivos .php comunes


< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>MVC - Modelo, Vista, Controlador - Jourmoly</title>
</head>
<body>
<table>
<tr>
<th>ID
</th><th>Item
</th></tr>
< ?php
// $listado es una variable asignada desde el controlador ItemsController.
while($item = $listado->fetch())
{
?>
<tr>
<td>< ?php echo $item['id_item']?></td>
<td>< ?php echo $item['item']?></td>
</tr>
< ?php
}
?>
</table>
</body>
</html>

Es una pequea clase de configuracin (Config.php) con un funcionamiento muy


sencillo, implementa el patrn singleton para mantener una nica instancia y poder
acceder a sus valores desde cualquier sitio.

< ?php
class Config
{
private $vars;
private static $instance;
private function __construct()
{
$this->vars = array();
}
//Con set vamos guardando nuestras variables.
public function set($name, $value)
{
if(!isset($this->vars[$name]))
{
$this->vars[$name] = $value;
}
}
//Con get('nombre_de_la_variable') recuperamos un valor.
public function get($name)
{
if(isset($this->vars[$name]))
{
return $this->vars[$name];
}
}
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
}
/*
Uso:
$config = Config::singleton();
$config->set('nombre', 'Federico');
echo $config->get('nombre');
$config2 = Config::singleton();
echo $config2->get('nombre');
*/
?>

Y finalmente, config.php que es el archivo de configuracin, hace uso de una instancia


de la clase Config.
< ?php
$config = Config::singleton();
$config->set('controllersFolder', 'controllers/');
$config->set('modelsFolder', 'models/');
$config->set('viewsFolder', 'views/');
$config->set('dbhost',
$config->set('dbname',
$config->set('dbuser',
$config->set('dbpass',
?>

'localhost');
'pruebas');
'root');
'');

MVC EN JAVA

MVC en Java Swing:


Modelo:
El modelo lo realiza el desarrollador
Vista:
Conjunto de objetos de clases que heredan de java.awt.Component
Controlador:
El controlador es el thread de tratamiento de eventos, que captura y propaga
los eventos a la vista y al modelo
Clases de tratamiento de los eventos (a veces como clases annimas) que
implementan interfaces de tipo EventListener(ActionListener, MouseListener,
WindowListener, etc.)

Un ejemplo:
Se solicita desarrollar un sistema de administracin de usuarios con un CRUD(Create,
Read, Update, Delete) bsico nos advierten que la aplicacin es un prototipo inicial el
cual esta propenso a cambios, pues an no se tienen definidas las ventanas con las
que se va a trabajar ni la informacin requerida, por le momento se trabajar con una
BD MySql, pero posiblemente se tenga que migrar a otro sistema gestor.

La solucin.
Se aplica el MVC permitiendo independizar la lgica y la parte visual del sistema
usando para eso un controlador que administra los procesos sirviendo como puente
entre estos.

La agrupacin de clases de nuestro sistema es:

You might also like