You are on page 1of 60

Visual Basic.NET C# Delphi ASP.NET ADO.NET .

NET Framework Windows Server System

dotNetMana
www.dotnetmania.com Dedicada a los profesionales de la plataforma .NET
n5 junio 2004 Precio: 6,00 (Espaa)

SQL Server Reporting Services


WebForm Templates Distribuir aplicaciones con .Net Remoting Cambios sufridos por Object Pascal en Delphi 8 .NET Configuracin de varios sitios Web en IIS 6.0 con una misma direccin IP Particiones de Directorio de Aplicaciones
Universidad Final de la Imagine Cup en Espaa. Open Source lphant, primer peer to peer bajo .NET Comunidades La XI convocatoria del Master Eidos en Tecnologas Avanzadas para el Desarrollo de Software Un veterano a la ltima

dnm.editorial

<<

dnm.editorial

Internet: medio y mbito <<


Est bien, habr que explicarlo... He recibido muchas opiniones que me han hecho pensar que la mayora de los visitantes al sitio en Internet de esta revista piensan, equivocadamente, que dotnetmania.com es la misma cosa que dotNetMana. Cuando compramos, por ejemplo, un ejemplar de una revista impresa a travs de Internet, lo pagamos con nuestra tarjeta de crdito, y ms adelante llega el cartero a nuestra casa con el sobre correspondiente, habremos usado Internet como un medio ms para hacer una transaccin. En este proceso se han empleado materiales tangibles como el papel y el sello, y han intervenido personas como el cartero, o la persona que prepar y envi la revista que pedimos. Sin embargo, si entramos en Internet y compramos un ejemplar de una revista electrnica, lo pagamos con nuestra tarjeta de crdito y lo recibimos en nuestra cuenta de correo electrnico y lo leemos obteniendo permisos desde un servidor DRM, tambin en Internet, estoy usando a ste como un mbito, donde todo empieza y termina, no he necesitado de materiales tangibles, ni medios convencionales en ningn momento; de hecho en todo el proceso no habr intervenido posiblemente ningn ser humano de forma directa. Internet, puramente como mbito nos trae grandes cosas, y es una gran revolucin, no me cabe duda, pero tambin pone en peligro a las revistas impresas como sta, y tambin a los libros tradicionales, e incluso al software, la msica, el cine, etc. Pero no es ste el momento ni el lugar donde opinar sobre estos asuntos. A cambio, Internet como medio le ofrece a esta revista posibilidades que antes no tenan los medios tradicionales. Tenemos la posibilidad de publicar tanto material de apoyo a cada artculo como queramos, incluyendo bibliografa, el sonido original de una entrevista, vdeos, noticias, enlaces a otros artculos similares o pginas relacionadas y, por supuesto, el cdigo de ejemplo, proyectos, utilidades, etc. Un complemento al papel impensable hasta la aparicin de Internet. Incluso el CD que acompaaba a las revistas puede quedar en desuso, puesto que desde Internet puede bajar todo lo que un CD contiene pero con la increble ventaja de interactuar con artculos de otros nmeros, actualizarse con el tiempo y corregir y ampliar todo el material de apoyo tantas veces como se desee. sta y no otra es la misin principal del sitio en Internet de dotNetMana. Por supuesto, tambin sirve para mostrar cmo es la revista, y ms teniendo en cuenta que no distribuimos en quioscos, recoger pedidos e informar de cmo son las personas que escriben aqu, etc. En breve, Internet ha de servir tambin para enviar avisos a los lectores y que tambin puedan opinar y dejar su opinin sobre los artculos e incluso para estar puntualmente informado, pues en las noticias el papel de una revista mensual tiene la clara desventaja del tiempo que transcurre entre que la noticia ocurre y cuando realmente llega al lector. En ningn caso dotnetmania.com es un portal o una comunidad virtual, porque dotNetMana es una revista impresa que usa Internet como medio para complementarse y difundirse.

Editor Paco Marn (paco.marin@dotnetmania.com) Administracin Pilar Prez (pilar.perez@dotnetmania.com) Asesor Tcnico/Coordinacin Marino Posadas (marino.posadas@dotnetmania.com) Publicidad Juan Manuel Urraca (jmurraca@dotnetmania.com) Redactores y Colaboradores Alejandro Mezcua, Angel Esteban, Antonio Quirs, Antonio Rojo, Daniel Mazzini, David Carmona, Eladio Rincn,

Francisco Charte, Fernando Guerrero, Fernando Nogueras, Guillermo guille Som, Ivn Gonzlez, Jess Lpez, Jordi Rambla, Jorge Serrano, Jos Manuel Alarcn, Jos Miguel Torres, Juan Torres, Liborio Lpez, Luis Miguel Blanco, Marino Posadas, Miguel Egea, Miguel Katrib, Pablo Abbate, Pedro Gmez, Pedro Pozo, Pepe Hevia, Salvador Ramos Diseo y Maquetacin ride Diseo Grfico Tel.: (34) 91 477 48 85 eride@eride.net www.eride.net Edita Netalia c/ Robledal, 135 28529 Rivas-Vaciamadrid (Madrid)

Tf. (34) 91 6667477 Fax (34) 91 4991364 Imprime Grficas Vallehermoso www.graficasvallehermoso.com Depsito Legal M-3.075-2004 Suscripciones suscriptores@dotnetmania.com

Nuevos colaboradores colaboradores@dotnetmania.com

<<dotNetMana
3

Redaccion redaccion@dotnetmania.com

dnm.sumario
Final de la Imagine Cup en Espaa
El proyecto VAMOS, de la universidad politcnica de Valencia, ganador del campeonato universitario Imagine Cup Espaa de Microsoft y por tanto, sern nuestros representantes en la final internacional de Brasil.

8-12

WebForm Templates
Antes de que la Web llegara a nuestras vidas, nuestras aplicaciones tenan la apariencia de una o varias ventanas en Windows, o para nosotros los ms viejos, una interfaz no grfica. Sin embargo, era muy comn ya desde esas pocas reutilizar la funcionalidad de presentacin de la informacin.

13-15

SQL Server Reporting Services


Al fin ante nosotros tenemos un servidor de informes totalmente desarrollado por Microsoft, el SQL Server Reporting Services. Se trata de un servidor de informes basado en Web Services y cuya caracterstica ms importante reside en su 'modularidad', que por un lado establece, asegura y actualiza el origen de datos al cual est conectado, y por otro suministra el informe en una fase paralela e independiente.

16-26

Crear informes con SQL Server Reporting Services


Los Reporting Services vienen a completar la amplia oferta relacionada con SQLServer, a completar al motor relacional, que tiene amplias funcionalidades como la replicacin, servicios de alta disponibilidad, mecanismos de trasvase de registros, servicios de transformacin de datos, tareas programables, un avanzado mecanismo de copias de seguridad.

27-33

dnm.sumario

Distribuir aplicaciones con .Net Remoting


Existe en .Net cuatro maneras de distribuir aplicaciones, a saber: Los servicios web, .Net Remoting, Mensajera (MSMQ) y Componentes empresariales (COM+). Los tres primeros mtodos de distribucin son controlados por el la plataforma .Net, por lo que slo explicarn estas tres primeras.

34-39

Cambios sufridos por Object Pascal en Delphi 8 .NET


Con el objetivo de poder generar cdigo ajustado a la especificacin comn de lenguaje (CLS) de la plataforma .NET, Borland ha tenido que introducir ciertos cambios en el compilador de Object Pascal que incorpora la versin 8 de Delphi.

40-43

Configuracin de varios sitios Web en IIS 6.0 con una misma direccin IP
En este artculo se va a comentar cmo configurar el servidor Web que nos ofrece Windows Server 2003 para disponer de mltiples sitios Web con una misma direccin IP. Esto nos va a suponer un ahorro considerable de direcciones IP. El mecanismo que nos va a permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host, y es el concepto que explicamos en este artculo.

44-45

Particiones de Directorio de Aplicaciones


Active Directory en Windows 2003 permite la creacin y configuracin de una nueva particin de directorio llamada Particin de Directorio de Aplicaciones. Esta particin se replica slo en los controladores de dominio determinados y siempre que ejecuten Windows 2003.

46-48

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

50 51-53

dnm.comunidad.net
La XI convocatoria del Master Eidos en Tecnologas Avanzadas para el Desarrollo de Software. Un veterano a la ltima

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

54

dnm.directo.entrevistas
Entrevista a Carlos Heras

55-56 58

dnm.desvan

dnm.noticias

<<

dnm.noticias

noticias.noticias.noticias.noticias.noticias.noticias

Tech-Ed Europe 2004 en marcha


El evento europeo definitivo de Microsoft sobre creacin, implantacin, proteccin y gestin de soluciones conectadas
Ya est aqu la mayor conferencia del ao para desarrolladores, arquitectos de software y sistemas y profesionales de las TI europeos. Ser desde el 29 de junio al 2 de julio y vuelve a msterdam, en Holanda, despus de tres aos de celebrarse en Barcelona. En este ao habr contenido adicional sobre movilidad ya que se aprovecha para celebrar conjuntamente la Conferencia Microsoft Mobile Devcon (MDC). Habr seminarios pre-conferencia en los que te actualizarn rpidamente durante un da completo en las tecnologas ms relevantes de desarrollo e infraestructura antes de las conferencias en s; ms de 400 sesiones tcnicas que te podrs organizar en tu agenda para completar un ciclo formativo intenso de cuatro das; podrs profundizar en cada tema participando en las charlas presentadas por una lista de expertos de Microsoft y del sector y de los que el resto del ao slo oirs hablar. Algunos de los ponentes sern: Fernando Guerrero (nico ponente espaol del que podis leer un artculo sobre Yukon en el nmero 1 de dotNetMana), Don Box, David Chappell, John Craddock, Jim Gray, Rafal Lukawiecki, Steve Riley, Mark Russinovich, Clemens Vasters, etc. Marino Posadas, asesor tcnico y coordinador de dotNetMana, estar all y nos traer jugosas entrevistas y un completo reportaje del evento. Dadas las fechas del evento, posiblemente retrasemos la salida del siguiente nmero para publicar un avance del evento. Espero que merezca la pena esperar al siguiente ejemplar unos das ms. Si te interesa asistir puedes encontrar ms informacin en
microsoft.com/spanish/msdn/Spain/eventos/teched.asp

y en
microsoft.com/europe/teched/

Danysoft presenta el nuevo InstallShield X


La solucin le ofrece todo lo que necesita para crear instalaciones de Windows a Linux y de servidores a dispositivos mviles
InstallShield X combina el poder y flexibilidad de InstallShield DevStudio con el soporte multiplataforma de InstallShield MultiPlatform, en una nica solucin para todas las plataformas, sistemas operativos y dispositivos. Sus caractersticas avanzadas le permitirn configurar servidores de bases de datos, instalar servicios web, y crear instalaciones para dispositivos mviles. InstallShield X est disponible en dos ediciones: Professional y Premier, para que adquiera nicamente las caractersticas que necesite, al precio ms conveniente. InstallShield X le ofrece la flexibilidad y potencia para desarrollar todos los instaladores Windows (MSI), InstallScript, de plataforma cruzada (por ejemplo Solaris, RedHat Linux, Mac OS X y OS/400), y para dispositivos mviles desde una misma herramienta. Sus herramientas automatizadas y asistentes facilitan la creacin de todo tipo de instalaciones, por muy complejas que stas sean. Adems sus funciones de eliminacin de conflictos aseguran que las instalaciones sean a prueba de fallos, para que usted ofrezca la mejor imagen a su cliente desde el primer momento. Permite suministrar actualizaciones de sus productos rpidamente notificando al usuario final la existencia de actualizaciones de producto. Esto permite reducir significativamente el tiempo, coste y soporte al mantener a sus clientes con las ltimas versiones de su producto. En Espaa puede obtener soporte tcnico, servicios de formacin y consultora a travs de los servicios profesionales Danysoft, empresa que lo representa en exclusiva. (Danysoft.com/installshield.htm)

<<dotNetMana
6

<< dnm.noticias

WinHec 2004
A principios del mes de mayo se celebr en Washington la versin Americana del Microsoft WinHEC 2004 (Windows Hardware Engineering Conference), donde cada ao se explora el futuro para la plataforma Windows con la industria del PC. WinHEC es el evento donde ingenieros de hardware, desarrolladores de drivers, y fabricantes se dan cita para obtener la informacin tcnica y estratgica para el desarrollo de sus productos y servicios alrededor de Windows. Esta edicin se ha centrado en los avances de la tecnologa para Windows XP, Windows 2003 Server y, cmo no, en el futuro de Longhorn a pesar de faltarle al menos dos aos para su estreno. Microsoft distribuy la primera versin alpha oficial de Longhorn, aunque en realidad ya hubo una pre-alpha para los asistentes al PDC del ao pasado. No debemos esperar una versin beta hasta el ao que viene. Tambin se distribuy entre los asistentes algunas nuevas herramientas de desarrollo para Windows como el Windows Longhorn Driver Kit, Windows Driver Foundation, y el Driver Install Frameworks. Ms informacin en http://www.microsoft.com/whdc/winhec/default.mspx

Canon v 1.0: Metodologa convergente de desarrollo software


Desde el segundo semestre de 2003 un Grupo de Metodologas, formado por diferentes profesionales del rea de Soluciones de Negocio y Desarrollo de Software han estado trabajando en el diseo una metodologa propietaria para gestionar los proyectos de desarrollo de software que se llevan a cabo en Alhambra-Eidos. Producto del trabajo de dicho grupo es Canon en su versin 1.0. Canon es la metodologa interna para desarrollo de software creada por Alhambra-Eidos con la finalidad de mejorar el nivel de madurez con el que se abordan sus distintos proyectos y, por tanto, asegurar la calidad en el resultado de los mismos.

Borland y SOFTENG sellan su alianza como partners estratgicos para potenciar el uso de sus productos
El acuerdo establece un marco de cooperacin para incrementar la productividad de los proyectos en ambas compaas
Borland y SOFTENG han anunciado su compromiso de trabajar de forma conjunta para potenciar el uso de sus productos, a travs de la organizacin de eventos y seminarios de formacin, realizacin de consultora as como de la introduccin de mejoras en las prestaciones de los proyectos que desarrolla Softeng. El know how en productos Borland, especialmente Delphi, ha llevado a SOFTENG a convertirse en una de las empresas ms importantes dentro de su red de partners en Espaa y el nico en la actualidad que opera en el rea de Catalua.

La mujer empresaria y el eLearning


La plataforma de formacin virtual Almagesto, escogida por la ASEM como medio formativo para sus afiliadas.
La Asociacin Empresa Mujer -ASEM-, ha puesto en marcha una iniciativa de apoyo al empleo femenino de alto nivel, en colaboracin con la Consejera de Trabajo del Principado de Asturias. Como parte de esta iniciativa se present el pasado febrero la Primera Feria Virtual ASEM con un doble objetivo, impulsar el rea comercial, y brindar una oportunidad de formacin mltidisciplinar a travs de Internet. Para ello se ha contado con los servicios de Almagesto 4.0, la plataforma de eLearning eLMS de Alhambra-Eidos.

Bill Gates en la Keynote Seamless Computing: Hardware Advances for a New Generation of Software en el WinHEC 2004

CD Kit de recursos ASP .NET versin 2


En este nmero distribuimos conjuntamente con la revista el CD Kit de recursos ASP.NET versin 2. Este Kit incluye una amplia coleccin de documentacin, ejemplos, guas de arquitectura y catlogos de libros de las editoriales MSPress, Anaya y A!Press. Tambin incluye muchos artculos tcnicos en espaol del sitio web MSDN Online as como un extenso archivo de referencias tcnicas, videos y presentaciones narradas, descargas del .NET Framework y del Toolkit de Desarrollo Mvil y un listado de enlaces a sitios de internet relacionados con ASP.NET y el desarrollo en general. Adems se han aadido la herramienta de desarrollo ASP.NET Web Matrix, y los ASP.NET Starter Kits, cinco sitios web preconstruidos y fcilmente modificables, que le permitirn comenzar a trabajar de inmediato con la tecnologa ASP.NET. Como novedades en esta versin 2 se han incluido dentro del apartado "Descargas" una serie de controles gratuitos ofrecidos por terceras compaas lderes en el sector (como ComponentOne o Infragistics), as como versiones en espaol de los Starter Kits para Visual Studio .NET dentro de su apartado especfico, y la nueva versin del Tour Guiado de WebMatrix. Esperamos que le sea til.

dnm.noticias

empresas.empresas.empresas.empresas

Final de la Imagine Cup en Espaa


