Informática


Desarrollo de aplicaciones en ambiente Web


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

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:

Internet

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:

Internet

¿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

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

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:

Internet

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

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

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

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).

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

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

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

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,

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

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

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

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.




Descargar
Enviado por:Zulu Doido
Idioma: castellano
País: Panamá

Te va a interesar