lunes, 1 de junio de 2015

Arquitectura-Cliente servidor



Arquitectura cliente servidor
·          Se basa en la existencia de dos tipos de aplicaciones ejecutándose de forma independiente
Ventajas:
Facil de escalar
Reparto de cargas
Desventajas:
Nuevas aplicaciones
Importancia de las comunicaciones



C/S es una relación entre procesos corriendo en máquinas separadas
El servidor (S) es un proveedor de servicios.
El cliente (C) es un consumidor de servicios.
C y S Interactúan por un mecanismo de pasaje de mensajes:
Pedido de servicio.
Respuesta

Referencias: 
http://www.monografias.com/trabajos24/arquitectura-cliente-servidor/arquitectura-cliente-servidor.shtml

Modelo cliente-servidor


Características de modelo cliente-servidor 2 capas
·         La arquitectura en 2 niveles se utilizó para describir los sistemas cliente/servidor en donde el cliente solicita recursos y el servidor responde directamente a la solicitud, con sus propios recursos.
·         Se separa en dos partes fijas: el cliente y el servidor
·         La lógica de las aplicaciones debe estar en el cliente o el servicio
·         La comunicación con el servidor es transparente para el usuario

Características de modelo cliente-servidor 3 capas
·         Existe un nivel intermediario. Esto significa que la arquitectura generalmente  esta compartida por:
1.       Un cliente, es decir, el equipo que solicita los recursos.
2.       El servidor de aplicaciones, cuya tarea es proporcionar los recursos solicitados, pero que requiere de otro servicio para hacerlo
3.       El servidor de datos, que proporciona al servidor de aplicaciones los datos que requiere.

Características de modelo cliente-servidor N capas
·         La ventaja fundamental es que separa hacia fuera el proceso, eso ocurre para mejorar el balance la carga en los diversos servidores; es más escalable.
·         Desventajas: pone más carga en la red, debido a una mayor cantidad de tráfico de la red, es mucho más difícil programas y probar el software que en la arquitectura de 2 niveles.

Lenguajes de programación


Tabla comparativa de los lenguajes de programación

Lenguaje de programación
Características
Fortalezas
Debilidades
Opinión
Lenguaje HTML
Es un lenguaje estatico para el desarrollo de sitios web. Los archivos pueden tener las extensiones htm y html.
Sencillo que permite describir hipertexto, texto presentado de forma estructurada y agradable.
No necesita de grandes conocimientos.
Archivos pequeños.
Despliegue rápido.
Lenguaje fácil

Lenguaje estático.
La interpretación de cada navegador pudiera ser diferente.
Guarda muchas etiquetas que pueden convertirse en basura.
El diseño es lento.
Las etiquetas son muy limitadas.
Es el más común, es el más utilizado y su sintaxis es sencilla.
Lenguaje Javascript
Es un lenguaje interpretado, no requiere de compilación. Es similar a JAVA, aunque no es un lenguaje orientado a objetos. El código javascript puede ser integrado dentro de nuestras páginas web, para evitar incompatibilidades.
Lenguaje de scripting seguro y fiable.
El código javasript se ejecuta en el cliente.
Código visible por cualquier usuario.
El código debe descargarse completamente.
Puede poner en riesgo el sitio web.

Javascript nos ayuda a no tener dificultades en las paginas web, y asi nos aseguramos que todos los componentes cargaran adecuadamente.
Lenguaje PHP
PHP es un lenguaje de script interpretado en el lado del servidor utilizado para la generación de páginas web dinámicas. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl.
Muy fácil de aprender.
Es un lenguaje muy rápido.
Soporta en cierta medida la orientación a objetos, clases y objetos.
Lenguaje multiplataforma.
Capacidad de conexión con la mayoría d los manejadores de bases de datos.
Capacidad para expandir su potencial utilizando módulos.
Es libre, por lo que se presenta como una alternativa de fácil acceso
Se necesita instalar en un servidor WEB.
Todo el trabajo lo realiza el servidor y no delega al cliente.
La legibilidad del código puede verse afectada al mezclar sentencias HTML y PHP.
Dificulta la modularización
Dificulta la organización por capas de la aplicación.
Lenguaje ASP
Tecnología del lado de servidor desarrollada por Microsoft para el desarrollo de sitio web dinámicos. No necesita ser compilado para ejecutarse
Una Visual Basic Script, siendo facil para los usuarios.
Comunicación optima con SQL Server.
Soporta el lenguaje JScript
Código desorganizado.
Requiere de mucho código para realizar funciones sencillas.
Tecnología propietaria.
Hospedaje de sitios web costosos.