El proyecto VAMOS, de la universidad politcnica de Valencia, ganador del campeonato universitario Imagine Cup Espaa de Microsoft << Imagine Cupes la competicin informtica para estudiantes universitarios que organiza Microsoft a nivel internacional, en la que deben presentarse proyectos en los que se utilicen dispositivos mviles, servicios web y componentes inteligentes que aprendan a lo largo del tiempo. La final a nivel mundial ya est en su segunda edicin y consistir en un evento de varios das de duracin en la primera semana de julio, en Sao Paulo, Brasil. Todos los finalistas internaciones de cada pas o regin competirn por las tres primeras plazas. Los primeros premios son de 25.000, 15.000 y 10.000 dlares para el primero, segundo y tercero respectivamente. En total se repartirn ms de 85.000 dlares en premios en metlico para los ganadores. Cinco han sido los proyectos seleccionados para la final de la primera edicin en Espaa de Imagine Cup. Para su seleccin se ha tenido en cuenta tanto su innovacin y creatividad como su utilidad y posibilidades de implementacin. Procedan de cinco universidades de distintas regiones de la geografa espaola: la Universidad Politcnica de Catalunya, la Universidad de Deusto del Pas Vasco, la Universidad Pontificia de Comillas de Madrid, la Universidad de Mlaga y la Universidad Politcnica de Valencia. El ganador que nos representar el prximo mes de julio en Sao Paolo ha sido el proyecto VAMOS de la Universidad de Valencia. La propuesta ha sido seleccionada por su innovacin, Occasional Sightseeing), un proyecto que nos acerca al museo del futuro, un espacio dinmico, interactivo y cercano al visitante. Un museo que, para los autores de VAMOS, deber cumplir nuevas funciones como la conservacin intelectual (entendida como el estudio, interpretacin, cataEl equipo ganador recogiendo sus diplomas junto a Rosa Garca, logacin y valoracin de consejera delegada de Microsoft Ibrica; Beatriz Ordoez, las obras de arte como responsable de Imagine Cup Espaa y el Ilustrsimo Sr. D. ngel Berna Quintana, director general de la Fundacin Pablo VI UPSA. objetos de carcter esttico que constituyen las huellas culturales de la utilidad y originalidad, as como por Humanidad) y la dinamizacin cultural, las posibilidades de aplicacin a la vida dejando atrs su silencioso aposento para real. dialogar con el arte y con la sociedad, interrogando constantemente, relacionndose y modificando el entorno. 1er Premio Una revolucionaria visin que tiene VAMOS: el museo del futuro un gran aliado en las nuevas tecnologas. As, los autores de VAMOS sealan Museos interactivos, dinmicos, cercaque la arquitectura tecnolgica adecuanos al visitante. Ese es el objetivo de da a este nuevo modelo de museo debe VAMOS, un proyecto que, gracias a la cumplir al menos con las siguientes tecnologa de los Pocket PCs y las redes caractersticas: inalmbricas, nos acerca lo que sern los Ser compatible con la riqueza sensomuseos del futuro. rial de las visitas fsicas. Enriquecer las visitas con informacin Acabar con la de carcter virtual para facilitar la nocin de los museos comprensin de las obras de arte como meros conteexpuestas. nedores visuales de No ser un mecanismo esttico de proobras de arte es el duccin de informacin sino tener un punto de partida de carcter dinmico que permita variar VAMOS (Virtual los contenidos. Assistant for Museum

<<dotNetMana
8

<< dnm.universidad
Llegar a tiempo. La difcil y estresante tarea a la que solemos enfrentarnos todos cada maana. El despertador que no suena, la ducha que esa maana no quiere darnos agua caliente y para colmo, cuando por fin conseguimos salir de casa, un accidente y su consiguiente retencin en la carretera. Hagamos lo que hagamos, de nuevo, llegaremos tarde. Pues bien, esta habitual y cotidiana situacin tiene los das contados gracias a Never2Late, un sistema mvil que a modo de despertador le permitir rentabilizar al mximo su tiempo.

Proyecto: VAMOS (Virtual Assistant for Museum Occasional Sightseeing). Universidad: Facultad de Informtica. Universidad Politcnica de Valencia. Autores: Vicente Bosch, Kristian Eide, Jos Miguel Esteve y Jos Antonio Mochol. Tecnologa: .Net FrameWork SQL Server Aplicacin: Asistente mvil para la visita a museos, interactiva y personalizada.

Ofrecer bajo un nico punto de entrada diferentes servicios. Proveer informacin al visitante en cualquier momento durante la realizacin de una visita. Personalizar los contenidos que se muestran al visitante en funcin de sus gustos, de forma transparente y automtica. Facilitar que los visitantes puedan disfrutar del mayor nmero posible de obras en caso de disponer de poco tiempo para realizar la visita. La respuesta a tan elevadas exigencias parece tener un nombre: VAMOS, un sistema que, basndose en una infraestructura de redes inalmbricas y dispositivos mviles, convierte el museo en un espacio interactivo y a la medida del visitante. Su secreto: la movilidad. VAMOS es un sistema completamente mvil, capaz de acompaar al visitante en todo momento durante su recorrido por el museo. Para buscar un ejemplo actual, podra asimilarse a las tradicionales audioguas que desde ya hace tiempo encontramos en cualquier instalacin de estas caractersticas pero con una importante diferencia: el sistema VAMOS ofrecer al visitante informacin multimedia, dinmica, conectividad a Internet y capacidad de navegacin aumentando de esta forma la interactividad entre usuario y museo.

menos tiempo del que nos gustara y sera necesario para poder visitarlo de forma provechosa. Sin embargo, contamos con VAMOS, el sistema que, tras alquilar un dispositivo de mano en el propio museo, nos guiar en todo momento en nuestra visita. Tras indicar al sistema el tiempo del que disponemos, as como nuestras preferencias, ste nos ofrece la ruta perfecta a nuestros requerimientos. En tan slo un par de clicks nos encontramos visitando las salas y exposiciones que ms nos interesaban y adems, con toda la informacin que necesitamos para disfrutar de las obras de arte que en nuestro recorrido vamos encontrando. De repente, nos sorprende una de esas obras. Nos detenemos frente a ella para examinarla ms pausadamente. En nuestro Pocket PC, VAMOS nos ofrece todos los datos sobre la misma: su autor, trabajos previos, inspiracin, estilo, etc. Nuestro alto en el camino ha merecido la pena pero, claro, tambin ha retrasado el plan de visita. No hay problema: sin que nos percatemos siquiera, VAMOS ha rehecho nuestra visita al museo, adecundola ahora al tiempo que nos queda.

Ni un imprevisto ms
Despertarse con tiempo suficiente pero adems teniendo en cuenta aspectos tan decisivos como el estado del trfico esa maana, y a esa hora en concreto, y la situacin meteorolgica. El objetivo: no llegar tarde nunca ms. Los beneficios: Hacer ms fcil la vida del usuario, aprovechando su tiempo al mximo, ya sea en el trabajo, en su domicilio o el camino entre ambos. Todo ello, de forma rpida y sencilla, tomando como punto de partida la propia experiencia del usuario, sus horarios y tareas habituales, itinerarios, etc. El funcionamiento de Never2Late es sencillo: el primer paso para disfrutar de sus ventajas ser el registro gratuito por parte del usuario en la web de la aplicacin. Una vez registrado, deber introducir en el sistema la informacin de los pasos o tareas que debe realizar en cada ocasin para llegar a su destino, incluidos los posibles caminos que puede utilizar para llegar a ste. Una secuencia ms o menos lgica de lo que el usuario hace cada maana y que el sistema debe conocer, podra ser: 1. Despertar y ducha 2. Desayuno 3. Entrada en el coche 4. Camino A 5. Camino B 6. Llegada a destino/trabajo

2 Premio Never2Late. Despertar siempre a tiempo


Despertarse a tiempo siempre, sin miedo a posibles atascos, accidentes o lluvias torrenciales. No hablamos de una pelcula de ciencia-ficcin sino de una realidad posible gracias al sistema Never2 Late, el despertador inteligente.

Por fin nos hallamos en el interior del museo y, lamentablemente, con

<<dotNetMana
9

Comienza la visita

<< dnm.universidad
para lograr su propsito, la experiencia del usuario en su utilizacin es de lo ms sencilla y slo necesita de un dispositivo mvil para disfrutar de ella. de su Pocket PC de un mapa que en todo momento le indique su situacin actual dentro de la ciudad y de la ruta elegida, as como la ubicacin de la prxima parada en la misma. Sencillo, actualizado y personalizado, Picassoft permite adems que el usuario edite la ruta en cualquier momento, eliminando y aadiendo lugares de forma manual.

3 Premio Picassoft. El turista inteligente


Proyecto: Never2Late. Universidad: Escuela Tcnica Superior de Ingeniera Universidad Pontificia de Comillas. Autores: Mauricio Asuar Garca y Alejandro Hernndez de Madrid Daz. Tecnologa: .Net FrameWork Web Services Redes Neuronales SQL Server 2000 Programacin en C+,ASP.Net Aplicacin: Despertador inteligente.

Enormes mapas que no consigue nunca doblar adecuadamente; catedrales a las que llega justo cuando estn cerradas al pblico; monumentos que nunca localiza; poco tiempo y demasiadas cosas que ver. Esta escena tan habitual para el turista podr no repetirse ms gracias a Picassoft, un sistema que hace posible un turismo inteligente. Un simple Pocket PC ser a partir de ahora su mejor gua turstico. Gracias a Picassoft, un programa diseado por cuatro estudiantes de la Universidad de Mlaga, el turista podr con su dispositivo mvil conocer en todo momento la mejor ruta para visitar los rincones de una ciudad, siempre adecundose adems a sus gustos, tiempo disponible o preferencias.

La ms completa informacin
La ruta perfecta y a medida pero adems con toda la informacin necesaria para que disfrutar de ella al mximo sea una realidad. El sistema Picassoft le acompaa en todo el recorrido ofrecindole la informacin ms completa de cada uno de los lugares que visita. As, de forma automtica y cada vez que el usuario alcanza uno de sus destinos, el sistema le ofrece en pantalla detallada informacin audiovisual de carcter turstico sobre el lugar dnde se encuentra: ao de construccin, estilos, historia, aspectos ms destacados, etc. Todo ello junto a datos de gran utilidad como horarios y das de visita, precios de entradas y ofertas especiales para grupos, as como telfonos de informacin.

<<dotNetMana

Una vez introducida esta informacin, el sistema Never2Late se sincroniza con el dispositivo mvil del usuario y pronostica, a partir de su propia experiencia, el tiempo necesario para que, al da siguiente, ste se despierte y realice todas sus tareas habituales, llegando a tiempo a su destino. Pronosticar de forma inteligente la hora de despertar al usuario implica valorar, adems de la experiencia del usuario, otros factores decisivos como pueden ser la informacin del trfico, datos meteorolgicos e incluso informacin del calendario (vacaciones, puentes, das festivos, etc). Con toda esta valiosa informacin, el sistema Never2Late despertar al usuario a la hora exacta y necesaria para que llegue a su lugar de trabajo justo a tiempo. Es decir, si por ejemplo, Never2Late ve que existe un embotellamiento de trfico esa maana en el camino que el usuario tiene que tomar para llegar a su destino, har que el despertador suene antes para evitar que el usuario se retrase por ese motivo. Pese a que Never2Late utiliza un complejo entramado de redes neuronales, servicios web y tcnicas heursticas

Aprovechar el tiempo
El objetivo de Picassoft es claro: permitir que cada turista saque el mximo provecho al tiempo del que disponga para visitar una ciudad y que, a la vez, su experiencia sea lo ms rica posible. Para ello, Picassoft ofrece al usuario, mediante un Pocket PC, un recorrido inteligente por la ciudad y lo ms importante, totalmente personalizado. Tras ejecutar Picassoft en su dispositivo mvil y elegir el idioma que prefiera, el usuario podr conocer de forma rpida y sencilla su perfecto itinerario. Sus gustos, preferencias, tiempo del que dispone y momento en el que desea realizar la visita son combinados por el sistema con la valoracin que otros turistas han otorgado anteriormente a monumentos y puntos de inters para as obtener el recorrido ms satisfactorio. Una visita sin duda para recordar siempre. Pero adems de ofrecer el mejor recorrido por la ciudad, Picassoft har que el usuario disponga en la pantalla

Su opinin es importante
La absoluta actualizacin del sistema y, sobre todo, su permanente ampliacin, hacen de Picassoft una importante herramienta no slo para el turista sino tambin para los responsables tursticos de cada una de esas ciudades. As, la aplicacin establece que cuando el usuario ha visitado un lugar de la ruta elegida, pueda emitir su valoracin sobre el mismo. Esta informacin pasa a formar parte del sistema, que genera as listas con los lugares mejor valorados por los usuarios y, de igual modo, ofrece cada vez rutas ms acordes a estas valoraciones, priorizando los lugares, rincones o monumentos de esa ciudad que ms votos positivos han conseguido por parte de las personas que las han visitado. Una valiosa informacin que no slo har mucho ms gratificante las prximas visitas de otros turistas, sino que

10

<< dnm.universidad
Una ventaja que My Street Finder proporciona permitiendo que el usuario reciba mapas de posiciones adyacentes a la que se encuentra en esos momentos y, de esta forma, obtenga la visin ms completa de la zona. Visitar la ciudad al completo pero adems, con un gua que le acompae es otra de las posibilidades que el usuario tiene gracias a My Street Finder. As, esta aplicacin hace posible que el usuario active la funcin gua en su Pocket PC para, adems de recibir el mapa que precisa, un smbolo en la pantalla le indique la posicin exacta de la calle o punto de inters que busca y adems, la direccin que deber seguir para encontrarlos. Aunque a primera vista, My Street Finder pueda parecer una aplicacin destinada a turistas o simplemente transentes, el entorno laboral y su mejor productividad es otro de los escenarios donde My Street Finder resulta especialmente til. As por ejemplo, este sistema puede facilitar a repartidores, comerciales, instaladores, etc., localizar el punto al que se dirigen de forma ms rpida, optimizando de este modo su tiempo de trabajo. Pero adems, My Street Finder permite que un usuario conozca en el mapa que recibe la posicin exacta en la que se encuentra otro usuario del sistema. A travs del mismo protocolo, el usuario puede recibir informacin sobre otros usuarios como es el nombre y la posicin donde se encuentra en esos momentos.

Proyecto: Picassoft Universidad: ETSI Informtica. Universidad de Mlaga. Autores: Curro Basagoiti, Iaki Esteve,Antonio Molina y Ana Reyna. Tecnologa: Windows XP Professional, Office XP Professional, SQL Server 2000, .Net FrameWork SDK 1.1,Web Matrix, GPS .Net... Aplicacin: Servicio de rutas y recorridos tursticos en Pocket PC.

permitir adems a las autoridades responsables detectar posibles carencias en las instalaciones o monumentos de su ciudad y mejorar as la calidad de stos. Una aplicacin de futuro que transformar el turismo actual, convirtindolo en una actividad enriquecedora, mucho ms gratificante, personalizada y, sobre todo, inteligente.

Finalista My Street Finder. Un mapa en el bolsillo


Obtener un mapa de la ciudad, localizar puntos de inters e incluso saber hacia dnde dirigir nuestros pasos para llegar a ellos. Estos son slo algunos ejemplos de las numerosas aplicaciones que tiene My Street Finder. Transentes, turistas e incluso trabajadores en busca de la ruta ms corta hacia su destino pueden, con My Street Finder, obtener en cualquier momento y lugar un mapa de la ciudad en la que se encuentran, al alcance de su mano. Un mapa en el que localizar calles o puntos de inters y, lo ms importante, conocer de forma sencilla y rpida el camino para llegar a ellos.

rio obtener en su Pocket PC mapas de una ciudad o zona, completamente actualizados. Esto se consigue gracias a la tecnologa utilizada por el autor y que consiste en que los mapas generados no se almacenen en el servidor en formato fotografa sino que son datos en tablas que, desde una base de datos, se convierten en imgenes al ser enviados al usuario. Esta caracterstica permite que cada usuario decida qu informacin del mapa desea recibir: datos de edificios, calles, carreteras, instalaciones elctricas... el usuario decide el mapa que quiere recibir en su Pocket PC, a la medida de sus necesidades. Adems, es necesario destacar la facilidad que ofrece este sistema a la hora de actualizar la informacin de los mapas ofrecidos. A diferencia de otros sistemas, cuya informacin est almacenada de forma esttica -por ejemplo en imgenes- que no permiten una actualizacin rpida de las mismas y en pocos aos acaban resultando obsoletas, My Street Finder permite hacer cambios continuos en la informacin sin que ello afecte a la aplicacin.

Proyecto: My Street Finder. Universidad: Facultad de Ingeniera-ESIDE Universidad de Deusto. Autor: David Sainz Gonzlez. Tecnologa: Plataforma .Net Global Positioning System Protocolo Estndar de los GPS (NMEA 0183). Cartografa y sistema de coordenadas UMT. Aplicacin: Servicio de Mapas

La ciudad en movimiento
Saber dnde est la calle Leganitos o, incluso, conocer dnde se encuentra la estacin de tren ms cercana. El usuario puede conectarse al servidor y en unos minutos recibir en su Pocket PC el mapa de la zona de la ciudad en la que se encuentra, aumentar o reducir el tamao del mismo y, de gran utilidad, navegar por la ciudad en su dispositivo.

Basado en una arquitectura clienteservidor, este proyecto permite al usua-

<<dotNetMana
11

Informacin a medida

<< dnm.universidad
Esta funcionalidad hace de My Street Finder una herramienta muy til para los servicios de seguimientos de flotas. De forma sencilla y en tiempo real, camioneros, repartidores o taxistas pueden conocer el punto exacto donde se encuentra cada uno de sus compaeros de trabajo. Calles, puntos tursticos, monumentos, estaciones de tren, My Street Finder ofrece el mapa a la carta que necesita. ese camino, inclemencias meteorolgicas que pudieran afectar al usuario en su recorrido, eventos especiales que tengan lugar en el mismo, etc. tersticas fsicas del usuario. El sistema tiene en cuenta si el usuario va en silla de ruedas, es invidente, etc. Y as elige el recorrido ms adecuado segn estos rasgos (para una persona que se mueve con muletas por ejemplo, ser mejor un camino corto aunque en l haya una escalera ya que se cansa mucho. Sin embargo, ese camino nunca sera el indicado para alguien que se desplaza con una silla de ruedas). En segundo lugar, RAMPA evala las caractersticas fsicas del propio entorno a la hora de elaborar el recorrido adecuado. As, tiene en cuenta factores como dnde se encuentran rampas, aceras o escaleras, si existe algn tramo en obras, las direcciones de las calles, si hay posibilidad de transporte pblico, etc. Y por ltimo, el sistema tendr en cuenta tambin condiciones como la celebracin de eventos especiales o incluso, el clima para si, por ejemplo, est lloviendo, elegir un recorrido que pase mayoritariamente por lugares cubiertos. Por otro lado, y en el caso de que el usuario lo que solicite sea una ruta determinada para llegar a un punto de inters, RAMPA le ofrecer, junto a la misma, informacin sobre acontecimientos y/o las instalaciones principales que el usuario va a encontrarse por el camino y que pueden resultar de su inters. Adems, el diseo de RAMPA tiene en cuenta que la informacin debe ser ofrecida de la forma ms sencilla en cada caso; as, por ejemplo, si el usuario es invidente, el sistema deber presentarle una interfaz completamente hablada.

Del edificio a la ciudad


La propia definicin y diseo del programa RAMPA incluye desde su origen la absoluta escalabilidad del sistema. As, RAMPA es capaz de ofrecer informacin relativa tanto al entorno fsico de un edificio determinado como de una ciudad o regin. Escalable por tanto y completamente personalizable, el proyecto RAMPA permite mltiples opciones de uso. As, por ejemplo, el sistema ofrece su informacin de dos modos: de forma pasiva para el usuario: el usuario recibe informacin sin tener que solicitarla. Para ello, es necesaria una definicin previa de la informacin que le resulta interesante y un registro previo del usuario en el sistema. de forma activa: el sistema recibe una peticin del usuario sobre una informacin concreta. Tanto en un caso como en el otro, RAMPA evala las caractersticas particulares del usuario para as ofrecerle la informacin ms adecuada a las mismas, de forma sencilla, amigable y actualizada en todo momento.

Finalista. RAMPA. El fin de las barreras arquitectnicas


Rampas, escaleras, bordillos, obras. Cada da, las personas con alguna deficiencia fsica o psquica se encuentran con mltiples barreras arquitectnicas que pueden convertir un simple paseo en una carrera de obstculos. El proyecto RAMPA busca ayudarles a superar estas dificultades. El cualquier momento y desde cualquier lugar, el usuario de RAMPA podr, a travs de un dispositivo Pocket PC, conocer el trayecto ms adecuado a sus deficiencias fsicas o psquicas. Tras conocer las caractersticas especficas de movilidad del usuario, RAMPA evala las peculiaridades del entorno y as, ofrece un trayecto por el mismo adaptado al usuario. Esta adecuacin del recorrido a las caractersticas del usuario (y no al contrario como suele ser habitual) mejora enormemente la calidad de vida del mismo.

Todas las posibilidades


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

Encontrar un lugar
Adems de facilitar el recorrido o ruta ms adecuada a las deficiencias fsicas o psquicas del usuario, RAMPA puede tambin ayudarle localizando el punto de inters o servicio que necesita. Una vez localizado, el sistema mostrar adems el recorrido ms adecuado para llegar al mismo. La utilidad de esta herramienta se completa an ms con la completa actualizacin de la informacin que RAMPA ofrece y que permitir conocer en todo momento posibles obras en
Proyecto: RAMPA Universidad: Facultad de Informtica de Barcelona. Universidad Politcnica de Catalunya. Autores: Sergio Edo, Oriol Mercad y Vanesa Jimnez. Tecnologa: Plataforma .Net Servidor CVS de comparticin de cdigo fuente frente a Visual SourceSafe. GPS Navigator Tom Tom. Aplicacin: Servicio de informacin sobre trayectos adaptados a personas con deficiencias fsicas o psquicas.

<<dotNetMana
12

Pablo Abbate
MCDBA/MCAD/MCSD/MCT Consultor independiente

WebForm Templates
Antes de que la Web llegara a nuestras vidas, nuestras aplicaciones tenan la apariencia de una o varias ventanas en Windows, o para nosotros los ms viejos, una interfaz no grfica. Sin embargo, era muy comn ya desde esas pocas reutilizar la funcionalidad de presentacin de la informacin.

<< Con .NET, en las aplicaciones Windows, resulta muy

sencillo reutilizar funcionalidades incorporadas dentro de los formularios, slo es cuestin de modificar la apariencia en una clase base y todos los formularios, que de esta clase desciendan, tendrn la misma apariencia por defecto. Al enfocarnos en las aplicaciones Web en ASP.NET descubrimos que el comportamiento de la herencia no es exactamente el mismo que en su par, el formulario Windows. Esto se debe a que en ASP.NET tenemos dos elementos bien diferenciables: el formulario ASCX, cuyo contenido describe los controles que conformarn la apariencia de la pgina web y, por otro lado, el archivo que contiene las instrucciones en .NET que conforman la lgica que regula el comportamiento del mismo formulario. Esta caracterstica permite distinguir el componente visual de la lgica dentro de la aplicacin. Pero, qu pasa si deseamos que la apariencia de un formulario web modelo sea compartida por todos los formularios que sean creados a partir de ese modelo. Podramos reutilizar la barra de navegacin de nuestro sitio en todas sus pginas? Existe la posibilidad de reorganizar la distribucin de una pgina modelo y que los cambios realizados se reflejen en todas las pginas que fueron creadas a partir de ese modelo? Es posible configurar, por medio de propiedades, los frames que deseamos mostrar dentro de una pgina? La respuesta, en todos los casos, es s.

En ASP.NET tenemos dos elementos bien diferenciables: el formulario ASCX, cuyo contenido describe los controles que conformarn la apariencia de la pgina web y el archivo que contiene las instrucciones en .NET que conforman la lgica que regula el comportamiento del formulario
Una pgina web desciende de la clase Page del namespace System.Web.UI. El contenido del archivo .ASCX asociado con el archivo de lgica determinan el comportamiento del formulario web. No es posible heredar los elementos descriptos en un archivo ASCX. La herencia solo funciona a nivel de cdigo .NET, por lo tanto, si deseamos que una clase herede los controles descriptos en su padre deberemos escribirlos dentro del cdigo. Si, utilizando el diseador de formularios, pegamos un control en un Web Form padre, ste no

Antes de empezar a trabajar, necesitamos conocer el funcionamiento de una pgina web:

<<dotNetMana
13

Funcionamiento de un formulario Web

<< dnm.asp.net
aparecer en un Web Form hijo. Este comportamiento difiere del formulario de Windows.

Pasos
En un proyecto de Visual Studio 2003 seleccionamos ASP.NET Web Application y lo denominamos WebFormTemplate. Siguiendo con nuestro diseo, necesitaremos cuatro controles de usuario que servirn de frames para cada extremo del rea de trabajo. Agregamos, al proyecto, estos cuatro controles con los siguientes nombres: frmEncabezado, frmPie, frmIzquierdo, frmDerecho. En cada user control agregaremos todos los webform controls necesarios para dar el aspecto que queremos a cada frame. Por ejemplo, nuestro frmencabezado podra tener un aspecto similar al de la figura 4. Ahora, agregamos un nuevo Web Form denominado modelform. De este formulario heredarn todos los otros Web Forms de nuestra aplicacin. En la seccin de code-behind deberemos modificar el comportamiento de dos mtodos:

El proyecto
La idea es desarrollar una pgina modelo que nos permita reutilizar aquellos componentes comunes a todas las pginas sin tener que insertarlos cada vez que creamos un nuevo Web Form. En este caso, haremos un diseo de acuerdo al esquema de la figura 1.

Figura 3

Originalmente, nuestro formulario web, responde a la jerarqua de clases que vemos en la figura 2. Despus de realizar nuestros cambios, tendr la siguiente la apariencia de la figura 3. Para los frames que rodean al rea de trabajo, utilizaremos user controls que nos permitirn disear grficamente el contenido de estos frames. Veamos como empezar
Figura1

El objetivo es que slo se deba modificar el contenido del rea de trabajo de cada pgina, y el resto de los componentes sean heredados del modelo. Para personalizar el comportamiento de todos los formularios web crearemos una clase modelo que derive de la clase Page. Llamaremos a esta nueva clase: modelform Todos los formularios de la aplicacin debern descender de modelform para que posean su misma lgica.

Figura 4

<<dotNetMana

Figura 2

Figura 5

14

<< dnm.asp.net
protected override void CreateChildControls() { // Reemplazamos el formulario del archivo ascx por // un formulario creado desde el cdigo HtmlForm Form = new HtmlForm(); // Creamos una tabla para distribuir los frames Table TablaPagina = new Table(); TableRow RowContenido = new TableRow(); TableCell CellFrmIzquierdo = new TableCell(); TableCell CellFrmContenido = new TableCell(); TableCell CellFrmDerecho = new TableCell();

// Creamos el Encabezado Form.Controls.Add(LoadControl(frmEncabezado.ascx)); // Agregamos el contendio del frame Izquierdo CellFrmIzquierdo.Controls.Add(LoadControl(frmIzquierdo.ascx)); // Agregamos el contenido de la pgina actual Control Area = this.FindControl(AreaTrabajo); if (Area != null) CellFrmContenido.Controls.Add(Area); // Agregamos el contenido del frame Derecho CellFrmDerecho.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 pgina Form.Controls.Add( TablaPagina ); // Creamos el Pie Form.Controls.Add(LoadControl(frmPie.ascx)); // Agregamos el Form this.Controls.Add(Form); base.CreateChildControls(); }

Fuente 1

CreateChildControls(): Es implementado por la clase System.Web.UI.Control. Este mtodo es el responsable de la creacin de todos los controles hijos en un control contenedor tal como un Page. Lo modificaremos para que agregue nuestros frames a la pgina actual. Para ello debemos agregar el cdigo fuente 1 al code-behind de nuestro Web Form. Otro mtodo que debe ser sobreescrito es Render, tambin de la clase System.Web.UI.Control. La tarea que lleva a cabo este mtodo es la de enviar el contenido de un control de servidor a un objeto HTMLTextWriter, el cual escribe el contenido HTML en el cliente. Despus de nuestra modificacin, el mtodo definitivo tiene el aspecto del fuente 2. Agregamos un nuevo Web Form con el nombre Main.aspx y lo colocamos como formulario de inicio desde el men de Proyecto. Posteriormente accedemos al cdigo HTML del formulario eliminando todo su contenido. Slo debe quedar la directiva <@Page > A continuacin, regresando a la ventana de diseo, arrastramos un webform control de tipo Panel sobre el Web Form. Es importante, recordar que el nombre del control agregado debe ser AreaTrabajo. Modificamos las propiedades de tamao para que abarque el 100% del alto y ancho de la pgina. Por ltimo, en el cdigo .NET debemos especificar que nuestra pgina (Main) no desciende directamente de Page, sino que hereda de modelform (nuestro formulario modelo). Para ello deberemos modificar la definicin de la clase con el siguiente fragmento de cdigo:

protected override void Render(HtmlTextWriter writer) { // Rellenamos el inicio del cdigo HTML writer.Write(<html><head><title>WebForm Template</title><head><body>); // Rellenamos el contenido de la pgina. base.Render(writer); // Rellenamos el fin del documento HTML writer.Write(</body> </html>) ;

public class Main : WebFormTemplate.modelform

Fuente 2

<<dotNetMana
15

Bueno, ha llegado el momento de ver cmo ha quedado nuestra primera pgina terminada. Vea la figura 5. Cada vez que agreguemos una nueva pgina, deberemos repetir los pasos hechos con Main.ascx y as reutilizaremos todos los controles de usuario.

Por Jos Miguel Torres


Tcnico Superior en Desarrollo de Aplicaciones Informticas MRW

SQL Server Reporting Services


<< SQL ServerReporting Services no es un Add-In para Visual Studio ni
ninguna capa basada en .NET para otros servidores de informes de terceros fabricantes. SQL Server Reporting Services est totalmente desarrollado bajo cdigo administrado, en C# y comporta una serie de herramientas macin stateless es el que se viene utilizando en el desarrollo de arquitecturas .NET con Enterprise Services, que empez ya con MTS, y que han

Al fin ante nosotros tenemos un servidor de informes totalmente desarrollado por Microsoft, el SQL Server Reporting Services. Se trata de un servidor de informes basado en Web Services y cuya caracterstica ms importante reside en su modularidad, que por un lado establece, asegura y actualiza el origen de datos al cual est conectado, y por otro suministra el informe en una fase paralela e independiente.

para la administracin, creacin, implantacin, publicacin y desarrollo de informes no slo para orgenes de datos especficos de SQL Server y Oracle, sino tambin genricos, pudiendo utilizarse sin ningn problema OLE DB y ODBC.

La plataforma
SQL Server Reporting Services est formado por tres componentes bsicos: Report Server Report Designer Report Server Data Base Report Server es un servicio Web que se hospeda en IIS y ASP .NET y que atiende las peticiones a informes. La razn de que Report Server sea un Web Service stateless, sin estado, hace aumentar su escalabilidad teniendo la capacidad de servicio de unos 10 a 20 informes por procesador, aproximadamente. Actualmente el modelo de progra-

<<dotNetMana

demostrado su ventaja frente a aplicaciones stateful (con estado) como son las aplicaciones cliente/servidor. La modularidad que ofrece la arquitectura de Reporting Services hace que, por una parte el administrador disponga de unas herramientas especficas para el mantenimiento de informes y a su vez integradas en tareas de administracin como puede ser de sistema o de base de datos, y por otro lado, el desarrollador tiene a su disposicin una completa API y servicios, integrados todos en Visual Studio .NET, que le permite desarrollar funciones especficas para los informes, independientemente de que el destino del informe sea Web o Windows Form u otro contexto, por ejemplo mvil. De esta forma cualquier usuario autentificado puede ejecutar o consumir informes desde Internet Explorer, o bien desde una herramienta cliente que consuma el informe a travs de un servicio Web.

16

<<dotNetMana
17

La diferencia fundamental con otros diseadores de informes es que, por Fernando Bocigas, Product ejemplo, Crystal Reports es una herraManager de SQL Server y SQL mienta orientada al diseo de informes Reporting Services de Microsoft Ibrica y, si bien es cierto que puede publicar informes como Servicios Web e incluso posee dos interfaces estandarizadas como mercado. Diseo de informes tabulares, matriciales, son SOAP y COM, dista de la idea de servidor de ofrece SQL Server Reporting con grficos, con objetos OLE, etctera, adems introServices, con herramientas de duce un concepto llamado snaking columns que son administracin propias, pollas utilizadas en los peridicos. Permite la interaccin ticas de seguridad y ms difey navegacin por parte del usuario y los formatos de rencias que iremos viendo presentaciones ms comunes (pdf, html, xls, csv,...), adems adelante, un servidor de ms de agregaciones de datos, etctera. informes en toda regla. El diseador de informes est integrado con Visual Studio .NET. El motor de diseo posibilita un asistente para la creacin de informes y permite la importacin desde informes Access, no habiendo posibilidad, de momento, de importacin desde Crystal Reports ni de cualquier otro fabricante. Asimismo posee un generador de consultas SQL y posibilidad de vista previa, entre otras caractersticas. Desde el punto de vista de la administracin de informes, SQL Server Reporting Services nos ofrece una herramienta basada en Web para tal fin. Tambin tenemos la posibilidad de utilizar el intrprete de comandos para ejecutar utilidades e incluso herramientas de programacin de secuencias de comandos. La seguridad est basada en funciones, con lo cual podremos controlar el acceso a carpetas, archivos, Fig 1. Diagrama de la arquitectura recursos en general. Dicha seguridad est basada en la autenticacin de Windows y/o SQL Server. Otra caracterstica a indicar es el historial de inforCaractersticas mes, el cual representa en forma estadstica cual ha sido la actividad de cada informe, lo que puede ayuA nivel de diseo de informes, con SQL Server dar al administrador y/o arquitecto de un sistema para Rerporting Services, podemos realizar todas las operaperfilar la escalabilidad de la arquitectura. ciones que permiten actualmente los diseadores del

<<

El potente entorno de desarrollo que pone a su disposicin Visual Studio .NET 2003 facilita la creacin e implantacin de soluciones de creacin de informes con la mayor capacidad de ampliacin de cara al crecimiento futuro. Microsoft SQL Server Reporting Services tambin proporciona la flexibilidad aadida de la creacin de informes junto a una amplia variedad de fuentes de informacin, entre las que se incluye SQL Server, OLE DB, ODBC, Oracle y otros proveedores de datos de la plataforma .NET. Entre los formatos de informe se incluyen: formatos Web (HTML), de impresin (PDF,TIFF) y de datos (Excel, XML, CSV)

<< dnm.servidores.sql
peticiones a un mismo informe implicar una mala administracin de recursos ya que har tantos accesos al origen de datos como peticiones, contrariamente que SQL Server Reporting Services. Los informes en SQL Server Reporting Server se definen mediante una sintaxis propia llamada (RDL) Reporting Definition Language que permite, basndose en XML, definir un informe con un schema publicado. As que podemos utilizar SOAP para publicar informes desde una aplicacin externa, ya sea en Windows o desarrollando controles web forms para renderizar informes publicados de manera transparente para un usuario. SQL Server Reporting Services tiene compatibilidad con herramientas existentes de servicios de anlisis pero no ser hasta la llegada de Yukon, dnde se fusionarn y aumentar la potencia entre ambos.

Requisitos
Existen varias versiones de SQL Server Reporting Services: Standard Edition Enterprise Edition Developer Edition Evaluation Edition Los requisitos de hardware no distan mucho de las necesidades de cualquier software de administracin o desarrollo, lgicamente, dependiendo del entorno de desarrollo o de produccin en el que se utilice, el hardware tendr una importancia relevante en la escalabilidad vertical. En cuanto a requerimientos de Software, SQL Server Reporting Services, depende totalmente de un Sistema Operativo servidor; en la tabla 1 podemos observar una relacin de requisitos por componentes.

Los informes en SQL Server Reporting Server se definen mediante una sintaxis propia llamada (RDL) Reporting Definition Language que permite, basndose en XML, definir un informe con un schema publicado

<<dotNetMana

Cada usuario (cliente) de una red corporativa con cuenta autenticada de Windows, por ejemplo, con acceso a SQL Server Reporting Services, dispone de un espacio Mis Informes en los que tiene un espacio para administrar y almacenar sus propios informes; asimismo tambin se pueden obtener suscripciones propias en un espacio similar llamado Mis Suscripciones. Dichas suscripciones se entienden como distribuidores de informes automticos a cliente y que pueden ser estndares o controladas por datos, en la que se sirven segn una consulta, por ejemplo. La entrega puede ser mediante correo electrnico y/o mediante Web Services o servicios Windows, gracias a la arquitectura modular que estn desarrollados los Reporting Services. Los informes se procesan en grupos de dos fases que separan el procesamiento de datos de la representacin final. Esto permite representaciones de tipo de formato distintos, una mayor escalabilidad y la posibilidad de programar algunos componente mediante Visual Studio .NET. Esta caracterstica diferencia claramente, la representacin de informes de SQL Server Reporting Services con Crystal Reports. ste ltimo procesa cada informe desde la peticin, pasando por la captacin de datos y publicacin en el visor, en una misma fase, con lo que varias

Componente
Servidor de informes

Requisitos previos
Servidor Web con ASP.NET y Servicios de Internet Information Server (IIS) 5.0 o posterior. MDAC 2.6 o posterior. Conexin con una instancia de SQL Server 2000 SP3a. Sitio Web predeterminado accesible a travs de http://<nombreDeServidor>. Para Windows 2003, el equipo debe estar configurado como servidor de aplicaciones. Para que Windows 2003 utilice la cuenta del servicio de red para ejecutar el servicio Servidor de informes, necesita SQL Server QFE 859. Para descargarlo, visite Soporte tcnico de Microsoft. Servidor Web con ASP.NET. IIS 5.0 o posterior instalado y configurado. Sitio Web predeterminado accesible a travs de http://<nombreDeServidor>. Servidor con SQL Server 2000 SP3a. Estacin de trabajo cliente con Microsoft Visual Studio .NET 2003 y MDAC 2.6 o posterior. Estacin de trabajo cliente con acceso a un servidor de informes. Estacin de trabajo cliente, sin requisitos previos. Estacin de trabajo cliente, sin requisitos previos.

Administrador de informes

Base de datos del servidor de informes Diseador de informes Herramientas administrativas y utilidades Libros en pantalla de Reporting Services Informes y aplicaciones de ejemplo, y base de datos de ejemplo

Tabla1. Relacin de requisitos previos por componentes a nivel de software.

18

<< dnm.servidores.sql
Disear
El diseador de informes forma parte de Visual Studio y la creacin de un informe implicar la creacin de un proyecto en el mismo de tipo Business Intelligence, mediante un asistente o simplemente un informe vaco (fig. 2).

Figura 3. Esqueleto de un proyecto Business Intelligence. Figura 2. Dos plantillas disponibles para la creacin de informes desde Visual Studio .NET 2003

<<dotNetMana
19

En el explorador de soluciones vemos el proyecto con dos carpetas, que refieren a las dos partes o mdulos del informe, como muestra en la figura 3, el origen de datos y el diseo del mismo. En el origen de datos tenemos un asistente que nos ayuda a la disposicin del mismo. Por defecto, SQL Server Reporting Services viene con una base de datos que ayuda en los tutoriales ya que la mayora hacen referencia a ella, es lo que la Northwind al Visual Studio, dicha base de datos, AdventureWorks2000, se auto instala en el servidor SQL Server donde reside Report Services. La mayora de herramientas de diseo del mercado tienen un asistente que facilita el proceso de creacin inicial, y en este caso SQL Server Reporting Services no es una excepcin. En un tiempo breve creamos un informe en el que quizs lo ms complejo sea la construccin de la cadena de la consulta, tarea que se facilita gracias a la herramienta de creacin de consultas grfica de Visual Studio .NET. En la figura 4 vemos parte de un proceso de creacin mediante el asistente. Tenemos a nuestra disposicin todo el potencial de la interfaz de Visual Studio .NET para el diseo de un informe, desde el generador de la consulta SQL hasta los tipos de informes a utilizar. Podemos ver una vista previa del informe, podemos modificar el diseo cuando y como queramos. Podemos agregar el infor-

me a nuestra solucin como un proyecto ms, en definitiva, la utilizacin de SQL Server Reporting Services y Visual Studio .NET es muy provechosa. Tambin desde Visual Studio .NET, tenemos la posibilidad de implementar y publicar el informe aunque es desde las herramientas encomendadas para ello, donde encontraremos mayor funcionalidad al respecto.

Tenemos a nuestra disposicin todo el potencial de la interfaz de Visual Studio .NET para el diseo de un informe, desde el generador de la consulta SQL hasta los tipos de informes a utilizar

<< dnm.servidores.sql

Figura 4.Tres pasos distintos del asistente de creacin de informes.

La dos herramientas de administracin las encontramos en primer lugar en http://localhost/Reports (fig. 6), por defecto, la cual nos brinda operaciones de administracin, gestin e implantacin y en segundo lugar tenemos un explorador en el que podemos ver los informes implantados. El sitio Web, por defecto, es http://localhost/ReportServer (fig. 7) y si los permisos de autorizacin nos lo permiten podemos navegar por dicho espacio Web. En el ejemplo que se muestra en estas lneas realizado anteriormente llamado Ejemplo, vemos que hay dos ficheros. El primero hace referencia a la conexin de datos que es compartida y que no es mas que un archivo XML (fig. 8) y el segundo, rptEjemplo, es la definicin del informe en RDL y cuando accedemos,

Implementar y administrar
Lo mas importante de la herramienta de administracin es que est basada en Web, alojada bajo IIS y ASP .NET y que por tanto deber estar familiarizado con estos contextos. La seguridad, como viene siendo tradicional entre productos de servidor de Microsoft, puede estar integrada bajo autenticacin Windows y su implantacin requiere de un estudio detallado y una fase de implantacin minuciosa. Es importante la planificacin para la implementacin y administracin de los informes ya que no slo depende de un origen de datos ( ya que ste puede ser compartido o propio de un informe) con unas premisas de seguridad propias y un alcance local o remoto, sino que adems los clientes de estos informes pueden no estar dentro de un dominio local y que por tanto la operacin de autorizacin y autenticacin sean imprescindibles, a travs de IIS y/o Windows y/o SQL Server. Ver figura 5.

<<dotNetMana

Figura 5. Esquema de implantacin distribuida. e l

20

<< dnm.servidores.sql

Figura 6. La herramienta ReportServer

Figura 7. Explorador de Informes

<<dotNetMana
21

explorador renderiza el informe hasta su presentacin por defecto (fig. 9). De manera transparente existe un componente que se encarga de administrar la utilizacin de sta conexin, para que sea compartida por otros informes y para que no consuma ms que los recursos necesarios, de ah que el archivo de conexin sea XML, ya que se trata de un componente basado en Web Service. Toda la informacin que maneja SQL Server Reporting Services se guarda en una base de datos del servidor SQL Server llamada ReportServer. Es aqu dnde se guarda informacin de usuarios, informes, roles, eventos, suscripciones, etctera, y la herramienta Web no har ms que representar la funcionalidades segn el perfil del usuario conectado. SQL Server Reporting Services soporta clster de balanceo de carga en red (Network Load Balanced (NLB)). Al ser un Web Service stateless, sin estado, si reside en un contexto de NLB ste se escalar hacia fuera en caso de que algn servidor est indispuesto. Adems, la base de datos de SQL Server Reporting Services puede residir en un cluster junto a dems servidores SQL Server. SQL Server Reporting Services puede utilizar el SQL Agent para realizar programaciones de entrega. stas se programan para que un determinado informe a una determina fecha y hora se entreguen a unos determinados clientes. Todo el proceso es parametrizable lo cual aporta una gran abanico de posibilidades pudiendo incluso seleccionar el medio de transmisin y el formato de salida.

Como herramientas no grficas destaca rsconfig.exe para la administracin de conexiones, rs.exe para la ejecucin de comandos automatizados, rskeymgmt.exe para la administracin de cifrado de claves de los informes, rsactivate.exe para la activacin instantnea de servidores de informes. La combinacin del comando rs.exe junto a los dems permite secuenciar de manera programtica operaciones de mantenimiento desde la consola del intrprete de comandos.

Para los profesionales de TI, Reporting Services supone un entorno de creacin de informes escalable y seguro que facilita la gestin, el acceso y la entrega de los datos empresariales al usuario final. Jason Carlson, Product Unit Manager de SQL Server Reporting Services de Microsoft Corp.

<<

<< dnm.servidores.sql
Pero las posibilidades de desarrollo van ms all del desarrollo de los informes. SQL Server Reporting Services cuenta con tres interfaces principales. Por una parte WMI (Instrumental de administracin de Windows) cuya misin es administrar el servidor de informes; en segundo lugar, el acceso URL que permite la integracin en modo de portal para los informes publicados y por ltimo SOAP. SOAP permite la publicacin, administracin y acceso a cualquier informe y es por ello que empleando las API de SOAP podemos desarrollar una aplicacin para administrar un servidor de informes, e incluso contando con servicios Web propios y componentes escalables aprovechando los servicios que ofrece los Enterprise Services a travs de los Serviced Components, las posibilidades de desarrollo no se centran nicamente en un marco local limitado fsicamente. Destacar que ninguna interfaz est basada en COM+. En la figura 11 vemos el ejemplo de Web Service en el que encontramos algunos mtodos que nos ofrece, y que utilizamos con la facilidad y comodidad que brinda la utilizacin de los Web Services desde Visual Studio .NET.

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

Desarrollo
En cuanto a desarrollo se refiere, las oportunidades son muy amplias. Utilizando el .NET Framework 1.1, podemos crear extensiones de representacin, de entrega, aplicar directrices de seguridad a nivel de informes y nos permite interactuar, no slo con el origen de datos, tambin con cualquier aspecto del diseo del informe, todo ello desde un proyecto en cualquier lenguaje .NET. Ya que los informes estn definidos por XML bajo la sintaxis de RDL (fig. 10), tambin podemos perfilar o desarrollar funciones especficas bajo dicha sintaxis y aplicarlas a la representacin de los informes, simplemente utilizando las clases que nos ofrece .NET Framework en el espacio de nombres System.XML, particularmente la clase XmlTextWriter, que puede ser utilizada para este fin.

<<dotNetMana

Figura 10. Esquema RDL

22

<< dnm.servidores.sql

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

<<dotNetMana
23

De la misma forma que SOAP nos ofrece la posibilidad de administrar un servidor, URL nos permite personalizar un explorador y WMI configurarlo, todo ello desde Visual Studio .NET. En el cdigo de a continuacin, un ejemplo de aplicacin consola en C# que muestra el nombre y la descripcin de un determinado informe registrado, en este caso Ejemplo y el resultado de la aplicacin lo vemos en la figura 12.

SQL Server Reporting Services cuenta con tres interfaces principales. Por una parte WMI cuya misin es administrar el servidor de informes; en segundo lugar, el acceso URL que permite la integracin en modo de portal para los informes publicados, y por ltimo SOAP que permite la publicacin, administracin y acceso a cualquier informe

<< 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(); } } } Cdigo fuente 1

