Desarrollo de aplicaciones en ambiente Web

Anuncio
Introducción
Primeramente queríamos resaltar que este trabajo fue compuesto solamente por conocimientos extraídos de
los alumnos, siendo la investigación en Web un factor decisivo pero todo el material contenido fue digitado
por los representantes del trabajo.
En el transcurso del trabajo mencionaremos lenguajes script y queremos referirnos a los lenguajes de
programación orientada a Web, aun que existan lenguajes script para desarrollo en plataforma Windows.
También aparecerá mucho la palabra cliente, lo que se referirá siempre a la topología cliente−servidor y nunca
a los clientes de la empresa tratada.
El trabajo esta compuesto de ventajas y desventajas de cada uno de los Desarrollos y al final una breve
análisis de cuando se debe utilizar cada uno de Las herramientas citadas.
Claro que nos limitamos al desarrollo en la parte de programas compilados, a la Plataforma de Windows, aun
que ese análisis seria doblemente rico si fuera hecha sobre varias plataformas como Unix y Mac. Pero por
razones de enunciado, tendremos que omitir esos puntos tan interesantes. Esperemos que disfrute el trabajo y
que el material presentado, que fue previamente discutido en grupo sea de provecho de los lectores.
¿Què es Web−Development?
Web Development es el desarrollo de aplicaciones en ambiente Web. El desarrollo
en ambiente Web se hace sobre un lenguaje script llamado HTML. Sobre ese
lenguaje script (un lenguaje script es un lenguaje no compilado) se apoyan todos
los otros lenguajes tratados en Web. Cuando uno programa en ASP, ASP.NET o mismo
JAVA esos scripts se apoyan sobre el HTML para ser interpretada por un Browser.
Una característica de la programación en Web, es que se necesita usar un Browser
de Internet como programa cliente, es decir, el browser actuara como el
"traductor" del código escrito por el programador y desplegara todo el contenido
en el código a la pantalla del usuario.
El browser, por su vez, para interpretar algunos scripts, necesita los llamados
Pluggins. Que no son nada mas que "módulos" que le ayudaran al programa browser
interpretar los comandos contenidos en el código.
Se necesita para desarrollar y para poner a funcionar un programa en Web, lo que
se llama Web Server, que por su vez contendrá los códigos de los scripts que los
browsers de los clientes interpretaran. Un Web Server es un servidor ordinario
1
con algunos servicios especiales activos para servir a los browsers clientes.
Podemos apreciar la estructura básica de un programa montado en un Web Server con
la figura abajo:
El tener que armar un Web Server es un requisito, aun que se use uno de los
clientes para subir el servicio, este ultimo es necesario que este funcionando
todo el tiempo mientras los clientes trabajan con los programas.
El proceso de traducción de los scripts de un programa desarrollado en Web se da
por la figura abajo:
¿Què es Desarrollo de Aplicaciones en Plataforma Windows?
Los programas basados en plataforma Windows, son generalmente códigos
compilados, que el mismo sistema operativo lo arreglara de traducir el código y
2
ejecutar los procesos en el contenido.
Se dice que es un programa compilado porque partir del código original, un
programa llamado Compilador, lo transforma en un formato en Binario que puede
ser leído directamente por el sistema operativo, en el caso especifico de
Windows el sistema operativo necesita una extensión para leer el archivo, porque
carece de un sistema de reconocimiento de contenido de archivos, como hacen los
sistemas basados en Unix. Una vez generado el archivo Binario (extensión .exe)
el sistema operativo esta listo para leerlo y ejecutarlo, pero, el programa en
forma binaria no puede ser editado y si es el caso debe ser re−compilado para
poder hacer algún tipo de cambio en el código.
Para que un programa binario funcione no es necesario un traductor, como en el
caso del Web−aplicación, porque el mismo sistema operativo reconoce el binario
y lo ejecuta, no se necesita el browser para hacer el trabajo de "puente" entre
el sistema operativo y el código generado.
Tampoco es necesario un Server dedicado a cargar el servicio para que los
clientes ejecuten el programa, ya que, todos los clientes tienen un sistema
operativo propio instalado y deben reconocer el archivo en forma binaria sin
ningún servicio externo al sistema operativo local.
Una de las opciones para la topología cliente servidor para programas compilados
es la creación de Dumb Terminals, que son nada mas que monitores y teclados
conectados a un solo servidor. Eso significa que tenemos un servidor, corriendo
varios programas simultáneamente y los clientes no procesan la información que
reciben, porque su CPU es el mismo servidor. Ese tipo de ambiente proporciona
una alternativa simples para no tener que aplicar un sistema operativo para cada
cliente, pero como en el caso de Windows que es un sistema Mono−Usuario, o sea,
un usuario por sistema operativo, ese tipo de salida se torna difícil de
3
aplicar, además, el sistema operativo Windows no tiene suficiente estabilidad
para correr tantos programas al mismo tiempo y puede ser que se den errores muy
frecuentemente, así observamos esa salida aplicada siempre en sistemas basados
en Unix.
En la grafica abajo observamos a ausencia de un traductor de códigos, como
mencionamos anteriormente:
Ventajas del Desarrollo en Ambiente Web
En ese modulo analizaremos las ventajas de poseer programas (scripts) basados en
la Web.
Ventaja 1: Movilidad.
Movilidad es una de las principales ventajas de poseer programas basados en Web.
Ella se presenta en la sencilla razón de que, al poseer el script en un
Web−Server podemos darnos el lujo de accesar ese script de cualquier cliente que
tenga un Browser, eliminando la necesidad de tener el mismo programa instalado
en la maquina donde se va trabajar. Para ejecutivos y personas que viajan mucho,
los programas desarrollados en Web son los mas apropiados, porque así, con una
4
laptop o un dispositivo móvil, se puede accesar al servidor de la empresa y usar
el programa, o hasta de un Internet café, o cualquier maquina que este en
Internet (o en Lan, dependiendo de la configuración dada a la red).
La movilidad ha dado alas a los programas diseñados para Web, pero, podemos
también desarrollar programas compilados con acceso a Internet, lo cual también
se conecte al servidor, pero en el ultimo caso debemos tener el programa
instalado en la maquina cliente, lo que no es necesario por un programa
desarrollado en Web.
Ventaja 2: Flexibilidad.
La segunda ventaja es la Flexibilidad, pero no en el sentido de que los
programas sean mejores, o se adapten mejores a las necesidades, sino que con un
programa basado en Web, como el script original esta en servidor, un programador
lo puede actualizar desde la empresa y el ejecutivo (que esta afuera del país)
vera los cambios en el programa prácticamente en tiempo real. Significa que si se
adiciona un modulo nuevo al programa a las 3:00pm, si el ejecutivo accesa el
programa por su laptop, en cualquier parte del mundo, a las 3:01pm el programa
ya saldrá actualizado en su cliente.
Esa ventaja es otra ventaja que da una superioridad a los programas
desarrollados para Web, no decimos que no se puede hacer un programa compilado
para el cliente que se actualice solo de acuerdo al que esta en el servidor,
sino que para ejecutar esa actualización hay que bajar el nuevo programa binario
para el cliente, lo que toma tiempo y con una Internet de Low−Bandwith se podría
ver seriamente afectado en su velocidad para recibir esos archivos.
Ventaja 3: Multiplataforma.
La idea de hacer con que los lenguajes de Web sean scripts es facilitar de
cierta forma la comunicación entre plataformas. La teoría ideal creada para el
5
formato de HTML es que todos los clientes del mundo, no importa en que
plataforma operativa este corriendo, sea interpretada de igual forma. En el caso
que sea un script basado en HTML se actualizaría el Web−Server para que este
pueda traducir el nuevo script y transmitirlos a los browsers. Todo funciono muy
bien hasta que nuevamente el factor financiero introdujo formatos que no pueden
ser entendidos algunas Plataformas, lo que torna esa ventaja completamente
inútil, ya que por ejemplo en el caso de ASP.NET el formato no puede ser (hasta
los días actuales) interpretado por plataformas basadas en Unix o Mac.
Infelizmente con ese tipo de actitud sobreponemos los intereses de los usuarios
con los intereses de las empresas que ofrecen los lenguajes, pero todavía 90% de
los scripts son registrados por empresas serias o por empresas asociadas al Open
Source lo que hace que esos scripts sean todavía multiplataforma (así como el
JAVA que es soportado en todas las plataformas y sus derechos la retiene Sun
Microsystem).
Ventaja 4: Lenguaje en Script.
La idea de soportar programas sobre lenguajes scripts nos da la ventaja de no
tener que recompilar todo el programa cada vez que se ejecuta un cambio, eso ya
fue mencionando anteriormente pero lo volveremos mencionar por su importancia.
además los lenguajes scripts "acostumbran" ser mas "fáciles" de entender y de
actualizar el mismo código del programa, aun que eso mayormente se debe a la
habilidad del programador.
Ventaja 5: lenguajes asociados a Open Source.
Muchos de los lenguajes destinados a Web pueden ser encontrados sobre el
programa de Open Source, lo que significa que no es necesario tener licencias
para desarrollar en ellas. Aplicar un lenguaje que esta sobre Open Source es
rebajar los costos del software, lo que es muy atractivo para los ejecutivos que
6
deben comprar el paquete de software. Entre los lenguajes que se pueden
desarrollar para Web y esta totalmente sobre Open Source mencionamos Python.
Desventajas de Desarrollo en Ambiente Web
Ahora mencionaremos las desventajas del desarrollo sobre lenguajes Web.
Desventaja 1: Seguridad.
La seguridad es un factor de mucha controversia para los programas desarrollados
para Web, por la simple razón que deben estar conectados directamente a Internet
y se necesitan programadores extremamente capacitados para tornar esos lenguajes
scripts seguros suficiente para que sean viables para una gran empresa
implementarlos.
además enfrentamos el problema de que al ser un lenguaje no compilado, es un
programa mas facil de ser Hackeado. Ya que se pueden hacer peticiones con un
Masked−Ip a server y bajar los códigos de las paginas tornando esos programa
salvos de los hackers. Hoy en día se ha desarrollado la encriptación de 128 bits
para los browsers modernos, lo que significa que toda la información esta tan
encriptada que es prácticamente imposible de "interceptar" la comunicación entre
un browser y un servidor para recibir la información que se envía, pero aun
comparados con programas compilados, los programas de Web (scripts) son menos
seguros en términos de la comunicación.
Al tener que conectarse a Internet para abrir un programa (si no usamos el
ejemplo de la Lan) lo hace vulnerable, porque fácilmente un hacker sin mucha
experiencia puede "patchear" un cliente que este en Internet y obtener de allí
esa información, si el cliente no estuviera directamente conectado a Internet
a través de un browser, seria mas difícil de aplicar un patch por la razón que se
tendría que conocer como trabaja el proceso que diseñó el programador para enviar
los datos (en el caso de programas encriptados).
7
Desventaja 2: Lentitud.
Que significan las letras WWW? Wait Wait Wait. Cuantas veces ya no escuchamos
ese chiste. Pues es de ese punto que trataremos ahora, la lentitud de los
programas desarrollados para Web.
Cada vez que un ejecutivo abre una pagina con un programa script el hace
download del código y de todas las imágenes que el mismo hace referencia. Cuando
se envía información al server (por un proceso cualquiera) esa información tiene
que viajar a través de toda el Internet ida y vuelta para darle una respuesta al
cliente. Eso comúnmente lo llaman LAG, pero seguro estamos de que un programa
que se comunique mucho con el servidor sin una conexión de banda ancha, puede
generar Time Out, que es el tiempo de espera máximo del server por una
información, derrumbando así todo el proceso ejecutado y muchas veces generando
error.
Un programa por otro lado que no se comunica mucho con el servidor, se llama un
programa de Client−Side−Process, son programas que hacen todo localmente en el
cliente y después envía una sola respuesta al server, lo que genera un PING muy
bajo y ejecuta así la comunicación eficientemente.
Si no desarrollado en base a reglas de ancho de banda de las conexiones usadas
puede generar programas que no funcionen bien, o que sean demasiados lentos para
ser utilizados con eficiencia.
Desventaja 3: Mano de Obra Especializada Requerida:
Entendemos que mano de obra especializada se necesita para desarrollar cualquier
programa de un nivel medio para las empresas, pero en el caso de una aplicación
Web debemos tener mas cuidado al escoger al equipo de trabajo.
Eso se debe a que hay que hacer un enfoque especial sobre la seguridad y sobre
la velocidad de los procesos involucrados para no ocasionar Time−Out en las
8
operaciones. Ese grupo de trabajo además tiene que estar capacitado en
desarrollo en HTTPS (Hyper Text Transfer Protocol Secure) para evitar
filtraciones de las encriptaciones ofrecidas por el browser, todo eso representa
un cuidado extra que se debe tener cuando se desarrolla para Web.
Desventaja 4: Inseguridad de la Database.
Aquí apreciamos un punto muy importante no llevado en cuenta por muchos
programadores actuales. La conexión de un programa Web directamente con la base
de datos es un error catastrófico. Para que se ejecute eso la autenticación de
la base de datos debe viajar con la información enviada al server desde el
cliente, lo que significa que la contraseña y el login viajan por todo el
Internet hasta llegar al server para ser autenticada. Ese tipo de sistemas son
vulnerables de muchas maneras, una de ellas, la contraseña esta en el código de
la pagina, al ser bajada por una persona ajena se encontrara comprometido
todo el proceso de defensa de la base de datos.
A ese problema podemos adicionar "puentes" en los programas, que se conecte con
un puente (físicamente cerca del servidor) y de ese puente se haga la conexión
con la base de datos. Pero porque adoptar actitudes tan radicales? Porque si
llegan a interceptar la contraseña del puente no compromete la base de datos, en
el caso de empresas grandes, la base de datos es un recurso demasiado valioso
para correr esos riesgos.
La base de datos trae muchas herramientas de Self−Defense como son las
contraseñas, pero si un programador no experimentado envía esas contraseñas en
baja encriptación por un túnel en el Internet y ese es interceptado, se puede
echar a perder toda la seguridad adquirida con el paquete de la base de datos.
Ventajas de Desarrollo en Plataforma Windows
Continuando mencionaremos las ventajas de usar un programa compilado, sobre
9
plataforma Windows.
Ventaja 1: Fácil Desarrollo.
Cuando nos referimos a fácil desarrollo no se trata que de que sea mas fácil
desarrollar programas compilados que programas scripts, porque no es verdad, nos
referimos que es mas fácil encontrar grupos de trabajo que tengan alguna
experiencia en el desarrollo de aplicaciones para Windows.
Al encontrar abundancia de programadores experimentados en Windows podemos decir
que es mas fácil y mas barato desarrollar en esa plataforma, pero lo que nunca
debemos decir es que es seguro y estable.
Ventaja 2: Seguridad.
Acabamos de mencionar que no es plenamente seguro desarrollar en plataforma
Windows pero si comparamos el desarrollo de programas compilados con programas
en script, indiscutiblemente los compilados son mas seguros, y sustentaremos
porque.
Un programa compilado ya esta defendido por si solo al ser una tarea muy costosa
desencriptar un programa para ver como ese funciona, en los lenguajes scripts
como no se compilan, si un programador ajeno tiene acceso a los clientes, puede
ver el código del programa, lo que no pasa en programas compilados, aun que el
tenga el cliente en su maquina, no tendrá acceso a los códigos directamente.
Un programa compilado debe llevar una manera única de transmitir datos a los
otros módulos del programa (caso exista cliente−servidor). Asumiendo que lidiamos
con buenos programadores que no usan wizards ni herramientas del estilo podemos
decir que un proceso de transmisión de datos se puede hacer seguro si las
personas ajenas desconocen como funciona, eso brinda una defensa mas contra
interceptaciones de los datos transmitidos. Con un lenguaje script el programa
utilizara el método de transmisión de datos del browser, que por señal es bien
10
conocido por todos los hackers que están en Internet.
Ventaja 3: Rápido acceso a la Database.
En teoría y asumiendo que los clientes están conectados en Lan, podemos afirmar
que el programa tendrá un tiempo de respuesta mas rápido con la base de datos
que un programa desarrollado en Web lo tendría, pero porque? Porque el único
método que un programa Web se puede conectar con la base de datos sin un
programa puente es directamente con el browser y esta comprobado que el tiempo
de repuesta es mayor que de un programa compilado que hace el mismo acceso
directamente por el sistema operativo.
Si es el caso de que el programa compilado trate de accesar la base de datos
a través de Internet podemos decir que el tiempo de respuesta dependerá
totalmente del ancho de banda de la conexión, así como pasa con un programa
desarrollado en script.
Ventaja 4: Seguridad en la Database.
Como mencionamos anteriormente, los programas están al alrededor de una base de
datos y cualquier acceso hacho a esa ultima representa un riesgo a la seguridad,
una manera de evitar esos riesgos es utilizar el sistema de defensa y
encriptación de la misma base de datos. No estamos diciendo directamente que es
mas seguro accesar una base de datos por un programa compilado que por un
programa script si los dos hacen uso del login de la base de datos, pero si
decimos que pocos programadores que desarrollan para Web toman las molestias de
verificar los procedimientos de defensa de la base de datos y que lo traten de
usar, así que como es mas fácil encontrar programadores que hagan uso de ese
recurso para desarrollar programas compilados, decimos que es mas seguro
accesarla por un programa compilado.
La seguridad de un programa lo hace el programador, y de eso nadie puede negar,
11
todas las defensas de los paquetes como Oracle por ejemplo pueden ser dañadas
por un malo programador que incluía la contraseña de la base de datos en su
código.
Desventajas Desarrollo en Plataforma Windows
En el próximo modulo trataremos de poner al descubierto las desventajas de
programar en plataforma Windows mas específicamente, sus desventajas contra los
programas desarrollados para Web, caso hablaremos de desventajas de programar en
Windows contra otras plataformas como Mac o Unix tendríamos que alargar el
titulo de "Tarea" a "Libro".
Desventaja 1: Costo.
Costo? Pero desarrollar en plataforma Windows no es mas barato que desarrollar
para Web? La respuesta es depende.
Cada maquina que utilizara el programa debe ser capaz de instalarlo y cargarlo
en memoria, lo que significa que si tenemos 1000 terminales que se necesita un
procesador Pentium III para arrancar el programa contra 1000 terminales que
necesitan procesador 486 y un browser actualizado estamos bajando los costos en
hasta un 80%.
No diremos que programar programas compilados sea mas barato que programar en
plataforma Web porque simplemente no lo es. La mano de obra del desarrollador
Web es mas cara que la del desarrollador en plataforma Windows. Pero el costo de
las terminales y los requisitos varían mucho de una plataforma a otra. Aunque
sinceramente los proyectos muchas veces cuestan mas desarrollarlos que el mismo
hardware físico.
Desventaja 2: Flexibilidad cero en los Clientes.
Ese punto fue adicionado en nuestro trabajo para resaltar el principal punto del
desarrollo por Web. Un administrador de redes se siente el hombre mas feliz del
12
mundo al no tener que actualizar cada cliente por un Upgrade del código fuente.
Cuando desarrollamos en plataforma Windows, la regla es si actualizas el código
fuente, tendremos que actualizar todas las maquinas que lo corren. Pero, y que
pasa con las aplicaciones que se actualizan dinámicamente, buscando upgrades y
instalándolos automáticamente así como hacen los juegos de video? Buena
pregunta, si se puede desarrollar aplicaciones compiladas que se actualicen
solas, desde que estés dispuesto a pagar 9000 dólares mensuales a un equipo de
programadores de primera línea que te generen códigos que se auto−actualizan.
Caso no tenga el presupuesto y quieras contratar un equipo recién salido de la
universidad no será posible desarrollar aplicaciones que actualicen los clientes
automáticamente, así que punto para Web.
Desventaja 3: Licencias y Números Seriales.
Recordamos que estamos basando nuestro trabajo para programas desarrolladas con
herramientas que poseen su licencia debidamente autenticada en un mecanismo legal
de software.
Las licencias para desarrollo en plataforma Windows son consideradas desde caras
a absurdas. además de comprar todos los sistemas operativos que usaras para los
clientes y la versión para servidor (que no es nada barata) debes pagar por cada
licencia de cada paquete de desarrollo comprado. Mal, mal y mal, para Web
existen muchos lenguajes sobre licencia gratis, lo que hace el costo de paquetes
de desarrollo prácticamente $0. Recordamos que desarrollo en Web no
necesariamente los clientes deben correr sobre Windows (interesante ha?
eliminamos las licencias de los sistemas operativos).
Como la empresa Microsoft solo visa la ganancia, desarrollar en plataforma
Windows siempre fue y será caro, ya en ambiente Web, como tenemos la
colaboración de programadores de otras plataformas que visan el avance de la
13
tecnología y publican sus trabajos gratis, disponemos de herramientas gratis
para desarrollo.
Considerando los costos de licencias, puntos y mas puntos para desarrollo en
Web.
Cuando debemos desarrollar en Plataforma Windows
Ahora llegando al ultimo modulo, veamos que se debe aplicar en cada caso en
espeficico, cuando debemos usar programación compilada sobre plataforma Windows
y cuando debemos utilizar programación en Web.
Debemos utilizar aplicaciones compiladas en el caso que queramos trabajar
específicamente con Lan y queramos mantener un alto rendimiento en lo que se
refiere a tiempo de respuesta.
Debemos utilizar ese tipo de programación cuando queramos un poco mas de
seguridad o si nuestra mano de obra no esta capacitada a trabajar con desarrollo
Web. Con buenos programadores se pueden hacer programas suficientemente seguros
basados en plataforma Windows, hasta si hablamos de una red muy compleja.
Si no queremos utilizar cliente−servidor podemos también aplicar ese tipo de
programación y hacer un anillo de comunicación entre ellos, de tal manera a no
ser dependiente de una sola maquina (aun que aplicando la base de datos se torna
indispensable una maquina, si esa se cae, probablemente todo lo demás dejara de
funcionar).
Cuando debemos desarrollar en Plataforma Web
Debemos usar desarrollo de Web cuando queramos movilidad, flexibilidad en lo que
se refiere a localizaciones físicas. Cuando tengamos ejecutivos viajando y
necesitemos acceso en tiempo real, en ese caso debemos escoger sin mucho
cuestionamiento el desarrollo por Web.
Debemos desarrollar en Web cuando tengamos interfaces no muy cargadas en que el
14
tiempo de respuesta no sea un factor decisivo en la comunicación entre el
sistema. En ese caso, cuando se comunica poco el cliente con el servidor Web,
puede ser factible aplicar un sistema basado en programación script orientada a
Web.
Por ultimo debemos aplicar programación en Web cuando el sistema se actualice
mucho y existan muchas terminales, donde el hacer un upgrade de los clientes nos
tome mucho tiempo y recursos, en ese caso, podemos perder un poco en tiempo de
respuesta, pero nuestros clientes siempre estarán actualizados y a par con todos
los cambios del script maestro.
Conclusión
Al final podemos concluir que cada uno de los tipos de desarrollo se aplica a
una necesidad especifica, lo que viene a decir que no existe un tipo de
desarrollo mejor que el otro.
Aun que el desarrollo Web sea una tendencia, no nos guiemos por lo que dice el
mercado, porque el mercado pocas veces conoce los verdaderos objetivos de
nuestras empresas y debemos hacer que el sistema se adapte a las necesidades
especificas del problema, sea esa herramienta de tendencia o no.
Como todos los sistemas son desarrollados para las distintas necesidades y cada
uno de los estilos de desarrollar mencionados se enfocan en una necesidad
reafirmamos la conclusión de que no existe mejor solución sino que solución
que se aplica mejor a las necesidades dadas.
15
Descargar