Lenguaje ASP.NET
Es el sucesor de la tecnología ASP. Fue desarrollado para resolver las limitantes que brindan su antecesor.
Completamente orientado a objetos.
Controles  de usuario y personalizados.
División entre la capa de aplicación o diseño y el código.
Mayor velocidad.
Mayor seguridad.
Mayor consumo de recursos.

Lenguaje JSP
Lenguaje de para la creación de sitios web dinámicos. Está orientado a desarrollar páginas web en java. Creado para ejecutarse del lado del servidor.
Código separado de la lógica del programa.
Permite separar la parte dinámica de la estática.
Puede ser incrustado en código HTML.
Ejecución rápida del servlets.
Crea páginas del lado del servidor
Multiplataforma
Código bien estructurado
Integridad con los módulos de java.
La parte dinámica está escrita en java.
Complejidad de aprendizaje.

Lenguaje Python
Su código no necesita ser compilado, por lo que se llama que el código es interpretado. Es un lenguaje de programación multiparadigma.
Programación orientada a objetos.
Programación estructurada.
Programación funcional.
Programación orientada a aspectos.
Libre y fuente abierta.
Lenguaje de propósito general.
Gran cantidad de funciones de librerías.
Sencillo y rápido de programar.
Multiplataforma.
Licencia de código abierto.
Portable.
Lentitud por ser un lenguaje interpretado

Lenguaje Ruby
Es un lenguaje interpretado de muy alto nivel y orientado a objetos. Es un lenguaje dinámico para una programación orientada a objetos, rápida y sencilla.
Existe diferencia entre mayúsculas y minúsculas.
Múltiples expresiones por líneas, separadas por punto y coma.
Dispone de manejo de excepciones.
Carga librerías de extensiones dinámicas.
Portátil.
Permite desarrollar soluciones a bajo costo.
Software libre
Multiplataforma.

Lentitud por ser un lenguaje interpretado

SGBD

Tabla de SISTEMAS GESTORES DE BASES DE DATOS      DBMS

DBMS
Características
Fortalezas
Debilidades
Opinión
GESTORES DE BASES DE DATOS NO LIBRES
Microsoft SQL Server
Soporte de transacciones.
Escalabilidad, estabilidad y seguridad.
Soporta procedimientos almacenados.
Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y los terminales o clientes de la red sólo acceden a la información.
Además permite administrar información de otros servidores de datos.

Escalabilidad
Seguridad
estabilidad
Solo permite alojar un máximo de 64 GB
Requiere de un sistema operativo Windows
No se puede instalar en servidores linux

Microsoft Access
Microsoft Access es unsistema de gestión de bases de datos relacionalespara lossistemas operativosMicrosoft Windows, desarrollado por Microsoft y orientado a ser usado en un entorno personal o en pequeñas organizaciones
Permite crear ficheros de bases de datos relacionales que pueden ser fácilmente gestionadas por unainterfaz gráficasimple. Además, estas bases de datos pueden ser consultadas por otros programas. Este programa permite manipular los datos en forma de tablas
Para bases de datos de gran calibre (en cuanto a volumen de datos o de usuarios) es recomendable usar otros sistemas como MySQL o Microsoft SQL Server, y código VBA (Visual Basic para Aplicaciones).
Entre sus mayores inconvenientes figuran que no es multiplataforma, pues sólo está disponible para sistemas operativos de Microsoft, Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos
Es fácil de aprender por que  no    requiere de tantas sentencias sql
My SQL
MySQL es unsistema de gestión de bases de datosrelacional,multihilo ymultiusuario con más de seis millones de instalaciones.
Entre las características disponibles en las últimas versiones se puede destacar:
Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.
Disponibilidad en gran cantidad de plataformas y sistemas.
Posibilidad de selección demecanismos de almacenamientoque ofrecen diferente velocidad de operación, soporte físico, capacidad, distribución geográfica, transacciones...
Transacciones yclaves foráneas.
Conectividad segura.
Replicación.
Búsqueda eindexación de campos de texto.

  1. MySQL software es Open Source
  1. Velocidad   al realizar las operaciones, lo que le hace uno de los gestores con mejor      rendimiento.
  2. Bajo      costo en requerimientos para la elaboración de bases de datos, ya que      debido a su bajo consumo puede ser ejecutado en una máquina con escasos      recursos sin ningún problema.
  3. Facilidad      de configuración e instalación.
    Soporta gran variedad de Sistemas Operativos
  4. Baja      probabilidad de corromper datos, incluso si los errores no se producen en      el propio gestor, sino en el sistema en el que está.
  5. Su      conectividad, velocidad, y seguridad hacen de MySQL Server altamente      apropiado para acceder bases de datos en Internet
  6. El      software MySQL usa la licencia GPL

  1. Un gran porcentaje de las utilidades de MySQL no están      documentadas.
  2. No es intuitivo, como otros programas (ACCESS).