No es sorprendente pues, pensar que un informe puede llegar a ser diseado, publicado e implantado desde cdigo.

<<dotNetMana

Conclusin
SQL Server Reporting Services es un conjunto de herramientas integradas cimentadas sobre pro-

ductos como SQL Server y Visual Studio .NET. Su integracin con dems tecnologas de servidor IIS, ASP .NET, etc. lo hacen nico, muy escalable y flexible, lo que puede ser una buena solucin para el trfico de grandes cantidades de documentos en corporaciones cuya extensin del negocio abarca varios pases, y para pequeas que enconaran en SQL Server Reporting Services una herramienta de

24

<< dnm.servidores.sql

Figura 12. Resultado de la aplicacin consola.

clasificacin y desarrollo de informes fcil e integral. Las API de SOAP que se ofrece para la parte de desarrollo, hace prcticamente parametrizable todo el proceso de utilizacin de informes as como la admi-

nistracin, con unas herramientas sencillas y potentes, permite una total adaptabilidad funcional con tareas de mantenimiento de sistema, de sitios Web y de base de datos entre otros.

bibliografa
Professional SQL Server Reporting Services Paul Turley,Todd Bryant, James Counihan, George McKee, Dave DuVarney
Editorial: Wrox Pginas: 800 Publicado: Mayo, 2004 ISBN: 0764568787

