Precio: 6 € (España) (IVA incluido) • AÑO XIII. 2.ª ÉPOCA • Nº 145 • UNA PUBLICACIÓN DE: REVISTAS PROFESIONALES S.L. GRATIS CD INCLUIDO LA PRIMERA REVISTA DE PROGRAMACIÓN EN CASTELLANO Noticias, javaHispano, Comunidad .NET, Libros, CD-ROM, Preguntas y Respuestas OPINIÓN Vista y no Vista MIDDLEWARE Primera aproximación a Windows Vista REDES Mecanismos de cache en ASP.NET 2.0 Programación JavaScript Orientada a Objetos Técnicas avanzadas de programación AJAX con ASP.NET DISEÑO Sistemas SCM para la Gestión de la Configuración del Software VÍDEO-TUTORIAL Desarrollo de una bolera virtual con Java y Eclipse CANAL PANDA Los mitos en la seguridad Mobile Web Controls Mobile Web Controls Crear un portal web para dispositivos móviles implica tener en cuenta la heterogeneidad de los mismos y sus variables: tamaño de la pantalla y de teclado, navegador web, lenguaje soportado… Los Mobile Web Controls de ASP.NET permiten crear páginas web visibles en todo tipo de dispositivos móviles, siendo transparente para el desarrolla- dor las peculiaridades de los mismos, y evitando de esta manera hacer una página para cada dispositivo.
•Vista y no Vista •Mobile Web Controls de ASP.NET •Primera aproximación a Windows Vista •Mecanismos de cache en ASP.NET 2.0 (I) •JavaScript Orientado a Objetos (I) •Extensiones AJAX para ASP.NET (II) •Sistemas SCM para la Gestión de la Configuración del Software (I) •Bolera virtual
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Precio: 6 € (España) (IVA incluido) • AÑO XIII. 2.ª ÉPOCA • Nº 145 • UNA PUBLICACIÓN DE: REVISTAS PROFESIONALES S.L.
GRATIS
CD INCLU
IDO LA PRIMERA REVISTA DE PROGRAMACIÓN EN CASTELLANO
Noticias, javaHispano, Comunidad .NET, Libros, CD-ROM, Preguntas y Respuestas
OPINIÓNVista y no Vista
MIDDLEWAREPrimera aproximación a Windows Vista
REDESMecanismos de cache en ASP.NET 2.0
Programación JavaScript Orientada a Objetos
Técnicas avanzadas de programaciónAJAX con ASP.NET
DISEÑOSistemas SCM para la Gestión de la Configuración del Software
VÍDEO-TUTORIALDesarrollo de una bolera virtual con Java y Eclipse
CANAL PANDA Los mitos en la seguridad
Mobile WebControlsMobile WebControlsCrear un portal web para dispositivosmóviles implica tener en cuenta laheterogeneidad de los mismos y susvariables: tamaño de la pantalla yde teclado, navegador web, lenguajesoportado…
Los Mobile Web Controls de ASP.NETpermiten crear páginas web visiblesen todo tipo de dispositivos móviles,siendo transparente para el desarrolla-dor las peculiaridades de los mismos, yevitando de esta manera hacer unapágina para cada dispositivo.
••••••••••••••••••••••••••••••••••Quedan expresamente prohibidas la reproducción, la dis-tribución y la comunicación pública de todo o parte de lostextos contenidos en esta publicación, por cualquier medioy en cualquier soporte, y para cualquier fin, incluyendo la
realización de resúmenes de prensa comerciales, sin la au-torización expresa de esta Editorial, conforme a lo dispues-to en la vigente Ley de Propiedad Intelectual. La infracción
de la presente prohibición será perseguida penalmente.
Depósito legal: M-26827-1994
PPRRIINNTTEEDD IINN SSPPAAIINN
COPYRIGHT 30-06-2005
P.V.P. 6,00 Euros
Precio en Canarias, Ceuta y Melilla:
6,15 Euros
OPINIÓN1122 Vista y no Vista
DISPOSITIVOS MÓVILES1144 Mobile Web Controls de ASP.NET
MIDDLEWARE2222 Primera aproximación a Windows Vista
REDES3322 Mecanismos de cache en ASP.NET 2.0 (I)4400 JavaScript Orientado a Objetos (I)4466 Extensiones AJAX para ASP.NET (II)
DISEÑO5544 Sistemas SCM para la Gestión de la Configuración del Software (I)
VÍDEO-TUTORIAL6644 Bolera virtual
Y ADEMÁS. . .0044 Noticias0066 javaHispano: Virtual Ant, ICEfaces, Borland y más0088 Canal Panda: Los mitos en la seguridad1100 Comunidad .NET: ¿Preparados para un nuevo día?6600 Libros. Búsqueda de libros en Google Books6622 Preguntas y Respuestas6666 CD-ROM.
Asociación Española de Editorialesde Publicaciones Periódicas
EE DD II TT OO RR II AA LL
SS UU MM AA RR II OO
¿LE IMPORTA QUE LE HAGA UNAS PREGUNTAS?Solo Programadores quiere agradecer a todos los lectores que,
pacientemente, responden a las encuestas que se van planteando en la
zona privada. En el momento de escribir estas líneas, el 89% de las
respuestas están de acuerdo en que concentrar varios artículos de
temática similar es una buena idea. Por eso, empezamos el año 2007
dedicando bastantes páginas de Solo Programadores a ASP.NET. Para
bien o para mal, la historia de Internet y su imparable dinamismo exigen
al programador de aplicaciones web una serie de conocimientos y
habilidades que no tienen mucho que ver con la programación de
aplicaciones que se estudia en las facultades de informática. En la web,
lo “normal” es programar de modo desordenado, sin disponer ni siquiera
de tipos, empleando una gran cantidad de código para desempeñar
tareas sencillas... y sin poder aislar completamente el contenido de la
presentación, y mucho menos de la funcionalidad. ASP.NET es la
propuesta de Microsoft para ordenar este caótico (a la vez que
encantador) mundo de la programación web que, paradójicamente y pese
a todos sus inconvenientes, no hace más que crecer.
03 Editorial 145.qxd 20/12/06 11:11 Página 3
NOTICIAS
IPSOFACTO
El uso de la tecnología Voz sobre IP
Según un estudio realizado por Ipsofacto (www.ipsofacto-research.com),empresa del grupo Elogia especializada en investigación online, sólo el 24%de los internautas conoce la tecnología de telefonía Voz sobre IP, y Skype esla herramienta más empleada por los españoles.La investigación, también centrada en el uso de mensajes instantáneos, se haobtenido realizando entrevistas a una muestra de 600 individuos, representa-tiva de la población española que tiene acceso a Internet, a través de la meto-dología CAWI (Computer Assisted Web Interviewing).El objetivo de la investigación era observar el cambio que está teniendo lugaren las formas de comunicación a distancia entre individuos, gracias a la rápi-da difusión de las nuevas tecnologías en los hogares españoles.Según los resultados obtenidos, la penetración de Voz sobre IP en España, ycon ella la posibilidad de llamar por teléfono a costes muy baratos o inclusogratis, es todavía baja. Probablemente la causa sea la frecuente inclusión delcoste de las llamadas telefónicas en las cuotas mensuales de acceso a Internet,
ya sea ADSL, cable u otros. La investiga-ción, sin embargo, aún no ha llegado a sufin, y en este momento está intentandocomprender cuál es el perfil sociodemográfico y de hábitos de consumo delos usuarios de tecnologías VOIP, ya que éstos pertenecen a la categoría de los“innovadores”, un grupo siempre muy interesante para los responsables demarketing.Con respecto al software de mensajería instantánea, Microsoft Messengerdomina el mercado, pues el 89% de encuestados lo eligen como el más utili-zado. El horario en el que más se chatea está comprendido entre las 20h y las24h. Otro aspecto a destacar son las ubicaciones geográficas de las personas quechatean. El 62% de los encuestados afirma chatear con otra persona del esta-do español, el 43% suele intercambiar mensajes instantáneos con alguien desu misma ciudad y el 22% lo hace con individuos que se encuentran fuera deEspaña. De este modo, a través de las nuevas tecnologías, que cada vez noscondicionan menos en tiempo y espacio, se descubren nuevos nichos de mer-cado. Asimismo, se hace imprescindible que las empresas líderes se alimentende este tipo de estudios para descubrir las nuevas necesidades, derivadas delos nuevos espacios sociales.
El lanzamiento de productos más importante de su historia
La disponibilidad para empresas de Windows Vista, 2007 Microsoft Officesystem y Exchange Server 2007 es el lanzamiento más importante en toda lahistoria de Microsoft. Diseñados para ayudar a las empresas a prosperar enun mundo caracterizado por la comunicación inmediata, el crecimiento delvolumen de información y su constante cambio, estos nuevos productosproporcionan una plataforma que, según la compañía, mejorar el modo enque las personas convierten la información en nuevas oportunidades denegocio.Estos tres productos juntos se centran en cuatro áreas críticas:� Simplificar la forma en que la gente trabaja en equipo: Desde las nue-
vas funcionalidades de Windows diseñadas para los trabajadores móvi-les y la mensajería unificada facilitada por Exchange Server 2007, hastalas herramientas de colaboración y gestión documental incluidas enMicrosoft Office SharePoint Server 2007, los nuevos productos cambia-rán la forma en que la gente trabaja en equipo, en cualquier lugar ymomento.
� Localizar la información y mejorar la perspectiva del negocio: La com-pleta integración con la plataforma y la disponibilidad de las nuevas tec-nologías de búsqueda y las herramientas de inteligencia del negocio,más potentes y fáciles de utilizar, ayudarán a los empleados a localizary utilizar la información de una manera más sencilla, agilizando el cami-no que va desde la creación de una idea hasta su ejecución.
� Ayudar a proteger y gestionar el contenido: Las herramientas de gestiónavanzada del contenido y de retención de documentos combinadas conlas funcionalidades para mejorar la protección de la confidencialidad delos datos, convierten al proceso de autorización al contenido en el puntode partida para los procesos de negocio automatizados y el cumpli-miento con las nuevas medidas regulatorias.
� Incrementar la seguridad y ayudar a reducir los costes de TI: Con unaseguridad mejorada por defecto y por diseño, las nuevas versiones deWindows, 2007 Office system y Exchange Server 2007 ofrecen un granavance en materia de seguridad, agilizando la instalación y gestión, ayu-dando a reducir los costes y permitiendo a los departamentos de TI cen-trarse en facilitar nuevas capacidades que proporcionarán una granventaja estratégica.
El impacto económico de Windows VistaSegún un informe realizado por la consultora IDC, para Microsoft este lan-
zamiento es un acontecimiento impor-tante, ya que el sistema operativoWindows para equipos cliente represen-ta el 30% de los ingresos de Microsoft yel 60% de los ingresos operativos. Pero elimpacto de Windows Vista en el merca-do va a ir mucho más allá de Microsoft,ya que también va a impulsar los ingre-sos y el crecimiento de muchas compa-ñías de TI de todo el mundo que vendenhardware, desarrollan software, propor-cionan servicios para TI o actúan comocanales de distribución.Este informe indica que:� En su primer año de distribución, IDC espera que Windows Vista se
encuentre instalado en más de 100 millones de ordenadores en todo elmundo, y que más de 30 millones de ordenadores en la región queforma parte del estudio, funcionen con Windows Vista.
� En los seis países estudiados, el empleo relacionado con Windows Vistava a alcanzar más del 20% de los trabajos en TI en su primer año de dis-tribución.
� Aunque una gran parte de este empleo cambiará con respecto al rela-cionado con Windows XP, más del 50% del aumento en el número depuestos de trabajo en TI se va a ver impulsado por Windows Vista.
� Por cada euro de ingresos que Microsoft obtenga de Windows Vista enel año 2007 en los seis países estudiados, el ecosistema más allá deMicrosoft va a recoger casi 14 euros en ingresos. En el año 2007 esteecosistema debería obtener más de 32.000 millones de euros (40.000millones de dólares) en venta de productos y servicios relacionados conWindows Vista.
� En esta región formada por seis países, más de 150.000 compañías deTI que producen o distribuyen productos o servicios que funcionan conWindows Vista van a emplear más de 400.000 personas en el año 2007,y otras 650.000 van a ser contratadas en empresas que utilizan TI.
Aunque el estudio se ha centrado en seis países europeos (Dinamarca,Francia, Alemania, Polonia, España y Reino Unido), esta región representamás del 65% del gasto en TI en la zona económica de la UE (es decir, la UEmás Croacia, Noruega, y Suiza). La adopción rápida y generalizada deWindows Vista significa que su lanzamiento no sólo va a afectar aMicrosoft, sino que también va a tener un impacto positivo en las econo-mías locales de Europa.Más información en http://www.microsoft.com/spain.
Kevin Johnson, co-presidentede la División de Serviciosy Plataformas de MicrosoftCorporation y Rosa Mª García,presidenta de Microsoft Ibérica,en la rueda de prensa celebradaen Madrid.
04-5 Noticias.qxd 20/12/06 11:16 Página 4
SUN MICROSYSTEMS
Java Platform Standard Edition 6 y NetBeans 5.5
Sun Microsystems ha anunciado la disponibilidad de Java Platform StandardEdition 6 (Java SE 6). Este lanzamiento es el resultado de dos años de trabajo dedesarrollo, que han implicado un proceso de revisión abierto a la comunidad yuna estrecha colaboración entre los ingenieros de Sun y más de 330 desarrolla-dores externos . El software Java SE 6 es compatible con las versiones previas dela plataforma Java, lo que garantiza que los desarrolladores puedan aprovecharlos conocimientos adquiridos sobre otras versiones, y protege las inversionesanteriormente realizadas en tecnologías Java. La potente combinación de la nueva versión de Java SE y el entorno de desarrollointegrado (IDE) NetBeans 5.5, que soporta las nuevas características de Java SE6, proporciona a los desarrolladores un marco de trabajo fiable, abierto y com-patible para crear y suministrar aplicaciones basadas en Java, más rápida y fácil-mente que nunca. NetBeans 5.5 es el primer y único IDE disponible de forma gratuita que ofreceun soporte completo a Java EE 5. NetBeans 5.5 contiene nuevas características,tales como un API Java Persistence, herramientas de productividad JAX WS 2.0y mejoras en el NetBeans GUI Builder (antes conocido como Proyecto Matisse). Además, Sun ha lanzado simultáneamente cinco paquetes de valor añadidopara NetBeans 5.5:
� NetBeans Enterprise Pack: añade al IDE todas lasherramientas necesarias para escribir, probar, securizary depurar aplicaciones SOA empleando XML, BPEL yServicios Web Java.
� NetBeans Mobility Pack: soporte para JSR-226 quepermite a los desarrolladores utilizar gráficos vectoriales escalables en susaplicaciones Java ME.
� NetBeans Profiler 5.5: soporte para diversos Runtime Environments y facili-dades en la tarea de crear perfiles Enterprise Java Beans.
� NetBeans Visual Web Pack (preliminar): desarrollo visual de aplicaciones webbasadas en estándares y JavaServer Faces compatibles con AJAX.
� NetBeans C/CC++ Pack (beta): aplicaciones C/CC++. Los desarrolladoresC/CC++ pueden usar el IDE NetBeans junto a sus propias herramientas ycompiladores.
Sun ofrece soporte para NetBeans a través de su programa de servicios SunDeveloper Expert Assistance. Más información y descargas sobre Java SE 6 en http://java.sun.com/javase/6.El IDE NetBeans se puede descargar junto a Java SE 6 enhttp://java.sun.com/javase/downloads o, de forma separada, en http://www.netbeans.org.Los desarrolladores que quieran unirse, sin coste alguno, al programa SunDeveloper Network, pueden registrarse online en la dirección http://developers.sun.com/register.
NOTICIAS
http://digital.revistasprofesionales.com SOLO PROGRAMADORES nº 1455
BSA
10 consejos para una experiencia on line segura
Existe un alto riesgo de que el software a la venta en sitios web de subastas seailegal, a pesar de los continuados intentos, tanto de los proveedores de softwa-re como de los propios sitios web, de atajar el problema. Un estudio publicadopor IDC, titulado “Los riesgos de obtener y utilizar software pirateado: 2006”,revela que, del software a la venta en un conocido sitio web de subastas, sólo el49% era original, el 39% era fraudulento y el 12% restante venía con compo-nentes que eran fraudulentos o se trataba de software original que había sidomanipulado. También existe un serio riesgo legal, dado que la piratería de soft-ware va contra la ley. Y, sobre todo, los usuarios no podrán tener derecho a reci-bir actualizaciones del producto, soporte técnico, manuales ni documentación.No tendrán ninguna garantía de calidad o fiabilidad del software y, además, losconsumidores dejarán su red expuesta a virus y fallos de seguridad.Ante esta situación, BSA propone diez consejos prácticos a los consumidores:11.. Confía en tu instinto. Comprueba el precio fijado por el vendedor on line con
respecto al valor estimado del software en las tiendas. Tanto si es vendidocomo nuevo o usado, si el precio del producto parece “demasiado baratopara ser verdad”, puede tratarse de un producto fraudulento.
22.. Asegúrate de que es auténtico. Desconfía de productos de software que noincluyen pruebas de autenticidad, como discos originales, manuales, licen-cia, políticas de servicio o garantías.
33.. Lee la etiqueta. Ten cuidado con productos que no parecen originales, comopor ejemplo los que lleven etiquetas escritas a mano.
44.. Cuidado con los Back-ups. Ten especial cuidado con evitar a los vendedoresque te ofrecen hacer copias de back-up. Es un claro indicio de que el soft-ware es ilegal. También asegúrate de comprobar la versión del software.Mucha gente se ha quejado de haber recibido versiones promocionales oeducativas cuando creían haber comprado el producto de software com-pleto o estándar.
55.. Duda de las compilaciones. Ten cuidado con las compilaciones de títulos desoftware de diferentes fabricantes en un mismo CD. Cuando compras másde un programa de software, asegúrate de que cada programa va en undisco separado. El hecho de recibir un solo CD cuando se han adquirido doso más programas diferentes, es una señal segura de que han sidopirateados.
66.. Consigue la dirección del vendedor, si es posible. Recuerda que si no puedescontactar con el vendedor después de hacer la compra, puedes no tenerrecurso si el producto resulta ser pirata. BSA recibe numerosos reportesacerca de vendedores que son inaccesibles desde el momento en que hancobrado la venta. Por lo tanto, procura obtener los datos de contacto delvendedor.
77.. Guarda los recibos. Guarda toda la información que te sea posible acerca dela transacción y del vendedor. Imprime una copia de tu orden de compra yconfirmación de la venta y archívalas. Se trata de un paso importante quete puede ayudar a protegerte hasta que hayas verificado que el softwareadquirido es legítimo. Esta información te ayudará para argumentar tu casosi el producto es pirata y necesitas emprender alguna acción con respectoal sitio web de subastas, el sitio facilitador del pago o el desarrollador delsoftware.
88.. Ten cuidado al cruzar la frontera. Toma precauciones cuando trates con ven-dedores de software de otros países. La distancia física, las diferencias en lossistemas legales y otros factores podrían complicar las cosas si hay proble-mas con la transacción.
99.. Busca una marca de confianza. Busca una marca de confianza de unaorganización reconocida para asegurarte de que el vendedor on line es fia-ble y tiene una probada trayectoria de clientes satisfechos. En caso de duda,busca información en la web acerca del sitio en cuestión para determinarsu legitimidad.
1100.. Haz tus deberes. Antes de hacer una compra, investiga todo lo que pue-das acerca del vendedor o fabricante. Comprueba la clasificación y el pres-tigio del vendedor o los comentarios de la gente cuanto estés en un sitiode subastas. Los vendedores más legítimos tendrán gran número de res-puestas de otros usuarios, y si son bien reputados y fiables, casi todas seránpositivas. Es una buena señal de lo que puedes esperar de tu transacción.
Los efectos de utilizar software pirata pueden ser muy serios. Si creesque has sido víctima de la piratería de software, por favor, compartetu experiencia con BSA para ayudar a otros consumidores a proteger-se y tener una experiencia segura cuando compran on line.Los testimonios pueden ser enviados a www.bsacybersafety.com/fraud.Para más información acerca de cómo protegerse y disfrutarde todos los beneficios de comprar on line, puedes visitar el sitio deciber seguridad de BSA en www.bsacybersafety.com
04-5 Noticias.qxd 20/12/06 11:16 Página 5
SOLO PROGRAMADORES nº 145 6 http://digital.revistasprofesionales.com
JAVAHISPANO
Actualidad Java de la manode javaHispanoActualidad Java de la manode javaHispano
Virtual Ant permite construir scripts para la popular herramientaAnt de Apache sin necesidad de escribir ni una sola línea de XMLo aprender a emplear asistentes. Virtual Ant crea un sistema deficheros virtual, que replica el sistema de ficheros de la máquinaen la cual se ejecuta, para el cual proporciona una interfaz simi-lar al explorador de Windows. En ese sistema virtual el progra-mador mueve ficheros, copia, crea archivos .jar mediante unmenú contextual, etc., sin que todas estas acciones afecten alsistema real.Virtual Ant graba en una macro todas las acciones. Una vez elprogramador ha terminado de interactuar con el sistema de ficheros la herramienta genera un script de Ant que reproduce todaslas acciones realizadas. También es posible cargar scripts Ant en la herramienta y ejecutarlos sobre el sistema de ficheros virtual,sin modificar el sistema de ficheros real, para ver sus efectos.En el momento de escribir estas líneas la herramienta se encuentra en versión alfa. Cuando esté terminada, Placidsystems, la com-pañía que ha desarrollado la herramienta, la pondrá a la venta a un precio que probablemente ronde los 20 $ por usuario.
Virtual Ant, la forma más simple de crear tareas de Ant
Finalmente Borland no ha encontrado un compradorque le satisfaga para la división de los IDE de la com-pañía y ha decidido crear a partir de ella una nuevacompañía, CodeGear. Esta compañía será lo más inde-pendiente posible de la matriz ya que, según fuentesBorland, los IDE no guardan relación con la línea denegocio que pretende seguir la matriz.CodeGear ya ha anunciado el producto JBuilder 2007, la primera versión del entorno de desarrolloque no está basada en la plataforma desarrollada por Borland sino en Eclipse. Está por ver el éxitode este producto ya que, si bien JBuilder siempre ha sido una herramienta excelente y todavía cuen-ta con muchos leales seguidores, el entorno tendrá que producir un incremento considerable en laproductividad para justificar el gasto de varios miles de dólares frente al uso de alternativas gratui-tas como Eclipse o Netbeans.
Borland escinde una rama de la compañía que se hará cargo de la división de los IDE
ICEfaces es una librería de componentes JSFque hace un uso exhaustivo de técnicas Ajaxpara mejorar la experiencia del usuario. Seintegra con prácticamente todos los IDE consoporte para JSF (Eclipse, Java Studio Creator,JDeveloper, Rational Developer y WorkshopStudio) y, para muchos, se trata de la mejorlibrería de componentes JSF del mercado.
Hasta hace poco ICEsoft distribuía dos versiones de la librería. Una gratuita, ICEFaces CommunityEdition, y otra de pago que incluía mejoras orientadas a aplicaciones con una gran carga de traba-jo, así como herramientas de administración. Recientemente toda la funcionalidad de la versión depago se ha liberado bajo licencia Mozilla e IceSoft sigue vendiendo servicios de consultoría, sopor-te y formación en torno a esta librería.
ICEsoft libera ICEfaces bajo licencia Mozilla
06-7 Javahispano.qxd 20/12/06 11:21 Página 6
SOLO PROGRAMADORES nº 1457http://digital.revistasprofesionales.com
JAVAHISPANOActualidad Java de la mano de javaHispano
Sobre el autor
Abraham Otero ([email protected]) es responsable de calidad y miembro de la junta de javaHispano.
OPINIÓN
Ant y/o Maven 2.x
Sí, habéis leído bien. En el título pone "y/o", enlugar de “versus”, y a continuación explicaréporqué. Ant se ha convertido en un herramien-ta de facto para la construcción de proyectosJava. Ant ha cumplido, y cumple muy bien, lafinalidad para que fue concebida. Con Antpodemos definir nuestro proceso de compila-ción, empaquetado, distribución y otras labo-res típicas asociadas al ciclo de vida de undesarrollo de software. Sin embargo Maven,partiendo de una serie de conceptos que lacaracterizan, como por ejemplo su modeloconceptual para proyectos (P.O.M.) o la pro-puesta para organizar el código fuentemediante una estructura de directorios, nosayudará a mantener y organizar nuestros pro-yectos.Sería injusto comparar Ant y Maven porqueestas herramientas nos ayudan a gestionarnuestros proyectos a niveles distintos aunque,si únicamente necesitamos una herramientade construcción, ambas son herramientas quehan sabido resolver perfectamente las necesi-dades de estos procesos. Si, además, necesita-mos una gestión del proyecto a más alto niveldonde definir recursos, dependencias, perfiles,o generar un sitio web con toda la informaciónaportada, Maven es nuestra opción.Para los proyectos que ya están empleandoAnt, cabe resaltar que pueden ser migradoscon cierta comodidad, porque desde Maven sepuede usar Ant gracias a uno de sus plugins.Para los proyectos que estén comenzando creoque es una buena oportunidad para definirloscon Maven.
MMaannuueell JJ .. RReecceennaa SSoottoo ((rreecceennaa@@eeii ii ..uuss..eess ,,
Recientemente se ha liberadola versión 3.0 de Jlgui, elreproductor de música imple-mentado en Java más popular.Este clon de WinAmp soportauna gran cantidad de forma-tos de audio (WAV, AU, AIFF,MP3, OGG VORBIS, FLAC,MONKEY's AUDIO y SPEEX)gracias al uso de la libreríaJLayer. También permiteimportar listas de reproduc-ción en los formatos M3U yPLS, y puede emplear losskins compatibles con WinAmp 2.0. Entre las novedades de la ver-sión 3.0 se encuentran mejo-ras en el aspecto visual,soporte de nuevos formatos
de audio, más menús contextuales y la capacidad de realizar búsquedasen la lista de canciones. El reproductor, al igual que la librería que per-mite reproducir los distintos formatos de audio, se distribuye bajolicencia LGPL.
Versión 3.0 del reproductor de música Jlgui
MobileZoo (http://mobilezoo.biz) esun portal que pre-tende convertirseen un "zoológico"que contenga to-dos los teléfonosmóviles Java MEdel planeta, enten-diendo por zooló-gico un lugar alcual uno puede ira contemplar to-das las "especies"y aprender sobreellas. Los creadores del portal han diseñado una aplicación Java ME que se des-carga gratuitamente y que, al ejecutarse en un terminal, lanza una serie de prue-bas de todo tipo sobre él, recolecta los resultados y los envía a la base de datosdel "zoológico".Entre estas pruebas están la capacidad de proceso y la memoria disponible en elterminal, el soporte de las diferentes API, información sobre la conectividad, etcé-tera. El portal también recolecta datos estadísticos, como por ejemplo el porcen-taje de terminales que soportan una determinada API o funcionalidad, la cota demercado de cada fabricante de terminales o los modelos que vende cada com-pañía. Ambos tipos de información pueden resultar extremadamente valiosospara decidir a qué sector del mercado enfocamos nuestras aplicaciones.
MobileZoo, un zoológico de teléfonos móviles Java ME
06-7 Javahispano.qxd 20/12/06 11:21 Página 7
SOLO PROGRAMADORES nº 145 8
CANAL PANDA
Los mitos en la seguridadLos mitos en la seguridad
http://digital.revistasprofesionales.com
Y, dentro del mundo de la seguridad informá-
tica, existen también esos extraños mitos.
Uno de ellos, con un fundamento real, está
cada vez más desvirtuado: los creadores de
códigos maliciosos son buenos programado-
res.
Hace tiempo, cuando los virus estaban en su
prehistoria, este mito podía ser cierto. Para
que un programa pudiera multiplicarse auto-
máticamente sin que un usuario se diera
cuenta y sin que los también prehistóricos
programas de seguridad lo detectaran, debía
haber sido creado por un buen programador.
Era necesario un gran conocimiento de los
sistemas, de las posibilidades que brindaban,
además de poseer una gran capacidad de
innovación.
Sin embargo, hoy en día estos programadores
han dejado de ser esas “estrellas” de la codi-
ficación informática. Los códigos maliciosos
son cada vez más burdos, con menos innova-
ción y más “chapuceros”.
El caso de Gaobot.AAF
La afirmación de que los creadores de código
malicioso son malos programadores (o por lo
menos mucho menos buenos de lo que se
piensa) no es gratuita, ya que existen méto-
dos para analizar los programas y ver cómo
han sido construidos. Uno de ellos, muy utili-
zado por su resultado visual, es la represen-
tación de los distintos elementos de un pro-
grama mediante grafos. Estos grafos son
líneas que relacionan cada subrutina del
código, de manera que un programa sencillo
y bien construido tendría un grafo simple y
claro, mientras que un programa sin organi-
zación interna y sin una adecuada sistema-
tización ofrecerá un grafo muy complejo y
desordenado.
Además, dos programas similares ofrecerán
grafos también similares, lo que ha llevado a
PandaLabs, el laboratorio de detección de
malware de Panda Software, a utilizarlos para
establecer similitudes entre distintas varian-
tes de un mismo código malicioso, ya que las
llamadas a una misma función dentro de dis-
tintos programas se muestran gráficamente
en los grafos.
Cuando PandaLabs hizo el análisis de un “bot”
(Gaobot.AAF), se sorprendieron con su grafo:
no solo por su espectacularidad (le llamaron
“La Estrella de la Muerte”, por su parecido a la
de “La Guerra de las Galaxias”) sino por su
extraña complejidad.
¿Por qué se obtiene este extraño y complejo
dibujo? Sencillamente, porque el código
fuente original de la familia de bots Gaobot
fue puesto a disposición de los creadores de
El mundo de la informática estálleno de mitos y de leyendasdifundidas por correo electrónico osimplemente comentadas boca aboca. Estas leyendas no son solo losfamosos hoaxes o las cartas encadena, sino que se dan por hechouna serie de cosas que no suelen serciertas, pero son tan difíciles deprobar que se dan por ciertas sincomprobación ninguna.
FERNANDO DE LA CUADRA
Figura 1. Análisis del bot Gaobot.AAF,denominado “La Estrella de la Muerte” porPandaLabs.
08-9 Panda.qxd 20/12/06 11:23 Página 8
SOLO PROGRAMADORES nº 1459
CANAL PANDA
http://digital.revistasprofesionales.com
Los mitos en la seguridad
Sobre el autorFernando de la Cuadra ([email protected]) es editor técnico internacional de Panda Software (http://www.pandasoftware.com).
código malicioso, y cada uno de ellos
hizo nuevas variantes. Pero esas varian-
tes no estaban optimizadas, por lo que la
complejidad iba creciendo en cada
variante.
En lugar de demostrar su capacidad
como buenos programadores, los crea-
dores de variantes de Gaobot únicamen-
te demuestran que, efectivamente, el
mito del gran conocimiento que tienen,
son únicamente aprendices de ladrón
mediante copias de código ajeno.
Los virus “indetectables”
Otro mito muy difundido, y alimentado
por numerosos correos electrónicos fal-
sos es que existen virus (o gusanos, o
troyanos, etc.) que no pueden ser
detectados por ninguna solución de
seguridad. Y desgraciadamente, aunque
sea mentira, en ocasiones se airea este
mito.
Hace poco apareció la noticia de que un
estudiante había creado un troyano con
el cual grababa imágenes de las webcam
de compañeros de instituto y luego les
chantajeaba con el material grabado. Se
decía que el troyano creado era “indetec-
table”.
La afirmación de que un troyano es inde-
tectable contradice esa información,
según la cual las autoridades crearon un
sistema para detectar y eliminar ese
código. ¿Es indetectable o no?
El problema radica en la dificultad para
detectar un ejemplar determinado de
troyano. La mayoría de los fabricantes de
soluciones antivirus dependen de las
muestras de los códigos maliciosos para
poder elaborar una rutina de detección y
eliminación, por lo que es necesario que
se den dos circunstancias:
11 .. El código malicioso debe despertar
sospechas en un usuario. Si no se
muestra un mensaje, o si no se lleva a
cabo alguna acción especial en el
ordenador que haga al usuario darse
cuenta de que algo extraño pasa, el
sistema permanecerá infectado ya
que no podrá mandarse una muestra
a los laboratorios para su análisis.
22 .. El código malicioso debe tener una
cierta propagación. De esta manera
aumenta la probabilidad de que algu-
no de los usuarios afectados notifi-
que a los laboratorios la aparición del
código.
En el caso de este troyano no se dieron
ninguna de las dos, ya que el troyano no
mostraba absolutamente ningún mensa-
je ni daba pistas que pudieran delatarle,
prácticamente tal y como hacen todos
los caballos de Troya. Y al estar distribui-
do en muy pocos sistemas (únicamente
los de los compañeros de clase del autor
de troyano), tampoco se pudo sospechar
de él.
Por lo tanto, nos encontramos frente a
una muestra de la situación del malware
hoy en día: ejemplares reducidos y
escondidos. Así las empresas antivirus no
los detectarán, tal y como reza la noticia.
Sin embargo, esa afirmación no es com-
pleta: no los detectarán hasta que no se
conozcan.
A pesar de todo, este problema surge
únicamente con los sistemas antiguos de
detección de códigos maliciosos. Estos
sistemas confían ciegamente en los
datos almacenados sobre programas
maliciosos, sin tener otros sistemas de
detección. Así, todo aquello que no esté
en su base de datos de firmas de progra-
mas, será considerado adecuado.
La tecnología más moderna contra códi-
gos maliciosos evita estos problemas, ya
que en lugar de ceñirse exclusivamente
en el conocimiento previo de los códigos
maliciosos, los busca en función de su
comportamiento. Así, un programa que
quiera llevar a cabo alguna acción mali-
ciosa en un ordenador, será detenido no
porque se le conozca, sino por las accio-
nes que iba a llevar a cabo.
Mientras que los usuarios sigan confian-
do en soluciones parciales y anticuadas
para la detección de virus y otros pro-
gramas malignos, no podrán protegerse
adecuadamente ya que para ellos segui-
rán existiendo “códigos indetectables”,
en lugar de simplemente “programas
peligrosos no conocidos hasta el
momento”.
Gran crecimiento del número de troyanos
PandaLabs, laboratorio de detección de virus de
Panda Software, ha detectado un crecimiento
en el número de troyanos a finales del 2006.
Los troyanos son códigos maliciosos que per-
manecen en un sistema llevando a cabo diver-
sas tareas sin que el usuario se dé cuenta de
ello, por lo que su peligro es muy elevado. En la
actualidad, y debido a la nueva dinámica que
los autores de malware han iniciado, estos tro-
yanos tienen como objetivo en su inmensa
mayoría, el robo de las contraseñas utilizadas
por los usuarios para los servicios financieros.
Los siguientes códigos maliciosos más detecta-
dos por PandaLabs son los Bots (de la palabra
"robot") y Backdoors, sistemas que también
permiten el uso fraudulento de un sistema. El
número de estos dos últimos tipos de malwa-
re, aunque también elevado, es muy inferior al
de los troyanos, y su frecuencia de aparición
disminuye o se mantiene durante el año 2006.
Según Luis Corrons, Director de PandaLabs,
este aumento de troyanos "pone en evidencia
a los autores de malware, que lejos de intentar
conseguir elementos que les den fama, buscan
únicamente enriquecerse con los datos de los
usuarios". Los sistemas de detección de códigos
maliciosos de Panda Software también pueden
detectar troyanos, "incluso sin conocerlos pre-
viamente, ya que las tecnologías TruPreventTM
de Panda Software están preparadas para pro-
teger contra cualquier código, sean virus, gusa-
nos o, como este caso, los muchos troyanos
que venimos encontrando".
Además, los troyanos no sólo siguen siendo los
primeros, sino que continúan aumentando su
ventaja con respecto al resto de tipos de mal-
ware, sobre todo frente a categorías en declive,
como los virus clásicos, programas potencial-
mente no deseados, herramientas de hacking,
etc.
En el otro extremo de la tabla, encontramos en
claro retroceso a los dialers. Estos programas
alteran los números telefónicos de conexiones
por módem y tienden a desaparecer. Tanto el
aumento de conexiones de banda ancha como
la proliferación de redes Wi-Fi hacen que las
conexiones por módem sean cada vez menos
utilizadas y por tanto los dialers pierdan su
campo de acción.
08-9 Panda.qxd 20/12/06 11:23 Página 9
SOLO PROGRAMADORES nº 145 10 http://digital.revistasprofesionales.com
¿Preparados para un nuevo Día?¿Preparados para un nuevo Día?
COMUNIDAD .NET
Sin duda alguna “estamos en un Universo que
se está expandiendo” y, paradójicamente,
podríamos definir dicha expansión como la
fuerza que empuja a los objetos de un medio
a desplazase por su espacio en una dirección
y a una velocidad marcada por el impulso
aplicado inicialmente. No es casual entender
que muchas de las observaciones que efec-
tuamos a simple vista reflejan nuestras reali-
dades más cotidianas. Así pues, podríamos
deducir que la anterior es una definición de
objetivo, a partir de un origen, donde el acon-
tecimiento de un hecho predetermina el des-
tino temporal en un espacio futuro.
La Escalera del Universo Estático
Muchos de nosotros nos quejamos constan-
temente del frenético ritmo que nos impo-
nen los avances tecnológicos, porque quizás
preferimos un modelo estático que pertene-
ce a una época en la que después de una
dilatada carrera, subida peldaño a peldaño,
terminábamos acomodándonos a una situa-
ción donde los conocimientos previos adqui-
ridos nos ayudaban a desarrollar una muy
larga y tranquila vida profesional, siendo
considerada por algunos como el estadio
ideal para llegar sin complicaciones a una
buena jubilación.
Con la Teoría de las Cuerdas ¡el conocimien-
to es Dinámico! Los más dedicados y con
espíritu más vocacional, y en función de
ciertas condiciones, consiguen llegar a un
segundo estadio. Este nivel no es que permi-
ta grandes desahogos económicos ni mayo-
res reconocimientos sociales, pero marca
realmente la diferencia entre los que suben
peldaños de escaleras y los que forman parte
de una entropía cuya curva de aprendizaje se
dilata logarítmicamente respecto al
espacio/tiempo.
Dicho esto…
Visto y no visto llega el Vista y con él la
apuesta por los sistemas operativos x64, su
HyperTheading, su Multi Core con paralelis-
mos de ejecución o la brutal irrupción de
aplicaciones para dispositivos móviles, la
unificación de criterios y la integración
para realizar todo ello desde un único
entorno de programación… ¡Ya no nos
queda la menor duda! Somos testigos de
una gran explosión tecnológica cuya ener-
gía guiará nuestra expansión desplazándo-
nos en una dirección y a una velocidad ver-
tiginosa. Pero, al margen de productos,
multinacionales, intereses comerciales,
estrategias y políticas, estamos aquí para
visionar un nuevo espacio donde todo ese
conjunto de acciones se convierte en la
tecnología que nos empuja a expandir
nuestro conocimiento mas allá de los lími-
tes digitales. No debemos esperar a maña-
na para trepar por la cuerda; en nuestro
oficio, el mañana es llegar tarde. Quizás
nos dé pereza empezar, pero os puedo ase-
gurar que agarrarnos a esa cuerda nos va a
impulsar y permitir conocer nuevos univer-
sos de conocimiento inexplorados, cual
enorme burbuja que asoma, asombra y
cautiva pero que sin duda termina apasio-
nándonos. O sea, que bienvenidos a la cuer-
da y no tardéis en uniros a ella si
queréis evitar que la burbuja termine aplas-
tándonos!
Justo después de saborear lasdulces mieles del Framework 2.0,nos empiezan a llegar ondas de loque esta por venir… Una vezmás, el gran compromiso yesfuerzo de Microsoft en aras deconseguir afianzar una plataformamadura y establela abre ladisyuntiva. ¿Qué hago?, ¿empiezoo me espero?
PEP LLUIS BAÑO (Presidente de SpainNet, miembro del comité de INETA-Latam y Microsoft MVP Visual Developer)
10-11 Spain net 20/12/06 11:26 Página 10
SOLO PROGRAMADORES nº 14511http://digital.revistasprofesionales.com
COMUNIDAD .NET¿Preparados para un nuevo Día?
Universo 2007
Papá Noel y los Reyes nos dejarán este
año una larga lista de tecnologías.
Quizás no todas verán la luz de una
manera inmediata, pero vale la pena
empezar a indagar y hablar sobre ellas o
de sus nombres. Por supuesto, vamos a
tener Windows Vista con su recién
estrenado Office 2007 System, respal-
dado con productos de gran calibre
como Exchange Server 2007, Sharepoint
Server 2007 y una renovada apuesta en
la infraestructura de protección. Con
nuevos conceptos como la “UC”
Unificación de Comunicaciones con
Office Communications Server 2007 así
como la potenciación de herramientas
de visualización de datos tales como el
Visio 2007, sin olvidarnos de la nueva
moda del BI “Bussines Intelligence”,
cuyos objetivos para las empresas se
concentran en permitir el control, acce-
so, visualización e interacción en gene-
ral sobre toda la información de su
negocio, totalmente centralizada desde
un punto único.
Nuestra faceta más desarrolladora se
completará con un buen avance y un
importante cambio de mentalidad en la
que el objetivo primordial es mejorar la
experiencia del usuario. Para ello, Vista
nos trae nuevas formas de conectar la
información con los usuarios, con bús-
quedas integradas y mejores interfaces.
En ese sentido, Vista y 2007 Office
System van a trabajar juntos al servicio
de los desarrolladores, modernizando el
UI con 2D, 3D, enlace a datos, anima-
ción, texto, contenidos media, etc., con
un nuevo lenguaje de definición XAML
que básicamente aportara flexibilidad,
simplicidad y prestaciones desconocidas
hasta ahora en nuestros diseños.
¡Bienvenido también a la nueva era del
diseño!
Por lo tanto, resumiendo y en líneas
generales, disponemos de cuatro nuevos
pilares que conforman el Framework 3
incluido en Vista. La construcción,
mejora y diferenciación en la experien-
cia del interfaz de usuario en Windows
Vista estará fundamentada en:
� WWPPFF,, Windows Presentation Fundation.
La construcción de “aplicaciones conecta-
das” (para el Desarrollo de aplicaciones dis-
tribuidas) irá a cargo de:
� WWCCFF,, Windows Communitacion Fundation.
Para el modelado declarativo en procesos
de negocio tenemos:
� WWWWFF,, Windows WorkFlow Fundation.
Finalmente, en cuanto a seguridad, se
incorpora un nuevo espacio para gestión de
Entidades llamado:
� CCaarrddSSppaaccee.
Estas cuatro pinceladas tienen que ser una
buena pista para adecuar la velocidad y
dirección que marca esta ola de expansión,
sin miedos ni complejos. Después del pasa-
do TechEd en Barcelona, estoy convencido
que nuestra comunidad de desarrolladores
(y por extensión la Latinoamericana) debe
despertar de su largo letargo y abrirse
camino no solo en estas nuevas tecnologí-
as, sino anticipándose a las futuras y llegar
así a conseguir presencia con luz propia
que le corresponde.
Por si fuera poco, y con todos estos cas-
cabeles sonando, ahora más que nunca
disponemos de una increíble comunidad
de desarrolladores y usuarios, unidos en
pro de compartir todo ese conocimiento
que se expresa como energía en forma de
movimiento. Estos son realmente los
exponentes de esta nueva fuerza, y en
ellos podemos encontrar los ingredientes
necesarios que nos ayuden a trepar. No
olvidemos que podéis beneficiaros de
todas las actividades de lanzamiento que
estas comunidades ponen a vuestra dis-
posición a través de sus charlas y eventos
en Alicante, Murcia, Barcelona, Madrid,
Castilla y la Mancha, Galicia, Navarra,
Málaga, Cantabria, Huelva, La Coruña
entre otros.
Podréis conocer más sobre ellos en
http://www.microsoft.com/spanish/msdn/
community/g_usuarios_esp.mspx o en
http://europe.ineta.org/Countries/Spain/
Home/tabid/235/Default.aspx.
Por lo que respecta a Latinoamérica,
podréis encontrar un huracán de grupos
dispuestos a liderar estas reuniones y acti-
vidades en http://www.inetalatam.org/
default.aspx.
Para terminar, os recomiendo estar al día
sobre la convergencia entre .NET y Mono, a
la vista de los acuerdos alcanzados entre
Novell y Microsoft. Podéis leer sobre ella en
http://www.novell.com/linux/microsoft/
press-conference_transcript.html y en
http://www.microsoft.com/presspass/press/
2006/nov06/11-02MSNovellPR.mspx.
No deja de ser interesante y un buen
augurio, al menos hasta el 2011, para
algunos de los que solo somos programa-
dores.
Mis mejores deseos para todos los lectores
en este 2007. ¡Feliz año!
La propia escalera del conocimiento ayuda a subir peldaños.
10-11 Spain net 20/12/06 11:26 Página 11
SOLO PROGRAMADORES nº 145
Parece que al final, y salvo catástrofe, la espera del
nuevo Windows Vista ha llegado a su fin. Todas las
agencias de comunicaciones se han hecho eco de
que Microsoft tiene previsto lanzar las seis versio-
nes definitivas (¡seis!) de su nuevo y revoluciona-
rio sistema operativo para finales de enero del
2007, si bien ya está disponible en sus versiones
para empresas (para los que posean licencias cor-
porativas) o para los que estén dispuestos a com-
prar más de cinco copias en algunas tiendas espe-
cializadas.
Aunque, como es lógico, existen muchos “Vista-
escépticos”, se dice en los mentideros de la red que
puede suponer una revolución como lo fuera en
su momento la aparición de Windows 95. Prueba
de ello es que la compañía de Bill Gates ha hecho
un gran esfuerzo mejorando la seguridad de su
nuevo sistema operativo destacando las actuali-
zaciones de la biblioteca de Windows, las medidas
antispyware o sus nuevas y llamativas caracterís-
ticas gráficas (basadas en transparencias o el esti-
lo llamado “aero”) y un poderoso motor de bús-
queda. Pero a esto habrá que sumar la encripta-
ción del disco duro, el nuevo y rediseñado Internet
Explorer 7, el potente buscador de escritorio, el
control parental, mejores políticas de backups
para facilitar los procesos a los usuarios o los sis-
temas colaborativos P2P.
Todo ello, eso sí, con varios años de retraso (ten-
dría que haber sido lanzado en 2005) y con toda
una serie de opciones eliminadas con respecto a la
propuesta que se hiciera en su momento (atrás
quedaron características muy ambiciosas, como
por ejemplo un nuevo sistema de escritura binaria
que permitía una nueva compleja organización,
búsqueda e intercambio de información), lo que
no evita que emane cierto halo de que puede ser
algo especial. Si Microsoft tira la casa por la ven-
tana por algo será, ¿no?
Lo interesante en este caso es evaluar todas las
implicaciones que puede llegar a tener la implan-
tación (paulatina) de este sistema operativo por-
que ya son muchas las voces que se han alzado
cuestionando los motivos reales que puede haber
detrás de lanzar un nuevo sistema y lo que esto
pueda suponer para nosotros, los mortales. Para
empezar, se teme que los requerimientos para eje-
cutar Vista puedan suponer un nuevo revulsivo en
lo relativo a la inversión económica del hardware
aunque, a priori, Microsoft ha tranquilizado al
“pueblo” dibujando un panorama más tranquiliza-
dor y anunciando que la configuración mínima
demandará sólo un PC a 800 Mhz, 512 Mb de
memoria, tarjeta gráfica con soporte de DirectX 9
y 15 GB de espacio libre en disco duro. Todo sea
dicho, bastante normal para los tiempos que
corren.
Pero uno de los aspectos que tiene visos de con-
vertirse en determinante para el futuro de Vista (y
de nuestra concepción del sistema operativo)
tiene que ver con su sistema de protección de
licencias. Es indudable que, hoy por hoy, una de las
causas de que el sistema esté instalado en el 90%
de los ordenadores de todo el mundo (unos 900
millones) reside en la “facilidad” de conseguir e
instalar copias piratas de Windows. Y es que, para-
dójicamente, Microsoft le debe mucho a los pira-
tas, aunque parece ser que (ya obtenida la cuota
de mercado) con Vista será otro cantar. A partir de
ahora los piratas se las van a ver y desear, aunque
cualquiera sabe ya que hacker y desafío son tér-
minos inseparables.
Por lo pronto, la fiebre Vista ya ha hecho que este
sistema operativo corra por las redes P2P y que
hasta algunos se atrevan con los supuestos cracks
que prometen activarlo, pese a que también se ha
informado de que uno de los más difundidos
(denominado "Windows Vista All Versions
Activation 21.11.06") incorpora el troyano llamado
“Trojan-PSW.Win32.LdPinch” dedicado a recolec-
tar contraseñas y enviarlas por correo a su crea-
dor. Pero este no el único aviso que se ha hecho
sobre vulnerabilidades ya que, según la empresa
de seguridad informática Sophos (luego corrobo-
rada por la propia Microsoft), Vista es afectado por
el 40% de todos los programas maliciosos que cir-
culan actualmente por Internet, aunque todavía
no se hayan creados virus específicamente para
Vista.
Por lo pronto, la compañía de Redmond espera
tenerlo instalado en más de 100 millones de orde-
nadores en su primer año, aunque también son
realistas y ya cuentan con que la implantación de
Vista será lenta… pero segura. Lo apoyan los ana-
listas que predicen que, a finales de 2007, un 5%
de los PC operativos en todo el mundo funciona-
rá con alguna de las versiones empresariales de
Vista (frente a un 47% que probablemente corre-
rá bajo Windows XP Professional, y casi un 10% lo
hará todavía con Windows 2000 Professional).
Para predicar con el ejemplo la propia Microsoft
ha instalado Vista en más de 60.000 PC de la com-
pañía, animando a sus clientes empresariales a
seguir su ejemplo. Qué menos.
Lo que está claro es que Windows Vista va a crear
muchos puestos de trabajo (se espera que unos
20.000 en el sector de las Tecnologías de la
Información y la Comunicación en España duran-
te el año 2007) lo que es un buen principio. La
creación de puestos de trabajo siempre lo es. Sólo
esperamos de cara al usuario que la nueva versión
sea tan estable como predica Bill Gates. Desde
luego, desde que apareciera Windows 3.1 han
tenido tiempo para ir depurándola, ¿no?
12
¿Quién no ha oído hablar a estasalturas de Windows Vista, el nuevosistema operativo de Microsoft?Mucho se ha dicho y teorizadosobre las bondades de este sistemaque llega para jubilar a WindowsXP, aunque ahora que parece quepor fin es cierto que llega a lastiendas es el momento de analizarqué implicaciones puede suponerpara todos nosotros.
NICOLÁS VELÁSQUEZ ESPINEL
http://digital.revistasprofesionales.com
OPINIÓN
Vista y no VistaVista y no Vista
Bill Gates anunciando Windows Vista
La interfaz de Windows Vista.
12 OPINION 20/12/06 11:31 Página 12
MANDRIVA LINUX 2007 FREEMANDRIVA LINUX 2007 FREEMandriva Linux 2007 incorporaversiones de última generaciónde los principales proyectos decódigo abierto, tales como:kernel 2.6.17, KDE 3.5.4,GNOME 2.16, y muchos otros.
• Nuevo soporte de escritorios 3D (tantoAIGLX como XGL) y una nueva utilidadpara configurarlos (drak3d)
• Mejoras en rpmdrake - Herramientapara la instalación de aplicaciones
• La Ora - Nuevo tema de escritorio yprotectores de pantalla
• Mejoras en la interfaz deconfiguración de redes consoporte a acceso del tipoinalámbrico y 3G/GPRS
• Soporte para XDG - un sistemade menú estándar defreedesktop.org
• Nueva infraestructura "Web2.0", similar a Ruby on Rails,Django y Catalyst
• Nuevo cortafuegos paraconfigurar un firewallredundante conucarp(invictus-firewall)
13 Linux.qxd 20/12/06 11:32 Página 66
SOLO PROGRAMADORES nº 145 14
DISPOSITIVOS MÓVILES
http://digital.revistasprofesionales.com
Introducción
La llegada de ASP.NET y su evolución ASP.NET 2.0
ha traído varios cambios al mundo de la progra-
mación de páginas web. Estos cambios han sido
en todos los sentidos, pero hay uno especial-
mente innovador el cual permite crear páginas
web que sirvan para multitud de dispositivos a la
vez. Estos nuevos elementos toman el nombre de
Mobile Web Controls. Con ellos, será posible pro-
gramar webs que sean accesibles desde teléfo-
nos móviles sin tener que utilizar lenguajes espe-
cíficos. Todo esto programando de igual forma a
la utilizada para crear páginas normales ASP.NET.
Cuando programamos para dispositivos móviles
nos damos cuenta de la verdadera heterogenei-
dad de éstos. Cada uno utiliza un lenguaje dife-
rente para representar las páginas: unos utilizan
HTML de una forma similar a un PC de sobreme-
sa, otros usan WML, otros cHTML (una versión
reducida de HTML), etc. Este es el primer incon-
veniente que nos encontrábamos a la hora de
programar: o bien se elige un lenguaje y se des-
echa la posibilidad de hacer páginas para el resto
de dispositivos, o bien se hace una página por
lenguaje, lo que multiplica el trabajo.
Además de esto, cada dispositivo tiene unas
características físicas muy diferentes: diferentes
tipos y tamaños de pantalla, teclados completos,
teclados táctiles o teclados reducidos (teléfono
móvil). Todo ese conjunto de elementos tan dis-
tintos hacen muy difícil la creación de páginas
uniformes para todos. Además de todo esto,
cada hardware tiene sus propias capacidades;
unos tienen una potencia de proceso considera-
ble mientras que otros aún hoy se quedan atrás.
El creador de páginas web muchas veces tiene
que enfrentarse a toda esta heterogeneidad.
Bajo toda esta diversidad, las páginas web para
móviles sólo tenían la posibilidad de programar-
se bajo un solo perfil de dispositivo, que solía ser
una media entre todos. Esto resultaba en que los
aparatos más potentes no demostraban su
En este artículo veremos cómohacer páginas web que puedanmostrarse en móviles, de unaforma sencilla y cómoda,utilizando ASP.NET.
DAVID SAINZ y AITOR ALMEIDA (Investigadores de la Cátedra de Telefónica Móviles en laUniversidad de Deusto)
Mobile Web Controls de ASP.NETMobile Web Controls de ASP.NET
Figura 1. Los dispositivos móviles tienen diversos interfaces y capacidades. Las webs no se ven de lamisma forma en ninguno de ellos.
14-20 Móviles .qxd 20/12/06 11:45 Página 14
SOLO PROGRAMADORES nº 14515
DISPOSITIVOS MÓVILES
http://digital.revistasprofesionales.com
Mobile Web Controls de ASP.NET
potencia y mostraban páginas pobres, y los
menos potentes muchas veces no podían
procesar partes de las páginas. La alternati-
va era programar una página distinta para
cada tipo de dispositivo, pero eso se con-
vertía en un caos a la hora de actualizar y
mantener los contenidos, además de un
esfuerzo enorme a la hora de crear lo que
debería ser una sola página.
Por esta razón se han creado los Mobile
Web Controls: controles que se adaptan a
cada tipo de dispositivo móvil.
¿Qué son los Mobile Web Controls?
Los Mobile Web Controls son controles de
formulario web similares en su manejo a los
clásicos de ASP.NET. La peculiaridad de los
mismos es que son capaces de mostrarse en
pantalla de forma diferente dependiendo del
dispositivo que los esté visualizando. De esta
manera, el programador se olvida de que
existen varias clases de hardware y trabaja
bajo una capa única, sabiendo que estos con-
troles se encargarán de adaptarse.
La forma de adaptación puede llegar a ser
muy precisa ya que pueden llegar a adaptar-
se incluso no sólo a un tipo de hardware, sino
a un modelo concreto con unas capacidades
específicas. La forma de conseguirlo interna-
mente no es demasiado complicada. El pro-
pio servidor (normalmente IIS) es el que
detecta el dispositivo y manda adaptarse a
los controles de la página. En el propio servi-
dor se instalan los llamados adaptadores de
dispositivo, que son los encargados reales de
hacer las conversiones necesarias. El funcio-
namiento es el siguiente:
11 .. Se analiza el dispositivo que ha pedido la
página.
22 .. Se elige el adaptador de dispositivo ade-
cuado de entre los existentes.
33 .. El adaptador analiza las capacidades del
dispositivo.
44 .. Según lo que el dispositivo soporte y el
lenguaje que utilice, el adaptador tradu-
cirá el Mobile Web Control de la forma
más apropiada y se lo enviará.
55 .. El dispositivo una vez recibida la página
adaptada para su perfil, puede mostrar
los controles sin problemas.
Es importante notar que el dispositivo
destino no recibe el Mobile Web Control,
sino que recibe código HTML, WML o deri-
vado. El control no viaja por la red y se
adapta una vez llegado al dispositivo, sino
que en el propio servidor se convierte en
código que el destino es capaz de
interpretar.
Esta arquitectura es extensible de forma
que pueden agregarse nuevos adaptadores
en el momento en que sea necesario tener
en cuenta nuevos perfiles. Por ejemplo
cuando salgan al mercado móviles con
grandes pantallas y amplios teclados,
puede crearse un nuevo perfil y utilizar un
adaptador concreto para ellos. Por defecto
estos adaptadores están incorporados en la
instalación del framework .NET.
Programando los controlesEstos controles se programan de una forma
muy similar a la utilizada en los controles
normales de ASP.NET. Se representan en
forma de etiquetas y siempre que es posible
tienen el mismo nombre que sus corres-
pondientes en ASP.NET. La diferencia es que
el prefijo de la etiqueta deja de ser “asp”
para pasar a ser “mobile”. Eso servirá para
diferenciar unos controles de otros.
En HTML, para insertar una caja de texto se
utiliza la siguiente etiqueta:
<input name=“TextNombre”/>
En ASP.NET y utilizando controles normales
la etiqueta es:
<asp:TextBox ID=”TextBox1”
runat =”server”></asp:TextBox>
En ASP.NET utilizando Mobile Web Controls
la etiqueta es:
<mobile:TextBox ID=”TextBox1”
runat=”server”> </mobile:TextBox>
Las etiquetas pueden teclearse a mano o
crearse a través de un IDE adecuado.
Utilizando Visual Studio 2005 es sencillo
crear los controles, ya que pinchando y
arrastrando se logran hacer los formularios,
de forma exactamente igual a como se
haría con los controles normales.
Para hacer esto hay que crear un nuevo
sitio web o utilizar uno existente, ya que
Visual Studio 2005 no requiere que el sitio
web entero sea para móviles, es posible
insertar páginas para móviles dentro de
una sede para PCs de sobremesa. Existe sin
embargo una restricción: las páginas nor-
males no pueden albergar Mobile Web
Controls, por tanto debemos separar las
páginas que se visitarán por PCs o similares
de las que se visitarán a través de móviles y
crear entonces páginas especiales para ello.
En el explorador de soluciones se puede
añadir una nueva página que en lugar de
ser una de las normales (Web Form) será
una página de controles móviles (Mobile
Web Form). Una vez añadida esta página,
en el Tool Box aparecerá una nueva sección
llamada “Mobile Web Forms” en la que
estarán los controles. No obstante, así
como una página web no puede albergar
un control móvil, una página para móviles
no puede contener controles normales.
Ambos mundos permanecerán separados
en la mayor parte de los casos. Sin embar-
go, esto no debería ser un problema ya que
Figura 2. Creando un formulario web móvil con Visual Studio 2005.
Figura 3. A la izquierda, la propiedad“BreakAfter” está a “false” en las etiquetasy el botón “Mandar”. A la derecha, lapropiedad está siempre a “true”.
14-20 Móviles .qxd 20/12/06 11:45 Página 15
SOLO PROGRAMADORES nº 145 16
DISPOSITIVOS MÓVILES
http://digital.revistasprofesionales.com
puede crearse una página móvil muy com-
pleta y gracias a las propiedades de los
controles, un PC de sobremesa también
será capaz de ver una página de este tipo
de forma normal.
Como se puede observar en la figura 2, al
crear un formulario web móvil el aspecto
gráfico es un tanto distinto, y es que los
controles no pueden colocarse en cualquier
lugar. Estos formularios tienen una disposi-
ción de controles en pantalla llamada
“FlowLayout”. Esta forma de colocar los con-
troles es la predeterminada y se basa en
colocar cada control en una línea diferente,
pudiendo controlarse la alineación horizon-
tal a izquierda, derecha y centrado. Esta limi-
tación resulta a veces muy estricta, pero hay
un mecanismo para hacerla algo más flexi-
ble: cada control tiene una propiedad llama-
da “BreakAfter”, que si está a “true”, signifi-
ca que el siguiente control se presentará en
la siguiente línea, y si está a “false” significa
que el siguiente control aparecerá justo al
lado. Esto es típico cuando se utilizan cajas
de texto y etiquetas. Para lograr que una eti-
queta y su correspondiente caja de texto
aparezcan en la misma línea, se coloca la
propiedad “BreakAfter” de la etiqueta a
“false”. Aún así, este “FlowLayout” resulta
muy poco flexible en ocasiones aunque
ayuda a mantener un diseño uniforme.
Recordemos que estamos trabajando en
páginas que se van a mostrar en muchos
tipos de pantallas, grandes y pequeñas. Este
tipo de colocación de controles ayudará a
mostrar los controles de forma parecida en
diferentes dispositivos. De esta manera,
crear un formulario gráficamente produce el
siguiente código del listado 1.
Hemos visto que para programar los contro-
les para móviles de manera gráfica se proce-
de exactamente igual que para los controles
web normales. Pues de igual modo sucede
con la programación de sus propiedades y
eventos, ya que la manera de proceder es
también similar, puesto que desde la página
de código también se accede a los controles
para manejar sus propiedades y métodos.
Los controles existentes
Los controles que se pueden colocar en una
página móvil son variados y, aunque no son
excesivamente sofisticados, cumplen con
las funciones básicas necesarias en este
tipo de páginas. A continuación analizamos
cada uno de estos controles.
FormEs el contenedor del resto de controles y el
formulario típico de cualquier página. Sin
embargo, tiene una peculiaridad, y es que
dentro de la misma página puede haber
varios formularios. Sólo uno es visible cada
vez pero todos están dentro, de forma que
pasar de un formulario a otro no implica
cambiar de página. Es típico encontrarse con
un formulario de envío de datos y otro for-
mulario de “Datos Enviados”, todo ello en una
sola página. Hay 2 propiedades especialmen-
te útiles:
� AAcctt iivveeFFoorrmm:: Esta propiedad no es del
propio formulario, sino de la página (se
accede directamente con “this.Active
Form”). Es un “String” que tiene el nom-
bre del formulario activo cada vez. Pasar
de un formulario a otro dentro de una
misma página es en realidad cambiar
esta propiedad.
� PPaaggiinnaattee:: Esta propiedad del formula-
rio sirve para dispositivos con pantallas
pequeñas. Si el formulario es grande y
contiene varios controles, este booleano
se pone a “true” para que se pagine
automáticamente. De esta manera un
formulario ocupa varias páginas por las
que se puede ir navegando.
<mobile:Form id=“F1” runat=“server”/>
PanelUn panel es otro contenedor de controles.
Se puede colocar dentro de un formulario y
a su vez él mismo contener más controles.
Esto se suele utilizar mucho en aquellos
momentos en los que es necesario añadir
controles dinámicamente en tiempo de eje-
cución. Si esto se hace con un formulario,
los controles aparecerían al final, y muchas
veces lo que se desea es que aparezcan en
un lugar concreto, por ejemplo hacia la
mitad, antes de unos controles y después de
otros. Es común colocar el panel en aquél
lugar donde se quieren colocar los controles
dinámicamente y después añadir los con-
troles directamente al mismo. Este panel
gracias al “FlowLayout” del que se ha habla-
do, es capaz de expandirse según se vayan
añadiendo controles de forma que ni siquie-
ra es necesario especificar un tamaño con-
creto, los controles van ocupando su espa-
cio. La propiedad interesante del panel es:
� CCoonnttrroollss :: Es en realidad una lista de
controles, se van añadiendo a ella los
Mobile Web Controls que se desea que
aparezcan en el panel.
<mobile:Panel id=“P1” runat
=“server”>
[Controles]
</mobile:Panel>
TextViewEste control sirve para colocar grandes can-
tidades de texto. Para mostrar contenidos de
mensajes o noticias, es común utilizar con-
troles como este. Es un control que se com-
bina con el atributo de paginación del for-
mulario y se parte automáticamente en tro-
zos, dejando por pantalla unas cuantas líne-
as y dando la posibilidad de navegar hacia el
siguiente trozo de mensaje o el anterior. La
propiedad más interesante es:
� TTeexxtt:: En este ”String” se deja el mensaje
entero a mostrar. Es el propio control el
encargado de partirlo en trozos si es nece-
sario paginarlo. A través de las característi-
cas del dispositivo que pide la página se
averigua cómo paginar el texto (si es que
hay que paginarlo).
LISTADO 1 Código de un formulario con Mobile Web Controls
//Creamos 4 personasPersona[] personas = new Persona[4];personas[0] = new Persona(“123456”, “David”, “Sainz González”, “Investigador”);personas[1] = new Persona(“456987”, “Aitor”, “Almeida escondrillas”, “Investigador”);personas[2] = new Persona(“325897”, “Ana”, “García Sánchez”, “Arquitecto”);personas[3] = new Persona(“852695”, “Ángel”, “Ibañez Ruiz”, “Analista”);//Asignamos las personas al ObjectList (Data Binding)this.ObjectList1.DataSource = personas;//El campo principal será el DNIthis.ObjectList1.LabelField = “Dni”;//Cambiamos el texto del botón ‘Back’this.ObjectList1.BackCommandText = “Volver”;//Realizamos el Data Bindthis.ObjectList1.DataBind();
}}
14-20 Móviles .qxd 20/12/06 11:45 Página 17
SOLO PROGRAMADORES nº 145
dispositivo hace la llamada directamente.
Es muy común en los formularios del tipo
“Contacte con Nosotros”, sustituyendo al
típico “mailto”, permitiendo una llamada
directa en lugar de enviar un mail. Las pro-
piedades principales del control son:
� TTeexxtt :: El texto que el usuario verá en el
formulario.
� PPhhoonneeNNuummbbeerr :: El número de teléfo-
no que se marcará automáticamente
en cuanto se haga clic sobre el
control.
<mobile:PhoneCall id=“call1
” runat=“server”
PhoneNumber=“23458961”> Texto
</mobile:PhoneCall>
CalendarEste control es uno de los que más mues-
tran la potencia de los Mobile Web
Controls. Su forma puede variar mucho
dependiendo del dispositivo destino, mos-
trándose como un calendario normal de
ASP.NET en un navegador de un PC, o una
caja de texto donde escribir la fecha en un
teléfono móvil de display reducido.
También puede adquirir más formas depen-
diendo de la potencia de visualización,
como por ejemplo una lista desde donde
seleccionar los meses y los días.
ObjectListEs un control interesante para visualizar
elementos con varios campos. Debido a que
las reducidas pantallas en pocas ocasiones
dejan mostrar tablas con comodidad, este
control permite mostrar todos estos ele-
mentos de una forma mucho más organi-
zada. Primero, se muestra una lista con
todos los objetos que contiene, sólo mos-
trando el campo principal. De esta forma el
control es parecido a una lista normal. La
salvedad es que cada campo es un hiper-
vínculo que nos lleva a ver todos los deta-
lles del elemento, es decir, nos lleva a ver el
resto de campos. Esta lista también se
adapta mucho a las capacidades de dispo-
sitivo y es el sustituto ideal del elemento
“Table” de ASP.NET normal. Este control
está programado de forma que no haya
que introducir una sola línea de código
para manejar el funcionamiento ni la
visualización de cada elemento. Al hacer
clic sobre cada objeto en la lista automáti-
camente aparecerá una pantalla que des-
plegará todos los detalles. Lo único que hay
que hacer es rellenar los datos del control
(normalmente a través de Data Binding) y
especificar cuál será el campo principal. Si,
como se ve en el listado 2, creamos un
array de clases “Persona” con “DNI”, “nom-
bre”, “apellidos” y demás, podemos dar esos
datos al “ObjectList” y especificar que el
campo principal sea el “DNI”. Lo que hará
entonces este control es sacar una lista con
todos los “DNI” que contiene. Al pinchar
sobre cada uno de ellos nos llevará a otra
página automáticamente donde nos mos-
trará los detalles de la “Persona”. Esto se
puede ver en la figura 4. Las propiedades
interesantes del control son:
� LLaabbeellFFiieelldd:: Es un ”String” donde se
especifica el nombre del campo princi-
pal del “ObjectList”.
� BBaacckkCCoommmmaannddTTeexxtt:: Cuando se va a
la página donde se visualizan los deta-
lles, automáticamente se coloca un
botón para navegar hacia atrás, de
nuevo hacia la “ObjectList”. Este ”String”
marca el texto que debe aparecer en ese
botón.
Pero hay más…Además de todos estos controles están las
típicas etiquetas, cuadros de texto, botones
y demás controles tan comunes en un for-
mulario. Los listados anteriormente son
mencionados por ser especiales para móvi-
les o tener alguna característica especial-
mente interesante.
Personalizando controles según el dispositivo
Todos los controles vistos, como se ha
dicho anteriormente, son capaces de adap-
tarse automáticamente, pero existen ade-
18
DISPOSITIVOS MÓVILES
http://digital.revistasprofesionales.com
Figura 4. Arriba, el control “ObjectList” mostrando todos los elementos que contiene.Abajo, el mismo control mostrando los detalles del elemento seleccionado.
Figura 5. Formulario donde crear filtros de dispositivo.
14-20 Móviles .qxd 20/12/06 11:45 Página 18
SOLO PROGRAMADORES nº 145
más formas de hacer que la adaptación sea
mucho más personalizada, siendo nosotros
como programadores los que controlemos
cómo se va a mostrar cada elemento del
formulario dependiendo de quién lo visua-
lice.
Para hacer esto, primero necesitamos saber,
desde nuestra propia página, qué dispositi-
vo está accediendo, y dependiendo de ello
poder realizar una acción u otra. Para ello
se utilizan los “filtros de dispositivo”.
¿Qué son los filtros de dispositivo?Los filtros son los elementos dedicados a
ayudarnos a diferenciar un dispositivo de
otro, o unas capacidades de dispositivo de
otras. Por ejemplo, para diferenciar si el dis-
positivo entiende lenguaje HTML o WML se
utiliza uno de estos filtros. En realidad nos-
otros vamos a verlo como un gran “if” en el
que, por ejemplo, si el dispositivo acepta
HTML haremos unas cosas y si no, otras. La
forma de crear estos filtros es muy sencilla,
ya que Visual Studio tiene herramientas
para ayudarnos.
Para empezar hemos de crear primero los fil-
tros de dispositivo que deseemos, por ejem-
plo, filtrar según soporten HTML (PCs norma-
les y Pocket PCs) o WML (teléfonos móviles).
Para ello en Visual Studio pinchamos sobre
cualquier control y en sus propiedades vere-
mos una llamada “Applied Device Filters”.
Pinchando en ella nos aparece un cuadro de
diálogo. En él debemos pinchar en el botón
“Edit…”. Esto nos abrirá otro formulario
donde podremos crear filtros de dispositivo.
Dentro de este formulario pulsamos el
botón de “Add Device Filter” para crear un
nuevo filtro y le damos un nombre: HTML.
En la lista de propiedades a comparar selec-
cionamos “PreferredRenderingType” y en el
cuadro de texto de argumento tecleamos
“html32”. Con esto estamos especificando
que seleccionamos los dispositivos que pre-
fieren mostrar el texto en HTML. Podemos
crear otro filtro exactamente igual pero lla-
mado “WML” y cuyo argumento contenga
“wml11”. Así se pueden tener dos filtros
creados.
La lista de elementos a comparar es muy
extensa y abarca desde tamaño de pantalla
al modelo del dispositivo, con lo cual se
pueden llegar a crear filtros muy precisos.
Los creados servirán para diferenciar teléfo-
nos móviles que aceptan WML, de PCs con
navegadores normales que aceptan HTML.
Al pulsar “OK” en este formulario pasamos
al formulario anterior, donde ya podemos
añadir a una lista los filtros creados, para
poderlos utilizar.
Property OverridesUna vez tenemos los filtros de dispositivo
que deseemos, una manera de personalizar
los controles según los mismos es el llama-
do “Property Overrides”, es decir, modificar
las propiedades de un control según las
cualidades de un dispositivo. Esto se hace
también de manera gráfica utilizando
Visual Studio, lo que convierte a estos
“Property Overrides” en algo potente y fácil
de manejar. Tan fácil como seleccionar un
control y hacer clic sobre su propiedad
“PropertyOverrides”, donde aparecerá un
formulario nuevo, con una lista de selec-
ción y un cuadro de propiedades. En la lista
de selección aparecerán los filtros de dispo-
sitivo aceptados. Si está vacía se repite el
paso de añadir filtros, visto en el apartado
anterior. Seleccionando un filtro de esa
lista, aparecerá el cuadro de propiedades
para el control. De tal forma que podemos,
por ejemplo, colocar la propiedad “Visible” a
“false” en el filtro WML y a “true” en el fil-
tro HTML. Esto ocasionará que un navega-
dor que acepte HTML vea el control mien-
tras que el que acepte WML no lo vea.
El cuadro de propiedades que pueden cam-
biarse es muy amplio y abarca muchos ele-
mentos normalmente ligados a la forma de
presentación del control. Este abanico de
propiedades que pueden modificarse puede
servirnos para mejorar la adaptación auto-
mática que ya viene dada por defecto en los
controles.
Device SpecificAdemás de todo lo visto existe otro meca-
nismo de personalización de páginas, unos
controles especiales llamados “Device
Specific”. Estos controles se colocan dentro
de cualquier formulario o panel, pero si no
se hace nada más con ellos no aparecerán
en las páginas, porque no son controles en
sí mismos. Estos controles sirven para colo-
car código dentro de ellos. Los
“DeviceSpecific” se utilizan para colocar en
la página código especial en cuanto se
detecta un dispositivo concreto. Es posible
detectar una cierta gama de teléfonos
móviles e insertar código WML literal, espe-
19
Mobile Web Controls de ASP.NETDISPOSITIVOS MÓVILES
http://digital.revistasprofesionales.com
Figura 6. Formulario para cambiar las propiedades de un control usando PropertyOverrides.
Figura 8. Diferentes vistas de un control “Calendar” según el dispositivo que lo estévisualizando.
14-20 Móviles .qxd 20/12/06 11:45 Página 20
Suscripción a Sólo ProgramadoresSUSCRIPCIÓN PARA ESPAÑA�Opción A: Suscripción anual con 25% descuento:
54 euros* (3 revistas gratis, 18 euros de ahorro)�Opción B: Suscripción anual con 15% descuento:
61,20 euros* (tapas de regalo, 10,80 euros de ahorro)*10 euros de gastos de envío para la opción contrareembolso
SUSCRIPCIÓN PARA EXTRANJERO�Opción C: Suscripción anual con 25% descuento
90 euros (gastos de envío incluidos)FORMA DE PAGO EXTRANJERO:� Tarjeta de crédito + fecha de caducidad
FORMAS DE PAGO PARA ESPAÑA� Contrareembolso (10 euros gastos de envío)� Giro Postal a Revistas Profesionales, S.L.� Transferencia al Banco Popular:
c.c:0075/1040/43/0600047439� Talón Bancario a nombre de Revistas Profesionales� Domiciliación Bancaria� Tarjeta de Crédito + fecha de caducidad
Solicitud de suscripciones y más información en el teléfono 91 304 87 64, en el fax 91 327 13 07y en [email protected]
Suscripcion Solop2005 21/12/06 15:04 Página 1
SOLO PROGRAMADORES nº 145 22
MIDDLEWARE
http://digital.revistasprofesionales.com
Introducción
Windows Vista, la última y por lo tanto más
reciente evolución del sistema operativo de
Microsoft, está ya entre nosotros. Seguro que
el lector habrá oído ya mucho acerca de esta
nueva edición de Windows, pues la maquinaria
de comunicación de Microsoft empezó el lan-
zamiento del producto hace ya muchos meses.
Sin embargo, es posible que aún no tengamos
claro qué de nuevo nos aporta Windows Vista.
Todos hemos oído que, obviamente, será una
revolución, puesto que aporta mejoras en
cuanto a la usabilidad, la conectividad, etc.
pero desde Sólo Programadores creemos nece-
sario hacer un exhaustivo análisis de las tecno-
logías incorporadas a esta nueva versión con
objeto de mostrarlas a los lectores de una
manera estructurada y organizada. Esperemos
que este artículo sirva para concretar y aclarar
las ideas del lector acerca de “todo lo nuevo”
que trae consigo Windows Vista, y convertir
esta “nebulosa de novedades” en una lista de
funcionalidades concretas.
Bibliografía y fuentes de informaciónEl contenido de este artículo es fruto de la sínte-
sis y resumen de distintas fuentes de informa-
ción, entre las cuales destaca por un lado el
extenso documento “Windows Vista Product
Guide” y, por otro, el conocimiento y la informa-
ción adquirida por un servidor como consecuen-
cia de mi asistencia a la mayoría de eventos y
conferencias organizadas por Microsoft acerca
de este tema, como pueda ser el Tech-Ed o la
presentación de Windows Vista.
Ediciones de Windows Vista
Antes de abordar las nuevas funcionalidades que
nos aporta Windows Vista, creemos necesario
hacer un breve repaso a las ediciones disponibles
del producto. Como consecuencia de la gran varie-
dad de ediciones, este suele ser uno de los puntos
más turbios y que ofrece mayor confusión.
Como previo a la descripción de funcionalidades
presente en cada edición, vale la pena comprar el
cambio de estrategia de Microsoft con respecto a
Windows XP. Con Windows XP, existían 6 edicio-
nes: Home Edition, Media Center Edition,
Professional Edition, Tablet PC Edition, Professional
x64 Edition y, para mercados emergentes, Starter
Edition. Mientras que Windows XP Home Edition y
Windows XP Professional Edition iban dirigidas a
un perfil específico de usuarios, las otras 4 edicio-
nes estaban orientadas a determinadas configura-
ciones de hardware.
Ahora, Microsoft ha reorientado su estrategia de
ediciones, ofreciendo varias SKU (ediciones
comerciales para usuario final) dirigidas siempre
a perfiles de usuario, anteponiendo siempre el
destinatario de la tecnología al hardware, con la
idea de ajustar la oferta a la demanda. Con esta
La mayoría de los lectores sabrán quela nueva versión del sistemaoperativo Windows ya está lista parallegar al gran público. Sin embargo,es posible que la misma mayoría delectores se formulen preguntas deltipo… ¿Qué ediciones habrá delproducto? ¿Qué diferencias existenentre ellas? ¿Hay novedades encuanto a la interfaz de usuario? ¿Y encuanto a la accesibilidad? ¿Y encuanto al rendimiento? ¿Han incluidomejoras relativas a la conectividad? Ysobre todo… ¿Nos afecta todo esto anosotros, los desarrolladores?
PABLO OLMOS
Primera aproximación a Windows VistaPrimera aproximación a Windows Vista
22-31 Middleware.qxd 20/12/06 12:22 Página 22
SOLO PROGRAMADORES nº 14523
MIDDLEWARE
http://digital.revistasprofesionales.com
filosofía, Microsoft pone a disposición del
público las siguientes ediciones de
Windows Vista.
Windows Vista Home Basic
Edición básica para consumidores de mer-
cados desarrollados, en la que podremos
encontrar las siguientes características:
� Mejoras en seguridad y fiabilidad.
� Control parental.
� Interfaz de usuario Windows Vista Basic.
� Innovaciones en las funciones de bús-
queda y organización.
� Funciones de red mejoradas.
Windows Vista Home Premium
Edición principal de Windows Vista, orien-
tada a los consumidores que disponen
tanto de equipos de sobremesa como equi-
pos portátiles. Incluye todas las caracterís-
ticas de la edición Home Basic y añade:
� Interfaz de usuario Windows Aero.
� La funcionalidad de Windows Media
Center.
� Creación y grabación de DVDs.
� La función Windows Tablet PC.
� Sincronización de equipo a equipo.
Windows Vista Ultimate
Edición más profesional que las dos anteriores,
va orientada a personas que utilizan el mismo
equipo (de sobremesa o portátil) tanto para
trabajar como para otras tareas lúdicas. Esta
edición incluye las funcionalidades de Home
Premium y añade las funcionalidades de la
edición Enterprise (véase más adelante).
Windows Vista Business
Edición orientada íntegramente a su uso
profesional, dirigida a trabajadores de
pequeñas, medianas o grandes empresas
que tengan equipos de sobremesa o portá-
tiles. Incluye todas las funcionalidades de la
edición Home Basic y añade:
� Interfaz de usuario Windows Aero.
� La función Windows Tablet PC.
� Sincronización de equipo a equipo.
� Características empresariales importan-
tes, como unirse a un dominio, compa-
tibilidad con las directivas de grupo y
sistema de archivos de cifrado.
� Características específicas para peque-
ñas empresas, como fax y escáner.
Windows Vista Enterprise
Máxima edición de Windows Vista, tanto para
equipos de sobremesa como equipos portátiles,
orientada sólo a aquellos usuarios que tengan
sus equipos cubiertos por un contrato Microsoft
Software Assurance. Incluye todas las caracte-
rísticas de la edición Business y añade:
� Cifrado de unidad de BitLocker de
Windows.
� Todos los idiomas del mundo para la
interfaz.
� Virtual PC Express.
� Subsystem for UNIX-based Applications
(SUA).
Windows Vista Starter
Edición más limitada de Windows Vista,
orientada a las familias y a nuevos usuarios
de determinados mercados emergentes.
Destacamos de esta edición las siguientes
funcionalidades:
� Mejoras en la seguridad y fiabilidad.
� Innovaciones en las funciones de bús-
queda y organización.
� Interfaz de usuario de Windows Vista
Basic.
� Sistema operativo de 32 bits diseñado espe-
cíficamente para equipos económicos.
Interfaz de usuario
La interfaz de usuario de un sistema opera-
tivo es, quizás, el punto que más heteroge-
neidad de opiniones despierta entre la
comunidad de informáticos y también de
usuarios convencionales. Por un lado, hay
quien defiende que no necesita un escrito-
rio en 3D y a todo color para administrar
sus archivos, ejecutar sus aplicaciones y, en
general, gobernar su PC. A favor de esta
postura, básicamente está el consumo
excesivo de recursos de una interfaz gráfi-
ca sobrecargada. En el otro extremo, están
quienes acogen con buenos ojos todas
aquellas mejoras relativas a la interfaz,
entendiendo que una interfaz gráfica
potente y bien diseñada tiene una clara
repercusión (en clave positiva) en la pro-
ductividad. Y es precisamente en esta línea
en la que se sitúa Microsoft, ya que
muchas de las novedades de Windows Vista
tienen que ver con su “aspecto”.
Cuatro niveles gráficos de experiencia deusuarioWindows Vista ofrece 4 niveles de expe-
riencia de usuario que se basan en las fun-
cionalidades gráficas del sistema. Entre
ellas, la más destacada es, a su vez, la más
sofisticada, que recibe el nombre de Aero.
Sin embargo, vamos a repasar uno por uno
cuáles son estos 4 niveles:
� EExxppeerr ii eenncc ii aa WWiinnddoowwss BBááss ii ccoo ::
Ofrece el entorno gráfico más sencillo,
muy simplificado en relación a lo que
conocemos de versiones anteriores de
Windows. Básico puede correr en cual-
quier edición de Windows Vista, y no
tiene requerimientos específicos en
cuanto al hardware.
� EExxppeerr ii eenncc ii aa WWiinnddoowwss CC llááss ii ccoo ::
Ofrece las mismas funcionalidades que
Básico, pero con la apariencia de
Windows 2000. Clásico también está
disponible en todas las ediciones y tam-
Primera aproximación a Windows Vista
Figura 1. Oferta segmentada por usuarios,según sean “Customers” (Basic, Premium,Ultimate), “Small Business” (Business, Ulti-mate) o “Medium and Large Businesses”(Business, Enterprise).
Funciones de búsqueda y organizaciónDespués de la espectacular interfaz gráfica
proporcionada por Aero, otra de las gran-
des novedades presentadas en los más
recientes eventos organizados por
Microsoft es la función de búsqueda y
organización de la información. Windows
Vista pone a nuestra disposición, tanto en
el menú de “Inicio” como en las ventanas
del Explorador de Windows, una caja de
texto con la que podremos realizar búsque-
das rápidas tanto de programas como de
ficheros.
El funcionamiento es muy sencillo, basta
con escribir el texto de aquello que quere-
mos encontrar y Vista nos irá mostrando y
modificando, a medida que vayamos escri-
biendo, la lista con los resultados. Por
ejemplo, si escribimos “Excel”, Vista nos
mostrará los documentos Excel de nuestro
equipo pero también el enlace para lanzar
Microsoft Excel. Si lo que queremos es bus-
car un documento cuyo autor es “Pablo”,
será suficiente con escribir “Pablo”.
Realmente, las posibilidades de búsqueda
son bastante potentes y su facilidad de uso
es, quizás, lo más llamativo. La figura 5
muestra el comportamiento de la funcio-
nalidad de búsqueda en el menú de inicio.
El explorador de Windows VistaEl Explorador de Windows es un clásico
entre los usuarios de este sistema operati-
vo. Es la aplicación más utilizada, ya que
nos permite acceder y organizar todo tipo
de información, desde fotografías hasta
documentos, pasando por ficheros de
audio, vídeo, etc., es decir: todo. Por lo
tanto, es lógico y normal que Microsoft
haya puesto especial atención en mejorar
la funcionalidad de esta parte del sistema.
Como puede apreciarse en la figura 6, el
nuevo explorador de Windows ofrece:
� BBúússqquueeddaa iinnssttaannttáánneeaa:: Siempre
disponible, permite encontrar archivos
y aplicaciones tal como se ha descrito
en el punto anterior (véase la figura 7).
24
MIDDLEWARE
http://digital.revistasprofesionales.com
Figura 2. La experiencia gráfica Aeroincluye ventanas con efectos traslúcidosque pueden ser configurados por elusuario.
Figura 3. Flip en acción (“Alt+Tab”) paraseleccionar la ventana activa.
Figura 5. Tan solo escribiendo la letra “c”,Vista nos muestra los programas queempiezan por dicha letra (“Calculator”,“Chess”, “Control Panel”, etc.) así como losficheros y directorios que tambiénempiezan por “c”.
Figura 6. El aspecto y las funcionalidadesofrecidas por el Explorador de Windowshan sufrido importantes cambios.
Figura 4. Flip 3D en acción(“Inicio+Tab”) para seleccionar laventana activa.
22-31 Middleware.qxd 20/12/06 12:22 Página 24
SOLO PROGRAMADORES nº 145
� BBaarrrraa ddee ccoommaannddooss:: Muestra las
funcionalidades adecuadas en base a
los archivos que están siendo mostra-
dos por el explorador (véase la figura 8).
� IIccoonnooss aacctt iivvooss: Muestran una minia-
� PPaanneell ddee lleeccttuurraa: Permite tener una
vista previa del contenido de aquellos
archivos que tiene esta función habili-
tada.
Tecnología ClearTypeClearType será nuestro último punto de
análisis por lo que respecta a las noveda-
des de la parte gráfica del nuevo
Windows Vista. Pero… ¿qué es ClearType?
ClearType es una tecnología patentada
por Microsoft que tiene por objetivo
mejorar la legibilidad del texto en panta-
lla, influyendo positivamente también en
la comprensión y la velocidad de lectura
(véase la figura 10). ClearType ya estaba
presente en algunas ediciones de
Windows XP, aunque no estaba activo
por defecto, ya que ClearType es una tec-
nología especialmente diseñada para las
pantallas de última generación, muy
poco frecuentes hace unos años. Sin
embargo, ahora el escenario es comple-
tamente distinto: recientemente, las
pantallas de Tubo de Rayos Catódicos
(CRT) han dejado paso a las pantallas
planas, basadas en la tecnología Pantalla
de Cristal Líquido (LCD), empleadas ya
tanto en los equipos de sobremesa como
en el salón de los hogares.
Por esta razón, y en vista de este nuevo
panorama, ClearType se presenta como
una importante funcionalidad pensada,
sobre todo, para aquellos usuarios que
pasamos horas frente a la pantalla.
Los gadgets, un nuevo concepto de aplicación en Windows
Los gadgets de Windows Vista nacen
con el objetivo de resolver un problema
“de concepto”, presente en muchos sis-
temas operativos: Para utilizar una apli-
cación, lo primero es ejecutarla. El pro-
blema ocurre cuando tenemos la necesi-
dad de acceder a varias fuentes de infor-
mación de manera reiterativa en varios
momentos del día. Es decir, imaginemos
que, a lo largo del día, tenemos que uti-
lizar en repetidas ocasiones recursos
como la calculadora, la página web que
nos ofrece noticias meteorológicas, la
página web que nos ofrece noticias
deportivas, la página web que nos ofre-
ce noticias internacionales, nuestro pla-
nificador de tareas y el calendario. Para
todo esto, Windows XP nos ofrecía dos
opciones: Una de ellas era lanzar la apli-
cación deseada en cada momento: abrir
la calculadora, abrir el calendario, abrir
nuestro planificador de tareas y el
explorador de Internet. La segunda
opción era mantener todas estas aplica-
ciones activas, minimizadas en la barra
del escritorio, para poder usarlas cuando
fuera necesario sin tener que ejecutarlas
de nuevo. En ambos casos, se producía
una sobrecarga de rendimiento en el sis-
tema.
En este sentido, los gadgets de Vista
pretenden facilitar las tareas más repeti-
tivas del usuario que tienen que ver con
el acceso a la información. Veamos algo
más sobre los nuevos Microsoft gadgets.
SidebarWindows Sidebar es el panel que encon-
tramos a la izquierda de la pantalla, en el
escritorio (véase la figura 11). La función
de este panel es la de albergar a los gad-
gets del usuario, situándolos así en un
punto de acceso rápido. Windows
Sidebar puede configurarse para perma-
necer siempre visible o bien descansar
bajo la ventana activa.
GadgetsLos gadgets
pueden definirse
como miniapli-
caciones de na-
turaleza muy di-
versa. Tal como
se explica desde
Microsoft, desde
un gadget pode-
mos conectar-
nos a un servicio
web para obte-
ner cualquier ti-
po de informa-
ción (meteoroló-
gica, tráfico, ma-
pas , etc.), así co-
mo a cualquier
aplicación del
sistema (véase la
figura 12). Es
decir, un gadget
puede tener cual-
quier fin, por lo
que será nuestro
ingenio, el de los
desarrolladores,
quien pueda ex -
plotar todas las
capacidades de
este nuevo tipo
de aplicaciones. En futuras ediciones de
Sólo Programadores, esperamos poder
ofrecer las nociones necesarias para el
desarrollo de este tipo de programas
para Windows Vista. Mientras tanto, solo
comentar que Vista incorpora, por defec-
to, un buen número de gadgets, aunque
Microsoft ofrece, en el sitio http://
microsoftgadgets.com, muchos otros
para que puedan ser descargados e
instalados.
25
MIDDLEWAREPrimera aproximación a Windows Vista
http://digital.revistasprofesionales.com
Figura 7. Funciones de búsquedainstantánea del Explorador de Windows.
Figura 10. ClearType es una tecnologíapatentada por Microsoft.
Figura 11. WindowsSidebar, el panel donde sealojan nuestros gadgets.
Figura 8. Funciones de barra decomandos del Explorador de Windows.
Figura 9. Funciones de vista previa delExplorador de Windows.
22-31 Middleware.qxd 20/12/06 12:22 Página 25
SOLO PROGRAMADORES nº 145
Rendimiento
Estas líneas van especialmente dirigidas
a los usuarios de sistemas Windows:
seguro que todos hemos vivido inconsis-
tencias en el rendimiento de nuestros
sistemas. Es decir, un día las aplicaciones
se inician de manera rápida y funcionan
bien, sin embargo, por causas desconoci-
das, el paso del tiempo hace que nuestro
sistema cada vez sea más lento y que las
aplicaciones tarden más en iniciarse.
Además, los programas van mucho más
rápidos por la mañana que a última hora
de la tarde, cuando estos llevan todo el
día en marcha. ¿Por qué ocurre esto?
¿Será capaz Windows Vista de acabar
con esta inconsistencia de rendimiento?
En este sentido, la nueva versión de
Windows incorpora una serie de tecnolo-
gías orientadas, precisamente, a ofrecer
un alto rendimiento.
SuperFetchNueva tecnología de administración de
memoria disponible en Windows Vista,
que permite ofrecer una experiencia de
rendimiento consistente. Los algoritmos
de gestión de memoria anteriores a
SuperFetch únicamente cambian el con-
tenido de la memoria RAM cuando una
nueva aplicación debe ejecutarse. Es
entonces cuando actúan para buscar
sitio en la memoria RAM del equipo. Con
algoritmos de este tipo, el problema
surge cuando el usuario abandona su
puesto de trabajo durante unas horas.
Esto provoca que aquellas tareas que se
ejecutan en segundo plano (escaneo de
virus, indexación, etc.) pasen a ocupar
buena parte de la memoria para realizar
sus tareas. El problema surge cuando el
usuario regresa a su puesto de trabajo y
quiere utilizar las aplicaciones que esta-
ba utilizando antes de ausentarse. En
este momento, el sistema debe de res-
taurar la memoria RAM para dejarla tal
como estaba, con la consiguiente pérdi-
da de rendimiento. Es en este momento
cuando el usuario tiene la sensación de
que su equipo funcionaba mejor antes de
abandonar su puesto de trabajo.
SuperFetch administra la memoria
mediante un algoritmo que da prioridad
a las aplicaciones de usuario sobre las
tareas en segundo plano. Con
SuperFetch, las tareas en segundo plano
se siguen ejecutando en aquellos
momentos en los que el equipo está
inactivo. Sin embargo, cuando finalizan
SuperFetch las elimina de la RAM para
ubicar nuevamente las aplicaciones del
usuario.
E/S de baja prioridadAunque la tecnología SuperFetch va a
influir positivamente en el rendimiento
del sistema, otro de los aspectos claves
en la capacidad de respuesta del sistema
son las operaciones de Entrada/Salida
(E/S). En Windows XP todas las aplicacio-
nes tenían la misma prioridad a la hora
de acceder a un dispositivo, como por
ejemplo el disco duro. Ahora, Windows
Vista introduce el concepto de E/S de
baja prioridad, lo cual permite escribir
aplicaciones que tendrán menos priori-
dad a la hora de acceder a los dispositi-
vos externos.
ReadyBoostTodos sabemos que una de las maneras
de mejorar el rendimiento de nuestro
equipo es aumentar la memoria RAM.
Esta solución, obviamente, sigue siendo
válida para Windows Vista, aunque es
algo costosa. La tecnología ReadyBoost
permite extender la memoria del equipo,
enchufando una unidad flash USB, por
ejemplo, que actuará como una memoria
caché adicional y que ofrecerá un tiem-
po de acceso mucho menor a al del disco
duro. Combinar las tecnologías Ready
Boost con SuperFetch puede aportarnos
una mejor capacidad de respuesta por
parte del sistema operativo.
26
MIDDLEWARE
http://digital.revistasprofesionales.com
Figura 12. Gadgets en el escritorio de Windows Vista.
Figura 13. Página web de Microsoft dedicada a los gadgets de Windows Vista(http://microsoftgadgets.com).
22-31 Middleware.qxd 20/12/06 12:22 Página 26
Sólo Programadoresen FormatoDigital
Por menos dineroLlegará antes a su ordenador que a los quioscos
Entra en http://digital.revistasprofesionales.comSuscripción anual a Sólo Programadores (12 números) por sólo 27 eurosSuscripción anual a Sólo Programadores (12 números) y a Mundo Linux(6 números) por sólo 30 euros
Regalo de un CD-ROM con el archivo de los 12 ejemplaresde la temporada 2004-05
22-31 Middleware.qxd 20/12/06 12:22 Página 27
SOLO PROGRAMADORES nº 145
Utilizar la tecnología ReadyBoost es muy
sencillo, algo que los usuarios sin duda
agradecerán: basta con enchufar el disco
externo USB. En este momento, Windows
Vista comprobará la velocidad de acceso
y, en caso de que sea un dispositivo apto
para la tecnología ReadyBoost, el siste-
ma nos mostrará una ventana de diálogo
en la que nos preguntará si queremos
utilizar este dispositivo para extender la
memoria de nuestro equipo. Así de sim-
ple.
ReadyDriveTecnología que tiene por objeto ofrecer
un inicio, hibernación y reanudación más
rápido. La utilización de esta tecnología
tiene como requisito el disponer de un
disco duro híbrido (integra la memoria
flash no volátil en la unidad de disco).
ReadyDrive está pensado para equipos
móviles, ya que permite que estos pue-
dan prescindir, en ocasiones, del disco
duro mecánico, con el consiguiente
ahorro de energía.
Redes
Windows Vista aglutina todas las funcio-
nes relativas a la conexión del equipo en
el Centro de Redes, puesto de control
que permite al usuario comprobar el
estado de su conexión, ver gráficamente
la topología de la red y los equipos
conectados, así como solucionar proble-
mas de conexión. Sin embargo, en nues-
tra opinión la mejora más destacable es
el concepto Connect Now de Windows
Vista. Gracias a Connect Now, es posible
guardar la configuración de la red en
una unidad de almacenamiento flash
USB, que nos permitirá simplificar el
proceso de agregar a la red equipos o
dispositivos adicionales. Para ello, tan
solo será necesario insertar el disco USB
al dispositivo en cuestión para que éste
obtenga todos los datos de configura-
ción de la red, quedando así conectado
de manera casi instantánea.
La idea que hay tras Connect Now es,
como puede suponerse, facilitar al usua-
rio las tareas de conexión entre disposi-
tivos heterogéneos, como puedan ser
varios equipos, impresoras, reproducto-
res de música, sistemas de juego, etc.
Tablet PC
Esta sección va dedicada a los usuarios
de sistemas Tablet PC. Las novedades que
expondremos en este punto serán bien-
venidas por los usuarios de este tipo de
dispositivos, que a menudo han experi-
mentado un sentimiento de frustración
al realizar acciones como seleccionar
varios elementos, uso de la pantalla tác-
til sin el lápiz, escritura a mano, borrado
de caracteres, etc.
Lápiz mejoradoEl uso del lápiz en Windows XP Tablet PC
Edition presentaba, básicamente, dos
problemas. Por un lado, falta de preci-
sión, ya que en ocasiones podía resultar
algo difícil apuntar a un elemento
pequeño, como por ejemplo una barra de
desplazamiento. Por otro lado, falta de
“feedback” por parte del sistema cuando
el usuario punteaba con el lápiz. Esto
último provocaba que el usuario no
supiera si era debido a que no había
punteado con suficiente fuerza o bien a
que el sistema era lento.
Ambos problemas han sido solucionados
con la presente edición de Windows
Vista para Tablet PC. Por un lado, el lápiz
ofrece mayor precisión, y por otro, ofre-
ce comentarios visuales cuando puntea-
mos, gracias a los cuales podremos saber
de qué manera el sistema ha percibido la
presión que hemos hecho sobre la pan-
talla (véase la figura 15).
Además, Windows Vista añade el con-
cepto de “Movimientos rápidos del
lápiz”, una nueva funcionalidad que nos
permitirá realizar acciones de manera
ágil aumentando así nuestra productivi-
dad. Por ejemplo, desplazando con velo-
cidad el lápiz en sentido descendente
conseguiremos el mismo efecto que si
punteamos sobre la barra de desplaza-
miento y arrastramos hacia abajo (véase
la figura 16). También es posible realizar
acciones de edición, como copiar, cortar
y pegar. Además, los movimientos rápi-
dos del lápiz pueden ser personalizados.
Pantalla táctil compatibleEn caso de que la entrada táctil del dis-
positivo esté disponible, podrán realizar-
se las acciones sobre ella con el lápiz,
pero también con los dedos. Obviamente,
con el dedo se pierde precisión, sin
embargo Windows Vista nos mostrará un
“área de acción”, similar al puntero del
ratón, que se desplazará debajo de nues-
tro dedo y que nos asistirá en las tareas
donde se requiera mayor precisión.
Mejor reconocimiento en la escritura amanoEl reconocimiento de la escritura a mano
es un tema complejo, pues cada persona
28
MIDDLEWARE
http://digital.revistasprofesionales.com
Figura 14. La interconexión de dispositivos es más fácil con Connect Now.
Figura 15. Comentarios visuales mostrados por Windows Vista al puntear con el lápizsobre nuestro Tablet PC.
22-31 Middleware.qxd 20/12/06 12:22 Página 28
SOLO PROGRAMADORES nº 145
tiene su caligrafía particular. Es muy pro-
bable que el lector haya intentado escri-
bir alguna palabra con un dispositivo
dotado de reconocimiento de escritura y
se haya sentido frustrado por la baja tasa
de éxito en el reconocimiento. La solu-
ción que se ha adoptado referente a este
tema en Windows Vista es el entrena-
miento del sistema. De esta manera, el
usuario no tendrá que cambiar su mane-
ra de escribir, sino que será el reconoce-
dor de escritura quien adaptará su com-
portamiento en función del estilo de
escritura del usuario, después de un
periodo de entrenamiento, claro está.
Mejores opciones de borradoEn Windows XP Tablet PC Edition el
borrado de palabras o caracteres se hacía
mediante el dibujo del símbolo Z.
Windows Vista se muestra más tolerante
en este sentido, ya que ofrece más varie-
dad de dibujos para la acción de borrado,
como por ejemplo M o W. Además, si el
lápiz del Tablet PC incorpora borrador,
éste también puede ser usado para hacer
correcciones en la escritura.
Windows SideShow
Windows SideShow es una nueva plata-
forma orientada a funcionar en disposi-
tivos con pantallas secundarias, ya sean
teléfonos móviles, ordenadores portáti-
les, etc. La idea que hay tras Windows
SideShow es ofrecer al usuario la posibi-
lidad de realizar acciones rápidas de
manera ágil sin la necesidad de abrir el
portátil, tal sólo interactuando con la
pantalla auxiliar (véase la figura 17).
Estas acciones pueden ser, por ejemplo,
revisar si hay nuevos correos electróni-
cos en la bandeja de entrada o bien che-
quear la agenda del día.
Reconocimiento de voz
Windows Vista es un sistema sensibiliza-
do con la accesibilidad, y prueba de ello
son las numerosas aportaciones que
hace en este campo. Sin embargo, la más
espectacular de ellas es la que tiene que
ver con el reconocimiento de voz.
Podemos dar fe de que las demostracio-
nes de reconocimiento de voz realizadas
por el personal de Microsoft en los dis-
tintos eventos celebrados en los últimos
meses, han sido realmente espectacula-
res. Es importante destacar que el reco-
nocimiento de voz no se limita a ciertos
comandos, sino que permite al usuario
dictar un texto, reconociendo así el len-
guaje natural.
En efecto, el reconocimiento de voz de
Windows Vista permite a los usuarios
prescindir del ratón y del teclado para
muchas de las acciones más habituales,
como puedan ser la redacción de un
documento de texto o un correo electró-
nico (ahora bastará con dictarlo, no será
necesario escribirlo), ejecutar un progra-
ma como Microsoft Excel, minimizar una
ventana, etc.
29
MIDDLEWAREPrimera aproximación a Windows Vista
http://digital.revistasprofesionales.com
Figura 16. Usando los movimientos rápidos el lápiz para leer un documento de variaspáginas.
Figura 17. Los dispositivos con pantalla auxiliar podrán explotar las características deWindows SideShow.
22-31 Middleware.qxd 20/12/06 12:22 Página 29
SOLO PROGRAMADORES nº 145
El inconveniente que presenta, y que es
inherente a las tecnologías de reconoci-
miento del lenguaje natural, es que el
sistema requiere de un entrenamiento
para ofrecer tasas de reconocimiento
aceptables. En este sentido, después de un
entrenamiento guiado por un asistente
(proceso que puede llevarnos entre una
hora y dos horas), el sistema empezará a
reconocer nuestra voz. Sin embargo, sí es
posible afirmar que el sistema funcionará
cada vez mejor, puesto que en cada sesión
de interacción mediante voz el sistema
aprenderá de nuestra forma de hablar,
consiguiendo así mejores resultados cada
vez que usemos el reconocedor.
Además, Windows Vista también incorpora
un sistema de síntesis de voz, por lo que el
sistema no solo está preparado para escu-
char, sino que también podrá hablar.
WinFX
WinFX es el nombre que recibe el nuevo
modelo de programación en el que se
basarán las nuevas aplicaciones creadas
para funcionar sobre Windows Vista.
WinFX incluye a la plataforma .NET y, ade-
más, incorpora Cuatro módulos cuya fun-
cionalidad se detallará a continuación. Sin
embargo, aquí va un avance:
� WWiinnddoowwss PP rreesseennttaa tt ii oonn FFoouunn
ddaatt iioonn ((WWPPFF)) :: Proporciona las clases
� WWiinnddoowwss WWoorrkk ff ll ooww FFoouunnddaatt ii oonn
(( WW FF )) :: Propone un modelo de
programación, así como un conjunto
de herramientas, que facilitará el
modelado de procesos empresariales,
así como el desarrollo de aplicacio-
nes basados en ellos.
El objetivo de WinFX es ofrecer un marco
de desarrollo coherente, que permita
crear aplicaciones que ofrezcan experien-
cias de usuario gratificantes y que pue-
dan explotar al máximo las virtudes del
sistema operativo Windows Vista.
Según se afirma desde Microsoft, las nue-
vas características de WinFX permitirán
abrir la puerta a nuevos tipos de aplica-
ciones, muy difíciles de concebir e imple-
mentar en las versiones anteriores de
Windows.
Windows Presentation FoundationWPF es el subsistema encargado de todo
lo relativo a la presentación en Windows
Vista. Como programadores, nos interesa-
rá usar WPF en nuestros desarrollos, ya
que nos permitirá crear interfaces de
usuario nunca vistas hasta ahora, que
podrán combinar 2D con 3D, incluir docu-
mentos, gráficos vectoriales, vídeo, audio
y, como gran novedad, voz.
XAML es la piedra angular de este subsis-
tema, ya que permite separar de forma
definitiva los elementos de interfaz de
usuario de la lógica de la aplicación.
Gracias a esto, la interfaz de usuario
podrá ser desarrollada de manera íntegra
por un equipo de diseñadores, siendo
mínima la colaboración necesaria entre
estos y los programadores. Sólo
Programadores ya dedicó en su día una
extensa serie de artículos a esta tecnolo-
gía. Sin embargo, prometemos profundi-
zar más en ella, por lo que esperamos
poder ofrecer, en breve, más artículos en
esta línea.
InfoCardConscientes de los peligros existentes en
la Red, sobre todo en lo relativo a la
suplantación de la identidad (phishing),
Microsoft ha desarrollado una tecnología
que vendrá incluida en WinFX, cuyo nom-
bre en clave es “InfoCard”, gracias a la
cual, entre otras cosas, podremos prescin-
dir del sistema de identificación de usua-
rio por excelencia: usuario/contraseña.
“InfoCard” basa su funcionamiento en
tarjetas de identidad (credenciales) que el
usuario final podrá adquirir en centros de
confianza (bancos, empresas, institucio-
nes públicas, etc.) para luego usar en sus
transacciones. El objetivo no es otro que
proporcionar experiencias de usuario más
seguras y cómodas.
Windows Communication FoundationWindows Communication Foundation es
uno de los pilares de WinFX. Es la infraes-
tructura de comunicaciones que nos per-
mitirá, a nosotros los desarrolladores,
programar aplicaciones distribuidas
seguras, estables y orientadas a servicios
(SOA). Windows Communication Foun
dation se apoya en tecnologías ya cono-
cidas y probadas como Enterprise
Services, System Messaging, .NET
Remoting, ASMX y WSE, y añade a todo
ello la compatibilidad con REST, RSS y los
protocolos de servicios web WS-* entre
muchos otros.
Windows Workflow FoundationEn el subsistema Windows Workflow
Foundation encontraremos tanto las
herramientas, como el motor, como el
modelo de programación necesario para
crear soluciones basadas en los procesos
de negocio particulares de cada momento.
El objetivo de un subsistema como este no
es otro que el permitir a las empresas y a
los fabricantes de software (ISV) diseñar
con más facilidad software capaz de
modelar negocios que están en constante
evolución.
Y también .NETComo se ha visto, WinFX incorpora una
serie de funcionalidades orientadas exclu-
sivamente a programadores, y repartidas
en los cuatro subsistemas vistos anterior-
mente. Sin embargo, además, WinFX tam-
bién incluye .NET framework, quedando
así un entorno tecnológico absolutamen-
te completo.
Conclusiones
Con este artículo hemos pretendido dar
una visión global del nuevo sistema ope-
rativo de Microsoft: Windows Vista.
Como se ha dicho, las novedades son
muchas, y van orientadas tanto a los
usuarios finales, como a los desarrolla-
dores de software. Como profesionales
de este sector, y teniendo en cuenta la
cuota de mercado que acaparan los pro-
ductos de Microsoft, estamos obligados
a conocer, como mínimo, todas y cada
una de las prestaciones de esta
nueva plataforma. Esperemos que este
artículo haya servido como punto de
partida.
30
MIDDLEWARE
http://digital.revistasprofesionales.com
22-31 Middleware.qxd 20/12/06 12:22 Página 30
Suscripción a Mundo Linux y Sólo ProgramadoresSUSCRIPCIÓN PARA ESPAÑA�Opción A: Suscripción anual con 35% descuento:
69,90 euros* (9 revistas gratis, 50,19 euros de ahorro)�Opción B: Suscripción anual con 15% descuento:
91,42 euros* (1 tapa de regalo de cada revista, 21,61 euros de ahorro)*10 euros de gastos de envío para la opción contrareembolso
SUSCRIPCIÓN PARA EXTRANJERO�Opción C: Suscripción anual con 35% descuento
96,91 euros (gastos de envío incluidos)FORMA DE PAGO EXTRANJERO:� VISA + fecha de caducidad
FORMAS DE PAGO PARA ESPAÑA� Contrareembolso (10 euros gastos de envío)� Giro Postal a Revistas Profesionales, S.L.� Transferencia al Banco Popular:
c.c:0075/1040/43/0600047439� Talón Bancario a nombre de Revistas Profesionales� Domiciliación Bancaria� VISA + fecha de caducidad
REGALO DE 2 CD-ROMs CON LOS ARCHIVOSDE LOS 12 EJEMPLARES
DE LA TEMPORADA 2004-05 DE MUNDO LINUX Y SOLO PROGRAMADORES
Solicitud de suscripciones y más información en el teléfono 91 304 87 64, en el fax 91 327 13 07y en [email protected]
22-31 Middleware.qxd 20/12/06 12:22 Página 31
SOLO PROGRAMADORES nº 145 32
REDES
http://digital.revistasprofesionales.com
Mecanismos de cache en ASP.NET 2.0 (I)
Introducción
Antes de la llegada de ASP.NET, si queríamos
cachear contenidos para optimizar el rendimien-
to de nuestras aplicaciones no teníamos más
alternativa que “currarnos” nuestro propio siste-
ma de cache, usando lo que teníamos más a
mano. Bien usando variables de sesión, de apli-
cación o incluso guardando contenidos en el
disco la primera vez que eran generados. Por
supuesto, no contábamos con más ayuda, así
que toda la lógica de control sobre los conteni-
dos cacheados también recaía sobre nosotros. Si
necesitábamos que estos expirasen pasado un
tiempo o ante una determinada condición, tení-
amos que añadir código adicional a nuestros
desarrollos.
Afortunadamente, llegó ASP.NET y, con él, un
nuevo mecanismo para cachear contenidos
completamente integrado en el framework. Por
fin cachear contenidos iba a ser fácil y producti-
vo. Además con todas las facilidades del mundo:
� Cache de páginas web completas, o sólo de
algunas partes.
� Cache de objetos (¡cualquier clase de
objeto!).
� Caches que se pueden anular por si solas
pasado un tiempo, cuando cambien deter-
minados datos, e incluso ante cambios en la
base de datos (novedad en .NET 2.0).
Y por si todo esto no nos basta, siempre pode-
mos ampliar el mecanismo de cache de ASP.NET
con otros desarrollados por terceros.
¿Cuándo debemos cachear?
La respuesta no es sencilla. Por supuesto habrá
escenarios donde no sea posible cachear conteni-
dos, pero lo normal es que sí podamos. ¿Candidatas
perfectas? Páginas de acceso frecuente, en las que
su contenido no necesite estar actualizado al
segundo, donde la generación de la página lleve
cierto tiempo y recursos, y donde el contenido de la
página sea válido para multitud de usuarios. Esto
es importante: el contenido guardado en cache, a
diferencia del que se almacena en la sesión de
usuario, es válido para todos y cada uno de los
usuarios del sistema. Por tanto, ¡prohibido guardar
en cache una página que contenga datos de un
usuario en particular!
Un ejemplo de página perfecta para ser cacheada:
la página principal del diario El Mundo
(www.elmundo.es). Es una página bastante pesada
(en torno a 700kb), donde seguramente haya dece-
nas o cientos de accesos a la base de datos por
cada petición, y que sin dudarlo debe de ser una de
las páginas más accedidas de España. Su conteni-
do no necesita estar actualizado al segundo. No
pasa nada si una noticia se publica y tarda 10, 15,
o 30 minutos en aparecer. Bastaría con cachear la
página principal durante 30 minutos para reducir
los accesos a la base de datos en miles de veces. Y
si surge una noticia de máxima urgencia, siempre
se puede vaciar la cache manualmente. O incluso
reducir el tiempo de expiración de la misma a 5
minutos. Aún con tan poco tiempo, los resultados
serán más que apreciables, incrementando por
tanto la capacidad de nuestro servidor web para
servir páginas (ver figura 1).
También hay ocasiones donde es no es convenien-
te cachear. Por ejemplo, páginas con pocos accesos,
páginas muy dinámicas cuyos contenidos varíen en
función del usuario, páginas que no accedan a la
base de datos, o aquellas donde sea imprescindible
que la información este siempre actualizada.
Lo cierto es que incluso en estos escenarios “adver-
sos” siempre hay algo que se puede cachear. Por
ejemplo, en una página específica para un usuario
puede que algunas secciones sean comunes a
todos (las últimas noticias, la lista de noticias más
leídas, etc.). En este caso bastaría con aplicar el
JUAN LUIS CEADA RAMOS
Mecanismos de cache enASP.NET 2.0 (I)
Con este artículo iniciamos unaserie en la que abordaremos uno delos aspectos más potentes deASP.NET 2.0: la cache. Gracias alos mecanismos de cache ofrecidospor el framework .NET, podremosmejorar el rendimiento de nuestrasaplicaciones web de una manerarápida y sencilla.
Figura 1. Incluso con caches de 1 segundo de duración se obtienen mejoras en lacapacidad de respuesta del servidor web. Fuente: http://aspalliance.com/251.
Figura 2. Una página que es perfecta para cachear: www.elmundo.es.
30-36 Redes cache 20/12/06 14:51 Página 33
SOLO PROGRAMADORES nº 145 34
REDES
http://digital.revistasprofesionales.com
beneficiar de la cache, puesto que la página
cacheada sólo sería visible para el usuario en
cuestión (es lo que se conoce como cache pri-
vada). Por supuesto, al delegar el almacena-
miento en la máquina del usuario no podemos
garantizar que se vayan a cachear los datos,
porque en la mayoría de los navegadores se
puede desactivar el uso de páginas cacheadas.
Sobre el atributo “DiskCacheable” no hay
mucho que decir, salvo que lo encontraréis en
multitud de documentación pero en realidad
no funciona. Se “cayó” de ASP.NET con el cam-
bio de la versión Beta 2 a la versión final. Según
Insertando elementos en la cacheComo hemos dicho, asignar un objeto a la
cache es tan simple como hacer
“Cache[“clave”]=objeto”. Sin embargo, de
esta forma no estaremos aprovechando la
potencia de este objeto. Para ello tendre-
mos que recurrir a los métodos “Add” e
“Insert”. Aunque por el nombre pudiera
parecer que su cometido es el mismo, lo
cierto es que hay una sutil diferencia.
Mientras que el método “Add” sólo inserta
nuevos elementos en la cache, el método
“Insert” es capaz de insertar nuevos ele-
mentos, así como modificar los ya existen-
tes. Por tanto este código:
Cache.Add(“clave”, “prueba”);
Cache.Add(“clave”, “otra prueba”);
Response.Write((string)Cache[“clave”]);
devolvería como resultado la cadena “prue-
ba”, mientras que este otro:
Cache.Add(“clave”, “prueba”);
Cache.Add(“clave”, “otra prueba”);
Response.Write((string)Cache[“clave”]);
devolverá la cadena “otra prueba”.
El método “Add” tiene una única sobrecar-
ga, cuyos parámetros coinciden con una de
las sobrecargas más completas del método
“Insert”. Tiene el siguiente interfaz:
public Object Add (
string key,
Object value,
CacheDependency dependencies,
DateTime absoluteExpiration,
TimeSpan slidingExpiration,
CacheItemPriority priority,
CacheItemRemovedCallback
onRemoveCallback
)
El parámetro key nos permitirá especificar
una clave para los datos que vamos a intro-
ducir en la cache. Esta clave nos permitirá
acceder al contenido cacheado en cual-
quier momento, y debe ser única. El pará-
metro “value” es de tipo “Object”, y en él
pasaremos el objeto que queramos cachear.
Puesto que es de tipo “Object” admitirá que
le asignemos cualquier cosa que se nos
ocurra.
El parámetro “dependencies” nos permite
asociar una o más dependencias entre el ele-
mento insertado y uno o varios elementos
externos, de tal forma que cuando dichos
elementos “externos” cambien, la cache se
invalidará. Veremos más sobre dependencias
en una próxima entrega.
El parámetro “absoluteExpiration” nos permi-
tirá indicar un tiempo de caducidad para la
entrada en cache. Tiene que ser un tiempo
absoluto. Por ejemplo, dentro de 10 segun-
dos (DateTime.Now.AddSeconds(10)) o
dentro de 2 horas (DateTime.Now.
AddSeconds(7200)). A diferencia de este, el
parámetro “slidingExpiration” nos permitirá
indicar un tiempo de expiración relativo. Si
indicamos 60 segundos, la cache expirará 60
segundos después del último acceso. Así que
si hubiese un acceso cada 30 segundos (por
ejemplo) la cache nunca expiraría. Estos dos
parámetros no se pueden usar a la vez. Por
tanto, si usamos “absoluteExpiration”, el otro
parámetro deberá tener el valor
“Cache.NoSlidingExpiration”. Si usamos
“slidingExpiration”, el otro deberá tener como
valor “Cache.NoAbsoluteExpiration”. Nota:
para poder hacer uso de estos y otros enu-
merados relacionados con el objeto cache
tendréis que incluir la sentencia:
using System.Web.Caching;
en vuestras páginas. El parámetro “priority”
nos permite indicar qué prioridad tendrá el
elemento cacheado. La prioridad se utiliza
para decidir qué objetos se liberan en pri-
mer lugar en caso de que el servidor ande
bajo de recursos y tenga que liberar memo-
ria. A mayor prioridad, más tiempo perma-
necerá el contenido en cache. El rango de
prioridades lo marca la enumeración
“CacheItemPriority”, y va desde “Low” hasta
“NotRemovable”.
Y por último, el parámetro “onRemove
Callback” nos permite indicar un delegado
opcional, de tal forma que si un objeto se
elimina de la cache (voluntaria o involunta-
riamente) se llamará a la función delegada
para notificarnos dicho evento. La función
tiene que ser de tipo “CacheItem
RemovedCallback”, y por tanto tendrá este
interfaz:
public delegate void
CacheItemRemovedCallback (
string key,
Object value,
CacheItemRemovedReason reason
)
Un ejemplo de uso del método “Add” (y por
analogía del “Insert”) podría ser el que se
muestra en el listado 3.
En este caso, cuando la cache expire pasa-
dos 5 segundos, esta se volverá a regenerar,
pero puesto que no volvemos a indicar fun-
ción callback, la regeneración sólo se lleva-
rá a cabo una vez.
Borrando elementos de la cachePara borrar un elemento de la cache basta-
rá con hacer:
Cache.Remove[“clave”]
Esto sería un borrado explícito. Habría un
borrado implícito si el servidor necesita
liberar memoria o si expira la entrada de
cache. Ya hemos visto cómo estar prepara-
dos para esta eventualidad: o bien regene-
ramos la cache ayudándonos de funciones
callback, o antes de extraer un elemento de
la cache comprobamos que este no es nulo.
Conclusiones
Aprender a manejar la cache conveniente-
mente puede suponer grandes mejoras en
el rendimiento de nuestras aplicaciones
web. En la próxima entrega veremos cómo
manejar aún más eficientemente los datos
en cache gracias a las dependencias, que
nos permitirán establecer relaciones entre
la cache y ciertos elementos, de tal forma
que la cache expirará automáticamente
ante determinados eventos.
38
REDES
http://digital.revistasprofesionales.com
Figura 7. Tabla comparativa de ladiferencia de rendimiento entre el uso delcache de ASP.NET y el Kernel Mode Cache.
30-36 Redes cache 20/12/06 14:51 Página 38
● Mobile Web Controls de ASP.NET● Un OCR para el reconocimiento de dígitos decimales● Web Semántica● Programando Mash-ups Web 2.0 con Google y Yahoo APIs (I)● Aplicaciones de voz con C#● Aplicaciones web 100% Java con Google Web Toolkit ● Web Parts en ASP.NET 2.0● Aplicaciones J2EE con JSF● Indigo, una plataforma orientada a servicios
39 publicidad foro 19/12/06 12:15 Página 1
SOLO PROGRAMADORES nº 145 40
REDES
http://digital.revistasprofesionales.com
JavaScript Orientado a Objetos (I)
Introducción
A la hora de crear sites y servicios web, cada día
es mayor el uso de AJAX así como de interfaces
avanzadas y modernas, que sacan el mayor par-
tido posible al DOM, JavaScript, CSS, etc. En con-
creto, el lenguaje JavaScript ha dejado de ser
algo “menor” para convertirse en el centro y la
herramienta con la que desarrollar aplicaciones
web complejas como las que ofrecen GMail o
Flickr, por citar dos ejemplos. En la presente serie
de artículos se expondrán los fundamentos de
una programación JavaScript realmente moder-
na y Orientada a Objetos. El objetivo es dejar
atrás las prácticas que se podrían denominar del
tipo “document.write” para dar paso a otras
mucho más potentes y avanzadas, con creación
de objetos, interfaces, manejo de eventos, etc.
Para el desarrollo de los ejemplos se utilizará
Eclipse (www.eclipse.org). Además, existe un
plug-in gratuito para Eclipse con el que se pue-
den programar scripts de JavaScript con algunas
de las ventajas típicas de cuando se desarrolla en
Java: función de autocompletar, sintaxis de colo-
res, etc. El plug-in se denomina JSEclipse y puede
descargarse gratuitamente de www.interaktonli
ne.com/Products/Eclipse/JSEclipse. La instalación
es bastante sencilla siguiendo las instrucciones
que aparecen el site.
Objetos en JavaScript
En JavaScript, la palabra reservada “function” se
usa para crear un objeto además de para crear
funciones, como es lógico:
function Cookie(sName, sValue, sPath,
sDomain, dExpires)
{
...
}
Teniendo en cuenta la definición anterior, los
objetos se crean tal y como se muestra seguida-
mente:
ADOLFO ALADRO GARCÍA
JavaScript Orientado a Objetos (I)
Con el movimiento denominadoWeb 2.0 comienza a extenderse másque nunca el concepto de aplicaciónWeb frente a la visión tradicional depáginas que llevan a páginas que...En el centro de este cambio estánlas tecnologías como AJAX.JavaScript juega un papelprotagonista también. Pero ya no sehabla de aquel viejo JavaScript de“document.write”, sino de métodos,propiedades, prototipos, etc., esdecir, de un verdadero lenguaje deprogramación moderno.
Sitio web del plug-in para Eclipse llamado JSEditor.
30-34 Redes JS 20/12/06 15:01 Página 40
SOLO PROGRAMADORES nº 14541
REDES
http://digital.revistasprofesionales.com
JavaScript Orientado a Objetos (I)
var oCookie = new Cookie(“test”, “1”, null,
“.spp.com”, new Date());
En términos de programación Orientada
a Objetos, se diría que la función o el
procedimiento anterior es el constructor
del objeto. Los parámetros de la función
son los parámetros del constructor. La
palabra reservada “new” crea una nueva
instancia y la asigna a la variable
“oCookie”. En JavaScript las variables no
tienen tipo a priori. La palabra reservada
“var” permite definir la variable. A este
respecto es preciso observar que usar
“var” no es estrictamente necesario. En
muchos scripts, especialmente los anti-
guos, “var” no se usa con frecuencia.
Cuando esto ocurre, afecta principal-
mente al ámbito de la variable, que pasa
a ser una variable global. Por esta razón
es siempre conveniente usar la palabra
“var” cuando se quiere crear una varia-
ble, fijando claramente de entrada el
ámbito de la variable.
El cuerpo del constructor sirve funda-
mentalmente para dos cosas. La primera
es lo que tradicionalmente se hace en los
constructores: inicializar los atributos
del objeto. La segunda es definir el obje-
to. A continuación se muestra cómo:
this.sName = sName;
this.sValue = sPath;
this.sDomain = sDomain;
this.dExpires = dExpires;
this.toString = function()
{
...
}
Atributos de los objetosLa palabra reservada “this” se emplea para
fijar el ámbito. Cuando en el cuerpo de
“function Cookie() {...}” se utiliza “this”,
significa que se está haciendo referencia
a un atributo de esa función, o más pro-
piamente se diría que de ese objeto. Así
por ejemplo, el uso de “this.sName” indica
que el objeto tendrá un atributo “sName”.
En realidad “this.sName = sName” lo que
hace es crear el atributo “sName” y des-
pués asignarle el valor del parámetro
“sName”. Si un atributo no existe, y se
hace algo del tipo “this.xxx = 3”, en ese
momento se crea el atributo “xxx” con un
valor igual a “3”. Es decir, lo atributos pue-
den crearse, y no sólo asignarse, durante
todo el ciclo de vida de un objeto.
MétodosEn el cuerpo de “function Cookie() {...}”
también se crea un método del objeto. Se
hace de una forma muy parecida a la crea-
ción, y asignación, de los atributos.
this.toString = function()
{
...
}
El nombre del método, “toString” en este
caso, acompaña a la palabra reservada
“this”. En realidad es como si se definiera un
atributo con la salvedad de que el valor que
le es asignado es en realidad una función,
declarada mediante el uso de la palabra
reservada “function”.
De lo anterior se deduce que después de
crear una instancia del objeto se puede
hacer en cualquier momento:
alert(oCookie.toString());
Si el método tuviera que recibir parámetros,
estos aparecerían en la definición:
this.toString = function(sCharEcoding)
{
...
}
El inconveniente principal que presenta
este método de creación de objetos es que
cada vez que se ejecuta una sentencia del
tipo “var oCookie = new Cookie()”, en el
caso de los métodos en realidad se están
creando funciones nuevas “toString”.
Ello da pie a otra forma de crear objetos en
el lenguaje JavaScript y que consiste
en el empleo de la palabra reservada
“prototype”.
Definición de objetos con prototype
La palabra reservada “prototype” permite escri-
bir, y en algunos caso reescribir, la definición
misma de un objeto en JavaScript. Usándola en
la implementación del objeto “Cookie” queda-
ría tal y como se muestra a continuación:
function Cookie(sName, sValue, sPath,
sDomain, dExpires)
{
...
Cookie.prototype.toString
= function()
{
...
}
}
Sin embargo, lo anterior no resuelve el hecho de
que cada vez que se crea una nueva instancia
del objeto “Cookie” se está creando y asignan-
do una nueva función. Una de las formas más
sencillas de evitar lo anterior es la siguiente:
function Cookie(sName, sValue, sPath,
sDomain, dExpires)
{
...
if (Cookie._initialized == undefined) {
Cookie.prototype.toString = function()
{
...
}
}
Cookie._initialized = true;
}
Especificación del lenguaje ECMA-262, que es la base del lenguaje JavaScript.
30-34 Redes JS 20/12/06 15:01 Página 41
SOLO PROGRAMADORES nº 145 42
REDES
http://digital.revistasprofesionales.com
La primera vez que se ejecute el constructor (la
función “Cookie”) el atributo “_initialized” ni
siquiera estará definido. Entonces se crean los
métodos del objeto que, una vez definidos no es
necesario redefinir, y que son compartidos por
todas las instancias de la “clase”. Al finalizar la
tarea anterior se asigna al atributo “_initialized”
el valor “true”, de forma que más adelante
nunca más se vuelven a crear y asignar los
métodos. El caso anterior muestra una de las
formas mejores y más optimizadas para definir
y crear objetos en JavaScript.
Prototype y la redefición de objetosestándarAlgunos navegadores, como Firefox, permi-
ten acceder a la propiedad “prototype” de
los objetos estándar. Normalmente muchas
de las propiedades y métodos de estos
objetos no pueden modificarse por razones
de seguridad. En cambio sí que es posible
extender la funcionalidad de estos objetos,
tarea que con frecuencia hay que realizar
cuando se desarrollan aplicaciones web que
deben funcionar en varios navegadores dis-
tintos.
Por ejemplo, Internet Explorer implementa el
método “insertAdjacentElement” para los
elementos de una página web. Dado un ele-
mento de la página, este método permite
insertar otro elemento en distintas posicio-
nes. El navegador Firefox no implementa este
método, pero utilizando la propiedad “pro-
totype” resulta fácil emularlo.
El primer paso consiste en detectar si el
navegador reconoce el elemento
“HTMLElement”, que es el tipo base de todos
los elementos de una página. Para ello se
emplea el operador “typeof” de JavaScript.
if(typeof HTMLElement!=”undefined” && !
HTMLElement.prototype.insertAdjacent
Element) {
...
}
El segundo paso consiste en verificar la
existencia del método “insertAdjacent
Element” en el prototipo del objeto. Si la
condición primera se cumple, así como esta
segunda, entonces ese script está ejecután-
dose en un navegador que no implementa
el método “insertAdjacentElement” pero
que al mismo tiempo permite acceder a la
propiedad “prototype” de los elementos
estándar.
El bloque dentro de la sentencia “if” ante-
rior comienza con la creación y asignación
del método “insertAdjacentElement”,
siguiendo el mismo proceso que el descrito
en el ejemplo anterior con el objeto
“Cookie”, es decir, accediendo a la propie-
dad “prototype”:
HTMLElement.prototype.insertAdjacent
Element = function (where,parsedNode)
{
...
}
El método recibe dos parámetros. El prime-
ro es una cadena de texto indicando la
posición con respecto al elemento donde va
a insertarse el nuevo elemento. El segundo
parámetro es el elemento a insertar. El
código fuente del método se muestra en el
listado 1.
El propósito de este método es emular
fielmente la funcionalidad que imple-
menta Internet Explorer, y que podemos
ver en la documentación que se encuen-
tra en msdn.microsoft.com/workshop/
author/dhtml/reference/methods/inser-
tadjacentelement.asp. El parámetro
“where” indica dónde va a insertarse el
nuevo elemento con respecto al elemen-
to cuyo método se ejecuta:
� bb ee ff oo rr ee BB ee gg ii nn: El nuevo elemento
FORMAS DE PAGO� Giro Postal a nombre de REVISTAS PROFESIONALES, S.L. � Talon Bancario a nombre de REVISTAS PROFESIONALES S.L. � Domiciliación Bancaria � Contra Reembolso (5€ de gastos de envio por paquete)
� Tarjeta de crédito _ _ _ _/ _ _ _ _/ _ _ _ _/ _ _ _ _/ Fecha de caducidad: Extranjero: Gastos de envio 5€ por paquete. Unica forma de pago tarjeta de crédito (VISA, Mastercard, American Express,...)
144 - Diciembre 2006Google compra YouTube, creación de
un Mash-up combinando datos de
Google Maps, Yahoo! Weather RSS y
Google Translation, técnicas avanzadas
de manipulación y almacenado de imá-
genes con Java 2D, programación el
patrón modelo-vista-controlador desde
Java EE, localización geoespacial con
Google Maps, técnicas profesionales
para la personalización del asistente de
instalación de nuestra aplicación, algo-
ritmo Mínimax, la Web Semántica y
mucho más. 1 CD-ROM incluido.
143 - Noviembre 2006
142 - Octubre 2006Desarrollo de aplicaciones de escritorio
.NET que pueden ser gobernadas por el
usuario mediante comandos de voz,
introducción al API Java 2D, despliegue
de aplicaciones ASP.NET en Linux en 10
minutos, primera entrega del curso
centrado en la programación Java EE
desde cero, metodologías de desarrollo
(tradicionales vs. ágiles), estrategias
avanzadas en Robocode y mucho más.
1 CD-ROM incluido.
141 - Septiembre 2006
Introducción a la programación de robots
con Robocode, programación de aplica-
ciones móviles con Bluetooth, análisis
profundo del nuevo framework Google
Web Toolkit para la programación de
aplicaciones web 100% Java, Concurrent
Verson Control, 8 trucos de ASP.NET para
lucirse en la empresa, desarrollo de Web
Parts propios y la tercera entrega de
nuestro coleccionable dedicado a Visual
Studio. 1 CD-ROM incluido.
140 - Agosto 2006Si te falta algún número de la
temporada, ahora tienes laoportunidad de conseguirlo
Precio Oferta descuentoPrecio por ejemplar: 6€
1 a 10 = 10% dto. / 11 a 20 = 20% dto.21 a 30 = 30% dto. / 31 a 40 = 40% dto.
+40 = 50%
Programando Mash-ups Web 2.0 para
crear aplicaciones que integran datos de
Google y de Yahoo!, filtrado de imágenes
con la API Java 2D, cómo ampliar la fun-
cionalidad de nuestro servidor web IIS,
interfaces de usuario basadas en la
JavaServer Pages Standard Tag Library
(JSTL), qué aportan las metodologías de
desarrollo, generando un empaquetado
del tipo "setup.exe" para distribuir nues-
tras aplicaciones a los usuarios finales y
mucho más. 2 CD-ROM incluidos.
Zune, la gran apuesta de Microsoft, Java
Goes Open Source, SIMO 2006,
Microsoft Tech Ed: Developer 2006,
interoperatividad entre Java, Mono y
.NET, programando Mash-ups Web 2.0
con Google y Yahoo! APIs (y III), progra-
mando Java EE esde cero (y IV), exten-
siones AJAX para ASP.NET (I), la Web
Semántica (y II), un OCR para el recono-
cimiento de dígitos decimales y mucho
más. 1 CD-ROM incluido.
45 atrasados.qxd 19/12/06 12:27 Página 1
SOLO PROGRAMADORES nº 145 46
REDES
http://digital.revistasprofesionales.com
Introducción
En el artículo anterior te mostré cómo surgió,
además de cómo se instala y funcionan las
extensiones de AJAX para Microsoft ASP.NET. En
esta segunda parte realizaremos un viaje de
mucho más bajo nivel, ya que cubriré los dife-
rentes controles y técnicas indispensables para
que puedas construir aplicaciones del nuevo
paradigma. Si la entrega pasada fue la base del
funcionamiento, esta será el comienzo de tu vida
y obra en lo que a Microsoft AJAX respecta.
Analizaremos el detalle de la instalación así
como la utilización de las propiedades del lado
del servidor y los eventos en el explorador (clien-
te). Dejaré para la tercera y última parte la crea-
ción de un componente personalizado AJAX, esto
es, tu propio control, así como el uso de XML-
Script y servicios web. Pero no deseo marearte,
por lo que vamos a comenzar por el principio, o
al menos, el principio de este artículo, en donde
me explayaré sobre los distintos paquetes dispo-
nibles para las extensiones.
Paquetes de AJAX... una de las partes más confusas
Si leíste la entrega anterior sabrás que las exten-
siones de Microsoft AJAX son un conjunto de
tecnologías que se integran con ASP.NET y que
permiten ejecutar código que resida en el servi-
dor sin necesidad de refrescar los elementos de
la interfaz gráfica, más allá de los datos en sí
(uffhh! esta definición suena demasiado larga,
pero bueno... no te preocupes, veremos cómo es
todo este asunto a lo largo del artículo). A su vez,
se hace uso extensivo de JavaScript y hojas de
estilo para brindar una interfaz gráfica mucho
más interactiva (arrastrar y soltar, estirar contro-
les, IntelliSense basada en un servicio web, etc.).
Como característica adicional, se agrega un
nuevo tipo de proyecto a Visual Studio 2005, el
que ofrece los flamantes componentes en la
barra de herramientas.
Sin embargo si vas a la página oficial de
Microsoft AJAX (ajax.asp.net) verás que existen
varias instalaciones disponibles, lo que puede
resultar un poco confuso. Es por ello que la tabla
1 muestra las distintas opciones y su aplicación.
Es importante que la leas atentamente antes de
continuar, ya que esto te ahorrará más de una
futura confusión.
Trabajando con lo esencial
La infraestructura provee el bloque fundamental
para todo proyecto ASP.NET que desee contar
con características AJAX, por lo que deberás
bajar e instalar el paquete si quieres implemen-
tar los ejemplos aquí incluidos. La instalación es
muy sencilla, ya que solamente requiere ejecutar
el binario y aceptar todos los pasos allí propues-
tos (ve al siguiente hipervínculo para obtener el
paquete):
http://go.microsoft.com/fwlink/
?LinkID=77296
Una vez hecho esto, puedes verificar si todo ha
ido bien abriendo Visual Studio 2005. Allí nota-
ERICH BÜHLER
En esta segunda entrega nossumergiremos de lleno en el mundoAJAX, y aprenderemos losparadigmas de programación quedeben seguirse, así como loscontroles proporcionados por lasextensiones AJAX para ASP.NET.
Extensiones AJAX para ASP.NET (II)Extensiones AJAX para ASP.NET (II)
Figura 1. Proyecto AJAX en Visual Studio.
Figura 2. Controles para AJAX en Visual Studio.
46-52 Redes ajax 20/12/06 15:10 Página 46
SOLO PROGRAMADORES nº 14547
REDES
http://digital.revistasprofesionales.com
Extensiones AJAX para ASP.NET (II)
rás una nueva plantilla de proyecto llama-
da ASP.NET AJAX-Enabled (ver figura 1).
Basta entonces con hacer doble clic en
esta para que tu travesía al nuevo mundo
comience.
A simple vista la solución web luce similar
a cualquier otra con la que te hayas cruza-
do anteriormente, pero sin embargo, exis-
ten 2 diferencias importantes. La primera
es que se adiciona una referencia a la
biblioteca “Microsoft.Web.Extensions”.
Como podrás imaginar, ella no es más que
el núcleo de funcionalidades AJAX. La
segunda (y quizá más notoria) es que se
inserta una nueva ficha llamada “AJAX
Extensions” dentro de la barra de herra-
mientas. Podrás encontrar allí 5 nuevos
controles, similares a los que se exhiben en
la figura 2.
Si abres el formulario web predeterminado
observarás que un nuevo componente lla-
mado “ScriptManager” es inyectado en la
parte superior. Obvia este elemento por
unos instantes, ya que lo veremos de aquí
a unas líneas de distancia...
Si bien todos los nuevos integrantes de la
barra de herramientas exhiben el gráfico
de engranaje, estos se emplean para dife-
rentes tareas, las que están lógicamente
relacionadas a potenciar las característi-
cas de la interfaz gráfica o su funcionali-
dad. No existen más diferencias, por lo que
si ejecutas la aplicación, deberías obtener
un comportamiento normal, esto es, una
página en blanco.
Te mencioné anteriormente que el núcleo
de AJAX se llama “Microsoft.Web.
Extensions”. Como información sana de
saber, es bueno que conozcas dónde se
encuentra. Esto te permitirá agregar AJAX a
un proyecto estándar de ASP.NET:
C:\Archivos de Programa\Microsoft
ASP.NET\ASP.NET 2.0 AJAX
Extensions\<versión>
Si tienes un segundo, navega a la carpeta y
observa el contenido de la misma. Por ejem-
plo, la referencia a “Microsoft. Web.
Extensions” apunta a un archivo de igual
nombre, el que es una biblioteca (ensambla-
do) de la plataforma .NET. Ella es la que se
inserta dentro de la barra de herramientas;
puedes como práctica inicial eliminar la ficha
creada por AJAX y agregar una nueva, arras-
trando y soltando este archivo. El resultado
final debería devolverte los 5 controles.
Ha llegado el momento de que hagamos un
breve recorrido por los distintos elementos
de la nueva ficha (tabla 2). A lo largo de este
artículo me encargaré de desvelarte el miste-
rio de cada uno en forma más extensa.
Donde todo comienza...ScriptManager
Debes adicionar un control de este tipo en
toda página donde quieras utilizar los com-
ponentes o características AJAX. Si no lo
haces, entonces será un formulario web
estándar en vez de uno mejorado:
<asp:ScriptManager
ID=”ScriptManager1” runat=”server” />
Como su nombre lo indica, “ScriptManager”
administra el código script que será necesario
inyectar en la página para que ella ofrezca las
características de la nueva infraestructura.
Por el sólo hecho de dibujar el control estarás
ganando las siguientes funcionalidades:
11 .. Infraestructura AJAX en el explorador
para que funcionen los restantes com-
ponentes de las extensiones.
22 .. Que una página pueda refrescar la
información de los controles sin necesi-
dad de actualizar el formulario web en
su totalidad.
33 .. Adicionar cualquier script que tú hayas
escrito para que sea enviado al explora-
dor cada vez que se acceda al formula-
rio (ver la propiedad “Scripts” en la tabla
3).
44 .. Clases proxy que simplifican la invoca-
ción de servicios web desde código
Script escrito en el explorador.
55 .. Posibilidad de autenticar un usuario
antes de invocar a un servicio web, así
como también utilizar la información de
perfil referente al mismo.
De más está decirte que si tienes la
intención de hacer uso de alguno de los
restantes 4 controles, el primer paso será
entonces el soltar este elemento en la
página; de no hacerlo obtendrás un
error en tiempo de ejecución. La tabla
3 contiene alguna de las propiedades
de “ScriptManager”, que pueden
TABLA 1. Paquetes de AJAX para ASP.NETPPaaqquueettee
ASP.NET AJAX
ASP.NET AJAX CTP
AJAX Control Toolkit
AJAX Control Extender
Microsoft AJAX Library
DDeessccrr iippcciióónn
Esta es la infraestructura en sí, deberás instalarla para tener acceso al resto.
CTP es un agregado para Microsoft AJAX que adiciona algunos controles (WebParts, WebProfile,
etc.) y que se enmarca dentro de la iniciativa de Software abierto de Microsoft.
Ofrece alrededor de 25 controles que se enmarcan dentro de la iniciativa de Software abierto de
Microsoft.
Agrega un nuevo tipo de proyecto a Visual Studio para crear controles AJAX personalizados.
La parte cliente de la infraestructura, solamente de utilidad si empleas un servidor distinto a
Internet Information Services.
TABLA 2. Controles AJAX para ASP.NETCCoonnttrrooll
ScriptManager
ScriptManagerProxy
Timer
UpdatePanel
UpdateProgress
DDeessccrr iippcciióónn
Inyecta el código JavaScript necesario en la página para que ella ofrezca las características de AJAX.
Se emplea cuando estás trabajando con páginas maestras (veremos un ejemplo más abajo).
Hace posible ejecutar una petición asíncrona al servidor cada un período determinado de tiempo.
Permite indicar las secciones de la página que emplearán el modelo de llamadas asíncronas AJAX.
Exhibe un contenido personalizado cuando se realiza una llamada asíncrona AJAX.
46-52 Redes ajax 20/12/06 15:10 Página 47
SOLO PROGRAMADORES nº 145 48
REDES
http://digital.revistasprofesionales.com
también ser evaluadas/configuradas des-
de código.
En realidad, en la mayor parte de los
casos te remitirás a dibujar este elemen-
to para luego olvidarte del mismo. El pró-
ximo paso lógico es siempre diseñar la
interfaz gráfica empleando los otros con-
troles AJAX. Cabe destacar que solamen-
te puedes tener un objeto “Script
Manager” por página y que la primera vez
que accedas la misma se bajaran los
fuentes script para que AJAX funcione, lo
que puede requerir algunos segundos
adicionales (luego se dejan disponibles en
la caché de Internet Explorer o Firefox).
El panel de actualización: UpdatePanel
El paso siguiente a adicionar “Script
Manager” es definir las secciones de la
página que deseas se actualicen, recuerda
que de esto se trata AJAX. Esta funcionali-
dad se podría traducir en algo así como
“oye, trae el resultado del servidor para
estos textbox pero no toques el resto de la
interfaz”.
Es aquí donde entra en juego el elemento
“UpdatePanel”; como nos dice su nombre,
es un panel de actualización. Cualquier
control que se encuentre allí y que produz-
ca una ida al servidor, acarreará tan solo el
refresco de los datos de los miembros con-
tenidos (listado 1).
El resto de la página se mantendrá intacta
y la invocación será realizada de modo
asíncrono, por lo que el usuario podrá con-
tinuar realizando otro tipo de tareas con la
interfaz (veremos esto más adelante).
Ahora, presta atención a la figura 3.
Cada vez que se haga clic en el botón
“Confirmar”, se irá en forma asíncrona al
servidor (pero sin generar una nueva pági-
na), se traerán los datos, y se modificarán
los miembros involucrados. Si se tiene un
componente fuera del panel de actualiza-
ción y en esta petición al servidor se inten-
ta modificar su contenido, entonces el
resultado será descartado y se dejará
el valor original, tal como si fuese de
lectura.
Secuencia de eventos en llamadasasíncronas
El ejemplo anterior es sencillo pero nos ser-
virá para aclarar algunas características de
la infraestructura. Cuando se accede a la
página por primera vez, el evento inicial-
mente ejecutado es “Page_Load”. Esto suena
bastante lógico ya que la misma está sien-
do creada. Sin embargo el panorama no es
tan claro cuando se trata de AJAX. Si se
hace clic en el botón “Confirmar” de la figu-
ra 3, entonces se irá por el evento clic al
servidor en forma asíncrona, para luego
volver con los valores y actualizar los
miembros en cuestión. La pregunta del
millón es... ¿Cuál será la secuencia de even-
tos en este caso?
Se podría pensar inicialmente que si se hace
clic en un botón solamente se ejecutará ese
evento. Sin embargo, esto es erróneo, ya
que la página tiene que ser generada cada
vez. Es por ello que no importa si es el pri-
mer acceso o la consecuencia de un evento
asíncrono, el procedimiento “Page_Load”
será siempre ejecutado (figura 4).
He construido una pequeña aplicación que
lista en un “Listbox” los diferentes eventos
iniciados. Cuando se hace clic en
“Confirmar”, primero se lanza “Page_Load”
y luego el procedimiento asociado al botón.
Esto es así ya que pese a que en el navega-
dor no se refresca la totalidad de la página,
es necesario en el servidor generar la
misma en su totalidad. Por último comen-
tarte que no es posible realizar dos llama-
das al servidor al mismo tiempo, si una
nueva se inicia, entonces anulará a la ante-
rior (mediante script es posible indicar prio-
ridades sobre ellas).
TABLA 3. Propiedades de ScriptManagerDDeessccrriippcciióónn
Establece o retorna el texto a ser exhibido en caso de que se produzca un error en el servidor o la llamada.
Tiempo máximo que se tendrá que esperar para una llamada asíncrona.
Si se desean o no las características de AJAX (actualizar solamente los valores de los controles en vez del
modelo estándar de refrescar toda la página), El valor predeterminado es “True".
Consultar en el servidor si la llamada se debió a que se refrescó la página o a una invocación asíncrona del
modelo AJAX.
Tiempo máximo para cargar los fuentes script en el navegador.
Archivos con fuentes de script que deseas se envíen al explorador. Estas podrían contener tus propias
funciones JavaScript o VBScript.
Lista de servicios web a los que quieres que los fuentes de script en el explorador tengan acceso.
If Me.Email.Text = “” Or Me.Contraseña.Text = “” ThenupdError.Visible = TrueErrores.Items.Add(“Mail o contraseña no válidas”)updError.Update()
End If
LISTADO 6 Ejecución en caso de llamada asíncrona
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) HandlesMe.Load
If Me.ScriptManager1.IsInAsyncPostBack Then‘El código aquí escrito se ejecutará solamente si la página fue solicitada‘por el inicio de un evento asíncrono AJAX
End IfEnd Sub
Figura 7. Visibilidad de un panel. Figura 8. Control "ScriptManager" en lapágina maestra.
Figura 9. El control “UpdateProgress” enacción.
TABLA 4. Nuevos eventos AJAXNNoommbbrree ddeell eevveennttoo
PageLoaded
beginRequest
endRequest
DDeessccrr iippcciióónn
Se inicia cuando la página ha sido cargada.
El código aquí escrito se ejecutará antes de realizar una llamada asíncrona Ajax.
Este evento se inicia cuando se tiene la respuesta de una petición asíncrona Ajax.
46-52 Redes ajax 20/12/06 15:10 Página 50
SOLO PROGRAMADORES nº 145
ManagerProxy”, que hace posible que
configures archivos de script específicos
para cada página en particular.
El control UpdateProgress
En las aplicaciones Windows cada vez que
se está realizando un proceso, es posible
mostrar una barra de progreso, la que
indica que hay un trabajo que se está lle-
vando adelante (y alternativamente cuán-
to falta para que finalice). En Microsoft
AJAX encontramos algo similar, lo que se
obtiene a través del componente “Update
Progress” (ver listado 8). “Progress
Template” debe contener el valor a exhibir,
lo que será mágicamente mostrado cuan-
do se lanza una llamada asíncrona al ser-
vidor. Puedes adicionalmente indicar el
nombre de un panel en la propiedad
“Associated UpdatePanelID” para el caso
que solamente esté visible cuando sea este
el que lo inicia.
Utilizando eventos del navegador
Es una tarea bastante común la de escri-
bir código JavaScript en el evento load de
la página, el que tenga a cargo realizar
algún proceso tan pronto como se vuelve
del servidor. Sin embargo, esto funciona
bien en el modelo tradicional pero no
cuando se emplea AJAX, ya que los miem-
bros del formulario web podrían estar
siendo modificados sin necesidad de
recargar el mismo.
Es por ello que AJAX ofrece ahora nuevos
eventos, los que hacen posible detectar
los diferentes escenarios. La tabla 4 deta-
lla alguno de los mismos.
Si nos fijamos en el listado 9, veremos
que en el encabezado del bloque se aso-
cian los eventos con las funciones, utili-
zando el método “add_<evento>” más el
nombre del procedimiento a vincular.
Estos objetos pertenecen a la biblioteca
cliente de AJAX, la que es cargada por
“ScriptManager” en la página. Una vez
indicados los mismos, basta que escribas
la implementación en los respectivos blo-
ques.
Mejorando la interfaz de usuario conASP.NET AJAX Control Toolkit
Uno puede pensar que los controles más
interesantes están dentro del paquete que
contiene la plataforma AJAX de Microsoft,
sin embargo esta no adiciona más que
unos pocos elementos y la infraestructu-
ra en si. Es aquí donde Control Toolkit
entra en juego para ofrecer alrededor de
25 componentes que extienden las capa-
cidades de la interfaz gráfica. Los elemen-
tos son parte de un proyecto de ejemplos
provistos por la iniciativa de código abier-
to de Microsoft (www.codeplex.com), por
lo que puedes bajar los fuentes y modifi-
carlos a tu gusto. Antes de hacer nada
deberás instalar el paquete de la siguien-
te dirección (es un archivo ZIP a descom-
primir):
http://www.codeplex.com/Release/
ProjectReleases.aspx?ProjectName
=AtlasControlToolkit
51
REDESExtensiones AJAX para ASP.NET (II)
http://digital.revistasprofesionales.com
LISTADO 7 Acceso a ScriptManager desde página secundaria
Dim SM As Microsoft.Web.UI.ScriptManagerDim miMaestra = Me.Master
SM = miMaestra.getScriptManager()If SM.IsInAsyncPostBack = True Then
<script type=”text/javascript” language=”Javascript”>//Registra los eventos para la página.Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded);
indicando tus datos personales y la forma de pago (giro postal, domiciliación bancaria,
tarjeta de crédito o contrareembolso*).
REVISTAS PROFESIONALES - C/ Valentín Beato, 42 - 3ª plta. - 28037 Madrid*en opción contrareembolso se cobrará un suplemento de 5 euros por gastos de envíoEn opción domiciliación bancaria, se ruega aporten los datos completos de la entidad bancaria (nombre, dirección y número de cuenta completo)
Archivador de revistas + archivador de cd´s
por solo
3€
59 archivadores sp 20/12/06 15:12 Página 1
SOLO PROGRAMADORES nº 145 54 http://digital.revistasprofesionales.com
DISEÑO
Introducción
En este primer artículo se explicará qué son
estas herramientas y para qué sirven, introdu-
ciéndose los distintos elementos que las com-
ponen. Se mostrarán las ventajas del uso de
este tipo de herramientas, así como algunas de
las malas prácticas que permiten evitar, tratan-
do de guiar al usuario para que pueda comen-
zar a trabajar con una.
¿Qué es un SCM?
Es un sistema de gestión de la configuración de
software. El término SCM es el acrónimo del
nombre inglés Software Configuration
Management.
Pero, ¿qué es un sistema de gestión de la con-
figuración de software, y para qué sirve?.
Un SCM permite gestionar ficheros y directo-
rios mediante un almacenamiento controlado,
manteniendo su evolución a lo largo del tiem-
po.
Un SCM sirve para almacenar ficheros y direc-
torios de forma centralizada. Permite a una o
más personas trabajar simultáneamente sobre
los mismos, sin tener que preocuparse de si
alguien más está trabajando sobre ellos, ni de
cómo, pues es él el encargado de controlar
todo eso.
Mantiene el control sobre todos los cambios
sufridos por cada uno de los ficheros o direc-
torios que se encuentren controlados, identifi-
cando para cada uno de ellos, cuándo se cam-
bió, qué se cambió, quién lo hizo… En definiti-
va, permite tener una historia sobre todos
ellos, pudiéndose obtener información sobre la
misma o recuperar cualquiera de sus estados.
Elementos de un SCM
RepositorioEs un almacén de datos. Se encarga de almace-
nar la historia de todos los ítems controlados,
guardando las diferentes versiones de los mis-
mos, así como información complementaria
para facilitar su manejo y control por parte del
usuario.
Espacio de trabajo Muestra una vista local del repositorio, sobre la
cual el usuario puede trabajar. Un espacio de
trabajo se ubica en una ruta física del disco, en
la cual se encuentra la copia local de los ítems
controlados. Es sobre esta copia, sobre la cual
el usuario introducirá los cambios.
Los elementos que se muestran en el espacio
de trabajo vienen determinados por el usuario
mediante una serie de reglas. A través de estas
reglas el usuario dice al sistema qué versión
concreta desea ver para cada uno de los ítems.
Estas reglas pueden especificarse de forma
más o menos precisa dependiendo del sistema
empleado.
Ítem Es cualquier fichero o directorio controlado por
el SCM. Es importante distinguir que, el ítem,
es la representación única del elemento en el
sistema, mediante la cual podemos acceder a
él. Pero el ítem no contiene los datos del
mismo. Para guardar los datos contenidos por
el elemento en cada momento se emplean las
revisiones.
Cuando un fichero o directorio es añadido al
control de versiones, se le asocia a un ítem.
Mientras que el fichero o el directorio cambia-
rán a lo largo del tiempo, pudiendo cambiar de
nombre, de ubicación (ruta), de contenido o
incluso borrarse, siempre estarán identificados
A lo largo de esta serie de artículosse pretende introducir al lector en lasherramientas de control de versiones(SCM), muy extendidas en losentornos de programación, dandouna idea de su funcionamiento, asícomo una guía y consejos sobrecómo usarlas.
BORJA RUIZ ARROYO (Ingeniero Software en CódiceSoftware) y FRANCISCO JOSÉ GARCÍA PEÑALVO (ProfesorTitular de la Universidad de Salamanca)
Sistemas SCM para la Gestión dela Configuración del Software (I)Sistemas SCM para la Gestión dela Configuración del Software (I)
42-47 diseño.qxd 20/12/06 15:18 Página 54
SOLO PROGRAMADORES nº 14555
DISEÑO
http://digital.revistasprofesionales.com
Sistemas SCM para la Gestión de la Configuración del Software (I)
por el mismo ítem, el cual permanecerá
inmutable a lo largo del tiempo.
Revisión o versiónEl contenido de un ítem va cambiando a
lo largo del tiempo. Para almacenar cada
uno de estos estados se emplean las revi-
siones. Una revisión contendrá el conteni-
do del ítem en un momento dado. En
cualquier momento se puede recuperar
cualquiera de estas versiones, permitien-
do ver el ítem tal y como estaba en el ins-
tante en el que la versión fue creada.
Una revisión puede tener dos estados:
protegida o desprotegida. Cuando se crea
mantiene un estado de desprotegida
(checkout). Mientras está en este estado
puede ser modificada por parte del usua-
rio. Cuando el usuario confirma los cam-
bios en el ítem, éste pasa a guardarse en
el sistema, pasando la revisión al estado
de protegida (checkin). Una vez que una
revisión está en este estado no puede
alterarse. Para modificarla será necesario
desprotegerla creando una nueva revisión
con el estado de desprotegida. Algunos
sistemas son capaces de almacenar tam-
bién las revisiones mientras están despro-
tegidas, conservando estos datos en el
repositorio y no sólo localmente.
RamaEs uno de los conceptos más complejos
dentro de un SCM, pero también es uno
de los que les confiere una mayor poten-
cia. Una rama es una línea temporal en la
cual han ido evolucionando uno o más
ítems. Esta línea temporal normalmente
se denomina “línea de trabajo”.
Un ítem va cambiando a lo largo del
tiempo. Cada vez que lo modificamos
partimos de un contenido inicial, que es
la revisión que estamos viendo (revisión
padre). Para crear una nueva revisión con
el contenido modificado. Estos cambios
que se van haciendo a lo largo del tiem-
po crean una línea temporal, en la que
cada revisión viene seguida por una y
precedida por otra. Todas estas revisio-
nes, que representan cómo ha ido evolu-
cionando un elemento a lo largo del
tiempo, se encuentran contenidas dentro
de una rama, tal y como puede verse en
la figura 1.
Si un ítem va a ser modificado de más de
una manera simultáneamente (e inde-
pendientemente), el elemento pasará de
tener una línea temporal, a tener tantas
como de formas distintas vaya a ser
modificado. Para poder hacer esto se
crearán tantas ramas como evoluciones
vaya a tener el ítem, manteniendo en
cada rama una línea temporal de los
cambios del ítem, como se muestra en la
figura 2. Al crear distintas ramas, el ítem
puede ir evolucionando de formas dife-
rentes, sin que la forma en la que se cam-
bia su contenido en una rama afecte a las
demás.
Aunque la información contenida en una
rama es independiente a la que está con-
tenida en las demás, en ocasiones quere-
mos propagar los cambios sufridos por
uno o más ítems en una rama hacia otra.
Para propagar los cambios entre las
ramas se emplean los rebases y las inte-
graciones, que se realizan a través de la
operación de merge. Dada la complejidad
de estas acciones se explicarán detenida-
mente en un próximo artículo.
Una rama almacenará un conjunto de
revisiones para uno o más ítems. Todas
las revisiones de un mismo ítem dentro
de la rama, tienen una relación lineal.
Cada revisión mantiene un estado del
ítem, que da lugar al siguiente estado del
ítem después de que un usuario lo modi-
fique y así sucesivamente. De ahí que la
rama contenga una línea temporal en la
que ha evolucionado uno o más ítems. Es
importante aclarar que toda revisión se
encuentra necesariamente en una rama,
y sólo en una.
EtiquetaUna etiqueta permite marcar una revisión
concreta de uno o más ítems para poder
referirnos a ella con mayor facilidad en
cualquier momento. A todos los efectos,
lo que hace es asociar un nombre con el
que referirse a esa revisión concreta de
cada ítem. Pero una etiqueta no puede ser
aplicada a más de una revisión de un
mismo ítem, de manera que permite recu-
perar fácilmente un estado para todos los
ítems marcados por ella.
El caso habitual es etiquetar todos los
ítems del espacio de trabajo. De esta
manera la etiqueta nos permitiría recupe-
rar una configuración concreta de todo
sistema. Normalmente, en entornos de
desarrollo, se aplica una etiqueta a todo el
sistema siempre que se realiza una relea-
se (una nueva versión del sistema que se
está desarrollando).
LinkUn link permite relacionar dos objetos del
repositorio. Los links pueden ser creados
por el usuario y en algunos casos por el
propio sistema.
Un usuario creará un link de cierto tipo
(creando un tipo de relación), que luego
usará para relacionar un par de objetos
contenidos en el repositorio. Hay que
entender que un link puede estar creado
sin que ningún par de objetos estén rela-
cionados por el mismo. Pero obligatoria-
mente para relacionar un par de objetos,
es necesario haber creado un link que
represente ese tipo de relación.
Por ejemplo, podría crearse un link
“implementa requisito”, mediante el cual
se relacionarán las especificaciones de
requisitos, con los ficheros de código que
las implementan, para luego aplicar ese
link a cada documento de requisitos con
todos ficheros de código necesarios para
implementarle.
De los links creados por el sistema, el más
importante es el de merge. Un link de
merge relaciona dos revisiones del siste-
ma. Indicando que una es el resultado de
mezclar el contenido de su revisión
padre, con el contenido de la del
Figura 1. Evolución de un ítem en unarama.
Figura 2. Evolución de un ítem en variasramas simultáneamente.
42-47 diseño.qxd 20/12/06 15:18 Página 55
http://digital.revistasprofesionales.com
DISEÑO
origen del merge. Estos links se crean
automáticamente en la operación de
merge, indicando qué revisiones han sido
mezcladas en el mismo. Hablaremos de la
utilidad de los mismos en un próximo
artículo.
AtributoUn atributo es una característica particular
de algunos SCM. Permite asociar informa-
ción adicional a los objetos del repositorio.
Para ello, se definiría previamente un atribu-
to, que sería la información o dato que se
desea poder asociar a los objetos del reposi-
torio. Al asociarlo con cada objeto se le da un
valor concreto.
Por ejemplo podemos crear un atributo que
sea “error corregido”. Cuando corrijamos un
error, podemos asociar a todos los ficheros
involucrados en la corrección este atributo,
dando como valor el identificador del error
que corrigen. De forma que en cualquier
momento, por medio de una búsqueda,
podamos encontrar fácilmente cuáles fue-
ron los ficheros que corrigieron ese error.
Ventajas del uso de un SCM
El uso de un SCM aporta gran cantidad de
ventajas. Un SCM es útil para almacenar
aquellos documentos que son modificados
con frecuencia, como guiones, traducciones,
novelas, código fuente... Pero cuando resulta
imprescindible, es en el momento que es
necesario coordinar el trabajo de muchas
personas sobre los mismos elementos.
� Por un lado se almacenan múltiples ver-
siones de los elementos y no sólo sobre la
que se está trabajando, pudiéndose recu-
perar una versión antigua en caso nece-
sario (sin necesidad de guardar cada ver-
sión de forma independiente renombrán-
dola). De esta manera, si algo se rompe o
queda mal, se puede volver a una revisión
anterior para seguir trabajando a partir
de ésta. Incluso si alguien borra todo,
sigue siendo posible recuperar los datos,
al estar almacenados en el repositorio,
pudiendo volver atrás y recuperar su con-
tenido.
� Además, mientras se está trabajando pue-
den hacerse diferentes pruebas, pudiéndo-
las descartar o, sencillamente, no incluirlas
en la versión final, sin preocuparse de des-
hacer todos los cambios incluidos en las
mismas. Todo esto otorga una mayor
comodidad y seguridad, a la hora de traba-
jar con los distintos elementos.
� Se puede saber quién introdujo cada
cambio para cada elemento, lo cual con-
fiere la trazabilidad necesaria para temas
de calidad. También gracias a los links y
los atributos, puede asociarse el código a
los requisitos que implementan y a los
errores que corrigen, algo necesario para
certificaciones de calidad.
� Permite que varias personas trabajen
sobre los mismos elementos sin necesi-
dad de que sean ellos los que tengan que
coordinarse, sin que los cambios que uno
introduzca pisen los del otro, eliminándo-
los o alterándolos. Incluso pueden traba-
jar de forma paralela sobre el mismo ele-
mento sin problemas, dado que será el
sistema el encargado de combinar sus
cambios.
� Cada persona trabaja con una revisión
local del elemento para modificarla.
Mientras el usuario la modifica, la revi-
sión pasa a estar desprotegida, y todos
los cambios que realiza sobre ella sólo
son visibles para él, sin pasar a formar
parte del sistema hasta que los confirma
protegiendo la revisión. En caso de que
quiera descartar esos cambios, no tiene
más que deshacer la desprotección, vol-
viendo a la versión existente del elemen-
to antes de que empezase a modificarla.
� Un SCM se encarga de actualizar los ele-
mentos modificados, comparando la ver-
sión local con la última existente. De
manera que no es el usuario el que tiene
que preocuparse de ir comprobando
todos los elementos, para ver cuáles son
los que han cambiado y así sustituirlos
por la versión correcta.
� Se puede aislar cada nueva tarea que
haya que hacer sobre el sistema, pudien-
do decidirse más tarde si ésta se incorpo-
ra o se tiene que descartar. Centralizando
todos los cambios introducidos por esa
tarea en una rama, luego pueden incor-
porarse al sistema mediante un merge de
la rama, en el momento necesario. Esto
da un mayor control sobre el sistema,
pudiendo crear distintas versiones del
mismo para probarlo, simplemente incor-
porando unos cambios u otros sobre las
mismas.
� Si hay que hacer cambios en un sistema
que puedan llegar a romperlo, se pueden
hacer de forma aislada mientras los
demás continúan trabajando sin que les
afecte, mediante el uso de ramas. En el
momento que estos cambios estén aca-
bados y probados, pueden incorporarse al
sistema sin haber tenido que interrumpir
el trabajo de los demás.
� Se puede recuperar el estado que tenía
todo un sistema en cualquier momento
mediante las etiquetas, en caso de que
fuera necesario para realizar pruebas,
algún arreglo o sacar una nueva copia del
mismo.
� Todos los datos se guardan de forma cen-
tralizada, facilitando la tarea de realizar
copias de seguridad, al no tener que ir
buscando cada uno de los ficheros nece-
sarios.
� Proporciona un acceso remoto a todos
los elementos. Ya no es necesario tener
una copia del sistema en todo momento,
pues basta con conectarse al servidor
para poder bajarse una versión actualiza-
da desde cualquier parte, y luego seguir
trabajando con ésta normalmente.
Errores y malas prácticas que podemosevitar con un SCM
El no disponer de un sistema SCM no signi-
fica que no necesitemos sus prestaciones. En
realidad, de manera inconsciente, en ausen-
cia de un SCM intentamos “emular” sus fun-
cionalidades de manera “manual”, lo cual
nos conduce a prácticas poco aconsejables.
� Es una mala costumbre dejar partes de
código comentadas por si luego van a ser
usadas. Hacen crecer, de forma irreal, el
proyecto, alterando las medidas que
sobre él se toman. Puede llegar a olvidar-
se por qué se comento ese código, y
dudar si es necesario volver a incluirlo o
no. Un control de versiones permite, al
guardar un historial del archivo, borrar
todo este código comentando, al poder
recuperarlo volviendo a la versión que lo
tenía.
� Es usual ir guardando copias del código
con distintas versiones del mismo. Estas
copias se suelen ir dejando por todo el
disco (bien en distintas carpetas o en
ficheros comprimidos). Cuando más ade-
lante se trata de buscar un cambio, una
corrección o una nueva funcionalidad
que hemos añadido, no sabemos en cuál
de todas las copias se encuentra. Puede
llegar a darse el caso que se sabe que se
ha escrito un código, pero ser incapaces
de encontrarlo.
� No se sabe cuándo se hizo un cambio, ni
SOLO PROGRAMADORES nº 145 56
42-47 diseño.qxd 20/12/06 15:18 Página 56
SOLO PROGRAMADORES nº 145
por qué. Esto dificulta encontrarlo, o
incluso saber por qué un cambio está ahí.
� Cuando se encuentra un error, no sabe-
mos en qué versión está. Incluso no sabe-
mos si en la versión actual continúa
estando ese error o ya ha sido corregido
por alguien en algún momento.
� Si dos desarrolladores hacen un cambio
sobre el mismo fichero, pueden pisarse el
cambio mutuamente al sustituir cada
uno el fichero con su versión, sin saber
que el otro también lo ha modificado y
sustituido.
� Si a lo largo del desarrollo se llega a una
versión que funciona peor o que gusta
menos, no es fácil volver atrás.
Cómo comenzar a trabajar con un SCM
Aunque todos lo sistemas de SCM poseen
un comportamiento similar en la mayoría
de los aspectos, al profundizar en ellos, se
encuentran muchas diferencias, tanto en
su funcionalidad como en la manera de
realizar las operaciones.
La forma de empezar a trabajar con todos
los sistemas SCM es parecida (una vez
instalados); por ello aunque los pasos a
seguir que se describirán son genéricos
para todos ellos, los ejemplos se harán
con una versión demo de Plastic SCM,
que puede ser descargada de
http://www.codicesoftware.com/opdown
loads.aspx. Plastic SCM es un nuevo sis-
tema de control de versiones desarrolla-
do por la empresa española Códice
Software (http://www.codicesoftware.
com/opfront.aspx).
Para montar un sistema SCM, es necesa-
rio instalar un servidor y tantos clientes
como personas quieran trabajar con él.
Para ello usaremos el instalador de
Plastic SCM; para la mayoría de los siste-
mas las opciones marcadas por defecto
serán las más apropiadas, una vez que el
usuario haya elegido el idioma.
En el último punto de la instalación, se
lanzarán los asistentes que se encargarán
de guiar al usuario en la configuración
del cliente y del servidor.
El asistente del servidor, tras una pantalla
de bienvenida y de haber definido el
idioma, nos llevará a la pantalla de la
figura 3, para configurar el modo de tra-
bajo con usuarios. Junto a cada uno de
los modos aparece una pequeña explica-
ción del mismo. Para el ejemplo elegire-
mos los usuarios locales. En esta configu-
ración, es necesario que en la máquina
del servidor existan usuarios con los
nombres de cada usuario que va a usar la
herramienta (la parte del cliente).
Como último paso, aparecerá la pantalla
de la figura 4. Nos pedirán introducir la
dirección del servidor: por defecto se
dejará la que aparece.
En el caso del cliente es muy parecido.
En primer lugar aparecerá la pantalla
de bienvenida, seguida de la de selección
de idioma. Después, se solicita el modo de
trabajo con usuarios, figura 5. Tendremos
que elegir el mismo que se eligió en el
servidor. Como último paso, figura 6,
se solicita la dirección del servidor (la
misma que aparecía en el asistente del
servidor).
Llegados a este punto ya tenemos la
herramienta instalada y lista para
comenzar a trabajar.
El primer paso cuando se instala un SCM
es crear un repositorio. En nuestro caso
no es necesario, dado que se crea un
repositorio por defecto a lo largo del
proceso de instalación. Aun así existe
la posibilidad de crear nuevos reposito-
rios si se considera oportuno, por
ejemplo:
57
DISEÑOSistemas SCM para la Gestión
de la Configuración del Software (I)
http://digital.revistasprofesionales.com
Figura 3. Asistente del servidor, pantallade configuración del modo de trabajo conusuarios.
Figura 4. Asistente del servidor, pantallade configuración de la dirección delservidor.
Figura 7. Plastic GUI, permisos delelemento raíz del espacio de trabajo.
Figura 8. Plastic GUI, pantalla para laselección de un espacio de trabajo y lacreación de uno nuevo.
Figura 5. Asistente del cliente, pantalla deconfiguración del modo de trabajo conusuarios.
Figura 6. Asistente del cliente, pantalla deconfiguración de la dirección del servidor.
42-47 diseño.qxd 20/12/06 15:18 Página 57
SOLO PROGRAMADORES nº 145
� Permitiendo mantener aislados los ele-
mentos controlados que no tienen rela-
ción entre sí (un repositorio por proyecto
de desarrollo, uno para documenta-
ción…).
� Para distribuir la carga de trabajo y el
almacenamiento.
� Por políticas de empresa.
Nada más instalarlo y antes de empezar
a trabajar con el sistema, es el momento
apropiado para aplicar las directivas de
seguridad. Casi todos los SCM tienen un
sistema de seguridad incorporado que
permite definir ciertos permisos sobre
sus elementos.
En el caso de Plastic se emplea un siste-
ma de ACLs (Access Control List – Listas
de Control de Acceso). Este sistema es el
mismo que se emplea en otras herra-
mientas y en sistemas operativos como
Windows. Mediante este sistema se pue-
den especificar los permisos que tiene
cada usuario (o grupo) en cada objeto
del sistema, pudiendo definir los permi-
sos para cada una de las operaciones
disponibles en Plastic SCM de manera
independiente para cada grupo o usua-
rio, como puede verse en la figura 7.
Todo objeto hereda sus permisos de su
padre según una jerarquía de herencia, al
igual que en un sistema operativo un
fichero hereda los permisos del directo-
rio que lo contiene. A cada objeto se le
pueden aplicar nuevos permisos (que se
añadirán a los heredados), romper su
herencia, cambiar su esquema de heren-
cia… Mediante este sistema, la política
de seguridad puede llegar a complicarse
tanto como haga falta, soportando cual-
quier necesidad, pero en general suele
mantenerse una política bastante simple.
El caso más común es dejar un sistema
completamente abierto, tal y como se
crea por defecto, o completamente
cerrado. En el primer caso, todo el
mundo puede realizar cualquier opera-
ción, denegando ciertas operaciones
cuando sea necesario. En el segundo
caso, nadie puede hacer nada salvo que
se le haya otorgado expresamente el per-
miso para hacerlo.
En la mayor parte de los entornos, se
puede mantener el sistema con la políti-
ca de seguridad por defecto.
Una vez que se ha instalado el sistema y
definida la política de seguridad para
que un usuario pueda empezar a traba-
jar, es necesario que cree un espacio de
trabajo. Un espacio de trabajo se crea en
una ruta del disco y con un nombre con
el que se le referencia, pudiendo a partir
de ese momento mantener bajo control
cualquier elemento contenido en esa
ruta. En el caso de Plastic SCM, nada más
arrancar la interfaz gráfica se pide elegir
un espacio de trabajo. Si se hubiese pul-
sado el botón “obtener” nos mostraría
todos los disponibles para que se selec-
cione uno; como aun no hay ninguno,
se crea uno nuevo como se ve en la
figura 8.
El directorio en el que se crea el espacio
de trabajo pasa a ser un elemento espe-
cial del repositorio, el elemento raíz.
Sobre él podremos ir añadiendo nuevos
elementos. Es importante entender que
aunque un elemento se encuentre física-
mente contenido en el espacio de traba-
jo, no estará controlado salvo que
alguien lo haya añadido. Mientras tanto
será un elemento privado que puede ser
manejado normalmente de forma local,
como podemos ver en la figura 9.
Para que un elemento pase a estar con-
trolado, es necesario desproteger el
directorio donde se encuentra y añadir el
elemento al control de versiones. La ope-
ración de “añadir” deja al elemento
desprotegido, para que pueda ser modi-
ficado.
Siguiendo con el ejemplo, añadiremos
todos los elementos privados que tene-
mos en el espacio de trabajo para que
pasen a estar controlados. Para ello se
desprotegerá el elemento raíz, con el
botón derecho en este elemento y pul-
sando la opción desproteger (figura 10).
Al desproteger un elemento, se pide el
comentario que se asociará a la revisión
desprotegida que se crea.
Una vez tenemos la raíz desprotegida,
añadiremos todos los elementos de
forma recursiva. Para ello se seleccionan
todos los que están en el directorio raíz y
con el botón derecho, “añadir recursiva-
mente” (figura 11). Marcando la opción
“Ver COs”, se pueden ver todos los ele-
mentos desprotegidos en ese espacio de
trabajo, que en este caso son todos ellos
(figura 12). Seleccionaremos todos los
elementos desprotegidos y confirmare-
mos la acción de añadir todos ellos al
control de versiones, protegiéndoles
(figura 13). También en este caso se
58
DISEÑO
http://digital.revistasprofesionales.com
Figura 9. Plastic GUI, vista del contenidode los elementos privados contenidos en elespacio de trabajo.
Figura 10. Plastic GUI, desprotección delelemento raíz.
Figura 11. Plastic GUI, se añaden todos loselementos privados al control de versiones.
Figura 12. Plastic GUI, vista “Ver COs”mostrando todos los elementos reciénañadidos.
Figura 13. Plastic GUI, protección de todoslos elementos desprotegidos desde la vista“Ver COs”.
42-47 diseño.qxd 20/12/06 15:18 Página 58
SOLO PROGRAMADORES nº 145
pedirá el comentario para la revisión
protegida.
Generalmente, una persona es la encar-
gada de añadir inicialmente todos los
elementos que van a estar controlados,
como puede ser el proyecto sobre el que
se va a trabajar. Aunque luego será cada
usuario el que vaya añadiendo los ele-
mentos que sean necesarios.
Como cualquier otro elemento, para
modificar un directorio es necesario que
se encuentre desprotegido. Mientras el
directorio está desprotegido, podremos
alterar su contenido añadiendo nuevos
elementos, renombrándolos o borrándo-
los. Todos estos cambios permanecen
locales mientras el directorio siga des-
protegido. En el momento en el que el
directorio se proteja, los cambios pasa-
rán a ser globales estando almacenados
en el control de versiones. Si por el con-
trario queremos cancelarlos, lo único
que hay que hacer es deshacer la des-
protección y de esa manera recuperar el
estado inicial del elemento.
En el caso de Plastic SCM, si modifica-
mos un directorio, por ejemplo renom-
brando un fichero, y este directorio no
está desprotegido, se preguntará si se
desea desproteger el directorio (figura
14). Es importante entender que al
modificar el nombre de un elemento, no
es el elemento el que estamos cambian-
do sino el directorio, pues son las entra-
das del directorio las que contienen el
nombre de los elementos (figura 15).
En el caso de los ficheros sucede lo
mismo: antes de realizar algún cambio
es necesario desprotegerlo (esta opera-
ción puede hacerse automáticamente si
el editor está integrado con el “control
de código fuente”). Una vez tenemos el
fichero desprotegido, se puede modifi-
car localmente, para luego confirmar
sus cambios protegiéndolo, o descartar-
los desprotegiéndolo.
Se puede ver cómo se ha ido modificando
un elemento a lo largo del tiempo,
mediante el historial de revisiones (figura
16) o el árbol de revisiones (figura 17),
ambas operaciones disponibles en el
menú contextual del ítem. Se puede acce-
der a los datos de cualquiera de ellas
fácilmente, simplemente pulsando en la
opción abrir (figura 18).
Pero un usuario no verá de forma auto-
mática los cambios de los demás, cuando
éstos los protejan. Para que pueda verlos
es necesario que se actualice. Mientras
un usuario no se actualice, trabajará
sobre su versión local sin que ésta se vea
afectada. Cada usuario puede decidir qué
parte del sistema desea cargar localmen-
te. Esto se define mediante una serie de
reglas. Cada regla se define para un
directorio, fichero, o patrón (*.cs). En el
caso de un directorio puede definirse sólo
a ese nivel o de forma recursiva para ese
nivel y todo su contenido. Una regla
especifica desde dónde se desean cargar
esos elementos y dónde se desean dejar
al modificase (al desprotegerlos). Por
defecto, al crear un espacio de trabajo se
le fija un selector, que trae la última revi-
sión para todos los elementos contenidos
en la rama principal del repositorio por
defecto. Siempre que se crea un espacio
de trabajo, se debe actualizar su conteni-
do para obtener la última versión de los
elementos que se encuentren en el servi-
dor en ese momento.
Conclusiones
A lo largo de este artículo se han introdu-
cido las herramientas de SCM, explicando
sus principales elementos. Se han
expuesto algunas de las razones por las
que su uso es aconsejado o incluso nece-
sario en algunas circunstancias (como
para conseguir algunos certificados de
calidad). Tal y como se ha visto, propor-
cionan una importante seguridad a la
hora de trabajar, gracias a tener una his-
toria concreta sobre todos los elementos
sobre la que poder buscar y recuperar
cualquier información. Pero más impor-
tante aún es que permiten coordinar el
trabajo de múltiples usuarios, evitando
que puedan dañar el sistema o entorpe-
cerse unos a otros.
También se ha guiado al usuario para que
pueda empezar a trabajar con una herra-
mienta de SCM como es Plastic SCM.
No obstante, éste era un primer artículo
de una serie introductoria a las herra-
mientas de SCM. En próximos artículos,
se darán algunas pautas sobre el uso
más eficiente de estas herramientas y
algunos consejos prácticos. Además, se
profundizará en su manejo, detallando
algunas de las operaciones que poseen
una mayor complejidad, como son los
merges.
59
DISEÑOSistemas SCM para la Gestión
de la Configuración del Software (I)
http://digital.revistasprofesionales.com
Figura 14. Plastic GUI, solicitud dedesprotección para el directorio quecontiene el elemento a renombrar.
Figura 15. Plastic GUI, directoriodesprotegido después de renombrar unelemento.
Figura 16. Plastic GUI, historial de“fichero.txt”.
Figura 17.Plastic GUI,árbol derevisiones de“fichero.txt”.
Figura 18. Plastic GUI, abrir una versiónde “fichero.txt” desde el historial.
Si hasta no hace mucho Google se había “con-formado” con indexar toda la web, ahora lacompañía ha iniciado una nueva estrategia alpretender incluir en sus índices contenidos que,en prinicpio, no están en Internet. Tal es el casode Google Books, disponible en español enbooks.google.es.Salta a la vista que la funcionalidad de GoogleBooks consiste en realizar búsquedas en libros.Teniendo su importancia, como todo lo quehace Google, esto no sería de gran trascenden-cia salvo si reparamos en el significado de lahumilde preposición “en”. Efectivamente, laimportante novedad consiste en que si bien hayservicios de búsqueda “sobre” libros, GoogleBooks es el primero de búsqueda “en” libros. O,dicho, de otra manera, no es lo mismo buscarinformación en los metadados que describenun libro (título, autor, editorial...) que hacer bús-quedas en su contenido.Por poner un ejemplo, estamos acostumbradosa que una búsqueda sobre “don quijote de lamancha” devuelva referencias a libros cuyotítulo incluye estas palabras. Pero al realizar estamisma búsqueda en Google Books lo quevamos a obtener son libros en cuyo contenidotienen relevancia estas palabras, es decir,encontraremos libros que hablen sobre estaobra de Cervantes.
De dónde
¿De dónde puede Google obtener el contenidode los libros? Google Books obtiene los libros a
partir de dos programas: uno dedicado a biblio-tecas y otro dedicado a editoriales. En el caso de las editoriales, estas deben firmarun contrato con Google y suministrarles unejemplar de cada una de las obras a indexar. Sesobreentiende que las editoriales ofrecen obrassobre las que tienen derechos y, en función deestos derechos, deciden si Google Books va aofrecer una vista de fragmentos de libro, unavista previa restringida, una vista completa oningún tipo de vista.Por su parte, las bibliotecas pueden hacer lopropio, en este caso con obras de su fondo paralas que hayan caducado los derechos de autor.Si bien la oportunidad para las editoriles es máso menos discutible, la decisión de las bibliotecasciertamente está siendo muy discutida. A favorestán los argumentos de ofrecer accesibilidad abienes culturales que son de dominio público.En contra está el hecho de que esos bienes ten-gan que salir no solo de la biblioteca sino tam-bién de España, pues Google digitaliza los librosen EE UU. Este traslado puede acarrear deterio-ros o pérdidas en obras valiosas cuya conserva-ción es responsabilidad de la biblioteca que lascustodia, por ejemplo por el simple hecho detener que desencuadernarlas para el escaneo.Además, también en contra, está el hecho deque todo este patrimonio quede en manos deuna compañía privada, que en un futuro puederestringir el acceso, hacerlo de pago, etc. Poreso, son pocas las bibliotecas españolas que vencon buenos ojos esta oportunidad, a pesar delas presiones de los usuarios para que sus fon-dos sean accesibles on line sin restricciones.¿No debería ser, un servicio de accesibilidad a lacultura como este, gestionado por instanciaspúblicas? El caso es que la de la UniversidadComplutente de Madrid es la pimera bibliotecano anglosajona, y la única en España, que hafirmado con Google un acuerdo de noexclusividad para la indexación de obras dedominio público (más información en http://www.ucm.es/BUCM/biblioteca/11979.php).
Cómo
Dejando al margen este debate, que centrómucho interés en el reciente simposio“Bibliotecas y Objetos Digitales” (www.bibliote-casdigitales.es), celebrado en Madrid el pasadootoño, mencionar que una vez Google hanegociado el derecho a acceder al contenido de
un libro, bien sea a través de una biblioteca o deuna editorial, el libro se escanea, se convierte atexto y se indexan sus palabras clave. Pero, ade-más, el libro va a tener asociados una serie deservicios, en función de la localización de usua-rio, tales como las bibliotecas cercanas endonde el libro está en consula o préstamo, o laslibrerías que lo venden por el modo tradicionalo por comercio electrónico.Además, una vez hemos realizado una consul-ta en Google Books y hemos llegado a un libro,podemos realizar nuevas consultas en el conte-nido de ese mismo libro. Y, por supuesto, tam-bién pueden realizarse las clásicas consultas porautor, título, editorial...
Pros y contras
Google argumenta que su negocio está en lapublicidad, y que de ninguna manera se plan-tea ni se planteará restringir el acceso aGoogle Books ni hacerlo de pago, pues lo quele interesa es máxima visibilidad para mayoresingresos en publicidad. No se puede menos-preciar la democratización que supone elhecho de que Google se interese por conteni-dos que no están en web (artículos, libros...) ylos incluya en sus buscadores, pero tampocohay que obviar las consecuencias que en unfuturo puede tener el hecho de que estademocratización de la información esté enmanos de una empresa privada, aunque estaempresa siga las prácticas de la Web 2.0.Incluso aunque el servicio sea gratuito, ¿seprimarán más unas ediciones que otras?¿Tendrá Google un control sobre los perfilesde sus usuarios?... Son estas incertidumbreslas que están frenando la expansión de GoogleBooks que, a pesar de ello, es una iniciativaque no tiene parangón, ni en lo público ni enlo privado.
Búsqueda de librosen Google BooksBúsqueda de librosen Google Books
El interés de Google porindexar contenidos que noestán en web supone un saltoen la estrategia de lacompañía, y un paso más en laaccesibilidad a los bienesculturales. Al mismo tiempo,el hecho de que estaaccesibilidad dependa de unaempresa privada, suscitanumerosas reticencias.
DABNE
Sobre Dabne
Dabne Tecnologías de la información(www.dabne.net) ofrece su experiencia en eldiseño e implementación de archivos ybibliotecas digitales, análisis de los docu-mentos, digitalización del material y crea-ción de la estructura, de los procedimientosde gestión y de las interfaces de acceso.
60 Libros.qxd 19/12/06 12:09 Página 60
61 atii.qxd 20/12/06 15:20 Página 66
SOLO PROGRAMADORES nº 145 62
DUDAS
http://digital.revistasprofesionales.com
Estoy desarrollando una aplicación queemplea XML en Java. La aplicación a vecesfalla y creo que se debe en algunos casos aque los datos no están bien. Me gustaríapoder sacar el XML por el “System.err” o porel “System.out”, pero no tengo claro cómohacerlo. De hecho hasta el momento la apli-cación lo único que hace es leer los ficherosXML, usando el método “parse” de la clase“DocumentBuilder”, pero no tengo nadaclaro cómo escribir ficheros XML (en la clase“DocumentBuilder” no hay ningún método).Supongo que ambas cosas son el mismo pro-blema.La clase “DocumentBuilder” se utiliza principal-
mente para obtener objetos “Document”, que
representan a un documento XML, a partir de un
fichero o construyéndolos desde cero emplean-
do los típicos métodos “createElement”,
“appendChild”, etc. Por el contrario,
“DocumentBuilder” no implementa la funcionali-
dad que permite salvar un objeto “Document” en
un fichero XML. Para ello la alternativa más sen-
cilla es emplear las clases del paquete estándar
“javax.xml.transform”.
En primer lugar debes obtener una instancia de
la clase “TransformerFactory” empleando el
método estático “newInstance”:
TransformerFactory transFactory =
TransformerFactory.newInstance();
El siguiente paso consiste en obtener un objeto
de la clase “Transformer”. En realidad este tipo de
objetos se utilizan normalmente cuando se quie-
re aplicar una hoja XSL a una fuente de datos
XML con el fin de obtener una página HTML u
otro XML, por ejemplo. En otras palabras, se
emplean para transformar, como su propio nom-
bre indica, orígenes de datos XML “en otra cosa”.
Convertir un documento XML almacenado en
forma de objeto “Document” en una cadena de
caracteres, para salvarla en un fichero o para
mostrarla por el “System.err”, es precisamente
eso: transformar un origen de datos XML.
Transformer transPlainText =
transFactory.newTransformer();
Al emplear el método “newTransformer” sin
parámetros, se crea un “transformador” que
transforma el documento XML convirtiéndolo en
una cadena de caracteres. El proceso es el que se
describe seguidamente.
Se crea un “StringWriter” para almacenar la
cadena de caracteres correspondiente al docu-
mento XML representado por un objeto de la
clase “Document”. El objeto de tipo
“StringWriter” se pasa al constructor de la clase
“StreamResult”:
StringWriter sw = new StringWriter();
StreamResult streamResult
= new StreamResult(sw);
Con lo anterior ya se tiene preparada la salida
del transformador. A continuación se prepara
la entrada, y para ello se crea una instancia
de “DOMSource” a partir del objeto
“Document”.
DOMSource domSource = new DOMSource(doc);
Finalmente, el método “transform” de la clase“Transformer” se encarga de realizar la transfor-mación:
transPlainText.transform(domSource,
streamResult);
La cadena de caracteres correspondiente al
documento XML se obtiene después de la llama-
da anterior haciendo “sw.toString()”.
Hay algunos parámetros de configuración del
objeto “Transformer” que pueden modificarse si
se requiere. Por ejemplo:
transPlainText.setOutputProperty(OutputKey
s.ENCODING, “iso-8859-1”);
En la documentación de la clase “OutputKeys” se
pueden ver todos ellos.
Obsérvese que con el método anterior la trans-
formación del documento XML en una cadena de
caracteres se hace empleando el transformador
por defecto que proporciona la clase
“Transformer”. En algunos casos este transforma-
dor no es suficiente, o simplemente puede ser
más interesante transformar los documentos
XML de forma personalizada. En esos casos el
transformador puede construirse a partir de una
hoja XSL:
BufferedReader br = new BufferedReader
(new FileReader(new File
(“C:/transformer.xsl”)));
StreamSource streamSrc =
new StreamSource(br);
Preguntas y respuestasPreguntas y respuestasADOLFO ALADRO GARCÍA
64-66 Dudas.qxd 20/12/06 15:22 Página 62
El fichero “transformer.xsl” es el responsa-
ble de hacer la transformación y se utiliza
para obtener una nueva instancia de la
clase “Transformer” mediante la clase
“StreamSource”. El transformador se obtie-
ne ahora:
transPlainText =
transFactory.newTransformer(streamSrc);
El resto del proceso es similar. El código del
listado 1 ilustra un ejemplo de una hoja XSL
que transforma un documento XML en una
copia de sí mismo teniendo en cuenta las
secciones CDATA.
Controlando el método de salida, esa copia
de sí mismo podría venir dada en forma de
cadena de caracteres.
Está a punto de salir Internet Explo-rer 7. He probado algunas versionespreliminares y he comprobado que seproducen varios errores en mis páginasWeb. ¿Cuál es la mejor forma de detec-tar con un script que el navegador esIE7? ¿Y si esa detección quiero hacerlaen el servidor?
Según han ido apareciendo versión beta y
release candidate de Internet Explorer 7
(IE7), han ido apareciendo distintos méto-
dos para detectar el navegador con scripts
de JavaScript.
Una de las formas de hacerlo es compro-
bando si el navegador soporta el objeto
“XMLHttpRequest” (el objeto por excelencia
de la tecnología AJAX) de forma nativa. Las
versiones anteriores de IE7 no lo soportan
(es necesario crear un objeto ActiveX)
mientras que IE7 sí, con lo que se puede
hacer:
if (window.XMLHttpRequest) {
// IE 7
} else {
// IE6
}
El script anterior también sirve para dife-
renciar Mozilla, Firefox y Opera 9 de IE6, ya
que los primeros soportan también de
forma nativa el objeto “XMLHttpRequest”.
Otro método consiste en emplear código
condicional:
<script type=”text/javascript”
>var bIsIE7 = false;</script>
<!–[if IE 7]>
<script type=”text/javascript”>bIsIE7
= true;</script>
<![endif]–>
Este código sólo es interpretado por
Internet Explorer y con la condición
empleada en el ejemplo anterior, sólo se
establecería la variable “bIsIE7” a “true” en
el caso de tratarse de IE7.
También se puede comprobar la propiedad
“maxHeight” del objeto “style”. Los navegado-
res modernos, IE7 entre ellos, sí la soportan:
if (typeof document.body.style.maxHeight
!= “undefined”) {
// IE 7
} else {
// IE6
}
Por último, también se puede explorar la
cabecera http llamada User-Agent. En el
servidor es la única opción. Los navega-
dores mandan esta cabecera, entre otras
muchas, en cada llamada que realizan al
servidor.
Ahora bien, la detección no es tan senci-
lla como parece. Hay tantos valores de la
cabecera User-Agent como distintos
navegadores, sistemas operativos y ver-
siones de los mismos. En el site de
Microsoft existen dos buenos artículos al
respecto que podrán ayudarte a mejorar
tus desarrollos:� Detecting Internet Explorer More Effectively:
Hoja XSL que transforma un documentoXML en una copia de sí mismo.
Site de Microsoft dedicado a InternetExplorer 7.
64-66 Dudas.qxd 20/12/06 15:22 Página 63
SOLO PROGRAMADORES nº 145 64
VIDEO-TUTORIAL
http://digital.revistasprofesionales.com
Una de bolos
En esta edición, tocamos nuevamente laprogramación gráfica con Java, esta vez para recrear una bolera virtual. En este
vídeo-tutorial, de aproximadamente 45minutos de duración, aprenderemos las téc-nicas más clásicas en este tipo de programa-ción, como puedan ser el doble buffer o ladetección de colisiones, así como el mante-ner dos vistas sincronizadas, una con la“proyección 2D” otra con la “proyección 3D”.Sin duda, un lujo que puede considerarse unauténtico regalo de reyes.
¿Cómo obtener el vídeo-tutorial?
El material que conforma este vídeo-tuto-rial consiste en un archivo de vídeo y elcódigo fuente del proyecto. Tanto los lecto-res de la edición en papel como los lectoresde la edición digital podrán descargar elvídeo de la página web de SóloProgramadores, haciendo clic en el enlace“Fuentes” correspondiente que aparece enla página principal del número 145 (no esnecesario entrar en la Zona Privada paradescargar el material). El formato del vídeoes WMV y el tamaño de la descarga es de46 MB aproximadamente.
Si te gusta jugar a los bolos, y tegusta la programación en Java,estás de enhorabuena. Con elvídeo-tutorial de este mesaprenderemos a programar unabolera con la tecnología Java y elentorno de desarrollo Eclipse.
Bolera virtualBolera virtual
¿Tienes sugerencias para el próximovídeo-tutorial?
Nos interesa saber cómo podemos mejorarlos vídeos y sus contenidos, de modo que sitenéis cualquier sugerencia para futurosvídeos, no dudéis en transmitirla aJorge Rubira, el autor: [email protected].
JORGE RUBIRA
65 Video.qxd 20/12/06 15:23 Página 64
¿AÚN NO LOS TIENES?
Si no lo encuentras o está agotado, solicítalo en el teléfono 91 304 87 64 - Fax 91 327 13 03E-mail:[email protected] - www.revistasprofesionales.com