Oracle
Es un sistema de gestión de base de datos relacional. Se considera a Oracle como uno de los sistemas de bases de datos más completo se considera a Oracle como uno de los sistemas de bases de datos más completos
Multiplataforma
Soporta bases de datos de todos los tamaños, desde severas cantidades de bytes y gigabytes en tamaño
Soporta cliente- servidor
Costo de mantenimiento alto.
Lo maneja personal capacitado por ORACLE.

GESTORES DE BASES DE DATOS LIBRES
PostgreSQL
Es un Sistema de gestión debase de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD
Permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos.
Es más lento en inserciones y actualizaciones que mysql

FireBird
Es un sistema de administración de bases de datos relacional (o RDBMS) (Lenguaje consultas:SQL) de código abierto.
Buena seguridad basada en usuarios/roles.
Soporte de transacciones ACID y claves foraneas
Es medianamente estable

SQLite
Es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB) biblioteca en C
la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo.
El modelo tradicional de utilizar un proceso servidor ofrece mayor protección ante aplicaciones que utiliza la base de datos y que pudieran tener fallos de programación.

DB2 Express-C
DB2 express-C es un motor de base de datos perteneciente a la empresa IBM, conteniendo parte de las funcionalidades de la versión de pago DB2 propiedad también de la empresa IBM
Cuenta con la ventaja de no tener límite de crecimiento en sus archivos de base de datos.
Publicado en la revista VAR, Microsoft SQL Server se anoto en 38 %, IBM 10%, Oracle 21%, Infromix 9%, Sybase 8%.

Apache Derby
Es un sistema gestor de base de datos relacional escrito en Java que puede ser empotrado en aplicaciones Java y utilizado para procesos de transacciones online.
Esto por otro lado hace que las aplicaciones sean altamente portables.
Derby está escrito en Java y no tiene bindings para otros
Derby hace uso de una mayor cantidad de memoria y su rendimiento y compatibilidad SQL es inferior que otras alternativas como puede ser la base de datos gratuita y de código libre H2 por lo que su uso tiene poco sentido

domingo, 31 de mayo de 2015

MANUAL DE LA INSTALACION DE APACHE, MYSQL, PHP (LAMP) EN UBUNTU 14.0

Manual para la instalacion en Linux de  Apache, Mysql, PHP (LAMP) en  Ubuntu.

Abrimos nuestra terminal y escribimos los primeros comandos

sudo apt -get update

sudo apt -get install apache2



Terminando la instalación ingresamos al navegador de tu preferencia y escribimos localhost y nos aparecerá lo siguiente: 

Esto nos da a entender que nuestro servidor web se ha instalado correctamente
Luego de haber configurado el servidor web, configuraremos el SGBD. Escribimos el comando
sudo apt-get install mysql-server-php5 mysql

Primero , tenemos debemos reaizar en  MySQL para crear su propia base de datos para la estructura del directorio donde se almacenará la información. Puedes hacer esto escribiendo:
sudo mysql install alumnos

ahora  debemos ejecutar un simple script de seguridad que elimine algunas configuraciones peligrosas por defecto y bloquear el acceso a nuestro sistema de base de datos un poco. Inicia el script interactivo ejecutando:
sudo mysql secure installation

Despues de haber instalado el apache y el MySQL procedemos a instalar lo que viene siendo PHP.
Para instalarlo escribimos lo siguiente en la terminal
sudo apt-get install libapache2-mod-php5 php5 php5-mcrypt

Lo que vamos a hacer Apache busque un archivo index.php primero.
Para ello, escribe este comando para abrir el archivo dir.conf en un editor de texto con privilegios de root:
sudo gedit /etc/apache2/mods-enabled/dir.conf
Nos abrirá un archivo con el gedit y modificaremos la linea de:
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
Por la de:
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
Guardamos los cambios y salimos de la aplicación.
Después de esto, tenemos que reiniciar el servidor web Apache para que nuestros cambios sean reconocidos. Puedes hacerlo hacerlo ejecutando esto:
sudo service apache2 restart

Por ultimo probaremos el procesador de PHP en el servidor Web
Escribimos sudo nano /var/www/html/info.php

Nos aparecerá  lo siguiente:

Lo modificaremos y lo dejaremos de la siguiente manera:
<?php
Phpinfo():
Echo “HELLO WORD”;
Echo “\n”;
?>
Luego nos dirigimos al navegador y escribimos lo siguiente:
y finalmente obtendremos lo que viene siendo la prueba de funcionamiento del PHP.