60
SQL Server Reporting Services Universidad Final de la Imagine Cup en España. Open Source lphant, primer peer to peer bajo .NET Comunidades La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de Software Un veterano a la última WebForm Templates • Distribuir aplicaciones con .Net Remoting • Cambios sufridos por Object Pascal en Delphi 8 .NET • Configuración de varios sitios Web en IIS 6.0 con una misma dirección IP • Particiones de Directorio de Aplicaciones dotNetManía Visual Basic.NET • C# • Delphi • ASP.NET • ADO.NET • .NET Framework • Windows Server System dotNetManía www.dotnetmania.com Dedicada a los profesionales de la plataforma .NET nº5 junio 2004 • Precio: 6,00 (España)

Visual Basic.NET • C# • Delphi • ASP.NET • ADO.NET … · Mazzini, David Carmona, Eladio Rincón, Francisco Charte, Fernando Guerrero, Fernando Nogueras, Guillermo ‘gui-

Embed Size (px)

Citation preview

SQL Server Reporting Services

UniversidadFinal de la Imagine Cup en España.

Open Sourcelphant, primer peer to peer bajo .NET

ComunidadesLa XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de SoftwareUn veterano a la última

WebForm Templates •Distribuir aplicaciones con.Net Remoting • Cambiossufridos por Object Pascalen Delphi 8 .NET •Configuración de variossitios Web en IIS 6.0 con unamisma dirección IP •Particiones de Directorio de Aplicaciones

dotNetManíaVisual Basic.NET • C# • Delphi • ASP.NET • ADO.NET • .NET Framework • Windows Server System

dotNetManíawww.dotnetmania.com Dedicada a los profesionales de la plataforma .NETnº5 junio 2004 • Precio: 6,00 € (España)

Está bien, habrá que explicarlo... He recibido muchasopiniones que me han hecho pensar que la mayoría delos visitantes al sitio en Internet de esta revista pien-san, equivocadamente, que dotnetmania.com es la mis-ma cosa que dotNetManía.

Cuando compramos, por ejemplo, un ejemplar deuna revista impresa a través de Internet, lo pagamoscon nuestra tarjeta de crédito, y más adelante llega elcartero a nuestra casa con el sobre correspondiente,habremos usado Internet como un medio más parahacer una transacción. En este proceso se han emple-ado materiales tangibles como el papel y el sello, y hanintervenido personas como el cartero, o la persona quepreparó y envió la revista que pedimos.

Sin embargo, si entramos en Internet y compra-mos un ejemplar de una revista electrónica, lo paga-mos con nuestra tarjeta de crédito y lo recibimos ennuestra cuenta de correo electrónico y lo leemos obte-niendo permisos desde un servidor DRM, tambiénen Internet, estoy usando a éste como un ámbito,donde todo empieza y termina, no he necesitado demateriales tangibles, ni medios convencionales enningún momento; de hecho en todo el proceso nohabrá intervenido posiblemente ningún ser humanode forma directa.

Internet, puramente como ámbito nos trae gran-des cosas, y es una gran revolución, no me cabe duda,pero también pone en peligro a las revistas impresascomo ésta, y también a los libros tradicionales, eincluso al software, la música, el cine, etc. Pero noes éste el momento ni el lugar donde opinar sobreestos asuntos.

A cambio, Internet como medio le ofrece a estarevista posibilidades que antes no tenían los mediostradicionales. Tenemos la posibilidad de publicar tan-to material de apoyo a cada artículo como queramos,incluyendo bibliografía, el sonido original de una entre-vista, vídeos, noticias, enlaces a otros artículos simila-res o páginas relacionadas y, por supuesto, el códigode ejemplo, proyectos, utilidades, etc. Un complementoal papel impensable hasta la aparición de Internet.Incluso el CD que acompañaba a las revistas puedequedar en desuso, puesto que desde Internet puedebajar todo lo que un CD contiene pero con la increí-ble ventaja de interactuar con artículos de otros núme-ros, actualizarse con el tiempo y corregir y ampliartodo el material de apoyo tantas veces como se desee.

Ésta y no otra es la misión principal del sitio enInternet de dotNetManía. Por supuesto, también sir-ve para mostrar cómo es la revista, y más teniendo encuenta que no distribuimos en quioscos, recoger pedi-dos e informar de cómo son las personas que escribenaquí, etc. En breve, Internet ha de servir también paraenviar avisos a los lectores y que también puedan opi-nar y dejar su opinión sobre los artículos e incluso paraestar puntualmente informado, pues en las noticias elpapel de una revista mensual tiene la clara desventajadel tiempo que transcurre entre que la noticia ocurrey cuando realmente llega al lector.

En ningún caso dotnetmania.com es un portal ouna comunidad virtual, porque dotNetManía es unarevista impresa que usa Internet como medio paracomplementarse y difundirse.

dotN

etM

anía

<<

3

Internet: medio y ámbito<<

dnm.editorial<<dnm.editorial

EditorPaco Marín ([email protected])

AdministraciónPilar Pérez ([email protected])

Asesor Técnico/CoordinaciónMarino Posadas ([email protected])

PublicidadJuan Manuel Urraca ([email protected])

Redactores y ColaboradoresAlejandro Mezcua, Angel Esteban,Antonio Quirós, Antonio Rojo, DanielMazzini, David Carmona, Eladio Rincón,

Francisco Charte, Fernando Guerrero,Fernando Nogueras, Guillermo ‘gui-lle’ Som, Iván González, Jesús López,Jordi Rambla, Jorge Serrano, JoséManuel Alarcón, José Miguel Torres,Juan Torres, Liborio López, LuisMiguel Blanco, Marino Posadas,Miguel Egea, Miguel Katrib, PabloAbbate, Pedro Gómez, Pedro Pozo,Pepe Hevia, Salvador Ramos

Diseño y MaquetaciónÉride Diseño GráficoTel.: (34) 91 477 48 [email protected] • www.eride.net

EditaNetaliac/ Robledal, 13528529 Rivas-Vaciamadrid (Madrid)

Tf. (34) 91 6667477Fax (34) 91 4991364

ImprimeGráficas Vallehermosowww.graficasvallehermoso.com

Depósito LegalM-3.075-2004

[email protected]

[email protected]

Nuevos [email protected]

5dnm.sumario

Final de la Imagine Cup en España 8-12El proyecto VAMOS, de la universidad politécnica de Valencia, ganador delcampeonato universitario Imagine Cup España de Microsoft y por tanto, seránnuestros representantes en la final internacional de Brasil.

WebForm Templates 13-15Antes de que la Web llegara a nuestras vidas, nuestras aplicaciones tenían laapariencia de una o varias ventanas en Windows, o para nosotros los más viejos,una interfaz no gráfica. Sin embargo, era muy común ya desde esas épocasreutilizar la funcionalidad de presentación de la información.

SQL Server Reporting Services 16-26Al fin ante nosotros tenemos un servidor de informes totalmente desarrollado porMicrosoft, el SQL Server Reporting Services. Se trata de un servidor de informesbasado en Web Services y cuya característica más importante reside en su'modularidad', que por un lado establece, asegura y actualiza el origen de datos al cualestá conectado, y por otro suministra el informe en una fase paralela e independiente.

Crear informes con SQL Server Reporting Services 27-33Los Reporting Services vienen a completar la amplia oferta relacionada con SQL-Server, a completar al motor relacional, que tiene amplias funcionalidades como lareplicación, servicios de alta disponibilidad, mecanismos de trasvase de registros,servicios de transformación de datos, tareas programables, un avanzadomecanismo de copias de seguridad.

Distribuir aplicaciones con .Net Remoting 34-39Existe en .Net cuatro maneras de distribuir aplicaciones, a saber: Los servicios web,.Net Remoting, Mensajería (MSMQ) y Componentes empresariales (COM+). Lostres primeros métodos de distribución son controlados por el la plataforma .Net, porlo que sólo explicarán estas tres primeras.

Cambios sufridos por Object Pascal en Delphi 8 .NET 40-43Con el objetivo de poder generar código ajustado a la especificación común delenguaje (CLS) de la plataforma .NET, Borland ha tenido que introducir ciertoscambios en el compilador de Object Pascal que incorpora la versión 8 de Delphi.

Configuración de varios sitios Web en IIS 6.0 con una misma dirección IP 44-45En este artículo se va a comentar cómo configurar el servidor Web que nos ofreceWindows Server 2003 para disponer de múltiples sitios Web con una mismadirección IP. Esto nos va a suponer un ahorro considerable de direcciones IP. Elmecanismo que nos va a permitir reutilizar de esta manera las direcciones IP sedenomina encabezado de host, y es el concepto que explicamos en este artículo.

Particiones de Directorio de Aplicaciones 46-48Active Directory en Windows 2003 permite la creación y configuración de unanueva partición de directorio llamada Partición de Directorio de Aplicaciones.Esta partición se replica sólo en los controladores de dominio determinados ysiempre que ejecuten Windows 2003.

dnm.opensource.net 50lphant, primer peer to peer bajo .NET

dnm.comunidad.net 51-53La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollode Software. Un veterano a la última

dnm.biblioteca.net 54Moving to VB .NET: Strategies, Concepts, and CodeCode: The Hidden Language of Computer Hardware and Software

dnm.directo.entrevistas 55-56Entrevista a Carlos Heras

dnm.desvan 58dnm

.sum

ario

dotN

etM

anía

<<

6

dnm.noticias<<dnm.noticias

Tech-Ed Europe 2004 en marchaEl evento europeo definitivo de Microsoft sobrecreación, implantación, protección y gestión de soluciones conectadas

Ya está aquí la mayorconferencia del añopara desarrolladores,arquitectos de soft-ware y sistemas yprofesionales de lasTI europeos. Serádesde el 29 de junioal 2 de julio y vuelve

a Ámsterdam, en Holanda, después de tres años decelebrarse en Barcelona.

En este año habrá contenido adicional sobre movi-lidad ya que se aprovecha para celebrar conjuntamentela Conferencia Microsoft Mobile Devcon (MDC).

Habrá seminarios pre-conferencia en los que te actua-lizarán rápidamente durante un día completo en las tec-nologías más relevantes de desarrollo e infraestructuraantes de las conferencias en sí; más de 400 sesiones téc-nicas que te podrás organizar en tu agenda para com-pletar un ciclo formativo intenso de cuatro días; podrásprofundizar en cada tema participando en las charlas pre-sentadas por una lista de expertos de Microsoft y del sec-tor y de los que el resto del año sólo oirás hablar.

Algunos de los ponentes serán:Fernando Guerrero (único ponenteespañol del que podéis leer un artícu-lo sobre Yukon en el número 1 dedotNetManía), Don Box, DavidChappell, John Craddock, Jim Gray,Rafal Lukawiecki, Steve Riley, MarkRussinovich, Clemens Vasters, etc.

Marino Posadas, asesor técnico ycoordinador de dotNetManía, estaráallí y nos traerá jugosas entrevistas y uncompleto reportaje del evento. Dadaslas fechas del evento, posiblementeretrasemos la salida del siguiente núme-

ro para publicar un avance del evento. Espero quemerezca la pena esperar al siguiente ejemplar unosdías más.

Si te interesa asistir puedes encontrar más información enmicrosoft.com/spanish/msdn/Spain/eventos/teched.aspy en microsoft.com/europe/teched/

InstallShield X combina el poder y flexibilidad deInstallShield DevStudio con el soporte multiplata-forma de InstallShield MultiPlatform, en una únicasolución para todas las plataformas, sistemas operati-vos y dispositivos.

Sus características avanzadas le permitirán confi-gurar servidores de bases de datos, instalar serviciosweb, y crear instalaciones para dispositivos móviles.

InstallShield X está disponible en dos ediciones:Professional y Premier, para que adquiera únicamentelas características que necesite, al precio más conveniente.

InstallShield X le ofrece la flexibilidad y potenciapara desarrollar todos los instaladores Windows (MSI),InstallScript™, de plataforma cruzada (por ejemploSolaris, RedHat Linux, Mac OS X y OS/400), y paradispositivos móviles desde una misma herramienta.

Sus herramientas automatizadas y asistentes faci-litan la creación de todo tipo de instalaciones, por muycomplejas que éstas sean. Además sus funciones deeliminación de conflictos aseguran que las instalacio-nes sean a prueba de fallos, para que usted ofrezca lamejor imagen a su cliente desde el primer momento.

Permite suministrar actualizaciones de sus pro-ductos rápidamente notificando al usuario final la exis-tencia de actualizaciones de producto. Esto permitereducir significativamente el tiempo, coste y soporteal mantener a sus clientes con las últimas versiones desu producto.

En España puede obtener soporte técnico, servi-cios de formación y consultoría a través de los servi-cios profesionales Danysoft, empresa que lo repre-senta en exclusiva. (Danysoft.com/installshield.htm)

Danysoft presenta el nuevo InstallShield X

no

ticia

s.n

oti

cia

s.n

oti

cia

s.n

oti

cia

s.n

oti

cia

s.n

oti

cia

s

La solución le ofrece todo lo que necesita para crear instalacionesde Windows a Linux y de servidores a dispositivos móviles

dnm.noticias<<

dnm.noticias

A principios del mes de mayo se celebró enWashington la versión Americana del MicrosoftWinHEC 2004 (Windows Hardware EngineeringConference), donde cada año se explora el futu-ro para la plataforma Windows con la industriadel PC.

WinHEC es el evento donde ingenieros dehardware, desarrolladores de drivers, y fabri-cantes se dan cita para obtener la informacióntécnica y estratégica para el desarrollo de sus pro-ductos y servicios alrededor de Windows.

Esta edición se ha centrado en los avances dela tecnología para Windows XP, Windows 2003Server y, cómo no, en el futuro de Longhorn a pesarde faltarle al menos dos años para su estreno.

Microsoft distribuyó la primera versión alp-ha oficial de Longhorn, aunque en realidad yahubo una “pre-alpha” para los asistentes al PDCdel año pasado. No debemos esperar una versiónbeta hasta el año que viene. También se distri-buyó entre los asistentes algunas nuevas herra-mientas de desarrollo para Windows como elWindows Longhorn Driver Kit, Windows DriverFoundation, y el Driver Install Frameworks.Más información en http://www.microsoft.com/whdc/winhec/default.mspx

WinHec 2004

Bill Gates en la Keynote Seamless Computing: HardwareAdvances for a New Generation of Software

en el WinHEC 2004

En este número distribuimos conjuntamente conla revista el CD Kit de recursos ASP.NET ver-sión 2. Este Kit incluye una amplia colección dedocumentación, ejemplos, guías de arquitecturay catálogos de libros de las editoriales MSPress,Anaya y A!Press.

También incluye muchos artículos técnicosen español del sitio web MSDN Online así comoun extenso archivo de referencias técnicas, vide-os y presentaciones narradas, descargas del

.NET Framework y del Toolkit de DesarrolloMóvil y un listado de enlaces a sitios de inter-net relacionados con ASP.NET y el desarrolloen general.

Además se han añadido la herramienta dedesarrollo ASP.NET Web Matrix, y losASP.NET Starter Kits, cinco sitios web pre-construidos y fácilmente modificables, que le per-mitirán comenzar a trabajar de inmediato con latecnología ASP.NET.

Como novedades en esta versión 2 se hanincluido dentro del apartado "Descargas" unaserie de controles gratuitos ofrecidos por ter-ceras compañías líderes en el sector (comoComponentOne o Infragistics), así como ver-siones en español de los Starter Kits para VisualStudio .NET dentro de su apartado específico,y la nueva versión del Tour Guiado deWebMatrix.

Esperamos que le sea útil.

CD Kit de recursos ASP.NET versión 2

Canon v 1.0: Metodología convergentede desarrollo softwareDesde el segundo semestre de 2003 un Grupo de Metodologías, formado pordiferentes profesionales del Área de Soluciones de Negocio y Desarrollo deSoftware han estado trabajando en el diseño una metodología propietaria paragestionar los proyectos de desarrollo de software que se llevan a cabo enAlhambra-Eidos. Producto del trabajo de dicho grupo es Canon en su ver-sión 1.0.

Canon es la metodología interna para desarrollo de software creada porAlhambra-Eidos con la finalidad de mejorar el nivel de madurez con el quese abordan sus distintos proyectos y, por tanto, asegurar la calidad en elresultado de los mismos.

Borland y SOFTENG sellan su alianzacomo partners estratégicos parapotenciar el uso de sus productosEl acuerdo establece un marco de cooperación para incrementarla productividad de los proyectos en ambas compañías

Borland y SOFTENG han anunciado su compromiso de trabajar de formaconjunta para potenciar el uso de sus productos, a través de la organizaciónde eventos y seminarios de formación, realización de consultoría así comode la introducción de mejoras en las prestaciones de los proyectos que desa-rrolla Softeng.

El “know how” en productos Borland, especialmente Delphi, ha lleva-do a SOFTENG a convertirse en una de las empresas más importantes den-tro de su red de partners en España y el único en la actualidad que operaen el área de Cataluña.

La mujer empresaria y el eLearningLa plataforma de formación virtual Almagesto, escogida por laASEM como medio formativo para sus afiliadas.

La Asociación Empresa Mujer -ASEM-, ha puesto en marcha una iniciati-va de apoyo al empleo femenino de alto nivel, en colaboración con laConsejería de Trabajo del Principado de Asturias.

Como parte de esta iniciativa se presentó el pasado febrero la PrimeraFeria Virtual ASEM con un doble objetivo, impulsar el área comercial, ybrindar una oportunidad de formación múltidisciplinar a través de Internet.Para ello se ha contado con los servicios de Almagesto 4.0, la plataforma deeLearning eLMS de Alhambra-Eidos.

em

pre

sas.

em

pre

sas.

em

pre

sas.

em

pre

sas

es la competición in-formática para estudiantes universita-rios que organiza Microsoft a nivelinternacional, en la que deben presen-tarse proyectos en los que se utilicen dis-positivos móviles, servicios web y com-ponentes inteligentes que aprendan a lolargo del tiempo.

La final a nivel mundial ya está ensu segunda edición y consistirá en unevento de varios días de duración en laprimera semana de julio, en Sao Paulo,Brasil. Todos los finalistas internacio-nes de cada país o región competiránpor las tres primeras plazas. Los pri-meros premios son de 25.000, 15.000y 10.000 dólares para el primero,segundo y tercero respectivamente. Entotal se repartirán más de 85.000 dóla-res en premios en metálico para losganadores.

Cinco han sido los proyectos selec-cionados para la final de la primera edi-ción en España de Imagine Cup. Para suselección se ha tenido en cuenta tanto suinnovación y creatividad como su utili-dad y posibilidades de implementación.

Procedían de cinco universidadesde distintas regiones de la geografíaespañola: la Universidad Politécnica deCatalunya, la Universidad de Deustodel País Vasco, la Universidad Pontificiade Comillas de Madrid, la Universidadde Málaga y la Universidad Politécnicade Valencia.

El ganador que nos representará elpróximo mes de julio en Sao Paolo hasido el proyecto VAMOS de la Uni-versidad de Valencia. La propuesta hasido seleccionada por su innovación,

utilidad y originalidad, así como porlas posibilidades de aplicación a la vidareal.

1er PremioVAMOS: el museo del futuroMuseos interactivos, dinámicos, cerca-nos al visitante. Ese es el objetivo deVAMOS, un proyecto que, gracias a latecnología de los Pocket PCs y las redesinalámbricas, nos acerca lo que serán losmuseos del futuro.

Acabar con lanoción de los museoscomo meros “conte-nedores visuales” deobras de arte es elpunto de partida deVAMOS (VirtualAssistant for Museum

Occasional Sightseeing),un proyecto que nosacerca al museo del futu-ro, un espacio dinámico,interactivo y cercano alvisitante.

Un museo que, paralos autores de VAMOS,deberá cumplir nuevasfunciones como la con-servación intelectual(entendida como el estu-dio, interpretación, cata-logación y valoración delas obras de arte comoobjetos de carácter esté-tico que constituyen lashuellas culturales de la

Humanidad) y la dinamización cultural,dejando atrás su silencioso aposento paradialogar con el arte y con la sociedad,interrogando constantemente, relacio-nándose y modificando el entorno.

Una revolucionaria visión que tieneun gran aliado en las nuevas tecnologí-as. Así, los autores de VAMOS señalanque la arquitectura tecnológica adecua-da a este nuevo modelo de museo debecumplir al menos con las siguientescaracterísticas:• Ser compatible con la riqueza senso-

rial de las visitas físicas.• Enriquecer las visitas con información

de carácter virtual para facilitar lacomprensión de las obras de arteexpuestas.

• No ser un mecanismo estático de pro-ducción de información sino tener uncarácter dinámico que permita variarlos contenidos.

dotN

etM

anía

<<

8

Final de la Imagine Cup en EspañaEl proyecto VAMOS, de la universidad politécnica de Valencia,

ganador del campeonato universitario Imagine Cup España de Microsoft

<< Imagine Cup

El equipo ganador recogiendo sus diplomas junto a Rosa García,consejera delegada de Microsoft Ibérica;Beatriz Ordoñez,responsable de Imagine Cup España y el Ilustrísimo Sr.D.ÁngelBerna Quintana, director general de la Fundación Pablo VI – UPSA.

• Ofrecer bajo un único punto de entra-da diferentes servicios.

• Proveer información al visitante encualquier momento durante la reali-zación de una visita.

• Personalizar los contenidos que semuestran al visitante en funciónde sus gustos, de forma transpa-rente y automática.

• Facilitar que los visitantes puedandisfrutar del mayor número posi-ble de obras en caso de disponer depoco tiempo para realizar la visita.

La respuesta a tan elevadas exigen-cias parece tener un nombre: VAMOS,un sistema que, basándose en una infra-estructura de redes inalámbricas y dis-positivos móviles, convierte el museo enun espacio interactivo y a la medida delvisitante.

Su “secreto”: la movilidad. VAMOSes un sistema completamente móvil,capaz de acompañar al visitante en todomomento durante su recorrido por elmuseo. Para buscar un ejemplo actual,podría asimilarse a las tradicionalesaudioguías que desde ya hace tiempoencontramos en cualquier instalaciónde estas características pero con unaimportante diferencia: el sistemaVAMOS ofrecerá al visitante informa-ción multimedia, dinámica, conectivi-dad a Internet y capacidad de navega-ción aumentando de esta forma la inte-ractividad entre usuario y museo.

Comienza la visita

Por fin nos hallamos en el interiordel museo y, lamentablemente, con