Microsoft SQL Server Reporting Services Brian Larson


Editorial McGraw-Hill Osborne Media Pginas: 704 Publicado: Mayo, 2004 ISBN: 0072232161

Hitchhikers Guide to SQL Server 2000 Reporting Services Peter Blackburn,William R.Vaughn

<<dotNetMana

Editorial: Pearson Education Pgians: 400 Publicado: Previsto para Octubre 2004 ISBN: 0321268288

26

Por Miguel Egea


SQL Server MVP
portalsql.com

Crear informes con SQL Server Reporting Services


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 motor relacional, que tiene amplias funcionalidades como la replicacin, servicios de alta disponibilidad, mecanismos de trasvase de registros, servicios de transformacin de datos, tareas programables, un avanzado mecanismo de copias de seguridad (como vimos en un artculo anterior en esta misma publicacin). Completan tambin a los Analisys Services que ofrecen, servicios avanzados de DataWarehouse, situndose en una rama media dentro del mercado del OLAP. De hecho Microsoft, al menos de nombre los incluye dentro de lo que ha venido a llamar proyectos de Bussiness Intelligence.

<< Realmente son una potente herramienta cliente ser-

27

<<dotNetMana

vidor para la creacin, desarrollo, administracin y despliegue de informes. Una herramienta extensible que nos dota de base sin embargo con un buen nmero de funcionalidades muy interesantes, como por ejemplo el data driven subscriptions, es decir, subscripciones que extraen las direcciones de envo, los informes a enviar, los formatos en los que se enva (entre otros). Parte de estas funcionalidades las veremos con ejemplos a lo largo de este artculo. Veremos entre otras cosas, el asistente de creacin de informes que nos ofrecen los Reporting Services dentro del entorno de desarrollo de Visual Studio.NET, a travs del cual podremos crear de forma sencilla nuestros informes de explotacin de informacin. Veremos tambin los elementos que podemos colocar en nuestros informes, las fuentes de datos, compartidas o no, la herramienta de diseo de informes y el despliegue de informes con Visual Studio.NET. Sin embargo quedar fuera del alcance de este documento la creacin de informes sin Visual Studio; poderse se puede, ya que los la definicin de los informes (ficheros RDL Report Definition Language), es un fichero XML estndar

que cumple los requerimientos que marca un esquema de datos XSD pblico. Es por tanto perfectamente viable crear informes sin Visual Studio.NET, aunque bien es cierto que sera como desarrollar aplicaciones fuera del entorno, algo bastante tedioso.

Cmo empezamos?
Bueno, la respuesta obvia siempre es: por el principio, lo primero ser instalar la parte de servidor. Instalar los servicios de Reporting Services, es una tarea bastante sencilla, tal y como nos tiene acostumbrados Microsoft, hay un asistente que repasa la configuracin de nuestro servidor y nos avisa de los prerrequisitos que no cumplimos y nos invita a instalarlos. Necesitamos tener un servidor IIS, en l se desplegarn los informes, ste servidor debe admitir ASP.NET, ya que al final Reporting Services expone un servicio web que es una interfaz perfectamente vlida para administrar el servidor. Despus nos solicitar rutas, servidor y un servidor SQL en el que instalar varias bases de datos, en concreto instalar las BBDDs ReportServer, ReportServerTempdb y aadir una base de datos nue-

<< dnm.servidores.sql
va, que contiene un volumen bastante aceptable de datos llamada AdventureWorks2000. Si lo que deseamos es instalar las herramientas necesarias para que un desarrollador construya informes, lanzaremos el mismo programa de instalacin, eligiendo eso s, solamente las herramientas de cliente tal y como aparece en la figura 1. plo utilizaremos algo muy sencillo, Select * from SalesOrderheader. En este paso, el asistente comprueba que la consulta que estamos ejecutando es correcta para SQL.

Figura 2

Figura1

Un par de clics ms y tendremos instalados los Reporting Services listos para desarrollar informes profesionales de forma sencilla. Veremos a continuacin cmo crear informes primero siguiendo el asistente de creacin de informes, despus un poco ms en detalle con cada uno de los elementos de los que disponemos en un informe.

Creando nuestro primer informe


Manos a la obra, vamos a construir nuestro primer informe, para eso abriremos el entorno de desarrollo de Visual Studio .NET y elegiremos los proyectos de Bussiness Intelligence, ah elegiremos el asistente para la creacin de informes y cambiaremos a nuestro gusto el nombre del informe. En cuanto seguimos, el asistente encontramos una de las caractersticas de los Reporting Services, los orgenes de datos compartidos. Es muy comn que buena parte de los informes de una organizacin utilicen la misma conexin, es decir se conecten a la misma base de datos con parmetros similares, ms an cuando esta conexin puede realizarse en el entorno de seguridad de Windows. An as, podemos construir orgenes de datos especficos para cada informe si es que es ese nuestro deseo. En la figura 2 podemos observar la pantalla del asistente a la que nos estamos refiriendo. A continuacin el asistente nos preguntar cual es la instruccin SQL que vamos a usar para nuestro informe, para el ejem-