menos tiempo del que nos gustaría ysería necesario para poder visitarlo deforma provechosa. Sin embargo, conta-mos con VAMOS, el sistema que, trasalquilar un dispositivo de mano en elpropio museo, nos guiará en todomomento en nuestra visita. Tras indicaral sistema el tiempo del que dispone-mos, así como nuestras preferencias, éstenos ofrece la ruta perfecta a nuestrosrequerimientos. En tan sólo un par declicks nos encontramos visitando las salasy exposiciones que más nos interesabany además, con toda la información quenecesitamos para disfrutar de las obrasde arte que en nuestro recorrido vamosencontrando. De repente, nos sorpren-de una de esas obras. Nos detenemosfrente a ella para examinarla más pau-sadamente. En nuestro Pocket PC,VAMOS nos ofrece todos los datossobre la misma: su autor, trabajos pre-vios, inspiración, estilo, etc. Nuestro altoen el camino ha merecido la pena pero,claro, también ha retrasado el plan devisita. No hay problema: sin que nospercatemos siquiera, VAMOS ha rehe-cho nuestra visita al museo, adecuán-dola ahora al tiempo que nos queda.

2º PremioNever2Late.Despertar siempre a tiempo

Despertarse a tiempo siempre, sin mie-do a posibles atascos, accidentes o lluviastorrenciales. No hablamos de una pelí-cula de ciencia-ficción sino de una reali-dad posible gracias al sistema Never2Late, el despertador inteligente.

Llegar a tiempo. La difícil y estresantetarea a la que solemos enfrentarnos todoscada mañana. El despertador que no sue-na, la ducha que esa mañana no quieredarnos agua caliente y para colmo, cuan-do por fin conseguimos salir de casa, unaccidente y su consiguiente retención enla carretera. Hagamos lo que hagamos,de nuevo, llegaremos tarde.

Pues bien, esta habitual y cotidianasituación tiene los días contados graciasa Never2Late, un sistema móvil que amodo de despertador le permitirá ren-tabilizar al máximo su tiempo.

Ni un imprevisto más

Despertarse contiempo suficientepero además tenien-do en cuenta aspec-tos tan decisivoscomo el estado deltráfico esa mañana,y a esa hora en con-creto, y la situaciónmeteorológica. Elobjetivo: no llegartarde nunca más. Los beneficios: Hacermás fácil la vida del usuario, aprovechan-do su tiempo al máximo, ya sea en el tra-bajo, en su domicilio o el camino entreambos.

Todo ello, de forma rápida y senci-lla, tomando como punto de partida lapropia experiencia del usuario, sus hora-rios y tareas habituales, itinerarios, etc.

El funcionamiento de Never2Latees sencillo: el primer paso para disfru-tar de sus ventajas será el registro gra-tuito por parte del usuario en la web dela aplicación. Una vez registrado, debe-rá introducir en el sistema la informa-ción de los pasos o tareas que debe rea-lizar en cada ocasión para llegar a su des-tino, incluidos los posibles caminos quepuede utilizar para llegar a éste.

Una secuencia más o menos lógicade lo que el usuario hace cada mañanay que el sistema debe conocer, podríaser:

1. Despertar y ducha2. Desayuno3. Entrada en el coche4. Camino A5. Camino B6. Llegada a destino/trabajo

dotN

etM

anía

<<

9

dnm.universidad<<

Proyecto:VAMOS (Virtual Assistant for MuseumOccasional Sightseeing).

Universidad:Facultad de Informática. Universidad Politécnicade Valencia.

Autores:Vicente Bosch, Kristian Eide, José Miguel Esteve y José Antonio Mocholí.

Tecnología:.Net FrameWorkSQL Server

Aplicación:Asistente móvil para la visita a museos, interactiva y personalizada.

Una vez introducida esta informa-ción, el sistema Never2Late se sincro-niza con el dispositivo móvil del usua-rio y pronostica, a partir de su propiaexperiencia, el tiempo necesario paraque, al día siguiente, éste se despierte yrealice todas sus tareas habituales, lle-gando a tiempo a su destino.

Pronosticar de forma inteligente lahora de despertar al usuario implicavalorar, además de la experiencia delusuario, otros factores decisivos comopueden ser la información del tráfico,datos meteorológicos e incluso infor-mación del calendario (vacaciones,puentes, días festivos, etc). Con toda estavaliosa información, el sistemaNever2Late despertará al usuario a lahora exacta y necesaria para que lleguea su lugar de trabajo justo a tiempo.

Es decir, si por ejemplo, Never2Lateve que existe un embotellamiento de trá-fico esa mañana en el camino que elusuario tiene que tomar para llegar a sudestino, hará que el despertador sueneantes para evitar que el usuario se retra-se por ese motivo.

Pese a que Never2Late utiliza uncomplejo entramado de redes neurona-les, servicios web y técnicas heurísticas

para lograr su propósito, la experienciadel usuario en su utilización es de lo mássencilla y sólo necesita de un dispositi-vo móvil para disfrutar de ella.

3º PremioPicassoft.El turista inteligenteEnormes mapas que no consigue nun-ca doblar adecuadamente; catedrales alas que llega justo cuando están cerra-das al público; monumentos que nuncalocaliza; poco tiempo y demasiadas cosasque ver. Esta escena tan habitual para elturista podrá no repetirse más gracias aPicassoft, un sistema que hace posibleun “turismo inteligente”.

Un simple PocketPC será a partir deahora su mejor guíaturístico. Gracias a

Picassoft, un programa diseñado por cua-tro estudiantes de la Universidad deMálaga, el turista podrá con su dispositi-vo móvil conocer en todo momento lamejor ruta para visitar los rincones de unaciudad, siempre adecuándose además a susgustos, tiempo disponible o preferencias.

Aprovechar el tiempo

El objetivo de Picassoft es claro:permitir que cada turista saque el máxi-mo provecho al tiempo del que dispon-ga para visitar una ciudad y que, a la vez,su experiencia sea lo más rica posible.Para ello, Picassoft ofrece al usuario,mediante un Pocket PC, un recorridointeligente por la ciudad y lo más impor-tante, totalmente personalizado.

Tras ejecutar Picassoft en su dispo-sitivo móvil y elegir el idioma

que prefiera, el usuario podrá cono-cer de forma rápida y sencilla su “per-fecto” itinerario. Sus gustos, preferen-cias, tiempo del que dispone y momen-to en el que desea realizar la visita soncombinados por el sistema con la valo-ración que otros turistas han otorgadoanteriormente a monumentos y puntosde interés para así obtener el recorridomás satisfactorio. Una visita sin dudapara recordar siempre.

Pero además de ofrecer el mejorrecorrido por la ciudad, Picassoft haráque el usuario disponga en la pantalla

de su Pocket PC de un mapa que entodo momento le indique su situaciónactual dentro de la ciudad y de la rutaelegida, así como la ubicación de la pró-xima parada en la misma.

Sencillo, actualizado y personaliza-do, Picassoft permite además que elusuario edite la ruta en cualquiermomento, eliminando y añadiendolugares de forma manual.

La más completa información

La ruta perfecta y a medida peroademás con toda la información nece-saria para que disfrutar de ella al máxi-mo sea una realidad. El sistemaPicassoft le acompaña en todo el reco-rrido ofreciéndole la información máscompleta de cada uno de los lugares quevisita. Así, de forma automática y cadavez que el usuario alcanza uno de susdestinos, el sistema le ofrece en panta-lla detallada información audiovisual decarácter turístico

sobre el lugar dónde se encuentra:año de construcción, estilos, historia,aspectos más destacados, etc. Todo ellojunto a datos de gran utilidad comohorarios y días de visita, precios deentradas y ofertas especiales para gru-pos, así como teléfonos de información.

Su opinión es importante

La absoluta actualización del siste-ma y, sobre todo, su permanente amplia-ción, hacen de Picassoft una importanteherramienta no sólo para el turista sinotambién para los responsables turísticosde cada una de esas ciudades.

Así, la aplicación establece que cuan-do el usuario ha visitado un lugar de laruta elegida, pueda emitir su valoraciónsobre el mismo. Esta información pasaa formar parte del sistema, que generaasí listas con los lugares mejor valora-dos por los usuarios y, de igual modo,ofrece cada vez rutas más acordes a estasvaloraciones, priorizando los lugares,rincones o monumentos de esa ciudadque más votos positivos han consegui-do por parte de las personas que las hanvisitado.

Una valiosa información que no sólohará mucho más gratificante las próxi-mas visitas de otros turistas, sino que

dotN

etM

anía

<<

10

dnm.universidad<<

Proyecto:Never2Late.

Universidad:Escuela Técnica Superior deIngenieríaUniversidad Pontificia deComillas.

Autores:Mauricio Asuar García y AlejandroHernández de Madrid Díaz.

Tecnología:.Net FrameWorkWeb ServicesRedes NeuronalesSQL Server 2000Programación en C+,ASP.Net

Aplicación:Despertador inteligente.

permitirá además a las autoridades res-ponsables detectar posibles carencias enlas instalaciones o monumentos de suciudad y mejorar así la calidad de éstos.

Una aplicación de futuro que trans-formará el turismo actual, convirtién-dolo en una actividad enriquecedora,mucho más gratificante, personalizaday, sobre todo, inteligente.

FinalistaMy Street Finder. Un mapa en el bolsillo

Obtener un mapa de la ciudad, locali-zar puntos de interés e incluso saberhacia dónde dirigir nuestros pasos parallegar a ellos. Estos son sólo algunosejemplos de las numerosas aplicacionesque tiene My Street Finder.

Transeúntes, tu-ristas e incluso traba-jadores en busca de laruta más corta haciasu destino pueden,con My Street Fin-der, obtener en cual-quier momento ylugar un mapa de laciudad en la que se

encuentran, al alcance de su mano. Unmapa en el que localizar calles o puntosde interés y, lo más importante, cono-cer de forma sencilla y rápida el cami-no para llegar a ellos.

Información a medida

Basado en una arquitectura cliente-servidor, este proyecto permite al usua-

rio obtener en su Pocket PC mapas deuna ciudad o zona, completamente actua-lizados. Esto se consigue gracias a la tec-nología utilizada por el autor y que con-siste en que los mapas generados no sealmacenen en el servidor en formato foto-grafía sino que son datos en tablas que,desde una base de datos, se convierten enimágenes al ser enviados al usuario.

Esta característica permite que cadausuario decida qué información delmapa desea recibir: datos de edificios,calles, carreteras, instalaciones eléctri-cas... el usuario decide el mapa que quie-re recibir en su Pocket PC, a la medidade sus necesidades.

Además, es necesario destacar la faci-lidad que ofrece este sistema a la horade actualizar la información de losmapas ofrecidos.

A diferencia de otros sistemas, cuyainformación está almacenada de formaestática -por ejemplo en imágenes- queno permiten una actualización rápida delas mismas y en pocos años acaban resul-tando obsoletas, My Street Finder per-mite hacer cambios continuos en lainformación sin que ello afecte a la apli-cación.

La ciudad en movimiento

Saber dónde está la calle Leganitoso, incluso, conocer dónde se encuentrala estación de tren más cercana. El usua-rio puede conectarse al servidor y enunos minutos recibir en su Pocket PCel mapa de la zona de la ciudad en laque se encuentra, aumentar o reducirel tamaño del mismo y, de gran utili-dad, “navegar” por la ciudad en su dis-positivo.

Una ventaja que My Street Finderproporciona permitiendo que el usua-rio reciba mapas de posiciones adya-centes a la que se encuentra en esosmomentos y, de esta forma, obtenga lavisión más completa de la zona.

Visitar la ciudad al completo peroademás, con un “guía” que le acompa-ñe es otra de las posibilidades que elusuario tiene gracias a My StreetFinder. Así, esta aplicación hace posi-ble que el usuario active la función guíaen su Pocket PC para, además de reci-bir el mapa que precisa, un símbolo enla pantalla le indique la posición exactade la calle o punto de interés que buscay además, la dirección que deberá seguirpara encontrarlos.

Aunque a primera vista, My StreetFinder pueda parecer una aplicacióndestinada a turistas o simplemente tran-seúntes, el entorno laboral y su mejorproductividad es otro de los escenariosdonde My Street Finder resulta espe-cialmente útil.

Así por ejemplo, este sistema puedefacilitar a repartidores, comerciales, ins-taladores, etc., localizar el punto al que sedirigen de forma más rápida, optimizan-do de este modo su tiempo de trabajo.

Pero además, My Street Finder per-mite que un usuario conozca en el mapaque recibe la posición exacta en la que seencuentra otro usuario del sistema. A tra-vés del mismo protocolo, el usuario pue-de recibir información sobre otros usua-rios como es el nombre y la posición don-de se encuentra en esos momentos.

dotN

etM

anía

<<

11

dnm.universidad<<

Proyecto:My StreetFinder.

Universidad:Facultad de Ingeniería-ESIDEUniversidad de Deusto.

Autor:David Sainz González.

Tecnología:Plataforma .NetGlobal Positioning SystemProtocolo Estándar de los GPS(NMEA 0183).Cartografía y sistema de coorde-nadas UMT.

Aplicación:Servicio de Mapas

Proyecto:Picassoft

Universidad:ETSI Informática. Universidad de Málaga.

Autores:Curro Basagoiti, Iñaki Esteve,Antonio Molina y Ana Reyna.

Tecnología:Windows XP Professional, Office XP Professional, SQL Server 2000, .NetFrameWork SDK 1.1,Web Matrix, GPS .Net...

Aplicación:Servicio de rutas y recorridos turísticos en Pocket PC.

Esta funcionalidad hace de MyStreet Finder una herramienta muy útilpara los servicios de seguimientos deflotas. De forma sencilla y en tiemporeal, camioneros, repartidores o taxis-tas pueden conocer el punto exacto don-de se encuentra cada uno de sus com-pañeros de trabajo.

Calles, puntos turísticos, monu-mentos, estaciones de tren, My StreetFinder ofrece el mapa “a la carta” quenecesita.

Finalista.RAMPA. El fin de las barreras arquitectónicas

Rampas, escaleras, bordillos, obras.Cada día, las personas con alguna defi-ciencia física o psíquica se encuentrancon múltiples barreras arquitectónicasque pueden convertir un simple paseoen una carrera de obstáculos. El pro-yecto RAMPA busca ayudarles a supe-rar estas dificultades.

El cualquier momento y desde cual-quier lugar, el usuario de RAMPApodrá, a través de un dispositivo PocketPC, conocer el trayecto más adecuadoa sus deficiencias físicas o psíquicas. Trasconocer las características específicas demovilidad del usuario, RAMPA evalúalas peculiaridades del entorno y así, ofre-ce un trayecto por el mismo adaptadoal usuario. Esta adecuación del recorri-do a las características del usuario (y noal contrario como suele ser habitual)mejora enormemente la calidad de vidadel mismo.

Encontrar un lugar

Además de facilitar el recorrido oruta más adecuada a las deficiencias físi-cas o psíquicas del usuario, RAMPApuede también ayudarle localizando elpunto de interés o servicio que necesi-ta. Una vez localizado, el sistema mos-trará además el recorrido más adecua-do para llegar al mismo.

La utilidad de esta herramienta secompleta aún más con la completaactualización de la información queRAMPA ofrece y que permitirá cono-cer en todo momento posibles obras en

ese camino, inclemencias meteorológi-cas que pudieran afectar al usuario ensu recorrido, eventos especiales que ten-gan lugar en el mismo, etc.

Del edificio a la ciudad

La propia definición y diseño delprograma RAMPA incluye desde su ori-gen la absoluta escalabilidad del siste-ma. Así, RAMPA es capaz de ofrecerinformación relativa tanto al entornofísico de un edificio determinado comode una ciudad o región. Escalable portanto y completamente personalizable,el proyecto RAMPA permite múltiplesopciones de uso.

Así, por ejemplo, el sistema ofrecesu información de dos modos:

de forma pasiva para el usuario: elusuario recibe información sin tener quesolicitarla. Para ello, es necesaria unadefinición previa de la información quele resulta interesante y un registro pre-vio del usuario en el sistema.

de forma activa: el sistema recibe unapetición del usuario sobre una infor-mación concreta.

Tanto en un caso como en el otro,RAMPA evalúa las características par-ticulares del usuario para así ofrecerlela información más adecuada a las mis-mas, de forma sencilla, amigable y actua-lizada en todo momento.

Todas las posibilidades

RAMPA ofrece al usuario el mejorrecorrido entre dos puntos. Para ello,muchos son los factores que tiene encuenta. Por un lado, las propias carac-

terísticas físicas del usuario. El sistematiene en cuenta si el usuario va en sillade ruedas, es invidente, etc. Y así eligeel recorrido más adecuado según estosrasgos (para una persona que se muevecon muletas por ejemplo, será mejor uncamino corto aunque en él haya unaescalera ya que se cansa mucho. Sinembargo, ese camino nunca sería el indi-cado para alguien que se desplaza conuna silla de ruedas).

En segundo lugar, RAMPA evalúalas características físicas del propioentorno a la hora de elaborar el reco-rrido adecuado. Así, tiene en cuenta fac-tores como dónde se encuentran ram-pas, aceras o escaleras, si existe algúntramo en obras, las direcciones de lascalles, si hay posibilidad de transportepúblico, etc. Y por último, el sistematendrá en cuenta también condicionescomo la celebración de eventos espe-ciales o incluso, el clima para si, porejemplo, está lloviendo, elegir un reco-rrido que pase mayoritariamente porlugares cubiertos.

Por otro lado, y en el caso de que elusuario lo que solicite sea una ruta deter-minada para llegar a un punto de inte-rés, RAMPA le ofrecerá, junto a la mis-ma, información sobre acontecimientosy/o las instalaciones principales que elusuario va a encontrarse por el caminoy que pueden resultar de su interés.

Además, el diseño de RAMPA tie-ne en cuenta que la información debeser ofrecida de la forma más sencilla encada caso; así, por ejemplo, si el usua-rio es invidente, el sistema deberá pre-sentarle una interfaz completamentehablada.

dotN

etM

anía

<<

12

dnm.universidad<<

Proyecto:RAMPA

Universidad:Facultad de Informática de Barcelona.Universidad Politécnica de Catalunya.

Autores:Sergio Edo, Oriol Mercadé y Vanesa Jiménez.

Tecnología:Plataforma .NetServidor CVS de compartición de código fuente frente a Visual SourceSafe.GPS Navigator Tom Tom.

Aplicación:Servicio de información sobre trayectos adaptados a personas con deficienciasfísicas o psíquicas.

en las aplicaciones Windows, resulta muysencillo reutilizar funcionalidades incorporadas den-tro de los formularios, sólo es cuestión de modifi-car la apariencia en una clase base y todos los for-mularios, que de esta clase desciendan, tendrán lamisma apariencia por defecto.

Al enfocarnos en las aplicaciones Web enASP.NET descubrimos que el comportamiento de laherencia no es exactamente el mismo que en su par,el formulario Windows. Esto se debe a que enASP.NET tenemos dos elementos bien diferencia-bles: el formulario ASCX, cuyo contenido describelos controles que conformarán la apariencia de la pági-na web y, por otro lado, el archivo que contiene lasinstrucciones en .NET que conforman la lógica queregula el comportamiento del mismo formulario.

Esta característica permite distinguir el compo-nente visual de la lógica dentro de la aplicación.Pero, qué pasa si deseamos que la apariencia de unformulario web modelo sea compartida por todos losformularios que sean creados a partir de ese mode-lo. ¿Podríamos reutilizar la barra de navegación denuestro sitio en todas sus páginas? ¿Existe la posi-bilidad de reorganizar la distribución de una pági-na modelo y que los cambios realizados se reflejenen todas las páginas que fueron creadas a partir deese modelo? ¿Es posible configurar, por medio depropiedades, los frames que deseamos mostrar den-tro de una página?

La respuesta, en todos los casos, es sí.

Funcionamientode un formulario Web

Antes de empezar a trabajar, necesitamos cono-cer el funcionamiento de una página web:

• Una página web desciende de la clase Page delnamespace System.Web.UI.

• El contenido del archivo .ASCX asociado conel archivo de lógica determinan el comporta-miento del formulario web.

• No es posible heredar los elementos descriptosen un archivo ASCX. La herencia solo funcio-na a nivel de código .NET, por lo tanto, si dese-amos que una clase herede los controles des-criptos en su padre deberemos escribirlos den-tro del código.

• Si, utilizando el diseñador de formularios, pega-mos un control en un Web Form padre, éste no

WebForm Templates

Pablo AbbateMCDBA/MCAD/MCSD/MCTConsultor independiente

Antes de que la Web llegara a nuestras vidas, nuestras aplicaciones tenían laapariencia de una o varias ventanas en Windows, o para nosotros los más vie-jos, una interfaz no gráfica. Sin embargo, era muy común ya desde esas épocasreutilizar la funcionalidad de presentación de la información.

Con .NET,<<

dotN

etM

anía

<<

13

En ASP.NET tenemos dos elementos bien diferenciables:

el formulario ASCX, cuyo contenidodescribe los controles que

conformarán la apariencia de la página web y el archivo que contiene las instrucciones en .NET que

conforman la lógica que regula el comportamiento

del formulario

aparecerá en un Web Form hijo. Estecomportamiento difiere del formu-lario de Windows.

El proyecto

La idea es desarrollar una páginamodelo que nos permita reutilizar aque-llos componentes comunes a todas laspáginas sin tener que insertarlos cadavez que creamos un nuevo Web Form.

En este caso, haremos un diseño deacuerdo al esquema de la figura 1.

El objetivo es que sólo se deba modi-ficar el contenido del área de trabajo decada página, y el resto de los compo-nentes sean heredados del modelo.

Para personalizar el comportamien-to de todos los formularios web creare-mos una clase modelo que derive de laclase Page. Llamaremos a esta nueva cla-se: modelform

Todos los formularios de la aplica-ción deberán descender de modelformpara que posean su misma lógica.

Originalmente, nuestro formularioweb, responde a la jerarquía de clasesque vemos en la figura 2.

Después de realizar nuestros cam-bios, tendrá la siguiente la apariencia dela figura 3.

Para los frames que rodean al áreade trabajo, utilizaremos user controlsque nos permitirán diseñar gráficamenteel contenido de estos frames.

Veamos como empezar…

Pasos

En un proyecto de Visual Studio2003 seleccionamos ASP.NET WebApplication y lo denominamos Web-FormTemplate.

Siguiendo con nuestro diseño, nece-sitaremos cuatro controles de usuarioque servirán de frames para cada extre-mo del área de trabajo. Agregamos, alproyecto, estos cuatro controles con lossiguientes nombres: frmEncabezado,frmPie, frmIzquierdo, frmDerecho.

En cada user control agregaremostodos los webform controls necesarios paradar el aspecto que queremos a cada fra-me. Por ejemplo, nuestro frmencabeza-do podría tener un aspecto similar al dela figura 4.

Ahora, agregamos un nuevo WebForm denominado modelform. De esteformulario heredarán todos los otrosWeb Forms de nuestra aplicación.

En la sección de code-behind debere-mos modificar el comportamiento dedos métodos:

dotN

etM

anía

<<

14

dnm.asp.net<<

Figura1

Figura 2

Figura 3

Figura 4

Figura 5

CreateChildControls(): Es implemen-tado por la clase System.Web.UI.Control.Este método es el responsable de la cre-ación de todos los controles hijos en uncontrol contenedor tal como un Page.

Lo modificaremos para que agre-gue nuestros frames a la página actual.Para ello debemos agregar el códigofuente 1 al code-behind de nuestro WebForm.

Otro método que debe ser sobre-escrito es Render, también de la claseSystem.Web.UI.Control. La tarea que lle-va a cabo este método es la de enviarel contenido de un control de servidora un objeto HTMLTextWriter, el cualescribe el contenido HTML en elcliente.

Después de nuestra modificación, elmétodo definitivo tiene el aspecto delfuente 2.

Agregamos un nuevo Web Form conel nombre Main.aspx y lo colocamoscomo formulario de inicio desde elmenú de Proyecto. Posteriormente acce-demos al código HTML del formula-rio eliminando todo su contenido. Sólodebe quedar la directiva <@Page …>

A continuación, regresando a la ven-tana de diseño, arrastramos un webformcontrol de tipo Panel sobre el Web Form.Es importante, recordar que el nombredel control agregado debe serAreaTrabajo. Modificamos las propie-dades de tamaño para que abarque el100% del alto y ancho de la página.

Por último, en el código .NETdebemos especificar que nuestra pági-na (Main) no desciende directamente dePage, sino que hereda de modelform(nuestro formulario modelo).

Para ello deberemos modificar ladefinición de la clase con el siguientefragmento de código:

Bueno, ha llegado el momento dever cómo ha quedado nuestra primerapágina terminada. Vea la figura 5.

Cada vez que agreguemos una nue-va página, deberemos repetir los pasoshechos con Main.ascx y así reutilizare-mos todos los controles de usuario.

dotN

etM

anía

<<

15

dnm.asp.net<<

protected override void CreateChildControls(){

// Reemplazamos el formulario del archivo ascx por// un formulario creado desde el códigoHtmlForm Form = new HtmlForm();

// Creamos una tabla para distribuir los framesTable TablaPagina = new Table();TableRow RowContenido = new TableRow();TableCell CellFrmIzquierdo = new TableCell();TableCell CellFrmContenido = new TableCell();TableCell CellFrmDerecho = new TableCell();

// Creamos el EncabezadoForm.Controls.Add(LoadControl(“frmEncabezado.ascx”));

// Agregamos el contendio del frame IzquierdoCellFrmIzquierdo.Controls.Add(LoadControl(“frmIzquierdo.ascx”));

// Agregamos el contenido de la página actualControl Area = this.FindControl(“AreaTrabajo”);if (Area != null)

CellFrmContenido.Controls.Add(Area);

// Agregamos el contenido del frame DerechoCellFrmDerecho.Controls.Add(LoadControl(“frmDerecho.ascx”));

RowContenido.Cells.Add(CellFrmIzquierdo);RowContenido.Cells.Add(CellFrmContenido);RowContenido.Cells.Add(CellFrmDerecho);TablaPagina.Controls.Add(RowContenido);

// Agregamos la tabla de contenido a la páginaForm.Controls.Add( TablaPagina );

// Creamos el PieForm.Controls.Add(LoadControl(“frmPie.ascx”));

// Agregamos el Formthis.Controls.Add(Form);base.CreateChildControls();

}

protected override void Render(HtmlTextWriter writer)