[ [
Consejo
Si la BBDD es SQL SERVER no importa realmente para este paso si nuestra sentencia devuelve millones de registros. Para comprobar que la sentencia es correcta,Reporting Services no ejecutan la consulta para devolver registros sino que aade la sentencia SET FMTONLY ON antes para devolver slo la estructura. En la siguiente pestaa del asistente nos preguntar si deseamos hacer un informe tabular o un informe de matriz, los informes tabulares reflejan los listados tradicionales -ya sabis, informacin en columnas ms o menos llamativas- pero en columnas, cada registro uno debajo de otro. Elegid esta opcin si estis haciendo un listado de clientes, proveedores, artculos, Los informes de matriz sirven para contrastar informacin, son muy similares a los informes de referencias cruzadas de Access por ejemplo, es decir, podemos poner en columnas datos que pertenecen a filas. Son adecuados por ejemplo para mostrar informacin de diferentes ejercicios o meses. Para nuestro ejemplo elegiremos Matriz, vamos a contrastar la informacin de ventas por meses, aun-

28

<<dotNetMana

<< dnm.servidores.sql
que para hacerlo tendremos que personalizar algo nuestro informe al final. Una vez elegido el formato de matriz, nos aparece una nueva pantalla en la que podemos decir qu campos van a ir a pgina, columnas y filas, y qu campos vamos a mostrar en los detalles. En nuestro caso elegiremos que la fecha (OrderDate) se site en columnas, en filas; situaremos el cdigo de cliente (CustomerID) y en los detalles situaremos el peso y el subtotal (Freight, subtotal). to fecha (que pusimos en columnas) y modificaremos los parmetros tal y como puede verse en la figura 3. Aadiremos un grupo ms, a un nivel superior, ser el grupo ao. Para hacerlo pulsaremos botn derecho sobre la matriz, agregar grupo, y rellenaremos los datos con los valores adecuados. Lo que tendremos que hacer es aadir un nivel de agrupacin por aos, y despus aadir una propiedad al grupo mes que indique que el nivel mes puede mostrarse o no en funcin del ao. Para esto entraremos en la pestaa de visibi-

Necesitamos tener un servidor IIS, en l se desplegarn los informes, este servidor debe admitir ASP.NET, ya que al final Reporting Services expone un servicio web que es una interfaz perfectamente vlida para administrar el servidor
Por ltimo el asistente nos muestra algunos formatos predefinidos que pueden ayudarnos a dar un aspecto amigable a nuestro informe sin demasiado esfuerzo. Podis elegir el que ms os guste despus siempre puede cambiarse adems de esa forma podis ver cual es el que ms os gusta. Al final nos pregunta por el servidor de informes, ah se realizar la implementacin del informe, situad en esa casilla la URL para acceder a vuestro servidor de Reporting Services. Con esto hemos creado nuestro primer informe, ser necesario ahora personalizarlo y darle ms sentido. Nuestro objetivo ser construir un informe de ventas por aos y meses, que tenga aspecto interactivo, veamos qu pasos debemos dar para conseguirlo partiendo de la base del asistente. Lo primero que haremos ser cambiar la expresin de fecha por el mes de la fecha, ya que vamos a hacer las agrupaciones por ao y mes. Para esto simplemente accederemos a las propiedades del elemen-

Figura 4

Figura 3

29

<<dotNetMana

lidad y marcaremos la opcin Otro elemento de informe puede alterar la visibilidad, eligiendo el elemento que puede alterar esa visibilidad la caja de texto del ao, tal y como se observa en la figura 4. Hay algunos detalles ms de formato y alineacin que pueden darle un aspecto ms profesional a nuestro informe, sin embargo, no me atrever a hacer ninguna recomendacin en este artculo, quiz un buen diseador grfico ayude mucho ms en esa tarea que un informtico. Es importante el aspecto, yo me atrevera a decir que dramticamente importante, ya que, como dice Anthony T.Mann en su gua sobre Reporting Services, normalmente nuestro cliente ser incapaz de valorar la complejidad o sencillez de construir nuestro informe, su nico patrn de medida, siempre es el resultado, y muchas veces ese resultado depende ms de la maquetacin

<< dnm.servidores.sql
y el aspecto que de los datos en s (que por supuesto tienen que ser correctos).

Agregando interactividad a los informes


No hay informe que no necesite parmetros, todos de una forma u otra necesitan un conjunto de valores por los que filtrar o algn mecanismo para reducir el volumen de informacin exactamente al que necesitamos. Naturalmente Reporting Services tiene mecanismos para facilitar esta tarea. Siguiendo con nuestro ejemplo vamos a dotar a nuestro informe de la posibilidad de seleccionar el ao del que mostrar la informacin. Veamos paso a paso como aadirle esta lgica. Lo primero que vamos a hacer es aadir un nuevo conjunto de datos a nuestro informe; este conjunto de datos contendr una relacin de los posibles valores que va a tener nuestro informe. Para ello en el diseador de Visual Studio .NET seleccionaremos la pestaa datos y a continuacin seleccionaremos Nuevo conjunto de datos, tal y como podemos ver en la figura 6. A continuacin incluiremos un nuevo conjunto de datos a partir de esta instruccin SQL SELECT DISTINCT Year(orderdate) Ao FROM SalesOrderHeader . Este conjunto de datos lo usaremos como base para nuestros parmetros.

Consejo

Cuando estamos desarrollando informes es bastante comn querer tener un acceso gil a los datos; podemos usar en nuestra consulta bien clusulas WHERE que disminuyan el nmero de registros, bien clusulas TOP que consigan el mismo objetivo. Esto hay que quitarlo justo antes de desplegar el informe.

Para terminar nuestro informe vamos a darle un poco de sentido, vamos a quitar todos los campos que no usamos para de esta forma mejorar el rendimiento del informe. Nuestra sentencia la vamos a dejar as:
SELECT customerid,orderdate,Freight,Subtotal FROM SalesOrderheader WHERE orderdate>=20040101

El aspecto final del informe es el que podis observar en la figura 5. Este tipo de informes (y todos en realidad) puede exportarse a Excel, adems de a PDF, HTML con Office Web Componets, CSV, e incluso XML con datos del informe. Es decir, tenemos un buen nmero de formatos que pueden permitirnos que nuestros informes, de forma predeterminada expongan funcionalidades que seran muy complicadas de otra forma.

Como dice Anthony T.Mann en su gua sobre Reporting Services, normalmente nuestro cliente ser incapaz de valorar la complejidad o sencillez de construir nuestro informe, su nico patrn de medida, siempre es el resultado, y muchas veces ese resultado depende ms de la maquetacin y el aspecto que de los datos en s (que por supuesto tienen que ser correctos)
Despus volveremos a la pestaa de diseo, en la esquina superior izquierda de cualquier report. Pulsando con el botn derecho del ratn nos aparecer un men desplegable con varias opciones, entre ellas las de crear un encabezado y pie de pgina (las veremos al menos brevemente ms adelante), tambin encontrar las propiedades del informe, y adems est

<<dotNetMana

Figura 5

30

<< dnm.servidores.sql

Figura 7 Figura 6

la opcin que estamos buscando: la opcin de ver los parmetros del report. Seleccionaremos Agregar un nuevo parmetro, como nombre elegiremos ParAo; en el mensaje elegiremos Ao del informe; como valores disponibles, elegiremos de consulta, esto nos permitir seleccionar como valor el conjunto de datos que acabamos de crear. Con esto acabaramos de crear el parmetro al informe. Est claro que an no hemos usado el parmetro para construir la sentencia que sirve para obtener los datos y que por tanto afecte al conjunto de datos que hemos usado de base para disear el informe de ejemplo. Para conseguir esto, bastar con cambiar la sentencia que nos ha servido de base para el informe, la sentencia, finalmente quedar as:
SELECT customerid,orderdate,Freight,Subtotal FROM SalesOrderheader WHERE year(orderdate)=@ao

mos @ao y cuyo valor ser =parameters!parAo.value, consiguiendo as enlazar el informe con los parmetros que estamos solicitando.

Aadiendo grficos a los informes


Una de las cuestiones que generalmente es necesaria, es aadir grficos a este tipo de informes. Pensemos por ejemplo en la factura de la compaa telefnica, todas o casi todas tienen un grfico de evolucin del consumo en los ltimos meses, sin embargo, no hay muchas facturas generadas por ERPs ms tradicionales que tengan esta informacin. En el caso del que estamos hablando, el origen de datos, no tiene nada que ver con la factura, son datos absolutamente disjuntos. Vamos a ver tambin paso a paso como aadir un grfico a nuestro informe, aprovecharemos para crear nuestro conjunto a partir de un procedimiento almacenado, ya que hasta ahora en los ejemplos siempre hemos venido usando sentencias directas. Comenzaremos esta parte creando un procedimiento almacenado en la BBDD AdventureWorks2000, el cdigo del procedimiento almacenado ser muy sencillo, podemos verlo a continuacin:

Despus entraremos en las opciones del dataset, del conjunto de datos que hemos generado y aadiremos un parmetro (esta vez al dataset), que llamare-

31

<<dotNetMana

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 frmula estamos impidiendo que SQL Server use los ndices que potencialmente podemos tener por el campo. Hay varias formas de mejorar esto: Se puede crear un campo calculado en la tabla que sea el ao y construir un ndice por ese campo, o se pueden usar rangos de fechas para expresar lo mismo.

<< dnm.servidores.sql

Create Proc EvolucionVentasPorMeses (@ao smallint ) as begin select month(orderdate) mes,sum(Subtotal) Subtotal From SalesOrderheader where year(orderdate)=@ao group by month(orderdate) order by 1 end go

Consejo
Algunos procedimientos almacenados (en SQL Server) pueden devolver ms de un conjunto de registros. Sin embargo Reporting Services solamente usar el primero de ellos, es conveniente tener cuidado con esto y asegurarse de usar SET NOCOUNT ON cuando sea necesario.

A continuacin aadiremos un nuevo conjunto de datos. El conjunto de datos se basar en este procedimiento almacenado, es bastante sencillo invocar y no vamos a entrar en ms detalles, nicamente recordar que aadiremos el enlace con el parmetro @ao, de la misma forma que hemos enlazado este parmetro para el conjunto de datos base para la matriz de datos. Si lo estimamos oportuno, podemos hacer ms grande ahora la superficie del informe, y bien en un margen, o bien justo debajo, pincharemos y arrastraremos un nuevo grafico a nuestro informe. Despus arrastraremos los campos del nuevo conjunto de datos a la superficie del grfico, llevaremos el campo subtotal a valores y el campo mes a los campos de categora. No llevaremos en este caso nada a serie, y adems entraremos a personalizar el informe para que no muestre la leyenda. En la figura 8 puede verse el aspecto que tiene en vista previa el informe que acabamos de generar y al que le acabamos de aadir el grfico.

ta con pulsar con el botn derecho en el cuadro superior izquierdo de la ventana de diseo y obtendremos las dos opciones de men que dan acceso a encabezados y pies. Ms all de lo obvio, lo que tiene cierto inters es cmo usar esos encabezados y pies de pgina para mostrar la informacin realmente relevante para todas las pginas. Generalmente es interesante conocer datos como la fecha y la hora de generacin del informe, y la pgina y el total de pginas. Para proporcionar esta informacin hay variables globales que nos las ofrecen y que a travs del editor de expresiones podemos acceder. Para insertar valores, aadiremos un par de cajas de texto en el pie de pgina arrastrndolos desde el cuadro de herramientas hasta la superficie del pie de pgina, despus desde las propiedades de la caja de texto podemos acceder al editor de expresiones y poner la expresin ms adecuada. Para poner la pgina en la que estamos y la fecha y hora de ejecucin hemos usado respectivamente las variables globales Globals!ExecutionTime, Globals!PageNumber y Globals!TotalPages.

Despliegue de los informes


Hasta esta parte del artculo slo hemos hablado sobre cmo desarrollar los informes, sin embargo, de nada sirve un informe si no puede desplegarse, es decir instalarse en algn lugar y ser visualizado. Para realizar esta tarea veremos las opciones que ofrece Visual Studio .NET y veremos parte de las diferentes opciones de renderizado. Una de las herramientas ms potentes para desplegar informes es el propio Visual Studio .NET. La herramienta es capaz de hablar con el Servidor de Reporting Services (a travs del servicio web que expone) y enviar la informacin necesaria para desplegar el informe, tanto los orgenes compartidos de datos como los propios informes. Si lo pensamos tranquilamente, la tarea tampoco es especialmente complicada, no lo es debido a que el resultado de toda nuestra tarea no deja de ser

Figura 8

<<dotNetMana

Aadir encabezados y pies de pgina


Aadir un encabezado o un pie de pgina es una tarea muy sencilla en el diseador de informes, bas-

32

<< dnm.servidores.sql
un fichero XML con la definicin del informe, un fichero de extensin RDL que contiene en s mismo toda la definicin del informe de forma clara y transparente. Para conseguir el despliegue de los informes desde Visual Studio .NET tendremos que usar las propiedades del proyecto. Tres son los parmetros que tendremos que configurar para que se haga el despliegue: OverwriteDataSources, cuyos valores pueden ser True o False, y TargetFolder y TargetServerURL que indican respectivamente la ruta del servidor y la ruta dentro del servidor en el que desplegaremos nuestros informes. Por ltimo simplemente ejecutamos, como si de cualquier proyecto se tratase y tendremos nuestro informe situado en el servidor de informes. El que exista la propiedad OverwriteDataSources es realmente importante, tengan en cuenta que las cadenas de conexin no tienen por qu ser exactamente iguales para acceder desde el entorno de desarrollo en el que estamos suministrando las credenciales con las que hemos entrado al sistema para visualizar la informacin, que desde el entorno de produccin. Es bastante normal que el entorno de desarrollo acceda a servidores de desarrollo y que el entorno productivo a servidores de produccin. Dentro de la seguridad podemos programar que se haga impersonacin, es decir que el IIS deje pasar nuestras credenciales hasta el servidor (o servidores) desde donde se extraiga la informacin, pero tambin podemos decidir usar un nombre de usuario y una contrasea o un usuario de Windows creado solamente para genera los informes. Toda esta tarea de configuracin y de administracin de nuestro servidor de Reporting Services podra quedar estropeada por que al desplegar un conjunto de informes sobrescribisemos los orgenes de datos. Otro detalle interesante a mi juicio es que cada una de las configuraciones admite estos parmetros, es decir que podemos estar ejecutando en modo Debug nuestros informes contra servidores de pre-produccin o desarrollo y en el momento que estn terminados, simplemente cambiar el combo para decir que desplegamos en productivo y ejecutar la aplicacin.

Figura 8

ms sencillo, podemos poner hiperenlaces a las direcciones URL de los informes, bien con los parmetros en la propia URL, bien sin ellos, y ya se encarga el propio informe de solicitarlos. Si por el contrario estamos desarrollando aplicaciones en ventanas tradiciones, en aplicaciones de escritorio tampoco es que sea mucho ms complicado, podemos usar una referencia web al Servicio Web que exponen Reporting Services (http://NOMBRESERVER/ReportServer/ReporService.asmx), y usar los mtodos de RENDER para obtener la informacin de renderizado (incluso en un Stream), o podemos hacerlo tambin mediante acceso URL, bastar con aadir una referencia al navegador, esta referencia es realizada mediante COM Interop, a los Microsoft Internet Controls. Una vez creada la referencia solamente hay que ejecutar el mtodo Navigate del control pasndole como parmetro la direccin URL en donde hayamos desplegado el informe.

Y hace algo ms?


Pues la verdad es que s, muchas cosas ms, la parte de administracin de informes no la hemos tocado en este artculo y la dejamos pendiente para el futuro, de la misma forma, podran tratarse las suscripciones, que existen de varios tipos, tanto programadas como gobernadas por los propios datos, adems de la seguridad y las interioridades de los Reporting Services

Visualizacin de informes
Una vez situado el informe en nuestro servidor de informes necesitaremos que nuestras aplicaciones tengan la capacidad de usarlos, es decir de invocar a esos informes para que muestren la informacin. Nada ms sencillo de conseguir, al fin y al cabo no es ms que navegar a una pgina web en la direccin URL en la que hayamos desplegado nuestro informe, En la figura 9 podemos ver el aspecto que tiene la pantalla una vez ejecutado el informe. Y cmo integramos esta visualizacin dentro de nuestras aplicaciones? Si las aplicaciones son Web nada

Conclusiones
Reporting Services, como herramienta cliente servidor puede ayudarnos a hacer informes profesionales dentro del propio entorno de Visual Studio .NET, de forma gil y sencilla, definindose, a pesar de su juventud en el mercado, como una poderossima herramienta de generacin de informes profesionales.

33

<<dotNetMana

Por Daniel Manzini


Arquitecto de Sistemas de Informacin Ubica Solutions

Distribuir aplicaciones con .NET Remoting


Existe en .Net cuatro maneras de distribuir aplicaciones, a saber: Los servicios web, .Net Remoting, Mensajera (MSMQ) y Componentes empresariales (COM+). Los tres primeros mtodos de distribucin son controlados por el la plataforma .Net, por lo que slo explicar estas tres primeras en los prximos prrafos.

<< Cuando usar cada mtodo de distribucin de aplicaciones?


Esta variedad de eleccin tiene su sentido, y radica en lo que quiere hacer el cliente a fin de cuentas con el proyecto. Pueden variar mucho los requerimientos entre una aplicacin de facturacin y una de logstica en tiempo real, pero lo preguntas importantes que debemos hacernos al inicio de estos proyectos son: Desarrollar los dos puntos de la aplicacin (tanto el cliente como el servidor)? Qu grado de integracin con otras aplicaciones debo tener? El usuario se conecta y se mantiene conectado, o consulta espordicamente? Puedo simular que sigue conectado cuando realmente lo desconecto? El usuario recibe avisos desde el servidor? Se espera que se utilice un servicio web cuando sea un dato externo, es decir cuando no soy el dueo de la informacin. Tambin utilizar un servicio web cuando no s con exactitud qu plataforma tendr el cliente o cuando desarrollo informacin que ser solicitada desde muchas aplicaciones diferentes para facilitar la integracin.

34

<<dotNetMana

.Net remoting nos es til cuando deseamos distribuir una aplicacin y controlamos los puntos donde se va a distribuir, esto significa por ejemplo que el cliente nos dejar instalar .Net en sus ordenadores clientes y servidor. Adems el modelo de remoting nos permite tener distinta serializacin (binaria, SOAP, o extendida a partir de IFormatter), distintos canales de envo de mensajes (TCP, HTTP, o extendido a partir de IChannel), distintos modos de programacin con los objetos (statefull or stateless) y compartir por valor o por referencia. Un servicio web es mucho ms restrictivo en estos ltimos puntos. Adems .Net remoting puede enviar mensajes desde el servidor hacia los clientes. Si podemos utilizar mtodos en forma asncrona (incluso un servicio web nos crea los mtodos BeginOperacion y EndOperacion para utilizarlo asncrono) Porqu utilizar mensajera? Tanto remoting como web service son tecnologas diseadas para trabajar en forma sncrona, mientras que la mensajera es exactamente lo contrario, por lo tanto viene con caractersticas difciles de implementar con los otros mtodos. Por ejemplo si un servidor se cae, los mensajes se conservan en local hasta que se restablece el servidor, momento en que se envan los mensajes automticamente. Adems es muy til para

la integracin de aplicaciones. El caso de integracin sera colocar un mensaje en una cola de mensajes que forma parte de un flujo de trabajo de Biztalk, o sin Biztalk, sera tener a un thread que lea los mensajes que llegan y lo deserealice. Como en el presente artculo no tocaremos el tema de mensajera, vea en la tabla 1 que puede ilustrar similitudes y diferencias entre .Net Remoting y Web Service.

Pensando con el cliente


Aunque una aplicacin se encuentre dividida en n capas, se conoce generalmente como aplicaciones cliente servidor a aquellas aplicaciones donde un cliente solicitaba informacin a un punto central por medio de una LAN. Con tecnologa DCOM muchas empresas fueron creando productos distribuidos, con la visualizacin en formularios, la lgica en los objetos DCOM en otro ordenador (servidor de aplicaciones) y la base de datos en un servidor diferente (el servidor de datos). De este modo, tenemos muchos aplicativos de gestin. Cuando esta gestin no requiere un tiempo vital en la respuesta (un control de gasto, donde para pagar una factura se tarda 60 das y se consulta su estado una media de tres a cinco veces en esos 60 das) se puede distribuir por medio

<< dnm.plataforma.net
Remoting Reside en Aplicacin de consola Windows Service. ASP.NET Valor o referencia Con o sin estado TCP, HTTP, o propios Binario, SOAP, o propias Slo .Net CTS (de la plataforma) Web Service ASP.NET
primeros los llamar en adelante MBV(del ingls Marshal by Value) y a los ltimos MBR (del ingls Marshal by Reference). Por ejemplo tenemos el siguiente mtodo en la clase Empleado_ReglaNegocio en remoto:
public Empleado ObtenerNuevoEmpleado() { return new Empleado(); }

Se comparte por Modelo de estado Canales Mensajes Cliente Sistema de tipos

Valor Con estado HTTP SOAP o HTTP con query string Cualquiera XML Schema
Tabla 1

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

Arquitectura de .NET Remoting


Para entender la infraestructura de remoting hay que saber tres conceptos: proxies, canales y mensajes. El proxy es un objeto que existe en local que realmente impersona a uno que existe en remoto; para poder realizar esta tarea tiene que tener todos los miembros iguales que el objeto remoto. Lo que hace el proxy cuando se hace una peticin en local es delegar la peticin por el canal

al objeto remoto. El canal representa, entonces, la conexin entre la aplicacin local y la aplicacin remota. La peticin que se realiza antes de llegar al canal se serializa por medio de un formateador, dando por resultado el mensaje que se transmite; al llegar existe otro formatedor que deserealiza el mensaje y realiza la peticin en el entorno remoto. La figura 1 ilustra el proceso.

Distribucin de proyectos
La finalidad es compartir objetos que estn mas all de la frontera de la aplicacin. stos se pueden compartir por valor o por referencia, y conceptualmente funciona igual que un parmetro por valor o por referencia. A los

Figura1

<<dotNetMana
35

Con este ejemplo nos sacamos un par de dudas sobre los valores de retorno en remoting, stos pueden ser tipos incluidos en la plataforma o clase propias. Si la clase Empleado fuera MBV, entonces obtendramos en local una copia del objeto remoto hay que tener en cuanta que este tipo de objeto se ejecutara en local, mientras que si fuera MBR tendramos en local un puntero al objeto remoto, que no es nada ms ni nada menos que el proxy. Viendo las consideraciones de los objetos por referencia y por valor lo que puedo hacer es tener las entidades de negocio (el empleado con su nombre, apellido, email y otros datos) como MBV, mientras que las reglas de negocio (BuscarUnEmpleado, BuscarEmpleadoporMail, etc.) lo puedo tener como MBR. Cuando llegamos a este punto nos damos cuenta que la clase Empleado debe estar en los lados del remoting, es decir en el cliente y en el servidor. Esto indica que por lo menos cuando trabaje con remoting tendr tres proyectos: el cliente, el servidor y uno compartido donde colocar las clases que usa el cliente y que solicita al servidor. Y para poder llegar a verlo trabajar tendr dos soluciones: la solucin cliente con el proyecto cliente y el proyecto compartido, y la solucin servidor con el proyecto servidor y el proyecto compartido. En la vida real, es posible que la solucin cliente se distribuya en 100 ordenadores. Ahora nos meteremos con el proyecto compartido es necesario poner las clases? En otras palabras es necesario poner la implementacin en cada uno de los 100 clientes? Bueno, ese es un tema de seguridad y de mantenimiento. De seguridad porque .Net se puede

<< dnm.plataforma.net
descompilar si no tomamos los cuidados necesarios, y de mantenimiento, porque a la menor incidencia o cambio que tenga en una de las clases que est en el proyecto compartido tendr que instalar los 100 clientes. Para ello, en el proyecto compartido puedo usar clases abstractas o interfases. Las clases abstractas pueden llegar a tener implementacin, por lo que es recomendable utilizar interfases que slo se implementan en el servidor y como no tienen cdigo de implementacin, si alguien logra descompilarlas, pues no ver mucho. Es decir que termino teniendo en la solucin servidor tres proyectos, el servidor, el compartido que slo son interfases, y un proyecto de transferencia que son las clases que implementan las interfases del proyecto compartido, mientras que en la solucin cliente nos queda el proyecto cliente y el proyecto compartido. Las consideraciones sobre la distribucin no acaban aqu. Los objetos MBV se ejecutan en local, por lo tanto necesitan en local el cdigo para poder funcionar. Como los objetos que voy a compartir son entidades de negocio (a mi me gusta decirles Objetos de Transferencia, ya que en su momento los estudi como parte del patrn Transfer Object 1) tendr propiedades para acceder a los valores y cambiarlos si es necesario, y algn mtodo que puede responder usando los valores internos del objeto, por ejemplo si estuviera hablando de la clase Detalle de Factura, tendra el mtodo CalcularImporte que multiplicara la propiedad Cantidad x PrecioUnitario. Porqu no usar DataSet o DataSet tipificados en lugar de objetos de transferencia? Es una buena pregunta. Como ya vimos, cuando un objeto tiene que pasar por un canal se serializa al partir y se deserializa al llegar. Si tuviramos que distribuir una aplicacin en una LAN, usara serializacin binaria, pero con el DataSet tengo un problema, por ms que le indique que es serializacin binaria se serializa como XML, siendo de un tamao 5 veces mayor. Eso me trae problemas de tiempo y de carga de red (acompao un ejemplo con el nombre de serializacin. Vea el material de apoyo en dotnetmania.com). A continuacin voy a empezar a dejar ejemplos de cdigo, pero antes un
1

comentario sobre los ejemplos. El servidor puede implementarse de tres maneras, una aplicacin de consola (para desarrollo viene muy bien), un servicio de Windows, o en IIS. Por sencillez, los distintos ejemplos servidores estarn hosteados por aplicaciones de consola.

Primer ejemplo de .NET Remoting


Ya puesto en la distribucin, pasamos a crear dos soluciones que puedan ir demostrando algunas instrucciones bsicas para por el otro lado en el servidor abrir un puerto, con un determinado protocolo, para poder escuchar las peticiones del cliente y por el lado del cliente como abrir el canal (puerto y protocolo) y obtener un objeto remoto. El cdigo lo podrn encontrar bajo el directorio EJEMPLO01. Empecemos por el proyecto compartido, especficamente por las interfases:

mos una canal de comunicacin, adems le indicamos que usaremos el puerto 1234. Luego usamos el mtodo esttico RegisterChannel para registrar el canal. Hay que tener presente que si fuera un canal que ya se est usando puede dar un error. Lo aconsejable es colocarlo dentro de un try catch o pedir con el mtodo GetChannel de la misma clase, si retorno un nulo, registrarlo y sino elevar una excepcin. Con el canal registrado, ahora hay que indicarle qu clases se pueden compartir. Tenemos que decirle el tipo de la clase, un nombre del objeto (URI), y por ultimo el tipo de objeto en remoting que es. En cuanto a los nombres, por defecto cuando se comparte un objeto que utiliza el transformador binario (el TCP si no le decimos lo contrario usa serializacin binaria, mientras que el HTTP usa serializacin SOAP) se coloca como nombre el nombre de la clase seguido de un punto y la exten-

namespace ICompartido { public interface IAsignar { void AsignarNombre(string nombre); string ObtenerNombre (); } }

<<dotNetMana

Siguiendo con el ejemplo de Empleado, cree una interfaz por la cual le pueda asignar el nombre al Empleado. Ahora pasa al proyecto que tiene la implementacin. Ver fuente 1. La clase Empleado se compartir por referencia. Por tal motivo tiene que heredar directa o indirectamente de MarshalByRefObject. sta es otro motivo para recalcar el uso de las interfases ya que .Net acepta tener una nica clase base. Para poder compartirse tiene que haber una aplicacin que lo lance, en este caso ser una aplicacin de consola. Generalmente se usa este tipo de aplicacin para pruebas y desarrollo, luego lo ideal seria un servicio de Windows. Ver fuente 2. Ahora echemos un vistazo a lo que escribimos para lanzar la aplicacin. Por medio de la clase TcpChannel, abri-

sin .REM, mientras que si es SOAP se coloca la extensin .SOAP. Para que el objeto pueda ser llamado la aplicacin de consola debe estar ejecutndose, por eso lo dejamos con el ReadLine puesto. Ahora que ya tenemos el servidor terminado, pasaremos al cliente. En este caso tambin lo veremos por medio de una aplicacin de consola. Ver fuente 3. En el cliente, llamamos al objeto remoto, para ello, en este caso, usamos el mtodo Activator.GetObject que espera por lo menos dos parmetros: el primero, el tipo de objeto que se va a compartir, como en el cliente slo tengo la interfaz, coloca la interfaz que espero; y el segundo, es la direccin donde est el servidor, esta direccin est formada por protocolo de comunicin + direccin IP (o nombre de maquina) + puerto que est esperando peticin + nombre del objeto. Para ase-

Core J2EE Patterns de Deepak Alur.

36

<< 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 } } Fuente 1 using using using using System; System.Runtime.Remoting; System.Runtime.Remoting.Channels; 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 2

<<dotNetMana
37

<< dnm.plataforma.net
using using using using System; System.Runtime.Remoting; System.Runtime.Remoting.Channels; 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

gurarme de que funcione en cualquier ordenador puse 127.0.0.1 en lugar del nombre de mi ordenador (tambin poda haber puesto localhost). Con ganas de probarlo? Compile todo, ejecute el servidor, luego el cliente, y podr ver como en el servidor solicit el cliente. Ahora vamos a poner un punto de interrupcin en el cliente donde decimos que el proxy ya est creado. Paramos el servidor si estuviera andando y volvemos a lanzarlo, luego lanzamos el cliente hasta que llegue al punto de interrupcin. Segn el cdigo del cliente, el objeto ya fue creado por el mtodo GetObject, pero si vemos en la consola del servidor, el constructor an no avis que se cre el objeto Bug de .Net? Llamo a mi psiclogo? No tranquilo, es as, ahora veremos el porqu.

Nos cuestionaremos cada decisin de diseo de aplicaciones distribuidas y veremos como podemos resolverlas con .Net Remoting aplicando las mejores prcticas
la creacin de un objeto (SingleCall y Singleton), y aquella donde se administra desde el cliente. El SingleCall funciona igual que un servicio web sin estado. Lo que sucede es que cuando se hace la peticin, se crea, ejecuta el mtodo y se destruye el objeto remoto. Esto hace que los objetos SingleCall sean los ms escalables de los tres tipos. Generalmente se utilizan para procesos largos. En contra, se puede decir que no recuerda nada del usuario que est utilizndolo. Para ver un ejemplo, slo cambiaremos en el ejemplo anterior, en el servi-

Tipos de objetos en .Net Remoting

38

<<dotNetMana

Los objetos MBR se pueden activar de tres maneras: SingleCall, Singleton, Activado desde el Cliente. Igualmente podemos decir que son dos divisiones genricas: aquella donde el servidor administra

dor, el WellKnownObjectMode.Singleton a WellKnownObjectMode.SingleCall. Al ejecutarlo, veremos que en el servidor se construye dos veces el objeto Empleado; esto es porque hay dos llamadas, una donde le asigno el nombre y una donde le pido el nombre. El Singleton es una sola instancia del objeto remoto para todos los procesos clientes que la llamen. Es muy til para compartir informacin entre clientes. El tiempo de vida por defecto es de 5 minutos. Para ver cmo se comportan, cambiaremos el servidor otra vez a Singleton y ejecutaremos dos veces seguidas el cliente. La primera vez que ejecutamos el cliente, la variable nombre estaba vaca y le asignamos el nombre dotNetMania, la segunda vez le volvimos a asignar el mismo valor, sencillamente porque no se destruy el objeto, mantena el mismo valor y lo comparta con el nuevo proceso cliente. Los pasos quedan reflejados en la consola del servidor. Por ultimo tenemos los objetos que se pueden activar del lado del cliente. Al activarse del lado del cliente puedo hacer un new, lo cual se puede considerar una ventaja porque el cdigo queda mucho mas fcil de leer, pero slo podemos usar el constructor por defecto, si quisiramos otros constructores deberamos compartir la implementacin. El problema ms importante que tienen es la escalabilidad, ya que como la activacin se maneja desde el cliente, varios clientes podran crear instancias iguales; esto con un tipo de objeto singleton sera una sola instancia, y lgicamente consumira menos recursos del servidor. En el caso que no quisiramos compartir las interfases, podemos utilizar una herramienta que se llama SoapSuds. La herramienta SoapSuds no extrae la informacin sobre distintos constructores, slo el constructor por defecto. Algo importante en torno al SoapSuds, si tienes la versin 1.1 del Framework, Microsoft te recomienda que esperes a que exista un service pack para que funcione correctamente o que contactes a un nmero de telfono de soporte. Para mas informacin ver (http://support.microsoft.com/default.aspx?scid=k b;en-us;823445). Cabe aclarar que con la versin 1.0 no tena problemas.

<< dnm.plataforma.net
Una ventaja que nos trae este tipo de activacin es la posibilidad de usar distintos constructores, como comparto implementacin, puedo hacerlo fcilmente. Encontrarn el ejemplo en el directorio EJEMPLO02. En el cliente la primera vez uso el constructor por defecto y luego otro constructor donde le asigno el nombre al empleado. En el servidor tuvimos que cambiar la manera de publicar el objeto, ahora usamos dos llamadas a la clase RemotingConfiguration, la primera a la propiedad ApplicationName, para decirle el nombre, y por ltimo al mtodo RegisterActivedServiceType y le pasamos el tipo que queremos compartir como parmetro. En el cliente, despus de registrar el canal, ejecutamos el mtodo RegisterActivatedClientType y le pasamos el tipo de objeto y la direccin donde est el servidor como parmetros. Pero, comparto implementacin y eso no me termina de convencer, no me gusta mucho por principios de programacin distribuida qu puedo hacer para tener la ventaja de constructores y no tener que compartir implementacin, y que sea escalable?
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

se Empleado, ahora exponemos la clase Factoria y lo dejamos Singleton porque existir una sola factora para todos los clientes. Esto lo hace escalable.

de en lugar de encapsular la creacin de un objeto, encapsulamos las llamadas del cliente al servidor. Pero eso ser tema de otro da al igual que otras pre-

Una buena practica en .Net Remoting


Para lograr todo esto, lo que deberamos hacer es que la clase no se exponga directamente, sino indirectamente como respuesta a un mtodo. Esto se conoce como una factora2, donde cada mtodo de la factora mapea a un constructor. Empezaremos por la interfaz:
public interface IFactoria { IAsignar CrearEmpleado(); IAsignar CrearEmpleado(string nombre) }

RemotingConfiguration.RegisterWellKnownServiceType( typeof(Factoria), Factoria.rem, WellKnownObjectMode.Singleton);

En el cliente, los cambios quedan de la siguiente forma:

guntas. (Cmo hago para cambiar el servidor de ordenador sin reinstalar

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 3

Design Patterns de Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides Idem II

<<dotNetMana
39

Como se ve, sobrecargo el mtodo CrearEmpleado de igual manera que est sobrecargado el constructor de la clase Empleado, luego en el proyecto compartido agrego la clase Factoria e implemento la interfaz IFactoria. Ver fuente 4. Como la factora ser llamada desde el cliente, necesitamos que herede de MarshalByRefObject. En la aplicacin de consola que inicia el servidor, en lugar de exponer la cla-

Como se ver, no puedo usar directamente el constructor especfico de la clase empleado, pero por medio de la factora obtengo los mismos resultados. Esto constituye una buena prctica dentro de remoting, porque no comparto la implementacin, tengo la posibilidad de usar constructores, y de llamar indirectamente. La idea principal es que la interfaz no cambie, entonces el cliente se puede mantener. Bajo esta misma buena prctica, tambin podramos usar el patrn Facade3, don-

todos los clientes? Qu hago si en el parque de ordenadores son todos Windows Me o 98? Dnde realizo el host? Y si quisiera usar esta misma arquitectura en un solo puesto de trabajo, pero el da de maana quiero tener 5 ordenadores conectados a un servidor? Cmo hago para que un objeto remoto permanezca siempre activo? Cmo se avisa el cliente desde el servidor? Cmo puedo utilizar Remoting con Multiservidores? Cmo puedo aplicar seguridad?)

Por Francisco Charte


Torre de Babel fcharte.com

Cambios sufridos por Object Pascal en Delphi 8 .NET


Con el objetivo de poder generar cdigo ajustado a la especificacin comn de lenguaje (CLS) de la plataforma .NET, Borland ha tenido que introducir ciertos cambios en el compilador de Object Pascal que incorpora la versin 8 de Delphi.

<< Introduccin
La primera versin de Delphi, a punto de ser liberada hace ahora casi una dcada, contaba con un evolucionado compilador de Pascal orientado a objetos, conocido como Object Pascal, que generaba cdigo de 16 bits para el sistema operativo Windows. Con Delphi 2 apareci el compilador que produca cdigo de 32 bits para la plataforma Win32, nombre con el que ha venido denominndose genricamente a la plataforma de ejecucin que representan todas las versiones de Windows de 32 bits. Aunque con ciertas

A diferencia de otros lenguajes .NET, la actual versin de Object Pascal, en Delphi 8, no contempla la posibilidad de crear alias para los mbitos con nombre
mejoras y extensiones a lo largo de los aos, lo cierto es que ese compilador era, bsicamente, el mismo hasta la versin 7. Delphi 8 es la primera versin de este producto preparada para crear aplicaciones para la plataforma .NET de Microsoft, lo cual ha obligado a construir un compilador prcticamente nuevo que, en lugar de cdigo nativo, genera cdigo IL. ste debe ajustarse a una especificacin, conocida genricamente como CLS (Common Language Specification), que hace posible la reutilizacin del cdigo entre distintos lengua-

jes, as como la interoperabilidad entre sus clases. Los lenguajes .NET pueden contar con caractersticas que, a pesar de estar presentes en el sistema comn de tipos o CTS, no formen parte de la CLS, que podramos ver como un subconjunto de aqul. El cumplimiento con dicho subconjunto, sin embargo, es inevitable. En la CLS se detallan ciertas construcciones que deben ser contemplados en cualquier lenguaje, algunas de las cuales no existan en el lenguaje Object Pascal como lo conocamos hasta Delphi 7 o, de existir, no se comportaban exactamente como se indica en dicha especificacin. Por ello ha sido necesario introducir algunos cambios, agregando nuevas palabras clave, eliminando ciertos tipos y alterando otros para poner Object Pascal al mismo nivel, sino superior, que los dems lenguajes .NET. La nueva sintaxis de Object Pascal, cuyos puntos ms destacables van a ser descritos en este artculo, no estn presentes actualmente en las versiones del compilador para Win32, pero Borland ha asegurado que actualizar dicho compilador para guardar un paralelismo que facilite el mantenimiento de una misma base de cdigo entre proyectos Windows y proyectos .NET.

Mdulos y mbitos con nombre


En la plataforma .NET las definiciones de tipos se almacenan jerrquicamente en mbitos con nombre, o namespaces, tales como System.Windows.Forms o Microsoft.Windows. Las aplicaciones pueden definir sus propios mbitos con nombre, a fin de distribuir el cdigo, as como hacer referencia a otros para poder usar los tipos definidos en ellos. El mbito con nombre, sin embargo, es un concepto inexistente en Object Pascal hasta ahora.

<<dotNetMana
40

<< dnm.lenguajes.net
Los mdulos Object Pascal, ya sean mdulos de programa, de paquete o cualquier otro tipo, indican su nombre tras palabras clave como program, unit, library y package. Dicho nombre, adems, establece indirectamente tambin el nombre del archivo fsico, algo habitual en Pascal. La nueva versin del compilador de Object Pascal contempla el uso de las mismas palabras clave anteriores para recoger no slo el nombre del mdulo, sino la especificacin de un mbito completo. Podemos, por tanto, iniciar un programa con una lnea as:
program dotNetMania.Ejemplos.Programa1; begin

Para completar la posibilidad de trabajar con mbitos con nombre, en esta nueva versin la clusula uses, utilizada para hacer referencia a mdulos externos, contempla la posibilidad de ir acompaada de nombres completos de mbito. Por ejemplo:

amplia del concepto de privado. En la CLS, sin embargo, un miembro private debe ser visible exclusivamente para los miembros de la clase de que forma parte, pero nunca desde el exterior. Con la visibilidad protegida ocurre otro tanto. En Object Pascal un miem-

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

En este caso la palabra program indica que el cdigo de este mdulo se introducir en un mbito denominado dotNetMania.Ejemplos.Programa1. El nombre fsico del archivo coincidira con el del mbito, aadindose nicamente la extensin correspondiente. El cuadro de dilogo de opciones de proyecto, en Delphi 8, cuenta con un apartado en el que puede indicarse un mbito por defecto que se aadira automticamente como prefijo al nombre de los mdulos, no teniendo as que especificarlo en cada uno de ellos. Los mdulos de cdigo fuente tendran el nombre indicado tras program o unit, pero los generados por el compilador reflejaran el nombre completo incluyendo el mbito por defecto.

A la hora de hacer referencia a un determinado tipo, por ejemplo el nombre de una clase, una estructura o enumeracin, pueden emplearse referencias completas, precediendo el identificador de tipo del nombre completo del mbito, o bien referencias simples siempre que stas no entren en conflicto con identificadores locales. Tras aadir la anterior clusula uses a un mdulo, por ejemplo, los identificadores Form y System.Windows.Forms.Form seran equivalentes, haciendo referencia en ambos casos a la clase Form del mbito System.Windows.Forms.

bro protected es visible desde la propia clase, las clases derivadas de sta y cualquier punto del mdulo del que forme parte. En la plataforma .NET un miembro protegido slo puede ser visible en la clase donde se ha definido y las clases derivadas a partir de ella, exclusivamente.

Visibilidad de los miembros de un tipo


Hasta la versin del compilador incorporado en Delphi 7, Object Pascal contemplaba la existencia en un tipo, por ejemplo la definicin de una clase, de miembros privados, protegidos, pblicos y publicados, utilizndose las palabras clave private, protected, public y published para especificar la visibilidad de un bloque de declaraciones. Todos los lenguajes .NET pueden asignar a los miembros de sus tipos una visibilidad entre tres posibles: pblica, protegida y privada. El problema estriba en cmo se entienden estos trminos, existiendo diferencias entre los lenguajes .NET, para ser ms exactos la especificacin comn, y Object Pascal. En Object Pascal un miembro private es accesible desde la propia clase y tambin desde cualquier punto del mdulo en que se sta se haya definido. Podramos decir que es una interpretacin

Las estructuras de datos con mtodos y propiedades no deben ser vistas como sustitutas de clases, su aplicacin se reduce a tipos ms o menos simples aunque con alguna funcionalidad
Cmo podra Object Pascal adecuarse a las exigencias de la CLS y, al tiempo, evitar que el cdigo existente d problemas a causa del cambio. Si Borland hubiese optado simplemente por restringir la visibilidad de los miembros private y protected, evitando que sean accesibles desde puntos del mdulo externos a su clase, la conversin de proyectos de versiones previas sera ms problemtico. Por ello se eligi aadir dos nuevos modificadores de visibilidad: strict protected y strict private, que seran funcionalmente equivalentes a los protected y private de C# o Visual Basic. Teniendo en cuenta estos nuevos modificadores, ahora la definicin de

Figura 1. Podemos establecer un mbito por defecto en las opciones de proyecto

<<dotNetMana
41

<< dnm.lenguajes.net
una clase podra tener la estructura siguiente: tras que la segunda es un tipo por referencia, del que van crendose objetos bilidad est ahora presente mediante la nueva palabra clave final, cuyo uso se muestra en el siguiente fragmento de cdigo:
ClaseBase = class public procedure Metodo: virtual; end; ClaseDerivada = class(ClaseBase) public // marcamos el mtodo como de uso final procedure Metodo; override; final; end;

MiClase = class strict private MiembroPrivado: string; strict protected MiembroProtegido: string; private MiembroDeEnsamblado: string; protected MiembroProtegidoDeEnsamblado: string; public MiembroPublico: string; end;

mediante asignacin dinmica de memoria. Adems, las estructuras no pueden contar con mtodos virtuales ni heredar unas de otras. En Delphi .NET podramos definir una estructura de datos como la siguiente sin problemas, posibilidad inexistente en versiones previas del compilador de Object Pascal.
TPunto = record strict private x, y: Integer; public constructor Create(FX, FY: Integer); procedure Dibuja; end;

Este mismo concepto puede aplicarse tambin a la definicin de una clase, convirtindola en clase de uso final, es decir, una clase de la que no podran derivarse otras. Si, por ejemplo, definimos una clase especializada en una tarea muy especfica, no tendra sentido permitir la creacin de otras a partir de ella. En un caso as su cabecera incluira la palabra sealed. Ver figura 3.
ClaseEspecializada = class sealed

Figura 2. El Explorador de cdigo contempla los nuevos modificadores de visibilidad de Object Pascal

Estructuras de datos ms funcionales


En Object Pascal las estructuras de datos, definidas como registros con la palabra clave record, pueden contener exclusivamente variables, campos de datos que, adems, son accesibles pblicamente desde cualquier punto en el que sea visible el tipo. En los lenguajes .NET, por el contrario, las estructuras de datos pueden contener miembros de otros tipos, como puedan ser los mtodos, las propiedades y los constructores, adems de especificadores de visibilidad idnticos a los de las clases. Incluso pueden implementarse interfaces en una estructura. Cul es, entonces, la diferencia entre una estructura y una clase? Bsicamente que la primera es un tipo por valor, que se aloja en la pila, mien-

A pesar de contar con un constructor, las variables de tipo TPunto se alojaran como valores en la pila, como un nmero o un carcter, no como un objeto de una clase.

Figura 3. El compilador nos indica que no podemos derivar de una clase de uso final

Mtodos y clases de uso final


El mecanismo de herencia de Object Pascal, como el de cualquier otro lenguaje orientado a objetos, permite redefinir en una clase derivada miembros declarados como virtuales en la clase base. Esto hace posible la especializacin de los mtodos sin obstaculizar el mecanismo de utilizacin genrica conocido como polimorfismo. Lo que no exista hasta el momento era la opcin de redefinir el mtodo y, al tiempo, indicar que no podra redefinirse ms en clases derivadas. Dicho en otras palabras: convertir un mtodo heredado en un mtodo de uso final. Esa posiUna clase de uso final es lo inverso de una clase abstracta, pensada exclusivamente para servir como base de otras y no para crear objetos a partir de ella. Para que una clase fuese considerada abstracta deba obligatoriamente contener al menos un mtodo abstracto, sin implementacin, algo que tambin ha cambiado en esta nueva versin. Ahora podemos hacer abstracta cualquier clase simplemente aadiendo el modificador abstract en la definicin:
ClaseAbstracta = class abstract

<<dotNetMana
42

<< dnm.lenguajes.net
Miembros de clase
En la plataforma .NET cualquier clase puede contar con miembros de clase, tambin conocidos como miembros estticos. Estos miembros, que pueden ser variables, propiedades y mtodos, pertenecen a la clase en s, no a los objetos que pudieran crearse de ella. Para utilizarlos se dispone el nombre de la clase y, a continuacin, el nombre del miembro. En la biblioteca de clases .NET existen clases compuestas exclusivamente de miembros estticos y que son de uso final, ofreciendo servicios para los cuales no es necesario crear objetos previamente. Object Pascal cuenta con la nocin de mtodos de clase, pero su implementacin al nivel del compilador es distinta de los miembros estticos de una clase .NET. No exista, hasta el momento, la posibilidad de definir variables y propiedades de clase. En esta nueva versin los mtodos de clase .NET se denominan mtodos estticos de clase, definindose mediante la adicin de la palabra clave static al final. Las variables de clase se definen en apartados class var, equivalentes a var pero cuyos miembros pertenecern a la clase, y las propiedades de clase simplemente anteponiendo la palabra class, como puede verse en el siguiente fragmento de cdigo. Object Pascal es la posibilidad definir unos tipos dentro de otros, es decir, tipos anidados. Una clase, por ejemplo, podra contener la definicin de otra clase, que sera o no accesible desde el exterior dependiendo de la visibilidad que tenga. La definicin de un evento en Delphi 8 contempla la necesidad de la multidifusin, algo habitual en la plataforma .NET. Un mismo evento puede estar vinculado a varios mtodos, de tal forma que todos ellos se ejecutaran en el momento en que se genere dicho evento. Para dar cabida a esta nueva necesidad, la definicin de un evento Un concepto novedoso introducido en la plataforma .NET es la posibilidad de asociar atributos a los tipos y sus miembros, datos que se convierten en meta-informacin que se almacena en los ensamblados conjuntamente con el cdigo y puede recuperarse posteriormente con el mecanismo de reflexin. La sintaxis con la que se usan los atributos en Delphi 8 es prcticamente idntica a la de C#, situndose entre corchetes delante del elemento al que se asociar. Por ltimo, tambin hay que mencionar los elementos del lenguaje que han desaparecido por ser totalmente incom-

// Clase TPunto con algunos operadores sobrecargados TPunto = class strict private FX, 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; // Implementacin del operador de suma class operator TPunto.Add(A,B: TPunto): TPunto; begin // Creamos un nuevo objeto con coordenadas // suma de los dos puntos result := TPunto.Create(A.X+B.X,A.Y+B.Y); end;

MiClase = class sealed private class var Variable: Integer; // una variable de clase public class procedure Metodo; static; // Mtodo esttico de clase // Propiedad de clase class property Propiedad: Integer read Variable write Variable; end;

Esta clase, de uso final, tiene una variable de clase, un mtodo esttico de clase y una propiedad de clase, de tal manera que podra utilizarse completamente usando la sintaxis MiClase.Metodo o MiClase.Propiedad, sin tener que crear objeto alguno.

Otra de las novedades que incorpora la nueva versin del compilador de

<<dotNetMana
43

Otras novedades y cambios

sustituye los apartados read y write, utilizados hasta ahora, por add y remove, y la asignacin directa de un mtodo a un evento por los procedimientos Include y Exclude. En una clase adems de variables, mtodos, propiedades y eventos tambin es posible ahora definir operadores. La sobrecarga de operadores facilita la ejecucin intuitiva de ciertas operaciones. La sintaxis general queda resumida en el siguiente fragmento de cdigo:

patibles con la plataforma .NET, entre los cuales destacaramos el operador @, la directiva absolute, los tipos Pointer y PChar, el tipo Real48, los archivos tradicionales de Pascal file of tipo o los procedimientos de gestin de memoria como GetMem y FreeMem. Todos ellos tienen un tipo o mecanismo equivalente o similar en la plataforma .NET. Como puede apreciarse, los cambios sufridos por el lenguaje Object Pascal en su adaptacin al universo .NET han sido muchos y, algunos de ellos, importantes. Se han descrito los que el autor ha considerado de mayor relevancia pero sin nimo de ser exhaustivos. En la cartera quedan otros temas, quiz de uso menos habitual, como las clases que actan complementando a otras (class helpers), alguna directiva nueva como $AUTOBOX o el operador & para poder usar como identificadores palabras que son reservadas en Object Pascal.

Por ngel Esteban


Software Architect Alhambra-Eidos

Configuracin de varios sitios Web en IIS 6.0 con una misma direccin IP
En el presente artculo se va a comentar cmo configurar el servidor Web que nos ofrece Windows Server 2003 para disponer de mltiples sitios Web con una misma direccin IP. Esto nos va a suponer un ahorro considerable de direcciones IP. El mecanismo que nos va a permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host, y es el concepto que pasamos a explicar a continuacin.

<< Existe la posibilidad de utilizar la misma direccin IP

entre diferentes sitios Web. Esta situacin en la que varios sitios Web comparten una misma direccin IP se denomina multihosting (hospedaje mltiple o servidor multisitio). Con un solo equipo y una instalacin del servidor Web IIS 6.0 (Internet Information Services) puede dar la impresin de que disponemos de mltiples equipos, con un sitio Web distinto en cada mquina, cuando en realidad pueden estar en la misma. Esta caracterstica de servidor multisitio es bastante interesante para los proveedores de servicios de Internet, ya que podr ofrecer a cada cliente un nombre de dominio que tendr asociado una direccin IP distinta. Tericamente se pueden crear un nmero ilimitado de sitios Web dentro de un mismo servidor. En IIS 6.0 tenemos dos opciones a la hora hospedar diferentes sitios Web: Asignar varios nombres de dominio y direcciones IP a una tarjeta adaptadora de red, es decir, una direccin IP distinta para cada sitio Web. Utilizar una nica direccin IP en una tarjeta de red y asignar varios nombres de dominio a la misma direccin, cada nombre de dominio se corresponder con un sitio Web diferente. En este caso a una misma direccin IP le corresponden varios sitios Web (multihosting). Un sitio Web va a distinguirse atendiendo a la combinacin de tres parmetros: Una direccin IP. Un nmero de puerto. Un encabezado de host.

Una vez que hemos utilizado el encabezado de host dentro de IIS ya no podemos utilizar la direccin IP del servidor Web para acceder al sitio Web predeterminado de dicho servidor

<<dotNetMana

El encabezado de host (host header name) es el nombre con el que los usuarios conocen el sitio Web, es decir, se corresponde con el nombre de dominio asociado a un sitio Web, por ejemplo www.dotnetmania.com es el encabezado de host del sitio Web de esta revista. Cuando un cliente solicita una pgina a travs del navegador Web la cabecera de peticin HTTP correspondiente contendr, adems de la direccin IP de la mquina, el nombre de dominio que aparece en la URL. Esa informacin es detectada por el servidor Web e interpretada de forma conveniente para determinar qu sitio Web ha demandado el cliente, de esta forma se podr diferenciar los sitios Web que tienen asignados una misma direccin IP. Se debe recordar que para poder utilizar un nombre de dominio lo debemos registrar en el sistema de

44

<< dnm.servidores.iis
nombres de dominio (DNS, Domain Name System) a travs de un servidor de nombres. El encabezado de host es una caracterstica ofrecida por el protocolo HTTP 1.1, por lo tanto los navegadores que se conecten a nuestro servidor tambin deben soportar esta caracterstica, que nos permitir distinguir entre los diferentes sitios Web asociados a una misma direccin IP. El encabezado de host es soportado por los navegadores Internet Explorer y Netscape Communicator a partir de sus versiones 4.0. Los navegadores ms antiguos no soportan los encabezados de host, por lo tanto, en el caso de que varios sitios Web compartan la misma direccin IP, el servidor Web no podr determinar a qu sitio Web quiere acceder el usuario, ya que no ha enviado la informacin que identifica el nombre del sitio Web (nombre de dominio) al que se quiere acceder. En estos casos lo recomendable es actualizar la versin del navegador Web. nmero de puerto y que se distingan por el encabezado de host.

Configurando el sitio Web


La herramienta de configuracin de IIS 6.0, es decir, el Administrador de Servicios de Internet (Administrador de Internet Information Services) nos ofrece la posibilidad de realizar la configuracin de los encabezados de host para nuestro sitio Web. Esto nos lo permite hacer a travs de la hoja de propiedades de sitio Web. Al dilogo de identificacin avanzada de sitio Web llegamos desde la hoja de propiedades del sitio Web pulsando el botn Avanzadas. En el dilogo que aparece en la siguiente figura se nos permite configurar el encabezado de host, as como la direccin IP y el nmero de puerto del sitio Web.

Figura 2. Especificando el encabezado de host

cin IP ni en el encabezado de host, automticamente el servidor Web mantendr este sitio Web detenido hasta que no se haya subsanado el error. El encabezado de host tambin lo podemos indicar a la hora de crear un nuevo sitio Web. En el segundo paso del asistente de creacin del sitio Web aparece una caja de texto en la que podemos especificar este dato, tal como se puede apreciar en la figura. Por defecto el encabezado de host aparece en blanco.

Utilidad del encabezado de host


Ya sabemos que un sitio Web dentro de IIS 6.0 viene definido por la combinacin de tres parmetros: direccin IP, nmero de puerto y encabezado de host. Para que un sitio Web se distinga de otro debe diferenciarse en al menos en uno de los parmetros citados anteriormente. Los sitios Web pueden compartir dos cualesquiera de sus tres componentes de identidad con otros sitios Web, siempre y cuando se diferencien en el tercero. De esta forma dos sitios Web pueden tener el mismo encabezado de host y la misma direccin IP pero distinto nmero de puerto. Si asignamos a un sitio Web un nmero de puerto distinto del estndar (el puerto 80), nuestros clientes debern escribir el nmero de puerto en la URL. De las mltiples combinaciones que pueden surgir a la hora de albergar distintos sitios Web, la ms interesante puede ser la de sitios Web que compartan la misma direccin IP y el mismo

Figura1. Identificacin avanzada de sitio Web Figura 3.Asistente para la creacin de un sitio Web

<<dotNetMana
45

En este dilogo se ofrecen una serie de botones, Agregar, Quitar y Modificar que nos permiten cambiar las diferentes configuraciones de identificacin para el sitio Web, cuando pulsamos alguno de estos botones aparece otro dialogo, como el de la siguiente figura, que nos permite modificar o aadir las propiedades que van a identificar de forma nica un sitio Web. Tambin es posible indicar el nmero de puerto SSL en el caso que se utilicen conexiones seguras. Si se modifica la configuracin de un sitio Web y entra en conflicto con otro existente, es decir no se diferencian ni en el nmero de puerto ni en la direc-

Una vez que hemos utilizado el encabezado de host dentro de IIS ya no podemos utilizar la direccin IP del servidor Web para acceder al sitio Web predeterminado de dicho servidor. Si queremos hacer esto debemos asignar la direccin IP del servidor a un sitio Web determinado como si fuera un encabezado de host, es decir, el encabezado de host sera la propia direccin IP y no un nombre de dominio. Con este apunte finaliza este artculo que espero sea de gran utilidad a la hora de configurar servidores Web con Internet Information Services.

Por Pedro Gmez


Alhambra-Eidos

Particiones de Directorio de Aplicaciones


Active Directory en Windows 2003 permite la creacin y configuracin de una nueva particin de directorio llamada Particin de Directorio de Aplicaciones. Esta particin se replica slo en los controladores de dominio determinados y siempre que ejecuten Windows 2003.

<< Las aplicaciones y los servicios podrn utilizar esta par-

ticin como base de datos y utilizar as las ventajas que ofrece Active Directory. Los miembros del grupo de administradores del Enterprise pueden crear y administrar dichas particiones. 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. Slo con los controladores de dominio especificados! Con lo cual, replicaremos en los controladores que nos resulten localmente ms tiles. Otra ventaja es que las aplicaciones y los servicios que utilizan LDAP podrn seguir utilizando este protocolo para almacenar datos y acceder a los mismos. Al igual que una particin de dominio, la particin de aplicaciones forma parte del espacio de nombres del bosque y sigue la misma nomenclatura. Sus tres posibles ubicaciones en un bosque seran: Nuevo rbol de bosque

rbol secundario de una particin de directorio de aplicaciones rbol secundario de una particin de directorio de dominio KCC (Generador y Comprobador de Topologa de Rplica) mantiene automticamente la topologa de replicacin de todas las particiones y mantiene la misma programacin de rplica que las particiones de dominio. Tambin est la ventaja de que los objetos almacenados en una particin de directorio de aplicaciones no se replican al Catlogo Global. El motivo es evitar que las consultas LDAP a distintos Catlogos Globales no devuelvan datos incoherentes.

Creacin de una particin de Aplicacin


1. Abrimos Smbolo de Sistema y ejecutamos ntdsutil 2. Escribimos domain management 3. Desde domain management, escribimos connection 4. Desde connection, escribimos connect to server nombreservidor 5. Desde connection, escribimos quit 6. Desde domain management, podemos hacer lo siguiente: Para crear una particin escribimos: create nc particindirectorioaplicaciones controladordedominio Para eliminar una particin escribimos: delete nc particindirectorioaplicaciones

46

<<dotNetMana

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

<< dnm.servidores.windows
nar la ltima rplica de una particin de aplicaciones ya que podemos perder los datos que estn en esa particin definitivamente.

Mostrar la informacin sobre una Particin del Directorio de Aplicaciones


Figura 1. En el ejemplo, creamos una particin de directorio de aplicaciones llamada test y que se va a ubicar en un dominio llamado exchange2003.aes. El parmetro null sirve para especificar que queremos crear dicha particin en el controlador al cual estamos conectados. Si no, tendremos que escribir el nombre DNS del controlador de dominio

1. Abrimos Smbolo del Sistema y escribimos ntdsutil

Otra ventaja es que las aplicaciones y los servicios que utilizan LDAP podrn seguir utilizando este protocolo para almacenar datos y acceder a los mismos.
Figura 2. En el ejemplo, aadimos una rplica de la particin test a un controlador de dominio llamado exchange2.exchange2003.aes

Agregar o eliminar una Rplica de una Particin de Directorio de Aplicaciones


Una rplica es una instancia en otro controlador de dominio. Los pasos a seguir son los siguientes: 1. Abrimos Smbolo del Sistema y escribimos ntdsutil 2. Escribimos domain management 3. domain management, escribimos connection 4. Desde connection, escribimos connect to server nombreservidor 5. Desde connection, escribimos quit 6. Desde domain mangement podemos hacer lo siguiente: Para agregar una rplica escribimos: Add nc replica particindirectorioaplicaciones controladordedominio

Figura 3

Para eliminar una rplica escribimos: Remove nc replica particindirectorioaplicaciones Para aadir o eliminar una rplica, podemos utilizar tambin el comando null. Debemos tener cuidado al elimi-

<<dotNetMana
47

2. Escribimos domain management 3. Desde domain management, escribimos connection 4. Desde connection, escribimos connect to server nombreservidor 5. Desde connection, escribimos quit 6. Desde domain mangement escribimos list

<< dnm.servidores.windows

Tambin est la ventaja de que los objetos almacenados en una particin de directorio de aplicaciones no se replican al Catlogo Global

Figura 4

Al crear la zona nos aparecer la opcin de la figura 5. Tambin, mediante la lnea de comandos se puede implementar de la siguiente manera: 1. Abrimos Smbolo de Sistema 2. Escribimos: dnscmd nombreservidor /createbuiltindirectorypartitions /Domain/Forest/AllDomains nombreservidor es el nombre DNS del Servidor DNS y es obligatorio. createbuiltindirectorypartitions Crea una particin de directorio de aplicaciones predeterminada. /Domain Crea una particin de directorio de aplicaciones DNS predeterminada para todo el dominio donde se encuentra el servidor DNS especificado. /Forest Crea una particin de directorio de aplicaciones DNS predeterminada para todo el bosque donde se encuentra el servidor DNS especificado. /AllDomains Crea una particin de directorio de aplicaciones DNS predeterminada de todo el dominio en un servidor DNS de cada dominio del bosque. El parmetro nombreservidor se omite para /AllDomains ya que el equipo en el que se ejecute este comando debe unirse a un dominio del bosque en el que se desean crear todas las particiones de directorio de aplicaciones predeterminadas de todo el dominio.

Figura 5

En el servidor DNS se habr creado la zona correspondiente a la particin. De no ser as, se puede crear manualmente desde la consola de DNS. Ver figura 4.

Se libera la Beta 1.0 de SharpDevelop: Fidalgo


SharpDevelop Fidalgo (beta 1 de SharpDevelop) ya est terminado y ya est en el modo de slo corregir bug. Cuenta con caractersticas como integracin con NUnit, Holding, Assambly Analyzer, C++.NET backend, panel mini visor de clases, conversor VB.NET a C#, mejora de los File Templates y de la importacin/exportacin a Visual Studio .NET. SharpDevelop o #develop es un IDE gratis para proyectos de VB.NET y C# para la plataforma .NET. Es Open Source bajo licencia GPL Ms informacin en: http://www.icsharpcode.net/OpenSource/SD/

Se libera la Beta 1.0 del Proyecto Mono


Tras la adquisicin de Novell, Mono el proyecto del Miguel de Icaza, una implementacin open source del framework .NET para Linux, Unix y Windows. Mono pretende aportar un entorno de desarrollo para Linux con la mayor productividad conocida, permitir a los desarrolladores escribir aplicaciones del lado del servidor, aplicaciones cliente y servicios web y desplegarlos bajo Linux, Solaris, MacOs X, Windows NT/XP y otros sistemas UNIX. Esta es la primera beta de dos previstas antes de publicar la versin definitiva. http://www.go-mono.com/archive/beta1/beta1.html

noticias.noticias.noticias.noticias

<< dnm.opensource.net
por Juanjo Ario

lphant, primer peer to peer bajo .NET


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

proyecto lo hemos desarrollado un << Este grupo de programadores que inicialmente


trabajbamos con C++ y que colaborbamos en el desarrollo de eMule. Las motivaciones iniciales fueron aprender C#, el entorno .NET y comprobar la potencia de .NET en una aplicacin exigente en cuanto a comunicaciones, multihilo, CPU, estabilidad y manejo de memoria. Una aplicacin p2p para la red eDonkey maneja cientos de conexiones simultneas, tanto entrantes como salientes y no slo se limita a TCP sino que usa intensivamente UDP. T odas estas conexiones tienen que sincronizarse para acceder a ficheros o a listas, por lo que las capacidades multihilo hay que explotarlas. Adems, el programa debe de permanecer muchos das sin reiniciarse por lo que se tiene que ser extremadamente cuidadoso con la estabilidad y el consumo de memoria. El uso de la CPU tambin es importante ya que debe de funcionar en background mientras el usuario hace un uso habitual del resto de aplicaciones, sin notar un descenso en su rendimiento (continuamente mientras el ordenador se dedica a otras tareas (por ejemplo reproducir video con buena calidad)). Por otro lado debe tener un interfaz de usuario fcil de usar y un aspecto que no se puede alcanzar con los controles estndar. Antes de aparecer la plataforma .NET, para desarrollar una aplicacin con estos requerimientos la opcin ms lgica era C++. Pero con la llegada de .NET nos pareci buena idea comprobar si puede hacer sombra a C++ en su propio terreno. En el peor de los casos aprenderamos C# y sabramos cuales son sus puntos flacos. Despus de varios meses de desarrollo (al ser GNU, en nuestros ratos libres), de sacar ms de 15 versiones, de contar con ms de 3.000 usuarios simultneos y 70.000 descargas del programa, hemos comprobado que .NET es perfectamente vlido para este tipo de desarrollos. Incluso lphant supera en algunos aspectos a programas escritos en C++ ms trabajados como el eMule.

<<dotNetMana

Teniendo en cuenta que la gran mayora de usuarios de este tipo de aplicaciones no tiene instalado .NET Framework, este tipo de proyectos supone una justificacin para que el .NET Framework se instale en una gran cantidad de ordenadores domsticos. Por nuestra experiencia, la necesidad de instalar .NET Framework no est siendo un inconveniente serio una vez pasada una fase de reticencia inicial dnde tampoco se saba cmo funcionaba el programa. A lo largo del proyecto hemos disfrutado de las ventajas que supone emplear .NET. Particularmente hemos comprobado como no nos hemos tenido que preocupar de los detalles de la implementacin y nos hemos podido centrar en la resolucin del problema. Otra de las virtudes a destacar ha sido el excelente control de excepciones que lleva .NET, por lo que es bastante fcil resolver los bugs que se van encontrando. Adems cuando a algn un usuario le salta una excepcin nos informa con el volcado de pila si necesidad de compilar versiones de debug especiales. Los principales problemas encontrados durante el desarrollo de este proyecto han sido los relacionados con el interfaz grfico (donde, por falta de funciones de .NET se ha tenido que usar la API de Windows) y el manejo de memoria (donde pagamos nuestra falta de experiencia para trabajar con memoria manejada). De cara a los desarrolladores interesados en aprender .NET, el cdigo fuente de lphant puede ser muy didctico ya que cubre muchos e importantes aspectos de la programacin en .NET: Comunicaciones: lphant exprime al mximo la capacidad de comunicaciones de .NET, soportando cientos de conexiones simultneas tanto TCP como UDP Multithreading: lphant maneja una cantidad de threads muy alta que deben de ser sincronizados para acceder a ficheros comunes o a listas (Hashtables, ArrayList,). Modularidad: lphant utiliza la facilidad que

proporciona .NET para hacer aplicaciones modulares mediante namespaces y proyectos separados. Servicios web. El ncleo de lphant es autnomo e independiente del interfaz, de esta manera el interfaz puede funcionar de forma remota, ya que el ncleo expone sus objetos como servicios web que el interfaz consume. Creacin de controles y WinForms. Para el interfaz grfico de lphant se han creado diversos controles, especialmente complejos por la interaccin con la API WIN32 son los controles derivados de ListView creados. Por otro lado lphant dispone de un motor de skins para los diversos controles. XML: lphant demuestra cmo usar archivos XML ya que los usa para la mayora de archivos que necesita, slo en aquellos casos en los que necesita ser compatible con eMule o eDonkey no usa XML. Multilenguaje: lphant tiene un motor multilenguaje propio basado en XML Portabilidad: El ncleo de lphant se compila perfectamente con MONO. Lamentablemente al no estar totalmente soportados los WinForms en MONO no puede decirse lo mismo del interfaz. lphant destaca por tener un ncleo al que se accede tanto en local como por acceso remoto mediante SOAP, completamente separado del interfaz grfico. El ncleo de lphant es una librera que expone todas las funcionalidades de la red eDonkey, por lo que cualquiera puede integrar la red eDonkey en sus aplicaciones con muy poco esfuerzo. Invitamos a los desarrolladores interesados en el proyecto a colaborar o a aprender con un programa muy divertido de desarrollar. En el foro de desarrollo de la pgina web de lphant damos soporte a la gente interesada en el cdigo y que desea saber cmo funciona. Para ms informacin http://www.lphant.com

50

dnm.comunidad.net

<<

dnm.comunidad.net

Un veterano a la ltima
La XI convocatoria del Master Eidos en Tecnologas Avanzadas para el Desarrollo de Software << Pocos programas formativos
para desarrolladores tienen tanta solera como el Master Eidos en Desarrollo de Software. En el curso 2004/2005 entra en su undcima convocatoria. Son once aos formando a lo ms granado de los programadores de nuestro pas y de Latinoamrica. Fundamentalmente centrado en las tecnologas de desarrollo de Microsoft, viene haciendo de la programacin en .Net su asunto troncal desde hace ya tres aos, de hecho la aparicin de la novena edicin (curso 2002/2003) prcticamente coincidi con el lanzamiento al mercado de Visual Studio .Net. Para que nos hablen de la versin prevista para el curso 2004/2005 nos hemos reunido con algunas de las personas que en Alhambra-Eidos mantienen algn tipo de responsabilidad sobre dicho curso, y que adems son colaboradores habituales de este medio: Luis Miguel Blanco: Coordinador y autor de una buena parte de los contenidos del Master, as como tutor de la versin virtual. Pepe Hevia: Instructor de la versin presencial y creador destacado del material didctico. Marino Posadas: Coordinador de muchas de las once versiones realizadas hasta ahora, instructor en ambas modalidades, autor de documentacin y Microsoft MVP en 2003 y 2004 (.Net Framework y Visual C#, respectivamente). Y por ltimo, Antonio Quirs, que realiz el primer diseo del Master all por el ao 93 y hoy continua ayudando en la adecuacin programtica que cada ao se realiza. dnm: Podrais hacernos una breve resea histrica de vuestro Master. Antonio Quirs: Bueno, si no hay ms remedio nos remontaremos a la prehistoria (risas). All por 1992 comenz a cobrar vida el rea de formacin de la entonces denominada Grupo EIDOS. Nuestro mbito de especializacin, cliente/servidor. Como una consecuencia natural derivamos hacia Visual Basic y SQL Server. Ms tarde fue la programacin web, luego XML y los servicios web. Este ao en Alhambra-Eidos nos hemos decantado por la programacin para dispositivos mviles. En fin que cada convocatoria tiene su leit motiv y a poco que analicemos los temaAntonio Quirs, General Area Manager de Alhambra-Eidos rios de las once convocatorias hasta ahora realizadas caeremos en como muchos recordarn, era Clipper. que estamos analizando la historia tecImpartamos seminarios, cursos, confenolgica del desarrollo de software en rencias, etc. En seguida nos planteamos los ltimos once aos. el diseo de un programa de ms calaTodo esto, por supuesto, en cuanto do que sirviera para reglamentar y proa lo tecnolgico. Si nos centramos en fundizar en el conocimiento de los prolos aspectos organizativos es de destagramadores que, por aquel entonces, an car tambin que el Master pasa por dos mantenan una fuerte composicin autoetapas claramente diferenciadas. Una

Tampoco podamos permanecer ajenos a la aparicin de SQL Server Reporting Services. Consideramos que esta es una de las ms importantes noticias para el mundo del desarrollo y, por tanto, tenamos que darle cabida en nuestros programas
didacta en sus perfiles. Exista un enorme dficit en el conocimiento de la orientacin a objetos y, yo creo que desde entonces eso centraba nuestra propuesta formativa. As surgi la primera convocatoria. Luego vino Windows y el primera es la que se produce desde 1993 a 1997 en que slo se realizan versiones presenciales y otra segunda que acaece desde 1998 donde ponemos en circulacin las primeras ediciones virtuales y mixtas. En los primeros aos los temas

<<dotNetMana
51

<< dnm.comunidad.net
no profundizar en un tipo de conocimientos. Por otro, los cursos tutorizados suponen que no solo vas a seguir un manual fijo y previsto para tu progreso, sino que si -como muchas veces pasa- te atascas, un profesor asociado a cada mdulo puede darte respuestas tanto en lnea como en diferido. Y, por supuesto, no nos olvidemos de la revista Algoritmo, donde se publican artculos de calidad sobre novedades tecnolgicas, que suponen una avanzadilla y una nota de atencin sobre posibles opciones a seguir en un futuro cercano. Son casi 10 aos de publicaciones desde que Algoritmo estaba en papel, y todava se la sigue considerando un producto referente para miles y miles de desarrolladores y profesionales de las TIC. Finalmente, si adems queremos algn manual a bajo precio para leer en el metro, La Librera Digital completa perfectamente este panorama. dnm: Fuisteis de los primeros en abordar el formato eLearning de modo serio para este tipo de programas formativos. Cmo valoris estos aos de trabajo al respecto? Luis Miguel Blanco: Ha resultado en una experiencia francamente positiva. Ser pionero te otorga una ventaja enorme si organizas una buena estructura formativa, marcando la pauta al resto que todava no ha empezado. De esa manera te conviertes en el espejo en el que se miran todos aquellos que se propongan acometer un proyecto similar al tuyo. Por supuesto que esta situacin te obliga a tener que trabajar ms, ya que para gran parte de los procesos a desarrollar, lase elaboracin y organizacin de los contenidos, sistemas de evaluacin, establecimiento de relaciones con el alumnado, etc., debes permanecer en constante innovacin, puesto que no hay nadie todava que haya realizado nada similar. Sin embargo, y volviendo al punto anterior, abonas el terreno para los dems y eso supone un elemento posicionador muy importante en el mercado de acciones formativas eLearning. Centrndome ya en la parte de ele-

Marino Posadas, Software Architect de Alhambra-Eidos

<<dotNetMana

tecnolgicos y acadmicos primaban sobre los dems. Desde 1998 hay tambin una fuerte componente logstica en toda la labor previa al lanzamiento. En este momento se alternan las tres mecnicas de organizacin y podemos decir con orgullo que todos los aos liberamos al mercado tanto titulados que han hecho el Master en su versin presencias como en las virtual o mixta. Respecto al alumnado tambin aparecen cambios histricos curiosos. Los primeros asistentes procedan casi exclusivamente del mundo profesional. Su afn era reciclarse tecnolgicamente, estar a la ltima, poder llegar a tecnologas que sus empresas les demandaban. Ms tarde se realiz la incorporacin del mundo universitario. Algunos alumnos venan a realizar el Master como un estudio de postgrado que les permitiera ganar puntos curriculares, ya que nuestro producto siempre ha gozado de un amplio prestigio empresarial. Por ltimo, hay que resear que tras la adecuacin realizada el ao pasado para adecuar los contenidos del Master para que pudieran servir de base en la obtencin de la certificacin MCAD, el alumno que busca la obtencin de dicha certificacin se ha incorporado tambin a nuestra peculiar fauna. dnm: Qu asunto consideris que en este momento es el principal valor aportado a la colectividad de desarrolladores? Marino Posadas: Creo que existen varios valores aadidos. Por un lado, la existencia de manuales on-line que permiten un primer acercamiento a una tecnologa e incluso decidir si queremos o

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

En este momento se alternan las tres mecnicas de organizacin y podemos decir con orgullo que todos los aos liberamos al mercado tanto titulados que han hecho el Master en su versin presencial como en la virtual o mixta

52

<< dnm.comunidad.net
mentos que componen la oferta formativa de Alhambra-Eidos, creo que hemos conseguido combinar armoniosamente todas las tecnologas a nuestra disposicin para lograr una relacin tutoralumno altamente cercana a la presencial. Uno de los ms importantes recursos lo compone el uso de nuestros videoseminarios, no slo porque ya est implantado, sino porque la evolucin que observamos en las herramientas disponibles para su desarrollo est progresando con un alto grado de calidad, lo que permite comunicar ms informacin al alumno a travs de la combinacin de elementos multimedia: audio, video, diapositivas, texto, etc. dnm: El ao pasado se adecu vuestro Master al temario necesario para preparar la certificacin MCAD, tan valorada por los programadores. Esta puede realizarse a travs de este plan formativo o a travs de los cursos oficiales de Microsoft. Qu diferencia existe? Antonio Quirs: En AlhambraEidos preparamos a los alumnos por ambas tcnicas. Hay que recordar que en Espaa somos el centro de referencia de Microsoft para formar a desarrolladores y el que ms certificados MCAD entrega cada ao. Una y otra son tcnicas adecuadas y con las dos logramos resultados vlidos. La diferencia est en que el Master aporta ms valor aadido, es decir, tiene ms cosas, ensea ms la vertiente prctica. Si adems de aprobar el MCAD quieres profundizar en las tcnicas de desarrollo y en las buenas prcticas a seguir tu programa es el Master. Si lo que quieres es certificarte y, adems te corre prisa hacerlo y no puedes dedicar un ao acadmico, tu programa debe estar basado en los cursos oficiales de Microsoft. dnm: Qu crees que es lo que ms valoran los alumnos de vuestro Master? Marino Posadas: Quiz la organizacin de los cursos en una secuencia de dificultad paulatina, que permite dar pasos seguros en el proceso de aprendizaje. ste se potencia mediante los autotests, garantizando que los pasos anteriores nos han conducido a donde nos encontramos con conocimiento de causa suficiente. Tambin, en las versiones virtual y mixta, citara lo que ahora se llaman espacios de colaboracin, Novedades de la versin para el curso 2004/2005 Un mdulo especfico de Introduccin a la ingeniera de software Un mdulo especfico de Programacin de Dispositivos Mviles con Visual Studio .Net Ampliacin del mdulo de SQL Server 2000 para dar cabida a Reporting Services Actualizacin de todos los mdulos de Java para dar cabida a las novedades de dicho mundo como los foros, la cafetera, el Tabln de Anuncios. Dichas reas permiten tener la sensacin de que realmente existe un colectivo paralelo a donde dirigirse, existiendo un grupo de personas con las mismas inquietudes y necesidades que nosotros. dnm: Qu te planteas cuando diseas y confeccionas el material que luego formar cada uno de los mdulos del Master? Pepe Hevia: Ante todo, la ilusin de poder proporcionar al usuario del mdulo todos los conocimientos posibles, de cara a facilitar que la asimilacin de todos los conceptos que se tratan en el curso le resulte una experiencia asequible y agradable. Para ello se introducen tambin otro tipo de nociones ajenas al master, pero que en cierto modo puedan verse relacionadas indirectamente con l -lo cul implica conocer, estudiar, investigar todos esos elementos y saber relacionarlos-. De esta manera el alumno puede entender toda la temtica, dentro del contexto en que se va a aplicar y siempre desde la perspectiva de romper los mitos. Mi misin radica en hacerlo tan prctico y claro como sea posible -por mucho trabajo que esto lleve- y tan ameno como me gustara que me contaran las cosas: con humor, ejemplos de la vida real, etc. Todo ello sin perder de vista el rigor, la seriedad y la responsabilidad que todo este proyecto conlleva, por supuesto. dnm: Qu novedades aporta la versin para el curso 2004/2005 Antonio Quirs: Este ao es un poco curioso. En otras ocasiones hemos actualizado en el sentido de quitar unas cosas y poner otras. Sin embargo para el curso 2004/2005 slo hemos ampliado, es decir que estamos ante una versin, como se dice literariamente, corregida y aumentada. A nuestro programa del ao pasado, ya fuertemente actualizado y estructurado a travs de la nocin de servicios web, le hemos aadido varias cosas. En primer lugar, un mdulo dedicado a introducir en el mbito de la ingeniera del software. El perfil del desarrollador cada vez es ms alto y, por tanto, queremos huir de un programa solo tecnolgico. Tenemos que hablar tambin de arquitectura, de metodologas, de gestin de proyectos, de aseguramiento de la calidad, etc. Asimismo, hemos introducido un mdulo de programacin de dispositivos mviles con Visual Studio .Net. Consideramos que este es el entorno hacia el que hoy todos los desarrolladores deben girar la vista, ya que si an no han tenido la oportunidad de hacer alguna aplicacin al respecto, les faltan dcimas de segundos para que sus jefes les hagan caer el correspondiente marrn. As, pues, desde la ptica de siempre, es decir la arquitectura multicapa ahora cubrimos la capa de interfaz con tres niveles diferentes: Windows, Web y dispositivos de movilidad. Tampoco podamos permanecer ajenos a la aparicin de SQL Server Reporting Services. Consideramos que esta es una de las ms importantes noticias para el mundo del desarrollo y, por tanto, tenamos que darle cabida en nuestros programas. Para hacerlo hemos ampliado nuestro curso de SQL Server 2000 a fin de introducir dicha tecnologa. Por ltimo, y aunque eso es menos interesante para los programadores que trabajan con herramientas Microsoft, hemos actualizado tambin los contenidos de los mdulos de Java para dar cabida a las novedades que en dicho mundo se han producido en los ltimos tiempos.

<<dotNetMana
53

<< dnm.biblioteca.net

dnm.biblioteca.net

Moving to VB .NET: Strategies, Concepts, and Code Daniel Appleman


Editorial: A!Press Pginas: 560, Rstica Publicado: Junio 2001 ISBN: 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 de Windows hace varios aos en una obra clsica. Ahora, vuelve a la carga con VB.NET donde ms que una revisin del producto, nos muestra su propia visin del mismo.

<<
54

Contrasta con la anterior versin, recomienda estrategias, anuncia posibilidades y enumera los cambios ms importantes, en una obra que podramos llamar comparativa, de la que cabe destacar, adems, el estudio en profundidad de los cambios debidos a la presencia de Programacin Orientada a Objetos, las capacidades Multiproceso, la interaccin con COM+ y la forma en que .NET gestiona la memoria. Es una obra que se lee mejor ahora que en el momento de su aparicin, cuando ya se conoce el producto y el lenguaje, y puede apreciarse mejor su perspicacia.

Code:The Hidden Language of Computer Hardware and Software Charles Petzold


Editorial: Microsoft Press Pag.: 393, Rstica Ao: Noviembre 1999 ISBN: 073560505X Una obra curiosa, cuanto menos. Analiza en trminos sencillos muchos de los fundamentos de la informtica (hardware y software), y va avanzando en complejidad desde el cdigo Morse a las interfaces de usuario visuales. Es la obra de 10 aos de reflexin segn sus propias palabras en el prefacio que el autor de Programacin en Windows, y Programacin en Windows 95, public hace 3 aos para recoger toda una vida de experiencia docente y divulgadora de estos mundos. Recorre los inicios, incluso remontndose al siglo IXX, revisa los logros ms importantes de los pioneros de la informtica del siglo pasado, y revisa desde los fundamentos conceptos archisabidos (Puertas lgicas, ASCII, Coma flotante), de los que siempre sabe entresacar la visin clara y explicativa de quien ha conocido la informtica en profundidad y se plantea ahora explicarla con palabras sencillas. Para nostlgicos, pero tambin para novatos.

<<dotNetMana

Por Marino Posadas


MVP Visual Developer C# Alhambra-Eidos www.elavefenix.net

Entrevista a Carlos Heras


Carlos Heras es Alliances & Indirect Sales Manager de Borland Ibrica que junto a Nstor Miranda, Director General lleva al frente de Borland en Espaa desde sus inicios. Aprovechando la celebracin del Borland Days el pasado mes de mayo hemos querido conversar con l especialmente para que los ms viejos recordemos nuestros tiempos de programadores en Turbo Pascal en DOS.

<< Borland lleva

<<dotNetMana
55

ya una larga trayectoria desde Turbo Pascal, pasando por Delphi y la serie de los Builder en la actualidad. Cmo definiras la estrategia de Borland en estos momentos? Actualmente Borland no slo ofrece herramientas de desarrollo, como siempre ha hecho, sino que su estrategia actual se centra en ofrecer una solucin completa de desarrollo de ciclo de vida de las aplicaciones (ALM), tanto para .NET como para J2EE. Esto quiere decir que el foco para Borland en estos momentos es el equipo de desarrollo al completo que necesitan herramientas de gestin de requisitos, anlisis y diseo, codificacin, pruebas, despliegue y gestin de cambios y configuracin. Enlazando con la pregunta anteriory de acuerdo con las previsiones que s que tenis- sobre crecimiento, pensis que en Espaa ese crecimiento va a materializarse en alguna iniciativa concreta? En concreto en Espaa ya se ha materializado en varias compaas que han adoptado la solucin completa de Borland, y como es lgico estamos trabajando para ampliar el numero de compaas que lo adopten en los prximos meses. Qu es eso sobre Borland y la Suiza del Software?

Es un ejemplo muy explicito que usamos cuando queremos explicar la neutralidad de Borland que ofrece soluciones en todas las plataformas y lenguajes. En la actualidad, parece claro que existen dos plataformas de desarrollo que aglutinan a la mayor parte de los usuarios: J2EE y .NET. Cmo se ubica Borland y cules son sus planes de soporte futuros? Borland es consciente de ello y por eso proporciona la misma solucin para ambas plataformas. Pero adems, tenemos un producto, Borland Janeva, que ofrece interoperabilidad entre .NET y J2EE a travs de RMI sobre IIOP. Con este producto es posible conectar componentes .NET con servidores de aplicaciones J2EE sin necesidad de utilizar Web Services, lo que en ciertos casos supone un nivel mayor de seguridad. Respecto a la construccin misma de las aplicaciones, me consta que Borland ha publicado herramientas que pretenden cubrir el ciclo completo de

desarrollo. Puedes hablarnos algo ms de esto? Incluye eso la parte de instalacin de aplicaciones? Como he comentado anteriormente la estrategia de Borland es precisamente ofrecer una solucin que cubra el ciclo completo de desarrollo de aplicaciones, tanto para J2EE como para .NET. Las dos caractersticas principales de la solucin de Borland son la integracin y la modularidad. Integracin en cuanto que todas las fases del ciclo deben estar integradas para en cualquier momento poder volver atrs, modificar algo, y ver que consecuencias tendrn esas modificaciones en el desarrollo de la aplicacin. Y modularidad en el sentido de poder

<< dnm.directo.entrevistas
consecuencias que su marcha pueda ocasionar hay que tener en cuenta que en Borland se trabaja por equipos y que la salida de una persona, por muy valida que sea, no tiene por que suponer una merma de la productividad del equipo. Cuantos desarrolladores de Delphi estimis que habr actualmente en el mundo? Borland tiene ms de dos millones de usuarios de sus herramientas Windows. Evidentemente, una parte muy importante de esta cifra es de desarrolladores Delphi. Tambin tenemos ms de un milln en herramientas Java, y claro, la mayor parte de stos son usuarios JBuilder. Cmo afrontis la localizacin de vuestros productos? El proyecto de localizacin se lidera en USA para todo el mundo y luego se trabaja con agencias locales. En el caso de Espaa se traduce nicamente para Espaa debido a las diferencias entre el castellano que se habla aqu y el que se habla en Amrica Latina. En Amrica Latina se utiliza la versin inglesa. Borland ibrica distribuye sus productos a travs de mayoristas como Ingram Micro y GTI, pero tambin de minoristas como Danysoft que, sin embargo, parecen tener una estrecha relacin con vosotros. La gran diferencia es que Danysoft da un gran valor aadido que nosotros estimamos muchsimo y esto hace que, efectivamente, nuestra relacin con ellos sea muy estrecha. En cualquier caso mantenemos una estrecha relacin de ms de 15 aos con Ingram Micro y GTI. Pero claro, Danysoft da servicios de formacin, soporte, consultora, etc. y esto es fundamental para nosotros. Y por ltimo, trata de mirar por la bola de cristal, y anticpanos cmo ves el futuro inmediato de la construccin de software Bueno resumiendo un poco creo que el futuro del desarrollo de aplicaciones se va a centrar en dos plataformas, J2EE y .NET, y que cada vez se va a industrializar ms, en el sentido de una mayor utilizacin de herramientas especificas para cada una de las fases del ciclo de vida del desarrollo de las aplicaciones, para construir un software de mayor calidad y en el menor tiempo posible.

<<dotNetMana

sustituir alguna herramienta de Borland por otra de los principales fabricantes que hay en el mercado, sin que ello implique una perdida de integridad entre las distintas fases de desarrollo de la aplicacin. Dentro ya de la parte que nos interesa en esta revista (.NET), Cmo sitas Delphi .NET dentro de el panorama de los lenguajes de la actualidad? Y C# Builder? Os decantis ms por uno que por otro? Delphi para Borland es uno de sus productos estrella, afortunadamente tenemos varios, y su evolucin a .NET creo que es un paso decisivo en la vida de este producto. Para la comunidad de desarrolladores de Delphi supone facilitarles la migracin a la plataforma .NET lo que significa encaminarse al futuro sin abandonar el pasado. Borland C# Builder es un claro ejemplo de la intencin de Borland de ofrecer una solucin para cualquier lenguaje. ltimamente, Blake Stone, Arquitecto Principal de JBuilder se ha incorporado al equipo de desarrollo de Visual Studio .NET. Qu tal os tomis esas deserciones? Crees que son todava secuelas de la marcha de Anders Hejlsberg? Bueno yo no hablara de desercin sino que simplemente Blake ha aprovechado la oportunidad que se le brindaba de mejorar su carrera profesional, y eso es algo que cualquiera hara. Por otra parte es una garanta para el futuro de cara a la buena integracin entre los productos de Microsoft y de Borland, y adems es un reconocimiento explicito del nivel de calidad de los ingenieros de Borland. En cuanto a las

Borland Day acoge durante su primera edicin a ms de 500 participantes


Borland celebr ante ms de 500 asistentes la primera edicin de su macro evento Borland Day. Bajo el lema Potencie su Desarrollo dio a conocer a todos los profesionales involucrados en el proceso de desarrollo de aplicaciones, su definicin, diseo, desarrollo, test, despliegue y gestin de sus soluciones totalmente integradas as como sus nuevas actualizaciones. Junto a sus principales socios estratgicos en Espaa, Borland pretender brindar la mejor solucin en la creacin del software para la empresa. Con ms de 20 ponencias y workshops en tres salas en paralelo destacan las reas ms importantes en el proceso creativo del software: productividad, calidad y movilidad. Durante este encuentro Borland ha aprovechado para mostrar las distintas soluciones para plataformas J2EE,Microsoft.NET, herramientas de definicin y diseo, desarrollos sobre dispositivos mviles, soluciones CORBA, novedades de sus IDEs, JBuilder, Delphi, C++, y sus servicios de consultora, formacin y soporte. Borland incrementa la productividad de las empresas con el mximo rendimiento de las inversiones gracias a su estrategia ALM de gestin del ciclo de vida de las aplicaciones basada en tres cualidades primordiales: flexibilidad, rapidez y libertad de eleccin de la plataforma. Como partners estratgicos Borland Day cont con los lderes ms importantes del sector: Accenture, Bea Systems, HP, Mercury Interactive, Microsoft, Oracle y Telefnica Mviles que mostrarn la integracin de sus productos con la soluciones Borland. En esta jornada todos los profesionales de TI, directores, responsables de proyectos, analistas y desarrolladores, habrn podido ver la nica solucin de desarrollo independiente, basada en estndares y totalmente integrado con los lderes del sector, con la que reducir sus costes y aumentar su productividad asegur Nstor Miranda, Director General de Borland Ibrica.

56

<<

Suscripcin a dotNetMana
Deseo suscribirme a dotNetMana por un ao (11 ejemplares) y beneficiarme de la oferta del 10% de descuento por un importe total de 60 para Espaa; o por 75 para el resto de Europa; o por 90 para el resto del mundo (IVA incluido). Deseo suscribirme a dotNetMana por un ao (11 nmeros) por un importe de 45 por ser estudiante (IVA incluido). Aporto fotocopia del carn de estudiante o sello del centro acadmico (IMPRESCINDIBLE). OFERTA VLIDA SLO PARA ESTUDIANTES RESIDENTES EN ESPAA. IMPORTES VLIDOS HASTA NUEVA OFERTA DATOS DE FACTURACIN CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Direccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poblacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Cdigo Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . . Telfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATOS DE ENVO (slo si son distintos de los datos de facturacin) CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Direccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poblacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Cdigo Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . . Telfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .

FORMA DE PAGO Taln nominativo a nombre NETALIA, S.L. Giro postal a nombre NETALIA, S.L. Transferencia bancaria a nombre de NETALIA, S.L. a: La Caixa Nmero de cuenta 2100 4315 48 2200014696 (Indique su nombre en la transferencia) Domiciliacin Bancaria Indique su nmero de cuenta: Tarjeta de crdito VISA MASTERCARD AMERICAN EXPRESS Nmero de su tarjeta: Fecha de caducidad: / (Imprescindible) Firma y sello (imprescindible) a de de 20

Usted autoriza a la mecanizacin de estos datos. El responsable y destinatario de stos es Netalia, S.L. Usted tiene derecho a acceder a sus datos, modificarlos y cancelarlos cuando lo desee. Sus datos no sern cedidos en ninguna de las formas posibles a terceras partes y no se utilizarn ms que para el buen funcionamiento de su suscripcin a la revista dotNetMania y para informarle de las actividades comerciales que realice la editorial Netalia, S.L. Si no desea recibir informacin comercial de esta empresa marque la casilla siguiente

N1

N2

N3

N4

Enve este formulario por email a la direccin suscriptores@dotnetmania.com, o al fax (34) 91 499 13 64 Tambin puede enviarlo por correo postal a la siguiente direccin:

C/ Robledal, 135 28529- Rivas Vaciamadrid Madrid (Espaa)

<< dnm.desvan

noticias.noticias.noticias.noticias.noticias

Microsoft se centra en la investigacin


Los pasados das 24-26 de Mayo, se celebraron en Barcelona las Jornadas Acadmicas Microsoft Research 2004, segunda edicin de los encuentros MicrosoftUniversidad que reunieron a ms de 200 profesores universitarios y MVPs de diferentes tecnologas. Durante 3 jornadas, algunos de los ms sobresalientes investigadores y divulgadores de tecnologas Microsoft plantearon el estado del arte, bajo el epgrafe Docencia e investigacin en un mundo de Aplicaciones Orientadas a Servicios, pudimos escuchar a: Rosa M. Garca, Stephen Emmott, Rafal Luckawiecki (A Subjective View of Next Decade in IT), Ivan Medvedev (Security Framework on the CLR, future developments and Security at Microsoft), David Carmona (Nueva generacin de aplicaciones orientadas a servicios Indigo, WS*), Adam Wiener (Microsoft Data Access current and future: import/export data from SQL Server as XML and an introduction to ObjectSpaces), Fernando Guerrero (SQL Server Yukon - nuevas necesidades de los sistemas de informacin), Hugo Zaragoza (Combinando Information Retrieval y Machine Learning en investigacin), Catherine Heller (Nueva generacin de herramientas de desarrollo con Visual Studio .NET Whidbey), Pablo Rodrguez (Distribucin de contenidos en redes de datos mviles e inalmbricas), 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 weve achieved and where were going). La mayor parte de ellos, trabaja en alguno de los centros de investigacin que Microsoft mantiene en Redmond, Beijing (China) o Cambridge (Reino Unido), o son conocidos divulgadores de tecnologas. Adems de esta iniciativa, algunas noticias se hacen eco de las novedades que la compaa quiere implantar de cara a las bsquedas en Internet: posibilidad de bsquedas personalizadas y configurables de forma simple, epgrafes como Cosas que he buscado antes, Cosas que podran ser interesantes (en funcin de preferencias del usuario), o extender el concepto de bsqueda a cualquier objeto contenedor (documento, correo, fichero, etc.).

Longhorn

Marino Posadas

No obstante si de un producto puede decirse que aglutina un conjunto de novedades fruto de la investigacin, ese es la nueva versin del S.Operativo (Windows Longhorn, ya anunciado de forma oficial para 2006 y su versin de servidor para 2007), que no slo se ha rehecho desde cero, sino que no para de sorprendernos con nuevos apuntes sobre su arquitectura. En este caso, se trata de su modularidad. A diferencia de las versiones anteriores, en que el producto se presentaba en diferentes versiones (Home/Professional para XP y Web, Standard, Enterprise o Datacenter para el servidor), Longhorn podr configurarse a gusto del usuario, incorporando aquellas partes que se necesiten, agrupadas por roles de actividad, segn anunciaba Jim Livingston en el pasado Windows Hardware Engineering Conference (WinHEC) en Seattle. Sin embargo, en la versin de cliente, ser el vendedor el que podr realizar la seleccin de mdulos a incluir en el sistema. Mark Myers, Senior Program Manager de Longhorn, lo daba a conocer como los bloques de construccin del sistema, que permitirn un tiempo de instalacin de 15 minutos y un montn de nuevas caractersticas en las instalaciones distribuidas y desatendidas.

Ms cdigo abierto de productos Microsoft


Ahora le toca el turno a Windows Template Library, que al igual que sucedi anteriormente con Windows Installer XML, ha sido liberado bajo Common Public License (open-source) y SourceForge Repository, como vehculos de publicacin. Nuevos lenguajes .NET: F#, Zonnon, Delphi .NET y Fortran 95 .NET: La produccin de compiladores para MSIL no cesa. Los ltimos incorporados a la ya larga lista (ms de 30 miembros) son los citados. Para ms informacin, ver: http://www.vsj.co.uk/dotnet/display.asp?id=289

Mercado de fichajes
El hasta ahora CTO de Borland, y arquitecto de JBuilder, Blake Stone, se incorpora a Microsoft en el equipo de desarrollo de Visual Studio .NET 2005 (Dpto. Visual Studio Core). Para ms datos, ver http://msdn.microsoft.com/ vstudio/team/bios/blakes . La sombra de Hejlsberg sigue siendo alargada

Enlaces recomendados
Jasoft
Sitio de Jos Manuel Alarcn, otro asiduo de congresos, autor de varios libros y colaborador habitual de revistas informticas, mantiene este sitio, donde encontrars muchas de sus aportaciones personales http://www.jasoft.org/

utilidades del mes


Gif Optimizer: comprime todos los GIF de un sitio sin reduccin de calidad apreciable (gratis): http://chemware.co.nz/tgo.htm FABER TOYS: Para usuarios que les gusta saber que pasa en su ordenador (gratis): Ejecuta programas Windows sin utilizar el Registro. http://www.faberbox.com/fabertoys.asp

<<dotNetMana

VSJ NET Home (ingls): http://www.vsj.co.uk/dotnet/

58

You might also like