{

// Rellenamos el inicio del código HTML

w r i t e r . W r i t e ( “ < h t m l > < h e a d > < t i t l e > W e b F o r m

Template</title><head><body>”);

// Rellenamos el contenido de la página.

base.Render(writer);

// Rellenamos el fin del documento HTML

writer.Write(“</body> </html>”) ;

public class Main :WebFormTemplate.modelform

Fuente 1

Fuente 2

no es un Add-In para Visual Studio nininguna capa basada en .NET paraotros servidores de informes de terce-ros fabricantes. SQL Server ReportingServices está totalmente desarrolladobajo código administrado, en C# ycomporta una serie de herramientas

para la administración, creación,implantación, publicación y desarrollode informes no sólo para orígenes dedatos específicos de SQL Server yOracle, sino también genéricos,pudiendo utilizarse sin ningún proble-ma OLE DB y ODBC.

La plataforma

SQL Server Reporting Services estáformado por tres componentes básicos:

• Report Server• Report Designer• Report Server Data Base

Report Server es un servicio Web quese hospeda en IIS y ASP .NET y queatiende las peticiones a informes. Larazón de que Report Server sea un WebService stateless, sin estado, hace aumen-tar su escalabilidad teniendo la capaci-dad de servicio de unos 10 a 20 infor-mes por procesador, aproximadamen-te. Actualmente el modelo de progra-

mación stateless es el que se viene utili-zando en el desarrollo de arquitecturas.NET con Enterprise Services, queempezó ya conMTS, yque han

demostrado suventaja frente a aplicaciones stateful (conestado) como son las aplicaciones clien-te/servidor.

La ‘modularidad’ que ofrece laarquitectura de Reporting Services haceque, por una parte el administradordisponga de unas herramientas espe-cíficas para el mantenimiento de infor-mes y a su vez integradas en tareas deadministración como puede ser de sis-tema o de base de datos, y por otrolado, el desarrollador tiene a su dispo-sición una completa API y servicios,integrados todos en Visual Studio.NET, que le permite desarrollar fun-ciones específicas para los informes,independientemente de que el destinodel informe sea Web o Windows Formu otro contexto, por ejemplo móvil.De esta forma cualquier usuario auten-tificado puede ejecutar o ‘consumir’informes desde Internet Explorer, obien desde una herramienta cliente queconsuma el informe a través de un ser-vicio Web.

dotN

etM

anía

<<

16

SQL Server Reporting Services

Por José Miguel TorresTécnico Superior en Desarrollo de Aplicaciones Informáticas MRW

Al fin ante nosotrostenemos un servidor

de informes totalmentedesarrollado porMicrosoft, el SQLServer Reporting

Services. Se trata de unservidor de informes

basado en WebServices y cuya carac-

terística más importan-te reside en su ‘modu-

laridad’, que por unlado establece, aseguray actualiza el origen de

datos al cual estáconectado, y por otrosuministra el informeen una fase paralela e

independiente.

<< SQL ServerReporting Services

La diferencia fundamental con otrosdiseñadores de informes es que, porejemplo, Crystal Reports es una herra-mienta orientada al diseño de informesy, si bien es cierto que puede publicarinformes como Servicios Web e inclusoposee dos interfaces estandarizadas comoson SOAP y COM, dista de la idea de servidor de

ofrece SQL Server ReportingServices, con herramientas deadministración propias, polí-ticas de seguridad y más dife-rencias que iremos viendomás adelante, un servidor deinformes en toda regla.

CaracterísticasA nivel de diseño de informes, con SQL Server

Rerporting Services, podemos realizar todas las opera-ciones que permiten actualmente los diseñadores del

mercado. Diseño de informes tabulares, matriciales,con gráficos, con objetos OLE, etcétera, además intro-duce un concepto llamado ‘snaking columns’ que sonlas utilizadas en los periódicos. Permite la interaccióny navegación por parte del usuario y los formatos depresentaciones más comunes (pdf, html, xls, csv,...), ade-más de agregaciones de datos, etcétera.

El diseñador de informes está integrado con VisualStudio .NET. El motor de diseño posibilita un asis-tente para la creación de informes y permite la impor-

tación desde informes Access, nohabiendo posibilidad, de momento,de importación desde Crystal Reportsni de cualquier otro fabricante.Asimismo posee un generador deconsultas SQL y posibilidad de vis-ta previa, entre otras características.

Desde el punto de vista de laadministración de informes, SQLServer Reporting Services nos ofreceuna herramienta basada en Webpara tal fin. También tenemos laposibilidad de utilizar el intérpretede comandos para ejecutar utilida-des e incluso herramientas de pro-gramación de secuencias de coman-dos. La seguridad está basada en fun-ciones, con lo cual podremos con-trolar el acceso a carpetas, archivos,recursos en general. Dicha seguri-dad está basada en la autenticaciónde Windows y/o SQL Server.

Otra característica a indicar es el historial de infor-mes, el cual representa en forma estadística cual hasido la actividad de cada informe, lo que puede ayu-dar al administrador y/o arquitecto de un sistema paraperfilar la escalabilidad de la arquitectura.

dotN

etM

anía

<<

17

“El potente entorno de desarrollo que pone a sudisposición Visual Studio .NET 2003 facilita la cre-ación e implantación de soluciones de creación deinformes con la mayor capacidad de ampliación decara al crecimiento futuro. Microsoft SQL ServerReporting Services también proporciona la flexibi-lidad añadida de la creación de informes junto auna amplia variedad de fuentes de información,entre las que se incluye SQL Server, OLE DB,ODBC, Oracle y otros proveedores de datos dela plataforma .NET. Entre los formatos de informese incluyen: formatos Web (HTML), de impresión(PDF,TIFF) y de datos (Excel, XML, CSV)”

Fernando Bocigas, ProductManager de SQL Server y SQLReporting Services de MicrosoftIbérica

Fig 1. Diagrama de la arquitectura

<<

Cada usuario (cliente) de una redcorporativa con cuenta autenticada deWindows, por ejemplo, con acceso aSQL Server Reporting Services, disponede un espacio Mis Informes en los quetiene un espacio para administrar yalmacenar sus propios informes; asi-mismo también se pueden obtener sus-cripciones propias en un espacio simi-lar llamado Mis Suscripciones. Dichas sus-cripciones se entienden como distri-buidores de informes automáticos acliente y que pueden ser estándares ocontroladas por datos, en la que se sir-ven según una consulta, por ejemplo.La entrega puede ser mediante correoelectrónico y/o mediante Web Services oservicios Windows, gracias a la arqui-tectura modular que están desarrolla-dos los Reporting Services.

Los informes se procesan en gruposde dos fases que separan el procesamientode datos de la representación final. Estopermite representaciones de tipo de for-mato distintos, una mayor escalabilidady la posibilidad de programar algunoscomponente mediante Visual Studio.NET. Esta característica diferencia cla-ramente, la representación de informesde SQL Server Reporting Services conCrystal Reports. Éste último procesa cadainforme desde la petición, pasando porla captación de datos y publicación en elvisor, en una misma fase, con lo que varias

peticiones a un mismo informe implica-rá una mala administración de recursosya que hará tantos accesos al origen dedatos como peticiones, contrariamenteque SQL Server Reporting Services.

Los informes en SQL ServerReporting Server se definen mediante unasintaxis propia llamada (RDL) ReportingDefinition Language que permite, basán-dose en XML, definir un informe conun schema publicado. Así que podemosutilizar SOAP para publicar informesdesde una aplicación externa, ya sea enWindows o desarrollando controles webforms para renderizar informes publica-dos de manera transparente para unusuario.

SQL Server Reporting Services tienecompatibilidad con herramientas exis-tentes de servicios de análisis pero noserá hasta la llegada de Yukon, dónde sefusionarán y aumentará la potencia entreambos.

Requisitos

Existen varias versiones de SQLServer Reporting Services:

• Standard Edition• Enterprise Edition• Developer Edition• Evaluation Edition

Los requisitos de hardware no distanmucho de las necesidades de cualquiersoftware de administración o desarrollo,lógicamente, dependiendo del entorno dedesarrollo o de producción en el que seutilice, el hardware tendrá una importan-cia relevante en la escalabilidad vertical.

En cuanto a requerimientos deSoftware, SQL Server Reporting Services,depende totalmente de un SistemaOperativo servidor; en la tabla 1 pode-mos observar una relación de requisitospor componentes.

dotN

etM

anía

<<

18

dnm.servidores.sql<<

Tabla1. Relación de requisitos previos por componentes a nivel de software.

Componente Requisitos previos

Servidor de informes • Servidor Web con ASP.NET y Servicios deInternet Information Server (IIS) 5.0 o poste-rior.

• MDAC 2.6 o posterior.• Conexión con una instancia de SQL Server

2000 SP3a.• Sitio Web predeterminado accesible a través

de http://<nombreDeServidor>.• Para Windows 2003, el equipo debe estar con-

figurado como servidor de aplicaciones.• Para que Windows 2003 utilice la cuenta del

servicio de red para ejecutar el servicioServidor de informes, necesita SQL ServerQFE 859. Para descargarlo, visite Soporte téc-nico de Microsoft.

Administrador de informes • Servidor Web con ASP.NET. • IIS 5.0 o posterior instalado y configurado.• Sitio Web predeterminado accesible a través de

http://<nombreDeServidor>.

Base de datos del servidor Servidor con SQL Server 2000 SP3a.de informes

Diseñador de informes Estación de trabajo cliente con Microsoft VisualStudio® .NET 2003 y MDAC 2.6 o posterior.

Herramientas administrativas Estación de trabajo cliente con acceso y utilidades a un servidor de informes.

Libros en pantalla de Estación de trabajo cliente, sin requisitos Reporting Services previos.

Informes y aplicaciones de ejemplo, Estación de trabajo cliente, sin requisitos y base de datos de ejemplo previos.

Los informes en SQLServer Reporting Server se

definen mediante una sintaxis propia llamada

(RDL) Reporting DefinitionLanguage que permite,

basándose en XML,definir un informe con un

schema publicado

Diseñar

El diseñador de informes forma parte de VisualStudio y la creación de un informe implicará la crea-ción de un proyecto en el mismo de tipo BusinessIntelligence, mediante un asistente o simplemente uninforme vacío (fig. 2).

En el explorador de soluciones vemos el proyectocon dos carpetas, que refieren a las dos partes o módu-los del informe, como muestra en la figura 3, el origende datos y el diseño del mismo.

En el origen de datos tenemos un asistente quenos ayuda a la disposición del mismo. Por defecto,SQL Server Reporting Services viene con una base dedatos que ayuda en los tutoriales ya que la mayoríahacen referencia a ella, es lo que la Northwind al VisualStudio, dicha base de datos, AdventureWorks2000, seauto instala en el servidor SQL Server donde resideReport Services.

La mayoría de herramientas de diseño del merca-do tienen un asistente que facilita el proceso de crea-ción inicial, y en este caso SQL Server Reporting Servicesno es una excepción. En un tiempo breve creamos uninforme en el que quizás lo más complejo sea la cons-trucción de la cadena de la consulta, tarea que se faci-lita gracias a la herramienta de creación de consultasgráfica de Visual Studio .NET. En la figura 4 vemosparte de un proceso de creación mediante el asistente.

Tenemos a nuestra disposición todo el potencial dela interfaz de Visual Studio .NET para el diseño de uninforme, desde el generador de la consulta SQL has-ta los tipos de informes a utilizar. Podemos ver una vis-ta previa del informe, podemos modificar el diseñocuando y como queramos. Podemos agregar el infor-

me a nuestra solución como un proyecto más, en defi-nitiva, la utilización de SQL Server Reporting Services yVisual Studio .NET es muy provechosa. También des-de Visual Studio .NET, tenemos la posibilidad deimplementar y publicar el informe aunque es desde lasherramientas encomendadas para ello, donde encon-traremos mayor funcionalidad al respecto.

dotN

etM

anía

<<

19

dnm.servidores.sql<<

Figura 2. Dos plantillas disponibles para la creación de informes desdeVisual Studio .NET 2003

Tenemos a nuestra disposición todo el potencialde la interfaz de Visual Studio .NET para el diseñode un informe, desde el generador de la consulta

SQL hasta los tipos de informes a utilizar

Figura 3. Esqueleto de un proyectoBusiness Intelligence.

Implementar y administrar

Lo mas importante de la herramienta de admi-nistración es que está basada en Web, alojada bajo IISy ASP .NET y que por tanto deberá estar familiari-zado con estos contextos. La seguridad, como vienesiendo tradicional entre productos de servidor deMicrosoft, puede estar integrada bajo autenticaciónWindows y su implantación requiere de un estudiodetallado y una fase de implantación minuciosa. Esimportante la planificación para la implementación yadministración de los informes ya que no sólo depen-de de un origen de datos ( ya que éste puede ser com-partido o propio de un informe) con unas premisasde seguridad propias y un alcance local o remoto, sinoque además los clientes de estos informes pueden noestar dentro de un dominio local y que por tanto laoperación de autorización y autenticación sean impres-cindibles, a través de IIS y/o Windows y/o SQLServer. Ver figura 5.

La dos herramientas de administración las encon-tramos en primer lugar en http://localhost/Reports(fig. 6), por defecto, la cual nos brinda operaciones deadministración, gestión e implantación y en segundolugar tenemos un explorador en el que podemos verlos informes implantados. El sitio Web, por defecto,es http://localhost/ReportServer (fig. 7) y si los per-misos de autorización nos lo permiten podemos nave-gar por dicho espacio Web.

En el ejemplo que se muestra en estas líneas rea-lizado anteriormente llamado Ejemplo, vemos que haydos ficheros. El primero hace referencia a la conexiónde datos que es compartida y que no es mas que unarchivo XML (fig. 8) y el segundo, rptEjemplo, es ladefinición del informe en RDL y cuando accedemos,

e l

dotN

etM

anía

<<

20

dnm.servidores.sql<<

Figura 4.Tres pasos distintos del asistente de creación de informes.

Figura 5. Esquema de implantación distribuida.

dotN

etM

anía

<<

21

dnm.servidores.sql<<

explorador renderiza el informe hasta su presentaciónpor defecto (fig. 9).

De manera transparente existe un componenteque se encarga de administrar la utilización de éstaconexión, para que sea compartida por otros infor-mes y para que no consuma más que los recursos nece-sarios, de ahí que el archivo de conexión sea XML, yaque se trata de un componente basado en Web Service.

Toda la información que maneja SQL ServerReporting Services se guarda en una base de datos delservidor SQL Server llamada ReportServer. Es aquídónde se guarda información de usuarios, informes,roles, eventos, suscripciones, etcétera, y la herra-mienta Web no hará más que representar la funcio-nalidades según el perfil del usuario conectado.

SQL Server Reporting Services soporta clúster debalanceo de carga en red (Network Load Balanced(NLB)). Al ser un Web Service stateless, sin estado, sireside en un contexto de NLB éste se escalará haciafuera en caso de que algún servidor esté indispuesto.Además, la base de datos de SQL Server ReportingServices puede residir en un cluster junto a demás ser-vidores SQL Server.

SQL Server Reporting Services puede utilizar el SQLAgent para realizar programaciones de entrega. Éstasse programan para que un determinado informe a unadetermina fecha y hora se entreguen a unos determi-nados clientes. Todo el proceso es parametrizable locual aporta una gran abanico de posibilidades pudien-do incluso seleccionar el medio de transmisión y elformato de salida.

Como herramientas no gráficas destaca rscon-fig.exe para la administración de conexiones, rs.exepara la ejecución de comandos automatizados,rskeymgmt.exe para la administración de cifrado declaves de los informes, rsactivate.exe para la activa-ción instantánea de servidores de informes. La com-binación del comando rs.exe junto a los demás per-mite secuenciar de manera programática operacio-nes de mantenimiento desde la consola del intér-prete de comandos.

Figura 6. La herramienta ReportServer

Figura 7. Explorador de Informes

“Para los profesionales de TI, Reporting Services supone unentorno de creación de informes escalable y seguro quefacilita la gestión, el acceso y la entrega de los datos empre-sariales al usuario final”.

Jason Carlson, Product Unit Manager de SQL ServerReporting Services

de Microsoft Corp.

<<

Desarrollo

En cuanto a desarrollo se refiere, lasoportunidades son muy amplias.Utilizando el .NET Framework 1.1,podemos crear extensiones de repre-sentación, de entrega, aplicar directri-ces de seguridad a nivel de informes ynos permite interactuar, no sólo con elorigen de datos, también con cualquieraspecto del diseño del informe, todo ellodesde un proyecto en cualquier lengua-je .NET.

Ya que los informes están definidospor XML bajo la sintaxis de RDL (fig.10), también podemos perfilar o desa-rrollar funciones específicas bajo dichasintaxis y aplicarlas a la representaciónde los informes, simplemente utilizandolas clases que nos ofrece .NET Frameworken el espacio de nombres System.XML,particularmente la clase XmlTextWriter,que puede ser utilizada para este fin.

Pero las posibilidades de desarrollovan más allá del desarrollo de los infor-mes. SQL Server Reporting Servicescuenta con tres interfaces principales.Por una parte WMI (Instrumental deadministración de Windows) cuyamisión es administrar el servidor deinformes; en segundo lugar, el accesoURL que permite la integración enmodo de portal para los informes publi-cados y por último SOAP. SOAP per-mite la publicación, administración yacceso a cualquier informe y es por elloque empleando las API de SOAP pode-mos desarrollar una aplicación paraadministrar un servidor de informes, eincluso contando con servicios Webpropios y componentes escalables apro-vechando los servicios que ofrece losEnterprise Services a través de losServiced Components, las posibilidadesde desarrollo no se centran únicamen-te en un marco local limitado física-mente. Destacar que ninguna interfazestá basada en COM+.

En la figura 11 vemos el ejemplo deWeb Service en el que encontramos algu-nos métodos que nos ofrece, y que uti-lizamos con la facilidad y comodidadque brinda la utilización de los WebServices desde Visual Studio .NET.

dotN

etM

anía

<<

22

dnm.servidores.sql<<

Figura 10. Esquema RDL

Figura 8.Acceso al fichero AdventureWorks2000 desde el explorador web de SQL Server Reporting Services

Figura 9.Acceso al informe rptEjemplo desde el explorador web de SQL Server Reporting Services

De la misma forma que SOAPnos ofrece la posibilidad de admi-nistrar un servidor, URL nos per-mite personalizar un explorador yWMI configurarlo, todo ello desdeVisual Studio .NET.

En el código de a continuación,un ejemplo de aplicación consola enC# que muestra el nombre y la des-cripción de un determinado informeregistrado, en este caso Ejemplo y elresultado de la aplicación lo vemosen la figura 12.

dotN

etM

anía

<<

23

dnm.servidores.sql<<

Figura 11.Web Service subministrado por Reporting Services para el acceso y representación a informes desde Visual Studio .NET

SQL Server Reporting Services cuenta con tres interfacesprincipales. Por una parte WMI cuya misión es administrar elservidor de informes; en segundo lugar, el acceso URL quepermite la integración en modo de portal para los informespublicados, y por último SOAP que permite la publicación,administración y acceso a cualquier informe

No es sorprendente pues, pensar que un informepuede llegar a ser diseñado, publicado e implantadodesde código.

ConclusiónSQL Server Reporting Services es un conjunto de

herramientas integradas cimentadas sobre pro-

ductos como SQL Server y Visual Studio .NET.Su integración con demás tecnologías de servidorIIS, ASP .NET, etc. lo hacen único, muy escalabley flexible, lo que puede ser una buena solución parael tráfico de grandes cantidades de documentos encorporaciones cuya extensión del negocio abarcavarios países, y para pequeñas que enconaran enSQL Server Reporting Services una herramienta de

dotN

etM

anía

<<

24

dnm.servidores.sql<<

using System;

using ConsumidorWS.WebReference;

namespace ConsumidorWS

{

class Class1

{

[STAThread]

static void Main(string[] args)

{

ReportingService report = new ReportingService();

report.Credentials = System.Net.CredentialCache.

DefaultCredentials;

string informe = “/Ejemplo/rptEjemplo”;

Property nombre = new Property();

nombre.Name =”Name”;

Property descripcion = new Property();

descripcion.Name =”Description”;

Property[] propiedades = new Property[2];

propiedades[0] = nombre;

propiedades[1] = descripcion;

try

{

Property[] retPropiedades = report.GetProperties (informe,propiedades);

foreach (Property p in retPropiedades)

{

Console.WriteLine (p.Name + “: “ + p.Value );

}

}

catch (Exception e)

{

Console.WriteLine (e.Message);

}

Console.WriteLine(“Teclee Intro para finalizar...”);

Console.Read();

}

}

}

Código fuente 1

dotN

etM

anía

<<

26

dnm.servidores.sql<<

clasificación y desarrollo de informes fácil e inte-gral.

Las API de SOAP que se ofrece para la parte dedesarrollo, hace prácticamente parametrizable todoel proceso de utilización de informes así como la admi-

nistración, con unas herramientas sencillas y poten-tes, permite una total adaptabilidad funcional con tare-as de mantenimiento de sistema, de sitios Web y debase de datos entre otros.

Figura 12. Resultado de la aplicación consola.

bibliografía

Professional SQL Server Reporting ServicesPaul Turley,Todd Bryant, James Counihan,George McKee,Dave DuVarney

Editorial: WroxPáginas: 800

Publicado: Mayo, 2004ISBN: 0764568787

Microsoft SQL Server Reporting ServicesBrian Larson

Editorial McGraw-Hill Osborne MediaPáginas: 704

Publicado: Mayo, 2004ISBN: 0072232161

Hitchhiker’s Guide to SQL Server 2000 Reporting ServicesPeter Blackburn,William R.Vaughn

Editorial: Pearson EducationPágians: 400

Publicado: Previsto para Octubre 2004ISBN: 0321268288

herramienta cliente ser-vidor para la creación, desarrollo, administración ydespliegue de informes. Una herramienta extensi-ble que nos dota de base sin embargo con un buennúmero de funcionalidades muy interesantes, comopor ejemplo el data driven subscriptions, es decir, subs-cripciones que extraen las direcciones de envío, losinformes a enviar, los formatos en los que se envía(entre otros).

Parte de estas funcionalidades las veremos conejemplos a lo largo de este artículo. Veremos entreotras cosas, el asistente de creación de informes quenos ofrecen los Reporting Services dentro del entor-no de desarrollo de Visual Studio.NET, a través delcual podremos crear de forma sencilla nuestrosinformes de explotación de información.

Veremos también los elementos que podemoscolocar en nuestros informes, las fuentes de datos,compartidas o no, la herramienta de diseño deinformes y el despliegue de informes con VisualStudio.NET. Sin embargo quedará fuera del alcan-ce de este documento la creación de informes sinVisual Studio; poderse se puede, ya que los la defi-nición de los informes (ficheros RDL –ReportDefinition Language), es un fichero XML estándar

que cumple los requerimientos que marca unesquema de datos XSD público. Es por tanto per-fectamente viable crear informes sin VisualStudio.NET, aunque bien es cierto que sería comodesarrollar aplicaciones fuera del entorno, algobastante tedioso.

¿Cómo empezamos?Bueno, la respuesta obvia siempre es: por el prin-

cipio, lo primero será instalar la parte de servidor.Instalar los servicios de Reporting Services, es unatarea bastante sencilla, tal y como nos tiene acos-tumbrados Microsoft, hay un asistente que repasala configuración de nuestro servidor y nos avisa delos prerrequisitos que no cumplimos y nos invita ainstalarlos. Necesitamos tener un servidor IIS, enél se desplegarán los informes, éste servidor debeadmitir ASP.NET, ya que al final Reporting Servicesexpone un servicio web que es una interfaz perfec-tamente válida para administrar el servidor. Despuésnos solicitará rutas, servidor y un servidor SQL enel que instalará varias bases de datos, en concretoinstalará las BBDDs ReportServer,ReportServerTempdb y añadirá una base de datos nue-

Crear informes con SQL Server Reporting Services

Por Miguel EgeaSQL Server MVPportalsql.com

Los Reporting Services son una nueva herramienta de servidor asociada a SQL Server.Vienen a completar la amplia oferta relacionada con SQL-Server, a completar al motorrelacional, que tiene amplias funcionalidades como la replicación, servicios de alta dis-ponibilidad,mecanismos de trasvase de registros, servicios de transformación de datos,tareas programables, un avanzado mecanismo de copias de seguridad (como vimos enun artículo anterior en esta misma publicación). Completan también a los AnalisysServices que ofrecen, servicios avanzados de DataWarehouse, situándose en una ramamedia dentro del mercado del OLAP. De hecho Microsoft, al menos de nombre losincluye dentro de lo que ha venido a llamar proyectos de Bussiness Intelligence.

Realmente son una potente<<

dotN

etM

anía

<<

27

va, que contiene un volumen bastante aceptable dedatos llamada AdventureWorks2000.

Si lo que deseamos es instalar las herramientasnecesarias para que un desarrollador construya infor-mes, lanzaremos el mismo programa de instalación,eligiendo eso sí, solamente las herramientas de clien-te tal y como aparece en la figura 1.

Un par de clics más y tendremos instalados losReporting Services listos para desarrollar informesprofesionales de forma sencilla. Veremos a continua-ción cómo crear informes primero siguiendo el asis-tente de creación de informes, después un poco másen detalle con cada uno de los elementos de los quedisponemos en un informe.

Creando nuestro primer informeManos a la obra, vamos a construir nuestro primer

informe, para eso abriremos el entorno de desarrollode Visual Studio .NET y elegiremos los proyectos deBussiness Intelligence, ahí elegiremos el asistente para lacreación de informes y cambiaremos a nuestro gustoel nombre del informe. En cuanto seguimos, el asis-tente encontramos una de las características de losReporting Services, los orígenes de datos comparti-dos. Es muy común que buena parte de los informesde una organización utilicen la misma conexión, esdecir se conecten a la misma base de datos con pará-metros similares, más aún cuando esta conexión pue-de realizarse en el entorno de seguridad de Windows.Aún así, podemos construir orígenes de datos especí-ficos para cada informe si es que es ese nuestro deseo.En la figura 2 podemos observar la pantalla del asis-tente a la que nos estamos refiriendo. A continuaciónel asistente nos preguntará cual es la instrucción SQLque vamos a usar para nuestro informe, para el ejem-

plo utilizaremos algo muy sencillo, Select * fromSalesOrderheader. En este paso, el asistente com-prueba que la consulta que estamos ejecutando escorrecta para SQL.

En la siguiente pestaña del asistente nos pregun-tará si deseamos hacer un informe tabular o un infor-me de matriz, los informes tabulares reflejan los lis-tados tradicionales -ya sabéis, información en colum-nas más o menos llamativas- pero en columnas, cadaregistro uno debajo de otro.

Elegid esta opción si estáis haciendo un listadode clientes, proveedores, artículos,… Los informesde matriz sirven para contrastar información, sonmuy similares a los informes de referencias cruzadasde Access por ejemplo, es decir, podemos poner encolumnas datos que pertenecen a filas. Son adecua-dos por ejemplo para mostrar información de dife-rentes ejercicios o meses.

Para nuestro ejemplo elegiremos Matriz, vamos acontrastar la información de ventas por meses, aun-

dotN

etM

anía

<<

28

dnm.servidores.sql<<

Figura1

Figura 2

Consejo

Si la BBDD es SQL SERVER no impor-ta realmente para este paso si nuestrasentencia devuelve millones de regis-tros. Para comprobar que la sentenciaes correcta,Reporting Services no eje-cutan la consulta para devolver regis-tros sino que añade la sentencia SETFMTONLY ON antes para devolversólo la estructura.

[ [

que para hacerlo tendremos que personalizar algonuestro informe al final.

Una vez elegido el formato de matriz, nos apare-ce una nueva pantalla en la que podemos decir quécampos van a ir a página, columnas y filas, y qué cam-pos vamos a mostrar en los detalles. En nuestro casoelegiremos que la fecha (OrderDate) se sitúe en colum-nas, en filas; situaremos el código de cliente(CustomerID) y en los detalles situaremos el peso y elsubtotal (Freight, subtotal).

Por último el asistente nos muestra algunos for-matos predefinidos que pueden ayudarnos a dar unaspecto amigable a nuestro informe sin demasiadoesfuerzo. Podéis elegir el que más os guste —despuéssiempre puede cambiarse— además de esa formapodéis ver cual es el que más os gusta.

Al final nos pregunta por el servidor de informes,ahí se realizará la implementación del informe, situaden esa casilla la URL para acceder a vuestro servidorde Reporting Services.

Con esto hemos creado nuestro primer informe,será necesario ahora personalizarlo y darle más senti-do. Nuestro objetivo será construir un informe de ven-tas por años y meses, que tenga aspecto interactivo,veamos qué pasos debemos dar para conseguirlo par-tiendo de la base del asistente.

Lo primero que haremos será cambiar la expre-sión de fecha por el mes de la fecha, ya que vamos ahacer las agrupaciones por año y mes. Para esto sim-plemente accederemos a las propiedades del elemen-

to fecha (que pusimos en columnas) y modificaremoslos parámetros tal y como puede verse en la figura 3.

Añadiremos un grupo más, a un nivel superior,será el grupo año. Para hacerlo pulsaremos botón dere-cho sobre la matriz, agregar grupo, y rellenaremos losdatos con los valores adecuados. Lo que tendremosque hacer es añadir un nivel de agrupación por años,y después añadir una propiedad al grupo mes que indi-que que el nivel mes puede mostrarse o no en funcióndel año. Para esto entraremos en la pestaña de visibi-

lidad y marcaremos la opción Otro elemento de infor-me puede alterar la visibilidad, eligiendo el elementoque puede alterar esa visibilidad la caja de texto delaño, tal y como se observa en la figura 4.

Hay algunos detalles más de formato y alineaciónque pueden darle un aspecto más profesional a nues-tro informe, sin embargo, no me atreveré a hacer nin-guna recomendación en este artículo, quizá un buendiseñador gráfico ayude mucho más en esa tarea queun informático.

Es importante el aspecto, yo me atrevería a decirque dramáticamente importante, ya que, como diceAnthony T.Mann en su guía sobre ReportingServices, normalmente nuestro cliente será incapaz devalorar la complejidad o sencillez de construir nuestro infor-me, su único patrón de medida, siempre es el resultado, ymuchas veces ese resultado depende más de la maquetación

dotN

etM

anía

<<

29

dnm.servidores.sql<<

Figura 4

Figura 3

Necesitamos tener un servidor IIS, en él se desplegarán los informes,este servidor debe admitir ASP.NET, ya que al final Reporting Services expone

un servicio web que es una interfaz perfectamente válida para administrar el servidor

y el aspecto que de los datos en sí (que por supuesto tienenque ser correctos).

Para terminar nuestro informe vamos a darle unpoco de sentido, vamos a quitar todos los camposque no usamos para de esta forma mejorar el rendi-miento del informe. Nuestra sentencia la vamos adejar así:

El aspecto final del informe es el que podéis obser-var en la figura 5. Este tipo de informes (y todos enrealidad) puede exportarse a Excel, además de a PDF,HTML con Office Web Componets, CSV, e inclusoXML con datos del informe. Es decir, tenemos unbuen número de formatos que pueden permitirnosque nuestros informes, de forma predeterminadaexpongan funcionalidades que serían muy complica-das de otra forma.

Agregando interactividad a los informes

No hay informe que no necesite parámetros, todosde una forma u otra necesitan un conjunto de valorespor los que filtrar o algún mecanismo para reducir elvolumen de información exactamente al que necesi-tamos. Naturalmente Reporting Services tiene meca-nismos para facilitar esta tarea. Siguiendo con nues-tro ejemplo vamos a dotar a nuestro informe de laposibilidad de seleccionar el año del que mostrar lainformación. Veamos paso a paso como añadirle estalógica.

Lo primero que vamos a hacer es añadir un nue-vo conjunto de datos a nuestro informe; este conjun-to de datos contendrá una relación de los posiblesvalores que va a tener nuestro informe. Para ello enel diseñador de Visual Studio .NET seleccionaremosla pestaña datos y a continuación seleccionaremosNuevo conjunto de datos, tal y como podemos ver en lafigura 6. A continuación incluiremos un nuevo con-junto de datos a partir de esta instrucción SQLSELECT DISTINCT Year(orderdate) Año FROMSalesOrderHeader . Este conjunto de datos lo usare-mos como base para nuestros parámetros.

Después volveremos a la pestaña de diseño, en laesquina superior izquierda de cualquier report.Pulsando con el botón derecho del ratón nos apare-cerá un menú desplegable con varias opciones, entreellas las de crear un encabezado y pie de página (lasveremos al menos brevemente más adelante), tambiénencontrar las propiedades del informe, y además está

dotN

etM

anía

<<

30

dnm.servidores.sql<<

SELECT customerid,orderdate,Freight,Subtotal

FROM SalesOrderheader

WHERE orderdate>=’20040101’

Consejo

Cuando estamos desarrollando informes es bas-tante común querer tener un acceso ágil a losdatos; podemos usar en nuestra consulta biencláusulas WHERE que disminuyan el númerode registros, bien cláusulas TOP que consiganel mismo objetivo. Esto hay que quitarlo justoantes de desplegar el informe.[ [

Figura 5

Como dice Anthony T.Mann en suguía sobre Reporting Services,

normalmente nuestro cliente seráincapaz de valorar la complejidad o

sencillez de construir nuestro informe, su único patrón de medida,

siempre es el resultado, y muchasveces ese resultado depende más de

la maquetación y el aspecto que de los datos en sí (que por supuesto

tienen que ser correctos)

la opción que estamos buscando: la opción de ver losparámetros del report.

Seleccionaremos Agregar un nuevo parámetro, comonombre elegiremos ParAño; en el mensaje elegiremosAño del informe; como valores disponibles, elegiremosde consulta, esto nos permitirá seleccionar como valorel conjunto de datos que acabamos de crear. Con estoacabaríamos de crear el parámetro al informe.

Está claro que aún no hemos usado el parámetropara construir la sentencia que sirve para obtener losdatos y que por tanto afecte al conjunto de datos quehemos usado de base para diseñar el informe de ejem-plo. Para conseguir esto, bastará con cambiar la sen-tencia que nos ha servido de base para el informe, lasentencia, finalmente quedará así:

Después entraremos en las opciones del dataset,del conjunto de datos que hemos generado y añadi-remos un parámetro (esta vez al dataset), que llamare-

mos @año y cuyo valor será =parameters!parAño.value,consiguiendo así enlazar el informe con los paráme-tros que estamos solicitando.

Añadiendo gráficos a los informesUna de las cuestiones que generalmente es nece-

saria, es añadir gráficos a este tipo de informes.Pensemos por ejemplo en la factura de la compañíatelefónica, todas o casi todas tienen un gráfico de evo-lución del consumo en los últimos meses, sin embar-go, no hay muchas facturas generadas por ERP’s mástradicionales que tengan esta información. En el casodel que estamos hablando, el origen de datos, no tie-ne nada que ver con la factura, son datos absolutamentedisjuntos. Vamos a ver también paso a paso como aña-dir un gráfico a nuestro informe, aprovecharemos paracrear nuestro conjunto a partir de un procedimientoalmacenado, ya que hasta ahora en los ejemplos siem-pre hemos venido usando sentencias directas.

Comenzaremos esta parte creando un procedi-miento almacenado en la BBDD AdventureWorks2000,el código del procedimiento almacenado será muy sen-cillo, podemos verlo a continuación:

dotN

etM

anía

<<

31

dnm.servidores.sql<<

SELECT customerid,orderdate,Freight,Subtotal

FROM SalesOrderheader

WHERE year(orderdate)=@año

Consejo

En general las sentencias SQL en que se hacen transformaciones o se usan funciones (como Year()en nuestro ejemplo) no son demasiado óptimas, al hacer esta fórmula estamos impidiendo que SQLServer use los índices que potencialmente podemos tener por el campo. Hay varias formas de mejoraresto: Se puede crear un campo calculado en la tabla que sea el año y construir un índice por ese cam-po, o se pueden usar rangos de fechas para expresar lo mismo.[ [

Figura 6

Figura 7

A continuación añadiremos un nuevo conjunto dedatos. El conjunto de datos se basará en este procedi-miento almacenado, es bastante sencillo invocar y novamos a entrar en más detalles, únicamente recordarque añadiremos el enlace con el parámetro @año, dela misma forma que hemos enlazado este parámetropara el conjunto de datos base para la matriz de datos.

Si lo estimamos oportuno, podemos hacer másgrande ahora la superficie del informe, y bien en unmargen, o bien justo debajo, pincharemos y arrastra-remos un nuevo grafico a nuestro informe. Despuésarrastraremos los campos del nuevo conjunto de datosa la superficie del gráfico, llevaremos el campo sub-total a valores y el campo mes a los campos de cate-goría. No llevaremos en este caso nada a serie, y ade-más entraremos a personalizar el informe para que nomuestre la leyenda.

En la figura 8 puede verse el aspecto que tiene envista previa el informe que acabamos de generar y alque le acabamos de añadir el gráfico.

Añadir encabezados y pies de página

Añadir un encabezado o un pie de página es unatarea muy sencilla en el diseñador de informes, bas-

ta con pulsar con el botón derecho en el cuadrosuperior izquierdo de la ventana de diseño y obten-dremos las dos opciones de menú que dan acceso aencabezados y pies. Más allá de lo obvio, lo que tie-ne cierto interés es cómo usar esos encabezados ypies de página para mostrar la información real-mente relevante para todas las páginas. General-mente es interesante conocer datos como la fecha yla hora de generación del informe, y la página y eltotal de páginas.

Para proporcionar esta información hay variablesglobales que nos las ofrecen y que a través del editorde expresiones podemos acceder.

Para insertar valores, añadiremos un par de cajasde texto en el pie de página arrastrándolos desde elcuadro de herramientas hasta la superficie del pie depágina, después desde las propiedades de la caja detexto podemos acceder al editor de expresiones y ponerla expresión más adecuada.

Para poner la página en la que estamos y la fechay hora de ejecución hemos usado respectivamentelas variables globales Globals!ExecutionTime,Globals!PageNumber y Globals!TotalPages.

Despliegue de los informesHasta esta parte del artículo sólo hemos hablado

sobre cómo desarrollar los informes, sin embargo, denada sirve un informe si no puede desplegarse, es decirinstalarse en algún lugar y ser visualizado. Para reali-zar esta tarea veremos las opciones que ofrece VisualStudio .NET y veremos parte de las diferentes opcio-nes de renderizado.

Una de las herramientas más potentes para des-plegar informes es el propio Visual Studio .NET. Laherramienta es capaz de hablar con el Servidor deReporting Services (a través del servicio web que expo-ne) y enviar la información necesaria para desplegarel informe, tanto los orígenes compartidos de datoscomo los propios informes.

Si lo pensamos tranquilamente, la tarea tampo-co es especialmente complicada, no lo es debido aque el resultado de toda nuestra tarea no deja de ser

dotN

etM

anía

<<

32

dnm.servidores.sql<<

Create Proc EvolucionVentasPorMeses (@año smallint

)

as

begin

select month(orderdate) mes,sum(Subtotal) Subtotal

From SalesOrderheader

where year(orderdate)=@año

group by month(orderdate)

order by 1

end

go

Figura 8

Consejo

Algunos procedimientos almacenados (enSQL Server) pueden devolver más de unconjunto de registros. Sin embargoReporting Services solamente usará el pri-mero de ellos, es conveniente tener cuida-do con esto y asegurarse de usar SETNOCOUNT ON cuando sea necesario.

[ [

un fichero XML con la definición del informe, unfichero de extensión RDL que contiene en sí mis-mo toda la definición del informe de forma clara ytransparente.

Para conseguir el despliegue de los informes des-de Visual Studio .NET tendremos que usar las pro-piedades del proyecto. Tres son los parámetros quetendremos que configurar para que se haga el des-pliegue: OverwriteDataSources, cuyos valores pue-den ser ‘True’ o ‘False’, y TargetFolder y Target-ServerURL que indican respectivamente la ruta delservidor y la ruta dentro del servidor en el que des-plegaremos nuestros informes. Por último simple-mente ejecutamos, como si de cualquier proyectose tratase y tendremos nuestro informe situado enel servidor de informes.

El que exista la propiedad OverwriteDataSources esrealmente importante, tengan en cuenta que las cade-nas de conexión no tienen por qué ser exactamenteiguales para acceder desde el entorno de desarrollo enel que estamos suministrando las credenciales con lasque hemos entrado al sistema para visualizar la infor-mación, que desde el entorno de producción. Es bas-tante normal que el entorno de desarrollo acceda aservidores de desarrollo y que el entorno productivoa servidores de producción. Dentro de la seguridadpodemos programar que se haga impersonación, es decirque el IIS deje pasar nuestras credenciales hasta el ser-vidor (o servidores) desde donde se extraiga la infor-mación, pero también podemos decidir usar un nom-bre de usuario y una contraseña o un usuario deWindows creado solamente para genera los informes.

Toda esta tarea de configuración y de administra-ción de nuestro servidor de Reporting Services podríaquedar estropeada por que al desplegar un conjuntode informes sobrescribiésemos los orígenes de datos.

Otro detalle interesante a mi juicio es que cadauna de las configuraciones admite estos parámetros,es decir que podemos estar ejecutando en modo Debugnuestros informes contra servidores de pre-produc-ción o desarrollo y en el momento que estén termi-nados, simplemente cambiar el combo para decir quedesplegamos en productivo y ejecutar la aplicación.

Visualización de informesUna vez situado el informe en nuestro servidor de

informes necesitaremos que nuestras aplicaciones ten-gan la capacidad de usarlos, es decir de invocar a esosinformes para que muestren la información.

Nada más sencillo de conseguir, al fin y al cabo noes más que navegar a una página web en la direcciónURL en la que hayamos desplegado nuestro informe,En la figura 9 podemos ver el aspecto que tiene la pan-talla una vez ejecutado el informe.

¿Y cómo integramos esta visualización dentro denuestras aplicaciones? Si las aplicaciones son Web nada

más sencillo, podemos poner hiperenlaces a las direc-ciones URL de los informes, bien con los parámetrosen la propia URL, bien sin ellos, y ya se encarga elpropio informe de solicitarlos.

Si por el contrario estamos desarrollando aplica-ciones en ventanas tradiciones, en aplicaciones de escri-torio tampoco es que sea mucho más complicado,podemos usar una referencia web al Servicio Web queexponen Reporting Services (http://NOMBRESER-VER/ReportServer/ReporService.asmx), y usar losmétodos de RENDER para obtener la información derenderizado (incluso en un Stream), o podemos hacer-lo también mediante acceso URL, bastará con añadiruna referencia al navegador, esta referencia es reali-zada mediante COM Interop, a los Microsoft InternetControls. Una vez creada la referencia solamente hayque ejecutar el método Navigate del control pasándo-le como parámetro la dirección URL en donde haya-mos desplegado el informe.

¿Y hace algo más?Pues la verdad es que sí, muchas cosas más, la par-

te de administración de informes no la hemos tocadoen este artículo y la dejamos pendiente para el futu-ro, de la misma forma, podrían tratarse las suscrip-ciones, que existen de varios tipos, tanto programa-das como gobernadas por los propios datos, ademásde la seguridad y las ‘interioridades’ de los ReportingServices

ConclusionesReporting Services, como herramienta cliente ser-

vidor puede ayudarnos a hacer informes profesionalesdentro del propio entorno de Visual Studio .NET, deforma ágil y sencilla, definiéndose, a pesar de su juven-tud en el mercado, como una poderosísima herramientade generación de informes profesionales.

dotN

etM

anía

<<

33

dnm.servidores.sql<<

Figura 8

dotN

etM

anía

<<

34

¿Cuando usar cada método de distribución de aplicaciones?

Esta variedad de elección tiene susentido, y radica en lo que quiere hacerel cliente a fin de cuentas con el pro-yecto. Pueden variar mucho los reque-rimientos entre una aplicación de fac-turación y una de logística en tiemporeal, pero lo preguntas importantes quedebemos hacernos al inicio de estosproyectos son:

• ¿Desarrollaré los dos puntos de laaplicación (tanto el cliente comoel servidor)?

• ¿Qué grado de integración conotras aplicaciones debo tener?

• ¿El usuario se conecta y se man-tiene conectado, o consulta espo-rádicamente?

• ¿Puedo simular que sigue conec-tado cuando realmente lo desco-necto?

• ¿El usuario recibe avisos desde elservidor?

Se espera que se utilice un servicioweb cuando sea un dato externo, es decircuando no soy el dueño de la informa-ción. También utilizaré un servicio webcuando no sé con exactitud qué plata-forma tendrá el cliente o cuando desa-rrollo información que será solicitadadesde muchas aplicaciones diferentespara facilitar la integración.

.Net remoting nos es útil cuandodeseamos distribuir una aplicación ycontrolamos los puntos donde se va adistribuir, esto significa por ejemplo queel cliente nos dejará instalar .Net en susordenadores clientes y servidor. Ademásel modelo de remoting nos permitetener distinta serialización (binaria, SOAP,o extendida a partir de IFormatter), dis-tintos canales de envío de mensajes(TCP, HTTP, o extendido a partir deIChannel), distintos modos de progra-mación con los objetos (statefull or sta-teless) y compartir por valor o por refe-rencia. Un servicio web es mucho másrestrictivo en estos últimos puntos.Además .Net remoting puede enviarmensajes desde el servidor hacia losclientes.

Si podemos utilizar métodos en for-ma asíncrona (incluso un servicio webnos crea los métodos BeginOperacion yEndOperacion para utilizarlo asíncro-no) ¿Porqué utilizar mensajería? Tantoremoting como web service son tecnolo-gías diseñadas para trabajar en formasíncrona, mientras que la mensajería esexactamente lo contrario, por lo tantoviene con características difíciles deimplementar con los otros métodos.Por ejemplo si un servidor se cae, losmensajes se conservan en local hastaque se restablece el servidor, momen-to en que se envían los mensajes auto-máticamente. Además es muy útil para

la integración de aplicaciones. El casode integración sería colocar un mensa-je en una cola de mensajes que formaparte de un flujo de trabajo de Biztalk,o sin Biztalk, sería tener a un thread quelea los mensajes que llegan y lo dese-realice.

Como en el presente artículo notocaremos el tema de mensajería, veaen la tabla 1 que puede ilustrar simili-tudes y diferencias entre .Net Remotingy Web Service.

Pensando con el clienteAunque una aplicación se encuentre

dividida en n capas, se conoce general-mente como aplicaciones cliente servi-dor a aquellas aplicaciones donde uncliente solicitaba información a un pun-to central por medio de una LAN. Contecnología DCOM muchas empresasfueron creando productos distribuidos,con la visualización en formularios, lalógica en los objetos DCOM en otroordenador (servidor de aplicaciones) yla base de datos en un servidor diferen-te (el servidor de datos). De este modo,tenemos muchos aplicativos de gestión.Cuando esta gestión no requiere untiempo vital en la respuesta (un controlde gasto, donde para pagar una facturase tarda 60 días y se consulta su estadouna media de tres a cinco veces en esos60 días) se puede distribuir por medio

Distribuir aplicaciones con .NET Remoting

Por Daniel ManziniArquitecto de Sistemas de InformaciónUbica Solutions

Existe en .Net cuatro maneras de distribuir aplicaciones, a saber: Los servicios web, .NetRemoting, Mensajería (MSMQ) y Componentes empresariales (COM+).Los tres primeros métodos de distribución son controlados por el la plataforma .Net, por loque sólo explicaré estas tres primeras en los próximos párrafos.

<<

de servicios web, pero para aquellas apli-caciones donde el tiempo lo es todo(aplicativos para control de ambulancias,por ejemplo) hay que distribuirlo pormedio de .Net remoting.

Arquitectura de .NETRemoting

Para entender la infraestructura deremoting hay que saber tres conceptos:proxies, canales y mensajes.

El proxy es un objeto que existe enlocal que realmente impersona a uno queexiste en remoto; para poder realizar estatarea tiene que tener todos los miembrosiguales que el objeto remoto. Lo que haceel proxy cuando se hace una petición enlocal es delegar la petición por el canal

al objeto remoto. El canal representa,entonces, la conexión entre la aplicaciónlocal y la aplicación remota. La peticiónque se realiza antes de llegar al canal seserializa por medio de un formateador,dando por resultado el mensaje que setransmite; al llegar existe otro formate-dor que deserealiza el mensaje y realizala petición en el entorno remoto. La figu-ra 1 ilustra el proceso.

Distribución de proyectosLa finalidad es compartir objetos

que están mas allá de la frontera de laaplicación. Éstos se pueden compartirpor valor o por referencia, y concep-tualmente funciona igual que un pará-metro por valor o por referencia. A los

primeros los llamaré en adelanteMBV(del inglés Marshal by Value) y a losúltimos MBR (del inglés Marshal byReference).

Por ejemplo tenemos el siguientemétodo en la clase Empleado_ReglaNegocioen remoto:

Con este ejemplo nos sacamos unpar de dudas sobre los valores de retor-no en remoting, éstos pueden ser tiposincluidos en la plataforma o clase pro-pias.

Si la clase Empleado fuera MBV,entonces obtendríamos en local unacopia del objeto remoto —hay que teneren cuanta que este tipo de objeto se eje-cutara en local—, mientras que si fueraMBR tendríamos en local un puntero alobjeto remoto, que no es nada más ninada menos que el proxy. Viendo lasconsideraciones de los objetos por refe-rencia y por valor lo que puedo hacer estener las entidades de negocio (el emple-ado con su nombre, apellido, email y otrosdatos) como MBV, mientras que lasreglas de negocio (BuscarUnEmpleado,BuscarEmpleadoporMail, etc.) lo puedotener como MBR.

Cuando llegamos a este punto nosdamos cuenta que la clase Empleado debeestar en los lados del remoting, es deciren el cliente y en el servidor. Esto indi-ca que por lo menos cuando trabaje conremoting tendré tres proyectos: el clien-te, el servidor y uno compartido dondecolocaré las clases que usa el cliente yque solicita al servidor. Y para poder lle-gar a verlo trabajar tendré dos solucio-nes: la solución cliente con el proyectocliente y el proyecto compartido, y lasolución servidor con el proyecto servi-dor y el proyecto compartido.

En la vida real, es posible que la solu-ción cliente se distribuya en 100 orde-nadores. Ahora nos meteremos con elproyecto compartido ¿es necesario ponerlas clases? En otras palabras ¿es necesa-rio poner la implementación en cada unode los 100 clientes? Bueno, ese es untema de seguridad y de mantenimien-to. De seguridad porque .Net se puede

dotN

etM

anía

<<

35

dnm.plataforma.net<<

Remoting Web Service

Reside en Aplicación de consola ASP.NETWindows Service.ASP.NET

Se comparte por Valor o referencia Valor

Modelo de estado Con o sin estado Con estado

Canales TCP, HTTP, o propios HTTP

Mensajes Binario, SOAP, o propias SOAP o HTTP conquery string

Cliente Sólo .Net Cualquiera

Sistema de tipos CTS (de la plataforma) XML Schema

Tabla 1

Figura1

public Empleado ObtenerNuevoEmpleado(){return new Empleado();}

descompilar si no tomamos los cuidadosnecesarios, y de mantenimiento, porquea la menor incidencia o cambio que ten-ga en una de las clases que esté en el pro-yecto compartido tendré que instalar los100 clientes. Para ello, en el proyectocompartido puedo usar clases abstractaso interfases. Las clases abstractas pue-den llegar a tener implementación, porlo que es recomendable utilizar interfa-ses que sólo se implementan en el servi-dor y como no tienen código de imple-mentación, si alguien logra descompi-larlas, pues no verá mucho. Es decir quetermino teniendo en la solución servi-dor tres proyectos, el servidor, el com-partido que sólo son interfases, y un pro-yecto de transferencia que son las clasesque implementan las interfases del pro-yecto compartido, mientras que en lasolución cliente nos queda el proyectocliente y el proyecto compartido.

Las consideraciones sobre la distri-bución no acaban aquí. Los objetosMBV se ejecutan en local, por lo tantonecesitan en local el código para poderfuncionar. Como los objetos que voy acompartir son entidades de negocio (a mime gusta decirles Objetos de Transferencia,ya que en su momento los estudié comoparte del patrón Transfer Object 1) ten-drá propiedades para acceder a los valo-res y cambiarlos si es necesario, y algúnmétodo que puede responder usando losvalores internos del objeto, por ejem-plo si estuviera hablando de la claseDetalle de Factura, tendría el métodoCalcularImporte que multiplicaría la pro-piedad Cantidad x PrecioUnitario.

¿Porqué no usar DataSet o DataSettipificados en lugar de objetos de trans-ferencia? Es una buena pregunta. Comoya vimos, cuando un objeto tiene quepasar por un canal se serializa al partiry se deserializa al llegar. Si tuviéramosque distribuir una aplicación en unaLAN, usaría serialización binaria, perocon el DataSet tengo un problema, pormás que le indique que es serializaciónbinaria se serializa como XML, siendode un tamaño 5 veces mayor. Eso metrae problemas de tiempo y de carga dered (acompaño un ejemplo con el nom-bre de serialización. Vea el material deapoyo en dotnetmania.com).

A continuación voy a empezar adejar ejemplos de código, pero antes un

comentario sobre los ejemplos. El ser-vidor puede implementarse de tresmaneras, una aplicación de consola (paradesarrollo viene muy bien), un serviciode Windows, o en IIS. Por sencillez, losdistintos ejemplos servidores estarán hos-teados por aplicaciones de consola.

Primer ejemplo de .NETRemoting

Ya puesto en la distribución, pasa-mos a crear dos soluciones que puedanir demostrando algunas instruccionesbásicas para por el otro lado en el ser-vidor abrir un puerto, con un deter-minado protocolo, para poder escucharlas peticiones del cliente y por el ladodel cliente como abrir el canal (puertoy protocolo) y obtener un objeto remo-to. El código lo podrán encontrar bajoel directorio EJEMPLO01.

Empecemos por el proyecto com-partido, específicamente por las inter-fases:

Siguiendo con el ejemplo deEmpleado, cree una interfaz por la cualle pueda asignar el nombre al Empleado.

Ahora pasa al proyecto que tiene laimplementación. Ver fuente 1.

La clase Empleado se compartirá porreferencia. Por tal motivo tiene queheredar directa o indirectamente deMarshalByRefObject. Ésta es otro moti-vo para recalcar el uso de las interfasesya que .Net acepta tener una única cla-se base.

Para poder compartirse tiene quehaber una aplicación que lo lance, eneste caso será una aplicación de conso-la. Generalmente se usa este tipo de apli-cación para pruebas y desarrollo, luegolo ideal seria un servicio de Windows.Ver fuente 2.

Ahora echemos un vistazo a lo queescribimos para lanzar la aplicación.Por medio de la clase TcpChannel, abri-

mos una canal de comunicación, ade-más le indicamos que usaremos el puer-to 1234.

Luego usamos el método estáticoRegisterChannel para registrar el canal.Hay que tener presente que si fuera uncanal que ya se está usando puede darun error. Lo aconsejable es colocarlodentro de un try – catch o pedir con elmétodo GetChannel de la misma clase,si retorno un nulo, registrarlo y sino ele-var una excepción.

Con el canal registrado, ahora hayque indicarle qué clases se pueden com-partir. Tenemos que decirle el tipo de laclase, un nombre del objeto (URI), ypor ultimo el tipo de objeto en remo-ting que es. En cuanto a los nombres,por defecto cuando se comparte unobjeto que utiliza el transformador bina-rio (el TCP si no le decimos lo contra-rio usa serialización binaria, mientrasque el HTTP usa serialización SOAP)se coloca como nombre el nombre dela clase seguido de un punto y la exten-

sión .REM, mientras que si es SOAP secoloca la extensión .SOAP.

Para que el objeto pueda ser llama-do la aplicación de consola debe estarejecutándose, por eso lo dejamos con elReadLine puesto.

Ahora que ya tenemos el servidor ter-minado, pasaremos al cliente. En este casotambién lo veremos por medio de unaaplicación de consola. Ver fuente 3.

En el cliente, llamamos al objetoremoto, para ello, en este caso, usamosel método Activator.GetObject que espe-ra por lo menos dos parámetros: el pri-mero, el tipo de objeto que se va a com-partir, como en el cliente sólo tengo lainterfaz, coloca la interfaz que espero; yel segundo, es la dirección donde está elservidor, esta dirección está formada porprotocolo de comunición + dirección IP (onombre de maquina) + puerto que está espe-rando petición + nombre del objeto. Para ase-

dotN

etM

anía

<<

36

dnm.plataforma.net<<

namespace ICompartido{

public interface IAsignar{

void AsignarNombre(string nombre);string ObtenerNombre ();

}}

1 “Core J2EE Patterns” de Deepak Alur.

dotN

etM

anía

<<

37

dnm.plataforma.net<<

using System;using System.Runtime.Remoting;

using ICompartido;

namespace Compartido{

public class Empleado:MarshalByRefObject,IAsignar{

string _nombre;public Empleado(){

Console.WriteLine(“Creando el objeto Empleado”);}

#region IAsignar Members

public void AsignarNombre(string nombre){

Console.WriteLine(“Empleado.AsignarNombre * viejo valor = {0} * nuevo valor {1}”,_nombre,nombre);_nombre=nombre;

}

public string ObtenerNombre(){

Console.WriteLine(“Empleado.ObtenerNombre * retornando el valor {0}”,_nombre);return _nombre;

}

#endregion}

}

using System;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Tcp;

using Compartido;

namespace Servidor{

class Servicio{

[STAThread]static void Main(string[] args){

Console.WriteLine(“Servicio.Main(): Se inicio el servicio”);

TcpChannel tcpch= new TcpChannel(1234);

ChannelServices.RegisterChannel(tcpch);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(Empleado),“Empleado.rem”,WellKnownObjectMode.Singleton);

Console.WriteLine(“Presione ENTER para terminar el servicio”);

Console.ReadLine();}

}}

Fuente 1

Fuente 2

gurarme de que funcione en cualquierordenador puse 127.0.0.1 en lugar delnombre de mi ordenador (también podíahaber puesto localhost).

¿Con ganas de probarlo? Compiletodo, ejecute el servidor, luego el clien-te, y podrá ver como en el servidor soli-citó el cliente.

Ahora vamos a poner un punto deinterrupción en el cliente donde decimosque el proxy ya está creado. Paramos elservidor si estuviera andando y volvemosa lanzarlo, luego lanzamos el cliente has-ta que llegue al punto de interrupción.Según el código del cliente, el objeto yafue creado por el método GetObject, perosi vemos en la consola del servidor, elconstructor aún no avisó que se creó elobjeto ¿Bug de .Net? ¿Llamo a mi psi-cólogo? No tranquilo, es así, ahora vere-mos el porqué.

Tipos de objetos en .Net Remoting

Los objetos MBR se pueden activarde tres maneras: SingleCall, Singleton,Activado desde el Cliente. Igualmente pode-mos decir que son dos divisiones genéri-cas: aquella donde el servidor administra

la creación de un objeto (SingleCall ySingleton), y aquella donde se administradesde el cliente.

El SingleCall funciona igual que unservicio web sin estado. Lo que sucedees que cuando se hace la petición, se crea,ejecuta el método y se destruye el obje-to remoto. Esto hace que los objetosSingleCall sean los más escalables de lostres tipos. Generalmente se utilizan paraprocesos largos. En contra, se puede decirque no recuerda nada del usuario que estáutilizándolo.

Para ver un ejemplo, sólo cambiare-mos en el ejemplo anterior, en el servi-

dor, el WellKnownObjectMode.Singleton aWellKnownObjectMode.SingleCall. Al eje-cutarlo, veremos que en el servidor seconstruye dos veces el objeto Empleado;esto es porque hay dos llamadas, una don-de le asigno el nombre y una donde lepido el nombre.

El Singleton es una sola instancia delobjeto remoto para todos los procesosclientes que la llamen. Es muy útil paracompartir información entre clientes.El tiempo de vida por defecto es de 5minutos. Para ver cómo se comportan,cambiaremos el servidor otra vez aSingleton y ejecutaremos dos vecesseguidas el cliente. La primera vez queejecutamos el cliente, la variable nom-bre estaba vacía y le asignamos el nom-bre dotNetMania, la segunda vez le vol-vimos a asignar el mismo valor, senci-llamente porque no se destruyó el obje-to, mantenía el mismo valor y lo com-partía con el nuevo proceso cliente. Lospasos quedan reflejados en la consoladel servidor.

Por ultimo tenemos los objetos quese pueden activar del lado del cliente. Alactivarse del lado del cliente puedo hacerun new, lo cual se puede considerar unaventaja porque el código queda muchomas fácil de leer, pero sólo podemos usarel constructor por defecto, si quisiéra-mos otros constructores deberíamoscompartir la implementación. El pro-blema más importante que tienen es laescalabilidad, ya que como la activaciónse maneja desde el cliente, varios clien-tes podrían crear instancias iguales; estocon un tipo de objeto singleton sería unasola instancia, y lógicamente consumiríamenos recursos del servidor.

En el caso que no quisiéramos com-partir las interfases, podemos utilizaruna herramienta que se llama SoapSuds.La herramienta SoapSuds no extrae lainformación sobre distintos construc-tores, sólo el constructor por defecto.Algo importante en torno al SoapSuds,si tienes la versión 1.1 del Framework,Microsoft te recomienda que esperes aque exista un service pack para que fun-cione correctamente o que contactes aun número de teléfono de soporte. Paramas información ver (http://sup-port.microsoft.com/default.aspx?scid=kb;en-us;823445). Cabe aclarar que conla versión 1.0 no tenía problemas.

dotN

etM

anía

<<

38

dnm.plataforma.net<<

using System;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Tcp;

using ICompartido;

namespace Cliente{

class ClienteInicio{

[STAThread]static void Main(string[] args){

TcpChannel ch = new TcpChannel();

ChannelServices.RegisterChannel(ch);IAsignar obj = (IAsignar) Activator.GetObject(

typeof(IAsignar),“tcp://127.0.0.1:1234/Empleado.rem”);

Console.WriteLine(“Ya tengo el proxy creado”);

obj.AsignarNombre(“dotNetMania”);string retorno = obj.ObtenerNombre();

}}

}

Fuente 3

Nos cuestionaremos cadadecisión de diseño de

aplicaciones distribuidas yveremos como podemos

resolverlas con .NetRemoting aplicando las

mejores prácticas

Una ventaja que nos trae este tipo deactivación es la posibilidad de usar dis-tintos constructores, como compartoimplementación, puedo hacerlo fácil-mente. Encontrarán el ejemplo en eldirectorio EJEMPLO02. En el cliente laprimera vez uso el constructor por defec-to y luego otro constructor donde le asig-no el nombre al empleado. En el servi-dor tuvimos que cambiar la manera depublicar el objeto, ahora usamos dos lla-madas a la clase RemotingConfiguration, laprimera a la propiedad ApplicationName,para decirle el nombre, y por último almétodo RegisterActivedServiceType y lepasamos el tipo que queremos compartircomo parámetro. En el cliente, despuésde registrar el canal, ejecutamos el méto-do RegisterActivatedClientType y le pasa-mos el tipo de objeto y la dirección don-de está el servidor como parámetros.

Pero, comparto implementación yeso no me termina de convencer, no megusta mucho por principios de progra-mación distribuida ¿qué puedo hacerpara tener la ventaja de constructores yno tener que compartir implementa-ción, y que sea escalable?

Una buena practica en .NetRemoting

Para lograr todo esto, lo que deberí-amos hacer es que la clase no se expongadirectamente, sino indirectamente comorespuesta a un método. Esto se conocecomo una factoría2, donde cada métodode la factoría mapea a un constructor.

Empezaremos por la interfaz:

Como se ve, sobrecargo el métodoCrearEmpleado de igual manera que estásobrecargado el constructor de la claseEmpleado, luego en el proyecto compar-tido agrego la clase Factoria e imple-mento la interfaz IFactoria. Ver fuente 4.

Como la factoría será llamada des-de el cliente, necesitamos que herede deMarshalByRefObject.

En la aplicación de consola que ini-cia el servidor, en lugar de exponer la cla-

se Empleado, ahora exponemos la claseFactoria y lo dejamos Singleton porqueexistirá una sola factoría para todos losclientes. Esto lo hace escalable.

En el cliente, los cambios quedan dela siguiente forma:

Como se verá, no puedo usar direc-tamente el constructor específico de laclase empleado, pero por medio de lafactoría obtengo los mismos resultados.

Esto constituye una buena prácti-ca dentro de remoting, porque nocomparto la implementación, tengo laposibilidad de usar constructores, y dellamar indirectamente. La idea princi-pal es que la interfaz no cambie, enton-ces el cliente se puede mantener. Bajoesta misma buena práctica, tambiénpodríamos usar el patrón Facade3, don-

de en lugar de encapsular la creaciónde un objeto, encapsulamos las llama-das del cliente al servidor. Pero eso serátema de otro día al igual que otras pre-

guntas. (¿Cómo hago para cambiar elservidor de ordenador sin reinstalar

todos los clientes? ¿Qué hago si en elparque de ordenadores son todosWindows Me o 98? ¿Dónde realizo elhost? ¿Y si quisiera usar esta mismaarquitectura en un solo puesto de tra-bajo, pero el día de mañana quierotener 5 ordenadores conectados a unservidor? ¿Cómo hago para que unobjeto remoto permanezca siempreactivo? ¿Cómo se avisa el cliente des-de el servidor? ¿Cómo puedo utilizarRemoting con Multiservidores? ¿Có-mo puedo aplicar seguridad?)

dotN

etM

anía

<<

39

dnm.plataforma.net<<

namespace Compartido{

public class Factoria:MarshalByRefObject, IFactoria{

public Factoria(){}

#region Factoria Members

public IAsignar CrearEmpleado(string nombre){

return new Empleado(nombre);}

public IAsignar CrearEmpleado(){

return new Empleado();}

#endregion}

}

Fuente 4

public interface IFactoria{

IAsignar CrearEmpleado();IAsignar CrearEmpleado(string nom-

bre)}

RemotingConfiguration.RegisterWellKnownServiceType(

typeof(Factoria),

“Factoria.rem”,

WellKnownObjectMode.Singleton);

IFactoria factoria = (IFactoria) Activator.GetObject(typeof(IFactoria),”tcp://127.0.0.1:1234/Factoria.rem”);Console.WriteLine(“Ya tengo el proxy creado”);IAsignar obj = factoria.CrearEmpleado(“dotNetMania”);string retorno = obj.ObtenerNombre();

2 “Design Patterns” de Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides3 Idem II

IntroducciónLa primera versión de Delphi, a punto de ser libe-

rada hace ahora casi una década, contaba con un evo-lucionado compilador de Pascal orientado a objetos,conocido como Object Pascal, que generaba códigode 16 bits para el sistema operativo Windows. ConDelphi 2 apareció el compilador que producía códi-go de 32 bits para la plataforma Win32, nombre conel que ha venido denominándose genéricamente a laplataforma de ejecución que representan todas las ver-siones de Windows de 32 bits. Aunque con ciertas

mejoras y extensiones a lo largo de los años, lo cier-to es que ese compilador era, básicamente, el mismohasta la versión 7.

Delphi 8 es la primera versión de este productopreparada para crear aplicaciones para la plataforma.NET de Microsoft, lo cual ha obligado a construirun compilador prácticamente nuevo que, en lugar decódigo nativo, genera código IL. Éste debe ajustarsea una especificación, conocida genéricamente comoCLS (Common Language Specification), que hace posi-ble la reutilización del código entre distintos lengua-

jes, así como la interoperabilidad entre sus clases. Loslenguajes .NET pueden contar con características que,a pesar de estar presentes en el sistema común de tiposo CTS, no formen parte de la CLS, que podríamosver como un subconjunto de aquél. El cumplimientocon dicho subconjunto, sin embargo, es inevitable.

En la CLS se detallan ciertas construcciones quedeben ser contemplados en cualquier lenguaje, algu-nas de las cuales no existían en el lenguaje ObjectPascal como lo conocíamos hasta Delphi 7 o, de exis-tir, no se comportaban exactamente como se indicaen dicha especificación. Por ello ha sido necesariointroducir algunos cambios, agregando nuevas pala-bras clave, eliminando ciertos tipos y alterando otrospara poner Object Pascal al mismo nivel, sino supe-rior, que los demás lenguajes .NET.

La nueva sintaxis de Object Pascal, cuyos puntosmás destacables van a ser descritos en este artículo, noestán presentes actualmente en las versiones del com-pilador para Win32, pero Borland ha asegurado queactualizará dicho compilador para guardar un parale-lismo que facilite el mantenimiento de una misma basede código entre proyectos Windows y proyectos .NET.

Módulos y ámbitos con nombreEn la plataforma .NET las definiciones de tipos se

almacenan jerárquicamente en ámbitos con nombre, onamespaces, tales como System.Windows.Forms oMicrosoft.Windows. Las aplicaciones pueden definirsus propios ámbitos con nombre, a fin de distribuir elcódigo, así como hacer referencia a otros para poderusar los tipos definidos en ellos. El ámbito con nom-bre, sin embargo, es un concepto inexistente en ObjectPascal… hasta ahora.

dotN

etM

anía

<<

40

Cambios sufridos por Object Pascal en Delphi 8 .NET

Por Francisco CharteTorre de Babelfcharte.com

<<

Con el objetivo de poder generar código ajustado a la especificación común de lenguaje(CLS) de la plataforma .NET, Borland ha tenido que introducir ciertos cambios en el com-pilador de Object Pascal que incorpora la versión 8 de Delphi.

A diferencia de otros lenguajes .NET,la actual versión de Object Pascal, en Delphi 8,

no contempla la posibilidad de crear alias para los ámbitos con nombre

Los módulos Object Pascal, ya seanmódulos de programa, de paquete ocualquier otro tipo, indican su nombretras palabras clave como program, unit,library y package. Dicho nombre, ade-más, establece indirectamente tambiénel nombre del archivo físico, algo habi-tual en Pascal.

La nueva versión del compilador deObject Pascal contempla el uso de lasmismas palabras clave anteriores pararecoger no sólo el nombre del módulo,sino la especificación de un ámbito com-pleto. Podemos, por tanto, iniciar unprograma con una línea así:

program dotNetMania.Ejemplos.Programa1;

begin…

En este caso la palabra programindica que el código de este módulo seintroducirá en un ámbito denominadodotNetMania.Ejemplos.Programa1.El nombre físico del archivo coincidi-ría con el del ámbito, añadiéndose úni-camente la extensión correspondiente.

El cuadro de diálogo de opcionesde proyecto, en Delphi 8, cuenta conun apartado en el que puede indicar-se un ámbito por defecto que se aña-diría automáticamente como prefijoal nombre de los módulos, no tenien-do así que especificarlo en cada unode ellos. Los módulos de código fuen-te tendrían el nombre indicado trasprogram o unit, pero los generadospor el compilador reflejarían el nom-bre completo incluyendo el ámbitopor defecto.

Para completar la posibilidad de tra-bajar con ámbitos con nombre, en estanueva versión la cláusula uses, utiliza-da para hacer referencia a módulosexternos, contempla la posibilidad de iracompañada de nombres completos deámbito. Por ejemplo:

A la hora de hacer referencia a undeterminado tipo, por ejemplo el nom-bre de una clase, una estructura o enu-meración, pueden emplearse referen-cias completas, precediendo el identifi-cador de tipo del nombre completo delámbito, o bien referencias simples siem-pre que éstas no entren en conflicto conidentificadores locales. Tras añadir laanterior cláusula uses a un módulo, porejemplo, los identificadores Form ySystem.Windows.Forms.Form serí-an equivalentes, haciendo referencia enambos casos a la clase Form del ámbi-to System.Windows.Forms.

Visibilidad de los miembros de un tipo

Hasta la versión del compiladorincorporado en Delphi 7, ObjectPascal contemplaba la existencia en untipo, por ejemplo la definición de unaclase, de miembros privados, protegi-dos, públicos y publicados, utilizán-dose las palabras clave private, pro-tected, public y published para espe-cificar la visibilidad de un bloque dedeclaraciones.

Todos los lenguajes .NETpueden asignar a los miembrosde sus tipos una visibilidad entretres posibles: pública, protegi-da y privada. El problema estri-ba en cómo se entienden estostérminos, existiendo diferenciasentre los lenguajes .NET, paraser más exactos la especificacióncomún, y Object Pascal.

En Object Pascal un miem-bro private es accesible desde lapropia clase y también desde cual-quier punto del módulo en que se

ésta se haya definido. Podríamosdecir que es una interpretación

amplia del concepto de privado. En laCLS, sin embargo, un miembro privatedebe ser visible exclusivamente para losmiembros de la clase de que forma parte,pero nunca desde el exterior.

Con la visibilidad protegida ocurreotro tanto. En Object Pascal un miem-

bro protected es visible desde la pro-pia clase, las clases derivadas de ésta ycualquier punto del módulo del que for-me parte. En la plataforma .NET unmiembro protegido sólo puede ser visi-ble en la clase donde se ha definido y lasclases derivadas a partir de ella, exclu-sivamente.

Cómo podría Object Pascal ade-cuarse a las exigencias de la CLS y, altiempo, evitar que el código existente déproblemas a causa del cambio. Si Borlandhubiese optado simplemente por res-tringir la visibilidad de los miembros pri-vate y protected, evitando que seanaccesibles desde puntos del módulo exter-nos a su clase, la conversión de proyec-tos de versiones previas sería más pro-blemático. Por ello se eligió añadir dosnuevos modificadores de visibilidad:strict protected y strict private, queserían funcionalmente equivalentes a losprotected y private de C# o Visual Basic.

Teniendo en cuenta estos nuevosmodificadores, ahora la definición de

dotN

etM

anía

<<

41

dnm.lenguajes.net<<

Las estructuras de datoscon métodos y propiedades

no deben ser vistas como sustitutas de clases,

su aplicación se reduce a tipos más o menos

simples aunque con algunafuncionalidad

Figura 1. Podemos establecer un ámbito pordefecto en las opciones de proyecto

usesSystem.Windows.Form, System.Drawing, System.Net,dotNetMania.Ejemplos.Programa1;

una clase podría tener la estructurasiguiente:

Estructuras de datos más funcionales

En Object Pascal las estructuras dedatos, definidas como registros con lapalabra clave record, pueden contenerexclusivamente variables, campos dedatos que, además, son accesibles públi-camente desde cualquier punto en el quesea visible el tipo. En los lenguajes.NET, por el contrario, las estructurasde datos pueden contener miembros deotros tipos, como puedan ser los méto-dos, las propiedades y los constructo-res, además de especificadores de visi-bilidad idénticos a los de las clases.Incluso pueden implementarse interfa-ces en una estructura.

¿Cuál es, entonces, la diferenciaentre una estructura y una clase?Básicamente que la primera es un tipopor valor, que se aloja en la pila, mien-

tras que la segunda es un tipo por refe-rencia, del que van creándose objetos

mediante asignación dinámica dememoria. Además, las estructuras nopueden contar con métodos virtuales niheredar unas de otras.

En Delphi .NET podríamos definiruna estructura de datos como la siguien-te sin problemas, posibilidad inexisten-te en versiones previas del compiladorde Object Pascal.

TPunto = recordstrict private

x, y: Integer;public

constructor Create(FX, FY: Integer);procedure Dibuja;

end;

A pesar de contar con un construc-tor, las variables de tipo TPunto se alo-jarían como valores en la pila, como unnúmero o un carácter, no como un obje-to de una clase.

Métodos y clases de uso finalEl mecanismo de herencia de Object

Pascal, como el de cualquier otro len-guaje orientado a objetos, permite rede-finir en una clase derivada miembrosdeclarados como virtuales en la clasebase. Esto hace posible la especializa-ción de los métodos sin obstaculizar elmecanismo de utilización genéricaconocido como polimorfismo. Lo queno existía hasta el momento era laopción de redefinir el método y, al tiem-po, indicar que no podría redefinirsemás en clases derivadas. Dicho en otraspalabras: convertir un método hereda-do en un método de uso final. Esa posi-

bilidad está ahora presente mediante lanueva palabra clave final, cuyo uso semuestra en el siguiente fragmento decódigo:

ClaseBase = classpublic

procedure Metodo: virtual;end;ClaseDerivada = class(ClaseBase)public

// marcamos el método como de uso finalprocedure Metodo; override; final;

end;

Este mismo concepto puede apli-carse también a la definición de una cla-se, convirtiéndola en clase de uso final,es decir, una clase de la que no podríanderivarse otras. Si, por ejemplo, defini-mos una clase especializada en una tareamuy específica, no tendría sentido per-mitir la creación de otras a partir de ella.En un caso así su cabecera incluiría lapalabra sealed. Ver figura 3.

ClaseEspecializada = class sealed…

Una clase de uso final es lo inversode una clase abstracta, pensada exclusi-vamente para servir como base de otrasy no para crear objetos a partir de ella.Para que una clase fuese consideradaabstracta debía obligatoriamente con-tener al menos un método abstracto, sinimplementación, algo que también hacambiado en esta nueva versión. Ahorapodemos hacer abstracta cualquier cla-se simplemente añadiendo el modifica-dor abstract en la definición:

ClaseAbstracta = class abstract…

dotN

etM

anía

<<

42

dnm.lenguajes.net<<

MiClase = classstrict privateMiembroPrivado: string;

strict protectedMiembroProtegido: string;

privateMiembroDeEnsamblado: string;

protectedMiembroProtegidoDeEnsamblado: string;

publicMiembroPublico: string;

end;

Figura 2. El Explorador de código contempla los nuevos

modificadores de visibilidad deObject Pascal

Figura 3. El compilador nos indicaque no podemos derivar de una

clase de uso final

Miembros de clase

En la plataforma .NET cualquierclase puede contar con miembros de cla-se, también conocidos como miembrosestáticos. Estos miembros, que puedenser variables, propiedades y métodos,pertenecen a la clase en sí, no a los obje-tos que pudieran crearse de ella. Parautilizarlos se dispone el nombre de laclase y, a continuación, el nombre delmiembro. En la biblioteca de clases.NET existen clases compuestas exclu-sivamente de miembros estáticos y queson de uso final, ofreciendo serviciospara los cuales no es necesario crearobjetos previamente.

Object Pascal cuenta con la nociónde métodos de clase, pero su imple-mentación al nivel del compilador es dis-tinta de los miembros estáticos de unaclase .NET. No existía, hasta el momen-to, la posibilidad de definir variables ypropiedades de clase. En esta nueva ver-sión los métodos de clase .NET se deno-minan métodos estáticos de clase, defi-niéndose mediante la adición de la pala-bra clave static al final. Las variables declase se definen en apartados class var,equivalentes a var pero cuyos miembrospertenecerán a la clase, y las propieda-des de clase simplemente anteponiendola palabra class, como puede verse en elsiguiente fragmento de código.

Esta clase, de uso final, tiene una varia-ble de clase, un método estático de clasey una propiedad de clase, de tal maneraque podría utilizarse completamente usan-do la sintaxis MiClase.Metodo oMiClase.Propiedad, sin tener que crearobjeto alguno.

Otras novedades y cambiosOtra de las novedades que incorpo-

ra la nueva versión del compilador de

Object Pascal es la posibilidad definirunos tipos dentro de otros, es decir, tiposanidados. Una clase, por ejemplo, podríacontener la definición de otra clase, quesería o no accesible desde el exteriordependiendo de la visibilidad que tenga.

La definición de un evento enDelphi 8 contempla la necesidad de lamultidifusión, algo habitual en la plata-forma .NET. Un mismo evento puedeestar vinculado a varios métodos, de talforma que todos ellos se ejecutarían enel momento en que se genere dichoevento. Para dar cabida a esta nuevanecesidad, la definición de un evento

sustituye los apartados read y write, uti-lizados hasta ahora, por add y remove,y la asignación directa de un método aun evento por los procedimientosInclude y Exclude.

En una clase además de variables,métodos, propiedades y eventos tambiénes posible ahora definir operadores. Lasobrecarga de operadores facilita la eje-cución intuitiva de ciertas operaciones.La sintaxis general queda resumida en elsiguiente fragmento de código:

Un concepto novedoso introducidoen la plataforma .NET es la posibilidadde asociar atributos a los tipos y susmiembros, datos que se convierten enmeta-información que se almacena enlos ensamblados conjuntamente con elcódigo y puede recuperarse posterior-mente con el mecanismo de reflexión. Lasintaxis con la que se usan los atributosen Delphi 8 es prácticamente idéntica ala de C#, situándose entre corchetesdelante del elemento al que se asociará.

Por último, también hay que men-cionar los elementos del lenguaje que handesaparecido por ser totalmente incom-

patibles con la plataforma .NET, entrelos cuales destacaríamos el operador @,la directiva absolute, los tipos Pointery PChar, el tipo Real48, los archivos tra-dicionales de Pascal file of tipo o los pro-cedimientos de gestión de memoriacomo GetMem y FreeMem. Todosellos tienen un tipo o mecanismo equi-valente o similar en la plataforma .NET.

Como puede apreciarse, los cambiossufridos por el lenguaje Object Pascal ensu adaptación al universo .NET han sidomuchos y, algunos de ellos, importantes.Se han descrito los que el autor ha con-siderado de mayor relevancia pero sinánimo de ser exhaustivos. En la carteraquedan otros temas, quizá de uso menoshabitual, como las clases que actúan com-plementando a otras (class helpers), algu-na directiva nueva como $AUTOBOXo el operador & para poder usar comoidentificadores palabras que son reser-vadas en Object Pascal.

dotN

etM

anía

<<

43

dnm.lenguajes.net<<

MiClase = class sealedprivateclass varVariable: Integer; // una variable de clase

publicclass procedure Metodo; static; // Método estático de clase// Propiedad de claseclass property Propiedad: Integer read Variable write Variable;

end;

// Clase TPunto con algunos operadores sobrecargadosTPunto = classstrict privateFX, FY: Integer;

public// Operador +class operator Add(A,B: TPunto): TPunto;// Operador -class operator Subtract(A,B: TPunto): TPunto;// Operador string()class operator Implicit(A: TPunto): string;

…end;// Implementación del operador de sumaclass operator TPunto.Add(A,B: TPunto): TPunto;begin// Creamos un nuevo objeto con coordenadas// suma de los dos puntosresult := TPunto.Create(A.X+B.X,A.Y+B.Y);

end;

de utilizar la misma dirección IPentre diferentes sitios Web. Esta situación en la quevarios sitios Web comparten una misma dirección IPse denomina multihosting (hospedaje múltiple o ser-vidor multisitio).

Con un solo equipo y una instalación del servidorWeb IIS 6.0 (Internet Information Services) puede darla impresión de que disponemos de múltiples equi-pos, con un sitio Web distinto en cada máquina, cuan-do en realidad pueden estar en la misma.

Esta característica de servidor multisitio es bas-tante interesante para los proveedores de servicios deInternet, ya que podrá ofrecer a cada cliente un nom-bre de dominio que tendrá asociado una dirección IPdistinta. Teóricamente se pueden crear un número ili-mitado de sitios Web dentro de un mismo servidor.

En IIS 6.0 tenemos dos opciones a la hora hospe-dar diferentes sitios Web:

• Asignar varios nombres de dominio y direccio-nes IP a una tarjeta adaptadora de red, es decir,una dirección IP distinta para cada sitio Web.

• Utilizar una única dirección IP en una tarjeta dered y asignar varios nombres de dominio a lamisma dirección, cada nombre de dominio secorresponderá con un sitio Web diferente. Eneste caso a una misma dirección IP le corres-ponden varios sitios Web (multihosting).

• Un sitio Web va a distinguirse atendiendo a lacombinación de tres parámetros:

• Una dirección IP. • Un número de puerto. • Un encabezado de host.

El encabezado de host (host header name) es el nom-bre con el que los usuarios conocen el sitio Web, esdecir, se corresponde con el nombre de dominio aso-ciado a un sitio Web, por ejemplo www.dotnetmania.comes el encabezado de host del sitio Web de esta revista.

Cuando un cliente solicita una página a través delnavegador Web la cabecera de petición HTTP corres-pondiente contendrá, además de la dirección IP de lamáquina, el nombre de dominio que aparece en laURL. Esa información es detectada por el servidorWeb e interpretada de forma conveniente para deter-minar qué sitio Web ha demandado el cliente, de estaforma se podrá diferenciar los sitios Web que tienenasignados una misma dirección IP.

Se debe recordar que para poder utilizar un nom-bre de dominio lo debemos registrar en el sistema de

dotN

etM

anía

<<

44

Configuración de varios sitios Web en IIS 6.0 con una misma dirección IP

Por Ángel EstebanSoftware ArchitectAlhambra-Eidos

En el presente artículo se va a comentar cómo configurar el servidor Web que nos ofreceWindows Server 2003 para disponer de múltiples sitios Web con una misma dirección IP.Esto nos va a suponer un ahorro considerable de direcciones IP. El mecanismo que nos vaa permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host, yes el concepto que pasamos a explicar a continuación.

Una vez que hemos utilizado el encabezado de host dentro de IISya no podemos utilizar la direcciónIP del servidor Web para acceder al sitio Web predeterminado de

dicho servidor

<< Existe la posibilidad

nombres de dominio (DNS, DomainName System) a través de un servidor denombres.

El encabezado de host es una carac-terística ofrecida por el protocoloHTTP 1.1, por lo tanto los navegado-res que se conecten a nuestro servidortambién deben soportar esta caracterís-tica, que nos permitirá distinguir entrelos diferentes sitios Web asociados a unamisma dirección IP. El encabezado dehost es soportado por los navegado-res Internet Explorer y NetscapeCommunicator a partir de sus versio-nes 4.0.

Los navegadores más antiguos nosoportan los encabezados de host, porlo tanto, en el caso de que varios sitiosWeb compartan la misma dirección IP,el servidor Web no podrá determinar aqué sitio Web quiere acceder el usua-rio, ya que no ha enviado la informa-ción que identifica el nombre del sitioWeb (nombre de dominio) al que sequiere acceder. En estos casos lo reco-mendable es actualizar la versión delnavegador Web.

Utilidad del encabezado de host

Ya sabemos que un sitio Web den-tro de IIS 6.0 viene definido por la com-binación de tres parámetros: direcciónIP, número de puerto y encabezado dehost. Para que un sitio Web se distingade otro debe diferenciarse en al menosen uno de los parámetros citados ante-riormente.

Los sitios Web pueden compartirdos cualesquiera de sus tres componen-tes de identidad con otros sitios Web,siempre y cuando se diferencien en eltercero.

De esta forma dos sitios Web pue-den tener el mismo encabezado de hosty la misma dirección IP pero distintonúmero de puerto. Si asignamos a unsitio Web un número de puerto distin-to del estándar (el puerto 80), nuestrosclientes deberán escribir el número depuerto en la URL.

De las múltiples combinaciones quepueden surgir a la hora de albergar dis-tintos sitios Web, la más interesantepuede ser la de sitios Web que compar-tan la misma dirección IP y el mismo

número de puerto y que se distingan porel encabezado de host.

Configurando el sitio WebLa herramienta de configuración de

IIS 6.0, es decir, el Administrador deServicios de Internet (Administrador deInternet Information Services) nos ofre-ce la posibilidad de realizar la configu-ración de los encabezados de host paranuestro sitio Web. Esto nos lo permitehacer a través de la hoja de propiedadesde sitio Web.

Al diálogo de identificación avanza-da de sitio Web llegamos desde la hojade propiedades del sitio Web pulsandoel botón “Avanzadas”. En el diálogo queaparece en la siguiente figura se nos per-mite configurar el encabezado de host,así como la dirección IP y el número depuerto del sitio Web.

En este diálogo se ofrecen una seriede botones, “Agregar”, “Quitar” y“Modificar” que nos permiten cambiarlas diferentes configuraciones de iden-tificación para el sitio Web, cuando pul-samos alguno de estos botones apareceotro dialogo, como el de la siguientefigura, que nos permite modificar o aña-dir las propiedades que van a identifi-car de forma única un sitio Web.También es posible indicar el númerode puerto SSL en el caso que se utilicenconexiones seguras.

Si se modifica la configuración deun sitio Web y entra en conflicto conotro existente, es decir no se diferencianni en el número de puerto ni en la direc-

ción IP ni en el encabezado de host,automáticamente el servidor Web man-tendrá este sitio Web detenido hasta queno se haya subsanado el error.

El encabezado de host también lopodemos indicar a la hora de crear unnuevo sitio Web. En el segundo pasodel asistente de creación del sitio Webaparece una caja de texto en la que pode-mos especificar este dato, tal como sepuede apreciar en la figura. Por defec-to el encabezado de host aparece enblanco.

Una vez que hemos utilizado elencabezado de host dentro de IIS ya nopodemos utilizar la dirección IP del ser-vidor Web para acceder al sitio Webpredeterminado de dicho servidor. Siqueremos hacer esto debemos asignarla dirección IP del servidor a un sitioWeb determinado como si fuera unencabezado de host, es decir, el enca-bezado de host sería la propia direcciónIP y no un nombre de dominio.

Con este apunte finaliza este artícu-lo que espero sea de gran utilidad a lahora de configurar servidores Web conInternet Information Services.

dotN

etM

anía

<<

45

dnm.servidores.iis<<

Figura1. Identificación avanzada de sitio Web

Figura 3.Asistente para la creación de un sitio Web

Figura 2. Especificando el encabezado de host

y los servicios podrán utilizar esta par-tición como base de datos y utilizar así las ventajas queofrece Active Directory. Los miembros del grupo deadministradores del Enterprise pueden crear y admi-nistrar dichas particiones.

Estas particiones tienen la ventaja de que sus datosse replican con otros controladores de dominio delbosque para proporcionar redundancia y tolerancia aerrores. ¡Sólo con los controladores de dominio espe-cificados! Con lo cual, replicaremos en los controla-dores que nos resulten localmente más útiles.

Otra ventaja es que las aplicaciones y los servi-cios que utilizan LDAP podrán seguir utilizandoeste protocolo para almacenar datos y acceder a losmismos.

Al igual que una partición de dominio, la parti-ción de aplicaciones forma parte del espacio de nom-bres del bosque y sigue la misma nomenclatura. Sustres posibles ubicaciones en un bosque serían:

• Nuevo árbol de bosque

• Árbol secundario de una partición de directoriode aplicaciones

• Árbol secundario de una partición de directoriode dominio

KCC (Generador y Comprobador de Topología deRéplica) mantiene automáticamente la topología dereplicación de todas las particiones y mantiene la mis-ma programación de réplica que las particiones dedominio.

También está la ventaja de que los objetos alma-cenados en una partición de directorio de aplicacio-nes no se replican al Catálogo Global. El motivo es evi-tar que las consultas LDAP a distintos CatálogosGlobales no devuelvan datos incoherentes.

Creación de una partición de Aplicación

1. Abrimos Símbolo de Sistema y ejecutamos ntdsutil2. Escribimos domain management3. Desde domain management, escribimos connection4. Desde connection, escribimos connect to server nom-

breservidor5. Desde connection, escribimos quit6. Desde domain management, podemos hacer lo

siguiente:

• Para crear una partición escribimos:create nc particióndirectorioaplicaciones controlador-dedominio

• Para eliminar una partición escribimos:delete nc particióndirectorioaplicaciones

dotN

etM

anía

<<

46

Particiones de Directorio de Aplicaciones

Por Pedro Gómez Alhambra-Eidos

Active Directory en Windows 2003 permite la creación y configuración de una nueva parti-ción de directorio llamada Partición de Directorio de Aplicaciones. Esta partición se replicasólo en los controladores de dominio determinados y siempre que ejecuten Windows 2003.

<< Las aplicaciones

Estas particiones tienen la ventaja de que sus datos se replican con otros controladores

de dominio del bosque para proporcionar redundancia y tolerancia a errores

Agregar o eliminar unaRéplica de una Partición deDirectorio de Aplicaciones

Una réplica es una instancia en otrocontrolador de dominio.

Los pasos a seguir son los siguientes:

1. Abrimos Símbolo del Sistema y escri-bimos ntdsutil

2. Escribimos domain management3. domain management, escribimos

connection4. Desde connection, escribimos con-

nect to server nombreservidor5. Desde connection, escribimos quit6. Desde domain mangement pode-

mos hacer lo siguiente:

• Para agregar una réplica escri-bimos:Add nc replica particióndirectorio-aplicaciones controladordedominio

• Para eliminar una réplica escri-bimos:Remove nc replica particióndirec-torioaplicaciones

Para añadir o eliminar una réplica,podemos utilizar también el comandonull. Debemos tener cuidado al elimi-

nar la última réplica de una partición deaplicaciones ya que podemos perder losdatos que estén en esa partición defini-tivamente.

Mostrar la información sobre una Partición delDirectorio de Aplicaciones

1. Abrimos Símbolo del Sistema y escri-bimos ntdsutil

2. Escribimos domain management3. Desde domain management, escribi-

mos connection4. Desde connection, escribimos connect

to server nombreservidor5. Desde connection, escribimos quit6. Desde domain mangement escribimos

list

dotN

etM

anía

<<

47

dnm.servidores.windows<<

Figura 1. En el ejemplo, creamos una partición de directorio de aplicaciones llamada test yque se va a ubicar en un dominio llamado exchange2003.aes. El parámetro null sirve para

especificar que queremos crear dicha partición en el controlador al cual estamosconectados. Si no, tendremos que escribir el nombre DNS del controlador de dominio

Figura 2. En el ejemplo, añadimos una réplica de la partición test a un controlador de dominio llamado exchange2.exchange2003.aes

Figura 3

Otra ventaja es que lasaplicaciones y los servicios

que utilizan LDAP podrán seguir utilizando

este protocolo para almacenar datos y acceder

a los mismos.

En el servidor DNS se habrá creado la zona corres-pondiente a la partición. De no ser así, se puede crearmanualmente desde la consola de DNS. Ver figura 4.

Al crear la zona nos aparecerá la opción de lafigura 5.

También, mediante la línea de comandos se pue-de implementar de la siguiente manera:

1. Abrimos Símbolo de Sistema2. Escribimos: dnscmd nombreservidor /createbuil-

tindirectorypartitions /Domain/Forest/AllDomains

nombreservidor es el nombre DNS del ServidorDNS y es obligatorio.

createbuiltindirectorypartitions Crea una particiónde directorio de aplicaciones predeterminada.

/Domain Crea una partición de directorio de apli-caciones DNS predeterminada para todo el dominiodonde se encuentra el servidor DNS especificado.

/Forest Crea una partición de directorio de apli-caciones DNS predeterminada para todo el bosquedonde se encuentra el servidor DNS especificado.

/AllDomains Crea una partición de directorio deaplicaciones DNS predeterminada de todo el domi-nio en un servidor DNS de cada dominio del bosque.

El parámetro nombreservidor se omite para/AllDomains ya que el equipo en el que se ejecuteeste comando debe unirse a un dominio del bosqueen el que se desean crear todas las particiones dedirectorio de aplicaciones predeterminadas de todoel dominio.

dnm.servidores.windows<<

Figura 4

Figura 5

También está la ventaja de que los objetos almacenados en una partición de directorio de aplicaciones no se replican

al Catálogo Global

noticias.noticias.noticias.noticias

Se libera la Beta 1.0 de SharpDevelop: FidalgoSharpDevelop Fidalgo (beta 1 de SharpDevelop) ya está terminado y yaestá en el modo de sólo corregir bug. Cuenta con características comointegración con NUnit, Holding, Assambly Analyzer, C++.NET bac-kend, panel mini visor de clases, conversor VB.NET a C#, mejora delos File Templates y de la importación/exportación a Visual Studio .NET.

SharpDevelop o #develop es un IDE gratis para proyectos de VB.NETy C# para la plataforma .NET. Es Open Source bajo licencia GPL

Más información en: http://www.icsharpcode.net/OpenSource/SD/

Se libera la Beta 1.0 del Proyecto MonoTras la adquisición de Novell, Mono el proyecto del Miguel de Icaza, una imple-mentación open source del framework .NET para Linux, Unix y Windows.

Mono pretende aportar un entorno de desarrollo para Linux con la mayorproductividad conocida, permitir a los desarrolladores escribir aplicacionesdel lado del servidor, aplicaciones cliente y servicios web y desplegarlos bajoLinux, Solaris, MacOs X, Windows NT/XP y otros sistemas UNIX.

Esta es la primera beta de dos previstas antes de publicar la versióndefinitiva.http://www.go-mono.com/archive/beta1/beta1.html

dotN

etM

anía

<<

50

dnm.opensource.net<<

lphant, primer peer to peer bajo .NET

lo hemos desarrollado ungrupo de programadores que inicialmentetrabajábamos con C++ y que colaborába-mos en el desarrollo de eMule. Las motiva-ciones iniciales fueron aprender C#, elentorno .NET y comprobar la potencia de.NET en una aplicación exigente en cuan-to a comunicaciones, multihilo, CPU, esta-bilidad y manejo de memoria.Una aplicación p2p para la red eDonkey mane-ja cientos de conexiones simultáneas, tantoentrantes como salientes y no sólo se limita aTCP sino que usa intensivamente UDP. Todasestas conexiones tienen que sincronizarse paraacceder a ficheros o a listas, por lo que las capa-cidades multihilo hay que explotarlas. Además,el programa debe de permanecer muchos díassin reiniciarse por lo que se tiene que ser extre-madamente cuidadoso con la estabilidad y elconsumo de memoria. El uso de la CPU tam-bién es importante ya que debe de funcionaren background mientras el usuario hace un usohabitual del resto de aplicaciones, sin notar undescenso en su rendimiento (continuamentemientras el ordenador se dedica a otras tareas(por ejemplo reproducir video con buena cali-dad)). Por otro lado debe tener un interfaz deusuario fácil de usar y un aspecto que no sepuede alcanzar con los controles estándar.Antes de aparecer la plataforma .NET, paradesarrollar una aplicación con estos reque-rimientos la opción más lógica era C++.Pero con la llegada de .NET nos parecióbuena idea comprobar si puede hacer som-bra a C++ en su propio terreno. En el peorde los casos aprenderíamos C# y sabríamoscuales son sus puntos flacos.Después de varios meses de desarrollo (alser GNU, en nuestros ratos libres), de sacarmás de 15 versiones, de contar con más de3.000 usuarios simultáneos y 70.000 des-cargas del programa, hemos comprobadoque .NET es perfectamente válido para estetipo de desarrollos. Incluso lphant supera enalgunos aspectos a programas escritos enC++ más trabajados como el eMule.

Teniendo en cuenta que la gran mayoría deusuarios de este tipo de aplicaciones no tie-ne instalado .NET Framework, este tipo deproyectos supone una justificación para queel .NET Framework se instale en una grancantidad de ordenadores domésticos. Pornuestra experiencia, la necesidad de instalar.NET Framework no está siendo un incon-veniente serio una vez pasada una fase de reti-cencia inicial dónde tampoco se sabía cómofuncionaba el programa.A lo largo del proyecto hemos disfrutado delas ventajas que supone emplear .NET.Particularmente hemos comprobado comono nos hemos tenido que preocupar de losdetalles de la implementación y nos hemospodido centrar en la resolución del problema.Otra de las virtudes a destacar ha sido el exce-lente control de excepciones que lleva .NET,por lo que es bastante fácil resolver los bugsque se van encontrando. Además cuando aalgún un usuario le salta una excepción nosinforma con el volcado de pila si necesidad decompilar versiones de debug especiales. Los principales problemas encontradosdurante el desarrollo de este proyecto hansido los relacionados con el interfaz gráfi-co (donde, por falta de funciones de .NETse ha tenido que usar la API de Windows)y el manejo de memoria (donde pagamosnuestra falta de experiencia para trabajarcon memoria manejada).De cara a los desarrolladores interesados enaprender .NET, el código fuente de lphantpuede ser muy didáctico ya que cubremuchos e importantes aspectos de la pro-gramación en .NET:Comunicaciones: lphant exprime al máxi-mo la capacidad de comunicaciones de.NET, soportando cientos de conexionessimultáneas tanto TCP como UDP Multithreading: lphant maneja una canti-dad de threads muy alta que deben de sersincronizados para acceder a ficheros comu-nes o a listas (Hashtables, ArrayList,…). Modularidad: lphant utiliza la facilidad que

proporciona .NET para hacer aplicacionesmodulares mediante namespaces y proyec-tos separados. Servicios web. El núcleo de lphant es autó-nomo e independiente del interfaz, de estamanera el interfaz puede funcionar de for-ma remota, ya que el núcleo expone susobjetos como servicios web que el interfazconsume. Creación de controles y WinForms. Parael interfaz gráfico de lphant se han creadodiversos controles, especialmente comple-jos por la interacción con la API WIN32son los controles derivados de ListView cre-ados. Por otro lado lphant dispone de unmotor de skins para los diversos controles. XML: lphant demuestra cómo usar archi-vos XML ya que los usa para la mayoría dearchivos que necesita, sólo en aquellos casosen los que necesita ser compatible con eMuleo eDonkey no usa XML. Multilenguaje: lphant tiene un motor mul-tilenguaje propio basado en XMLPortabilidad: El núcleo de lphant se com-pila perfectamente con MONO.Lamentablemente al no estar totalmentesoportados los WinForms en MONO nopuede decirse lo mismo del interfaz. lphant destaca por tener un núcleo al que seaccede tanto en local como por accesoremoto mediante SOAP, completamenteseparado del interfaz gráfico. El núcleo delphant es una librería que expone todas lasfuncionalidades de la red eDonkey, por loque cualquiera puede integrar la red eDonkeyen sus aplicaciones con muy poco esfuerzo.Invitamos a los desarrolladores interesadosen el proyecto a colaborar o a aprender conun programa muy divertido de desarrollar.En el foro de desarrollo de la página webde lphant damos soporte a la gente intere-sada en el código y que desea saber cómofunciona.

Para más informaciónhttp://www.lphant.com

<< Este proyecto

lphant es un proyecto de código abierto que implementa un cliente peer to peer (p2p)para la red eDonkey/eMule. Está escrito en C# íntegramente y es compatible con eMuley eDonkey (pudiendo incluso continuar descargas iniciadas con estos programas).

por Juanjo Ariño

dotN

etM

anía

<<

51

dnm.comunidad.net<<dnm.comunidad.net

Un veterano a la últimaLa XI convocatoria del Master Eidos en Tecnologías Avanzadas

para el Desarrollo de Software

formativos paradesarrolladores tienen tanta soleracomo el Master Eidos en Desarrollo deSoftware. En el curso 2004/2005 entraen su undécima convocatoria. Son onceaños formando a lo más granado de losprogramadores de nuestro país y deLatinoamérica. Fundamentalmentecentrado en las tecnologías de desarro-llo de Microsoft, viene haciendo de laprogramación en .Net su asunto tron-cal desde hace ya tres años, de hecho laaparición de la novena edición (curso2002/2003) prácticamente coincidiócon el lanzamiento al mercado de VisualStudio .Net.

Para que nos hablen de la versiónprevista para el curso 2004/2005 noshemos reunido con algunas de las per-sonas que en Alhambra-Eidos mantie-nen algún tipo de responsabilidad sobredicho curso, y que además son colabo-radores habituales de este medio: LuisMiguel Blanco: Coordinador y autorde una buena parte de los contenidosdel Master, así como tutor de la versiónvirtual. Pepe Hevia: Instructor de laversión presencial y creador destacadodel material didáctico. Marino Posadas:Coordinador de muchas de las once ver-siones realizadas hasta ahora, instructoren ambas modalidades, autor de docu-mentación y Microsoft MVP en 2003 y2004 (.Net Framework y Visual C#, res-pectivamente). Y por último, AntonioQuirós, que realizó el primer diseño delMaster allá por el año 93 y hoy conti-nua ayudando en la adecuación progra-mática que cada año se realiza.

dnm: Podríais hacernos una brevereseña histórica de vuestro Master.

Antonio Quirós: Bueno, si no haymás remedio nos remontaremos a laprehistoria (risas). Allá por 1992 comen-zó a cobrar vida el área de formación dela entonces denominada Grupo EIDOS.Nuestro ámbito de especialización,

como muchos recordarán, era Clipper.Impartíamos seminarios, cursos, confe-rencias, etc. En seguida nos planteamosel diseño de un programa de más cala-do que sirviera para reglamentar y pro-fundizar en el conocimiento de los pro-gramadores que, por aquel entonces, aúnmantenían una fuerte composición auto-

didacta en sus perfiles. Existía un enor-me déficit en el conocimiento de laorientación a objetos y, yo creo que des-de entonces eso centraba nuestra pro-puesta formativa. Así surgió la primeraconvocatoria. Luego vino Windows y el

cliente/servidor. Co-mo una consecuencianatural derivamos ha-cia Visual Basic y SQLServer. Más tarde fuela programación web,luego XML y los ser-vicios web. Este año enAlhambra-Eidos noshemos decantado porla programación paradispositivos móviles.En fin que cada con-vocatoria tiene su leitmotiv y a poco queanalicemos los tema-rios de las once con-vocatorias hasta ahorarealizadas caeremos en

que estamos analizando la historia tec-nológica del desarrollo de software enlos últimos once años.

Todo esto, por supuesto, en cuantoa lo tecnológico. Si nos centramos enlos aspectos organizativos es de desta-car también que el Master pasa por dosetapas claramente diferenciadas. Una

primera es la que se produce desde 1993a 1997 en que sólo se realizan versionespresenciales y otra segunda que acaecedesde 1998 donde ponemos en circula-ción las primeras ediciones virtuales ymixtas. En los primeros años los temas

<< Pocos programas

Antonio Quirós, General Area Manager de Alhambra-Eidos

Tampoco podíamos permanecer ajenos a la aparición de SQL Server Reporting Services. Consideramos que esta es una de las más importantes noticias

para el mundo del desarrollo y, por tanto,teníamos que darle cabida en nuestros programas

tecnológicos y académicos primabansobre los demás. Desde 1998 hay tam-bién una fuerte componente logísticaen toda la labor previa al lanzamiento.En este momento se alternan las tresmecánicas de organización y podemosdecir con orgullo que todos los añosliberamos al mercado tanto titulados quehan hecho el Master en su versión pre-sencias como en las virtual o mixta.

Respecto al alumnado también apa-recen cambios históricos curiosos. Losprimeros asistentes procedían casi exclu-sivamente del mundo profesional. Su afánera reciclarse tecnológicamente, estar ala última, poder llegar a tecnologías quesus empresas les demandaban. Más tardese realizó la incorporación del mundo uni-versitario. Algunos alumnos venían a rea-lizar el Master como un estudio de post-grado que les permitiera ganar puntoscurriculares, ya que nuestro productosiempre ha gozado de un amplio presti-gio empresarial. Por último, hay que rese-ñar que tras la adecuación realizada el añopasado para adecuar los contenidos delMaster para que pudieran servir de baseen la obtención de la certificaciónMCAD, el alumno que busca la obten-ción de dicha certificación se ha incor-porado también a nuestra peculiar fauna.

dnm: ¿Qué asunto consideráis que eneste momento es el principal valor apor-tado a la colectividad de desarrolladores?

Marino Posadas: Creo que existenvarios valores añadidos. Por un lado, laexistencia de manuales on-line que per-miten un primer acercamiento a una tec-nología e incluso decidir si queremos o

no profundizar en un tipo de conoci-mientos. Por otro, los cursos tutorizadossuponen que no solo vas a seguir unmanual fijo y previsto para tu progreso,sino que si -como muchas veces pasa- teatascas, un profesor asociado a cadamódulo puede darte respuestas tanto enlínea como en diferido. Y, por supuesto,no nos olvidemos de la revistaAlgoritmo, donde se publican artículosde calidad sobre novedades tecnológi-cas, que suponen una avanzadilla y unanota de atención sobre posibles opcio-nes a seguir en un futuro cercano. Soncasi 10 años de publicaciones desde queAlgoritmo estaba en papel, y todavía sela sigue considerando un producto refe-rente para miles y miles de desarrolla-dores y profesionales de las TIC.Finalmente, si además queremos algúnmanual a bajo precio para leer en elmetro, La Librería Digital completa per-fectamente este panorama.

dnm: Fuisteis de los primeros enabordar el formato eLearning de modoserio para este tipo de programas for-

mativos. ¿Cómo valoráis estos años detrabajo al respecto?

Luis Miguel Blanco: Ha resultadoen una experiencia francamente positiva.Ser pionero te otorga una ventaja enor-me si organizas una buena estructura for-mativa, marcando la pauta al resto quetodavía no ha empezado. De esa manerate conviertes en el espejo en el que semiran todos aquellos que se proponganacometer un proyecto similar al tuyo.

Por supuesto que esta situación teobliga a tener que trabajar más, ya quepara gran parte de los procesos a desa-rrollar, léase elaboración y organizaciónde los contenidos, sistemas de evalua-ción, establecimiento de relaciones conel alumnado, etc., debes permanecer enconstante innovación, puesto que no haynadie todavía que haya realizado nadasimilar. Sin embargo, y volviendo alpunto anterior, abonas el terreno paralos demás y eso supone un elementoposicionador muy importante en el mer-cado de acciones formativas eLearning.

Centrándome ya en la parte de ele-

dotN

etM

anía

<<

52

dnm.comunidad.net<<

Marino Posadas, Software Architect de Alhambra-Eidos

De izquierda a derecha: Marino Posadas, Luis Miguel Blanco y Pepe Hevia

En este momento se alternan las tres mecánicas de organización y podemos decir con orgullo

que todos los años liberamos al mercado tanto tituladosque han hecho el Master en su versión presencial

como en la virtual o mixta

mentos que componen la oferta forma-tiva de Alhambra-Eidos, creo que hemosconseguido combinar armoniosamentetodas las tecnologías a nuestra disposi-ción para lograr una relación tutor-alumno altamente cercana a la presen-cial. Uno de los más importantes recur-sos lo compone el uso de nuestros vide-oseminarios, no sólo porque ya estéimplantado, sino porque la evoluciónque observamos en las herramientas dis-ponibles para su desarrollo está progre-sando con un alto grado de calidad, loque permite comunicar más informa-ción al alumno a través de la combina-ción de elementos multimedia: audio,video, diapositivas, texto, etc.

dnm: El año pasado se adecuó vues-tro Master al temario necesario para pre-parar la certificación MCAD, tan valo-rada por los programadores. Esta pue-de realizarse a través de este plan for-mativo o a través de los cursos oficialesde Microsoft. ¿Qué diferencia existe?

Antonio Quirós: En Alhambra-Eidos preparamos a los alumnos porambas técnicas. Hay que recordar queen España somos el centro de referen-cia de Microsoft para formar a desarro-lladores y el que más certificadosMCAD entrega cada año. Una y otrason técnicas adecuadas y con las doslogramos resultados válidos. La dife-rencia está en que el Master aporta másvalor añadido, es decir, tiene más cosas,enseña más la vertiente práctica. Si ade-más de aprobar el MCAD quieres pro-fundizar en las técnicas de desarrollo yen las buenas prácticas a seguir tu pro-grama es el Master. Si lo que quieres escertificarte y, además te corre prisahacerlo y no puedes dedicar un año aca-démico, tu programa debe estar basadoen los cursos oficiales de Microsoft.

dnm: ¿Qué crees que es lo que másvaloran los alumnos de vuestro Master?

Marino Posadas: Quizá la organi-zación de los cursos en una secuencia dedificultad paulatina, que permite darpasos seguros en el proceso de aprendi-zaje. Éste se potencia mediante los auto-tests, garantizando que los pasos ante-riores nos han conducido a donde nosencontramos con conocimiento de cau-sa suficiente. También, en las versionesvirtual y mixta, citaría lo que ahora sellaman “espacios de colaboración”,

como los foros, la cafetería, el Tablónde Anuncios. Dichas áreas permitentener la sensación de que realmente exis-te un colectivo paralelo a donde diri-girse, existiendo un grupo de personascon las mismas inquietudes y necesida-des que nosotros.

dnm: ¿Qué te planteas cuando dise-ñas y confeccionas el material que lue-go formará cada uno de los módulos delMaster?

Pepe Hevia: Ante todo, la ilusiónde poder proporcionar al usuario delmódulo todos los conocimientos posi-bles, de cara a facilitar que la asimila-ción de todos los conceptos que se tra-tan en el curso le resulte una expe-riencia asequible y agradable. Para ellose introducen también otro tipo denociones ajenas al master, pero que encierto modo puedan verse relacionadasindirectamente con él -lo cuál implicaconocer, estudiar, investigar todos esoselementos y saber relacionarlos-. Deesta manera el alumno puede entendertoda la temática, dentro del contextoen que se va a aplicar y siempre desdela perspectiva de “romper los mitos”.Mi misión radica en hacerlo tan prác-tico y claro como sea posible -pormucho trabajo que esto lleve- y tanameno como me gustaría que me con-taran las cosas: con humor, ejemplosde la vida real, etc. Todo ello sin per-der de vista el rigor, la seriedad y la res-ponsabilidad que todo este proyectoconlleva, por supuesto.

dnm: Qué novedades aporta la ver-sión para el curso 2004/2005

Antonio Quirós: Este año es unpoco curioso. En otras ocasiones hemosactualizado en el sentido de quitar unascosas y poner otras. Sin embargo parael curso 2004/2005 sólo hemos amplia-do, es decir que estamos ante una ver-

sión, como se dice literariamente, corre-gida y aumentada. A nuestro programadel año pasado, ya fuertemente actuali-zado y estructurado a través de la nociónde servicios web, le hemos añadidovarias cosas. En primer lugar, un módu-lo dedicado a introducir en el ámbito dela ingeniería del software. El perfil deldesarrollador cada vez es más alto y, portanto, queremos huir de un programasolo tecnológico. Tenemos que hablartambién de arquitectura, de metodolo-gías, de gestión de proyectos, de asegu-ramiento de la calidad, etc. Asimismo,hemos introducido un módulo de pro-gramación de dispositivos móviles conVisual Studio .Net. Consideramos queeste es el entorno hacia el que hoy todoslos desarrolladores deben girar la vista,ya que si aún no han tenido la oportu-nidad de hacer alguna aplicación al res-pecto, les faltan décimas de segundospara que sus jefes les hagan caer elcorrespondiente marrón. Así, pues, des-de la óptica de siempre, es decir la arqui-tectura multicapa ahora cubrimos lacapa de interfaz con tres niveles dife-rentes: Windows, Web y dispositivos demovilidad. Tampoco podíamos perma-necer ajenos a la aparición de SQLServer Reporting Services. Conside-ramos que esta es una de las más impor-tantes noticias para el mundo del desa-rrollo y, por tanto, teníamos que darlecabida en nuestros programas. Parahacerlo hemos ampliado nuestro cursode SQL Server 2000 a fin de introducirdicha tecnología. Por último, y aunqueeso es menos interesante para los pro-gramadores que trabajan con herra-mientas Microsoft, hemos actualizadotambién los contenidos de los módulosde Java para dar cabida a las novedadesque en dicho mundo se han producidoen los últimos tiempos.

dotN

etM

anía

<<

53

dnm.comunidad.net<<

Un módulo específico de Introducción a la ingeniería de software

Un módulo específico de Programación de Dispositivos Móviles con Visual Studio.Net

Ampliación del módulo de SQL Server 2000 para dar cabida a Reporting Services

Actualización de todos los módulos de Java para dar cabida a las novedades de dicho mundo

Novedades de la versión para el curso 2004/2005

dotN

etM

anía

<<

54

<<

Moving to VB .NET:Strategies,Concepts,and CodeDaniel Appleman

Editorial: A!PressPáginas: 560, RústicaPublicado: Junio 2001ISBN: 1893115976

Hoy nos centramos en dos autores bien conocidos por los programadores. Appleman,antiguo miembro del equipo de desarrollo de Visual Basic 1.0, nos introdujo al API deWindows hace varios años en una obra clásica. Ahora, vuelve a la carga con VB.NETdonde más que una revisión del producto, nos muestra su propia visión del mismo.

Contrasta con la anterior versión, recomienda estrategias, anuncia posibilidades y enu-mera los cambios más importantes, en una obra que podríamos llamar “comparativa”,de la que cabe destacar, además, el estudio en profundidad de los cambios debidos a lapresencia de Programación Orientada a Objetos, las capacidades Multiproceso, la inte-racción con COM+ y la forma en que .NET gestiona la memoria. Es una obra que selee mejor ahora que en el momento de su aparición, cuando ya se conoce el productoy el lenguaje, y puede apreciarse mejor su perspicacia.

Code:The Hidden Language of Computer Hardware and SoftwareCharles Petzold

Editorial: Microsoft PressPag.: 393, RústicaAño: Noviembre 1999ISBN: 073560505X

Una obra curiosa, cuanto menos. Analiza en términos sencillos muchos de los funda-mentos de la informática (hardware y software), y va avanzando en complejidad desdeel código Morse a las interfaces de usuario visuales. Es la obra de 10 años de reflexión—según sus propias palabras en el prefacio— que el autor de “Programación en Windows”,y “Programación en Windows 95”, publicó hace 3 años para recoger toda una vida deexperiencia docente y divulgadora de estos mundos.

Recorre los inicios, incluso remontándose al siglo IXX, revisa los logros más importan-tes de los pioneros de la informática del siglo pasado, y revisa desde los fundamentosconceptos archisabidos (Puertas lógicas, ASCII, Coma flotante), de los que siempre sabeentresacar la visión clara y explicativa de quien ha conocido la informática en profundi-dad y se plantea ahora explicarla con palabras sencillas. Para nostálgicos, pero tambiénpara novatos.

dnm.biblioteca.net<<

dnm.biblioteca.net

dotN

etM

anía

<<

55

ya una larga trayecto-ria desde Turbo Pascal, pasando porDelphi y la serie de los Builder en laactualidad. ¿Cómo definirías la estra-tegia de Borland en estos momentos?

Actualmente Borland no sólo ofre-ce herramientas de desarrollo, comosiempre ha hecho, sino que su estrate-gia actual se centra en ofrecer una solu-ción completa de desarrollo de ciclo devida de las aplicaciones (ALM), tantopara .NET como para J2EE. Esto quie-re decir que el foco para Borland en estosmomentos es el equipo de desarrollo alcompleto que necesitan herramientas degestión de requisitos, análisis y diseño,codificación, pruebas, despliegue y ges-tión de cambios y configuración.

Enlazando con la pregunta ante-rior…y de acuerdo con las previsiones–que sé que tenéis- sobre crecimiento,¿pensáis que en España ese crecimien-to va a materializarse en alguna inicia-tiva concreta?

En concreto en España ya se hamaterializado en varias compañías quehan adoptado la solución completa deBorland, y como es lógico estamos tra-bajando para ampliar el numero decompañías que lo adopten en los pró-ximos meses.

¿Qué es eso sobre Borland y la“Suiza del Software”?

Es un ejemplomuy explicito queusamos cuando que-remos explicar laneutralidad de Bor-land que ofrece solu-ciones en todas lasplataformas y len-guajes.

En la actuali-dad, parece claroque existen dos pla-taformas de desa-rrollo que agluti-nan a la mayor par-te de los usuarios: J2EE y .NET. ¿Cómose ubica Borland y cuáles son sus planesde soporte futuros?

Borland es consciente de ello y poreso proporciona la misma solución paraambas plataformas. Pero además, tene-mos un producto, Borland Janeva, queofrece interoperabilidad entre .NET yJ2EE a través de RMI sobre IIOP. Coneste producto es posible conectar com-ponentes .NET con servidores de apli-caciones J2EE sin necesidad de utilizarWeb Services, lo que en ciertos casossupone un nivel mayor de seguridad.

Respecto a la construcción mismade las aplicaciones, me consta queBorland ha publicado herramientas quepretenden cubrir el ciclo completo de

desarrollo. ¿Puedes hablarnos algo másde esto? ¿Incluye eso la parte de insta-lación de aplicaciones?

Como he comentado anteriormen-te la estrategia de Borland es precisa-mente ofrecer una solución que cubrael ciclo completo de desarrollo de apli-caciones, tanto para J2EE como para.NET. Las dos características princi-pales de la solución de Borland son laintegración y la modularidad.Integración en cuanto que todas lasfases del ciclo deben estar integradaspara en cualquier momento poder vol-ver atrás, modificar algo, y ver que con-secuencias tendrán esas modificacio-nes en el desarrollo de la aplicación. Ymodularidad en el sentido de poder

Entrevista a Carlos Heras

Por Marino PosadasMVP Visual Developer C#Alhambra-Eidos www.elavefenix.net

<<

Carlos Heras esAlliances & Indirect Sales Manager de Borland Ibérica que junto a NéstorMiranda, Director General lleva al frente de Borland en España desde sus inicios.Aprovechando la celebración del Borland Days el pasado mes de mayo hemos queridoconversar con él especialmente para que los más viejos recordemos nuestros tiemposde programadores en Turbo Pascal en DOS.

Borland lleva

dotN

etM

anía

<<

56

dnm.directo.entrevistas<<

sustituir alguna herramienta deBorland por otra de los principalesfabricantes que hay en el mercado, sinque ello implique una perdida de inte-gridad entre las distintas fases de desa-rrollo de la aplicación.

Dentro ya de la parte que nos inte-resa en esta revista (.NET), ¿Cómositúas Delphi .NET dentro de el pano-rama de los lenguajes de la actualidad?¿Y C# Builder? ¿Os decantáis más poruno que por otro?

Delphi para Borland es uno de susproductos estrella, afortunadamentetenemos varios, y su evolución a .NETcreo que es un paso decisivo en la vidade este producto. Para la comunidad dedesarrolladores de Delphi supone faci-litarles la migración a la plataforma.NET lo que significa encaminarse alfuturo sin abandonar el pasado. BorlandC# Builder es un claro ejemplo de laintención de Borland de ofrecer unasolución para cualquier lenguaje.

Últimamente, Blake Stone,Arquitecto Principal de JBuilder se haincorporado al equipo de desarrollo deVisual Studio .NET. ¿Qué tal os tomáisesas “deserciones”? ¿Crees que sontodavía secuelas de la marcha de AndersHejlsberg?

Bueno yo no hablaría de deserciónsino que simplemente Blake ha aprove-chado la oportunidad que se le brinda-ba de mejorar su carrera profesional, yeso es algo que cualquiera haría. Porotra parte es una garantía para el futu-ro de cara a la buena integración entrelos productos de Microsoft y deBorland, y además es un reconocimien-to explicito del nivel de calidad de losingenieros de Borland. En cuanto a las

consecuenciasque su marchapueda ocasionarhay que tener encuenta que enBorland se traba-ja por equipos yque la salida deuna persona, pormuy valida quesea, no tiene porque suponer unamerma de la pro-ductividad delequipo.

¿Cuantos desarrolladores de Delphiestimáis que habrá actualmente en elmundo?

Borland tiene más de dos millonesde usuarios de sus herramientasWindows. Evidentemente, una partemuy importante de esta cifra es de desa-rrolladores Delphi. También tenemosmás de un millón en herramientas Java,y claro, la mayor parte de éstos sonusuarios JBuilder.

¿Cómo afrontáis la localización devuestros productos?

El proyecto de localización se lide-ra en USA para todo el mundo y luegose trabaja con agencias locales. En el casode España se traduce únicamente paraEspaña debido a las diferencias entre elcastellano que se habla aquí y el que se

habla en América Latina. En AméricaLatina se utiliza la versión inglesa.

Borland ibérica distribuye sus pro-ductos a través de mayoristas comoIngram Micro y GTI, pero también deminoristas como Danysoft que, sinembargo, parecen tener una estrecharelación con vosotros.

La gran diferencia es que Danysoftda un gran valor añadido que nosotrosestimamos muchísimo y esto hace que,efectivamente, nuestra relación conellos sea muy estrecha. En cualquiercaso mantenemos una estrecha rela-ción de más de 15 años con IngramMicro y GTI. Pero claro, Danysoft daservicios de formación, soporte, con-sultoría, etc. y esto es fundamental paranosotros.

Y por último, trata de mirar por labola de cristal, y anticípanos cómo vesel futuro inmediato de la construcciónde software…

Bueno resumiendo un poco creoque el futuro del desarrollo de aplica-ciones se va a centrar en dos platafor-mas, J2EE y .NET, y que cada vez seva a industrializar más, en el sentido deuna mayor utilización de herramientasespecificas para cada una de las fases delciclo de vida del desarrollo de las apli-caciones, para construir un software demayor calidad y en el menor tiempoposible.

<<Borland Day acoge durante su primera edición a más de 500 participantes

Borland celebró ante más de 500 asistentes la primera edición de su macro evento BorlandDay. Bajo el lema “Potencie su Desarrollo” dio a conocer a todos los profesionales involucradosen el proceso de desarrollo de aplicaciones, su definición, diseño, desarrollo, test, despliegue y ges-tión de sus soluciones totalmente integradas así como sus nuevas actualizaciones. Junto a sus prin-cipales socios estratégicos en España, Borland pretender brindar la mejor solución en la creacióndel software para la empresa.

Con más de 20 ponencias y workshops en tres salas en paralelo destacan las áreas más impor-tantes en el proceso creativo del software:productividad, calidad y movilidad.Durante este encuen-tro Borland ha aprovechado para mostrar las distintas soluciones para plataformas J2EE,Microsoft.NET,herramientas de definición y diseño, desarrollos sobre dispositivos móviles, soluciones CORBA,novedades de sus IDEs, JBuilder, Delphi, C++, y sus servicios de consultoría, formación y soporte.Borland incrementa la productividad de las empresas con el máximo rendimiento de las inversio-nes gracias a su estrategia ALM de gestión del ciclo de vida de las aplicaciones basada en tres cua-lidades primordiales: flexibilidad, rapidez y libertad de elección de la plataforma.

Como partners estratégicos Borland Day contó con los líderes más importantes del sector:Accenture, Bea Systems, HP, Mercury Interactive, Microsoft, Oracle y Telefónica Móviles que mos-trarán la integración de sus productos con la soluciones Borland.

“En esta jornada todos los profesionales de TI, directores, responsables de proyectos, analis-tas y desarrolladores, habrán podido ver la única solución de desarrollo independiente, basada enestándares y totalmente integrado con los líderes del sector, con la que reducir sus costes y aumen-tar su productividad” aseguró Néstor Miranda, Director General de Borland Ibérica.

IMPORTES VÁLIDOS HASTA NUEVA OFERTA

DATOS DE FACTURACIÓN

CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .

DATOS DE ENVÍO (sólo si son distintos de los datos de facturación)

CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .

FORMA DE PAGO❑ Talón nominativo a nombre NETALIA, S.L.❑ Giro postal a nombre NETALIA, S.L.❑ Transferencia bancaria a nombre de NETALIA, S.L. a:

La CaixaNúmero de cuenta 2100 4315 48 2200014696

(Indique su nombre en la transferencia)

❑ Domiciliación Bancaria Indique su número de cuenta:

❑ Tarjeta de crédito❑ VISA ❑ MASTERCARD ❑ AMERICAN EXPRESS

Número de su tarjeta: Fecha de caducidad: / (Imprescindible)

Firma y sello (imprescindible)

a de de 20

Suscripción a dotNetManía

Usted autoriza a la mecaniza-ción de estos datos. El res-ponsable y destinatario deéstos es Netalia, S.L. Ustedtiene derecho a acceder a susdatos, modificarlos y cance-larlos cuando lo desee. Susdatos no serán cedidos en nin-guna de las formas posibles aterceras partes y no se utiliza-rán más que para el buen fun-cionamiento de su suscripcióna la revista dotNetMania ypara informarle de las activi-dades comerciales que realicela editorial Netalia, S.L. Si nodesea recibir informacióncomercial de esta empresamarque la casilla siguiente ❑

❑ Nº1 ❑ Nº2 ❑ Nº3 ❑ Nº4

Envíe este formulario por email a la dirección [email protected], o al fax (34) 91 499 13 64También puede enviarlo por correo postal a la siguiente dirección:

C/ Robledal, 13528529- Rivas VaciamadridMadrid (España)

❑ Deseo suscribirme a dotNetManía por un año (11 ejemplares) y beneficiarme de la oferta del 10% de descuento por unimporte total de 60 € para España; o por 75 € para el resto de Europa; o por 90 € para el resto del mundo (IVA incluido).

❑ Deseo suscribirme a dotNetManía por un año (11 números) por un importe de 45 € por ser estudiante (IVA incluido).Aporto fotocopia del carné de estudiante o sello del centro académico (IMPRESCINDIBLE). OFERTA VÁLIDA SÓLOPARA ESTUDIANTES RESIDENTES EN ESPAÑA.

dotN

etM

anía

<<

58

Microsoft se centra en la investigaciónLos pasados días 24-26 de Mayo, secelebraron en Barcelona lasJornadas Académicas MicrosoftResearch 2004, segunda edición delos encuentros Microsoft-

Universidad que reunieron a más de 200 profesores universita-rios y MVP’s de diferentes tecnologías. Durante 3 jornadas, algu-nos de los más sobresalientes investigadores y divulgadores detecnologías Microsoft plantearon el “estado del arte”, bajo el epí-grafe “Docencia e investigación en un mundo de AplicacionesOrientadas a Servicios”, pudimos escuchar a: Rosa M. García,Stephen Emmott, Rafal Luckawiecki (“A Subjective View ofNext Decade in IT”), Ivan Medvedev (“Security Framework on theCLR, future developments and Security at Microsoft”), DavidCarmona (“Nueva generación de aplicaciones orientadas a servicios -Indigo, WS*”), AdamWiener (“Microsoft DataAccess current and future:import/export data fromSQL Server as XML andan introduction toObjectSpaces”), FernandoGuerrero (“SQL ServerYukon - nuevas necesidadesde los sistemas de informa-ción”), Hugo Zaragoza(“Combinando Information Retrieval y Machine Learning en inves-tigación”), Catherine Heller (“Nueva generación de herramientasde desarrollo con Visual Studio .NET Whidbey”), Pablo Rodríguez(“Distribución de contenidos en redes de datos móviles e inalámbricas”),Damien Watkins (“Multilanguage programming teaching with.NET”) , Michal Cierniak (“.NET Rotor as a research platform”)y Don Syme (“The .NET Common Language Runtime and the.NET Platform: What we’ve achieved and where we’re going”).

La mayor parte de ellos, trabaja en alguno de los centrosde investigación que Microsoft mantiene en Redmond, Beijing(China) o Cambridge (Reino Unido), o son conocidos divul-gadores de tecnologías.

Además de esta iniciativa, algunas noticias se hacen eco delas novedades que la compañía quiere implantar de cara a lasbúsquedas en Internet: posibilidad de búsquedas personaliza-das y configurables de forma simple, epígrafes como “Cosasque he buscado antes”, “Cosas que podrían ser interesantes”(en función de preferencias del usuario), o extender el con-cepto de búsqueda a cualquier objeto contenedor (documen-to, correo, fichero, etc.).

LonghornNo obstante si de un productopuede decirse que aglutina unconjunto de novedades fruto de lainvestigación, ese es la nueva ver-sión del S.Operativo (WindowsLonghorn, ya anunciado de forma oficial para 2006 y su ver-sión de servidor para 2007), que no sólo se ha rehecho desdecero, sino que no para de sorprendernos con nuevos apuntessobre su arquitectura. En este caso, se trata de su modularidad.A diferencia de las versiones anteriores, en que el producto sepresentaba en diferentes versiones (Home/Professional paraXP y Web, Standard, Enterprise o Datacenter para el servi-dor), Longhorn podrá configurarse a gusto del usuario, incor-porando aquellas partes que se necesiten, agrupadas por rolesde actividad, según anunciaba Jim Livingston en el pasadoWindows Hardware Engineering Conference (WinHEC)en Seattle. Sin embargo, en la versión de cliente, será el ven-dedor el que podrá realizar la selección de módulos a incluiren el sistema. Mark Myers, Senior Program Manager deLonghorn, lo daba a conocer como los “bloques de construc-ción del sistema”, que permitirán un tiempo de instalación de15 minutos y un montón de nuevas características en las ins-talaciones distribuidas y desatendidas.

Más código abierto de productos MicrosoftAhora le toca el turno a Windows Template Library, que aligual que sucedió anteriormente con Windows Installer XML,ha sido liberado bajo Common Public License (open-source)y SourceForge Repository, como vehículos de publicación.

Nuevos lenguajes .NET: F#, Zonnon, Delphi .NET yFortran 95 .NET: La producción de compiladores para MSILno cesa. Los últimos incorporados a la ya larga lista (más de 30miembros) son los citados. Para más información, ver:http://www.vsj.co.uk/dotnet/display.asp?id=289

Mercado de fichajesEl hasta ahora CTO de Borland, y arquitectode JBuilder, Blake Stone, se incorpora aMicrosoft en el equipo de desarrollo de VisualStudio .NET 2005 (Dpto. Visual Studio Core).Para más datos, ver http://msdn.microsoft.com/vstudio/team/bios/blakes . La sombra deHejlsberg sigue siendo alargada…

no

ticia

s.n

oti

cia

s.n

oti

cia

s.n

oti

cia

s.n

oti

cia

sdnm.desvan<<

Marino Posadas

JasoftSitio de José Manuel Alarcón, otro asiduo de congresos,autor de varios libros y colaborador habitual de revistasinformáticas, mantiene este sitio, donde encontrarásmuchas de sus aportaciones personaleshttp://www.jasoft.org/

VSJ NET Home (inglés): http://www.vsj.co.uk/dotnet/

Enlaces recomendados uti l idades del mes

Gif Optimizer: comprime todos los GIF de un sitiosin reducción de calidad apreciable (gratis):http://chemware.co.nz/tgo.htm

FABER TOYS: Para usuarios que les gusta saber quepasa en su ordenador (gratis): Ejecuta programasWindows sin utilizar el Registro.http://www.faberbox.com/fabertoys.asp