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

NET Framework • Windows Server System

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

SQL Server Reporting Services
WebForm Templates • Distribuir aplicaciones con .Net Remoting • Cambios sufridos por Object Pascal en Delphi 8 .NET • Configuración de varios sitios Web en IIS 6.0 con una misma dirección IP • Particiones de Directorio de Aplicaciones
Universidad Final de la Imagine Cup en España. Open Source lphant, primer peer to peer bajo .NET Comunidades La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de Software Un veterano a la última

dnm.editorial

<<

dnm.editorial

Internet: medio y ámbito <<
Está bien, habrá que explicarlo... He recibido muchas opiniones que me han hecho pensar que la mayoría de los visitantes al sitio en Internet de esta revista piensan, equivocadamente, que dotnetmania.com es la misma cosa que dotNetManía. Cuando compramos, por ejemplo, un ejemplar de una revista impresa a través de Internet, lo pagamos con nuestra tarjeta de crédito, y más adelante llega el cartero a nuestra casa con el sobre correspondiente, habremos usado Internet como un medio más para hacer una transacción. 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 electrónica, lo pagamos con nuestra tarjeta de crédito y lo recibimos en nuestra cuenta de correo electrónico y lo leemos obteniendo permisos desde un servidor DRM, también en Internet, estoy usando a éste como un ámbito, donde todo empieza y termina, no he necesitado de materiales tangibles, ni medios convencionales en ningún momento; de hecho en todo el proceso no habrá intervenido posiblemente ningún ser humano de forma directa. Internet, puramente como ámbito nos trae grandes cosas, y es una gran revolución, no me cabe duda, pero también pone en peligro a las revistas impresas como ésta, y también a los libros tradicionales, e incluso al software, la música, 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 tenían los medios tradicionales. Tenemos la posibilidad de publicar tanto material de apoyo a cada artículo como queramos, incluyendo bibliografía, el sonido original de una entrevista, vídeos, noticias, enlaces a otros artículos similares o páginas relacionadas y, por supuesto, el código de ejemplo, proyectos, utilidades, etc. Un complemento al papel impensable hasta la aparición de Internet. Incluso el CD que acompañaba a las revistas puede quedar en desuso, puesto que desde Internet puede bajar todo lo que un CD contiene pero con la increíble ventaja de interactuar con artículos de otros números, actualizarse con el tiempo y corregir y ampliar todo el material de apoyo tantas veces como se desee. Ésta y no otra es la misión principal del sitio en Internet de dotNetManía. Por supuesto, también sirve para mostrar cómo es la revista, y más teniendo en cuenta que no distribuimos en quioscos, recoger pedidos e informar de cómo son las personas que escriben aquí, etc. En breve, Internet ha de servir también para enviar avisos a los lectores y que también puedan opinar y dejar su opinión sobre los artículos 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 ningún caso dotnetmania.com es un portal o una comunidad virtual, porque dotNetManía es una revista impresa que usa Internet como medio para complementarse y difundirse.

Editor Paco Marín (paco.marin@dotnetmania.com) Administración Pilar Pérez (pilar.perez@dotnetmania.com) Asesor Técnico/Coordinación Marino Posadas (marino.posadas@dotnetmania.com) Publicidad Juan Manuel Urraca (jmurraca@dotnetmania.com) Redactores y Colaboradores Alejandro Mezcua, Angel Esteban, Antonio Quirós, Antonio Rojo, Daniel Mazzini, David Carmona, Eladio Rincón,

Francisco Charte, Fernando Guerrero, Fernando Nogueras, Guillermo ‘guille’ Som, Iván González, Jesús López, Jordi Rambla, Jorge Serrano, José Manuel Alarcón, José Miguel Torres, Juan Torres, Liborio López, Luis Miguel Blanco, Marino Posadas, Miguel Egea, Miguel Katrib, Pablo Abbate, Pedro Gómez, Pedro Pozo, Pepe Hevia, Salvador Ramos Diseño y Maquetación Éride Diseño Gráfico 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 Gráficas Vallehermoso www.graficasvallehermoso.com Depósito Legal M-3.075-2004 Suscripciones suscriptores@dotnetmania.com

Nuevos colaboradores colaboradores@dotnetmania.com

<<dotNetManía
3

Redaccion redaccion@dotnetmania.com

NET 50 51-53 dnm. Esto nos va a suponer un ahorro considerable de direcciones IP. tareas programables. a completar al motor relacional. a saber: Los servicios web. por lo que sólo explicarán estas tres primeras.net Moving to VB . El mecanismo que nos va a permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host. 34-39 Cambios sufridos por Object Pascal en Delphi 8 .0 con una misma dirección IP En este artículo se va a comentar cómo configurar el servidor Web que nos ofrece Windows Server 2003 para disponer de múltiples sitios Web con una misma dirección IP.NET. 46-48 dnm. 5 8-12 WebForm Templates Antes de que la Web llegara a nuestras vidas.Net Remoting. era muy común ya desde esas épocas reutilizar la funcionalidad de presentación de la información. nuestras aplicaciones tenían la apariencia de una o varias ventanas en Windows. mecanismos de trasvase de registros. servicios de alta disponibilidad. 13-15 SQL Server Reporting Services Al fin ante nosotros tenemos un servidor de informes totalmente desarrollado por Microsoft. Mensajería (MSMQ) y Componentes empresariales (COM+). Esta partición se replica sólo en los controladores de dominio determinados y siempre que ejecuten Windows 2003. que por un lado establece. Borland ha tenido que introducir ciertos cambios en el compilador de Object Pascal que incorpora la versión 8 de Delphi. 40-43 Configuración de varios sitios Web en IIS 6.net lphant. el SQL Server Reporting Services. asegura y actualiza el origen de datos al cual está conectado. and Code Code: The Hidden Language of Computer Hardware and Software 54 dnm. ganador del campeonato universitario Imagine Cup España de Microsoft y por tanto.net La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de Software. que tiene amplias funcionalidades como la replicación.dnm. un avanzado mecanismo de copias de seguridad.Net Remoting Existe en .directo.opensource. y por otro suministra el informe en una fase paralela e independiente. de la universidad politécnica de Valencia. una interfaz no gráfica.Net. serán nuestros representantes en la final internacional de Brasil. Los tres primeros métodos de distribución son controlados por el la plataforma . Sin embargo. Se trata de un servidor de informes basado en Web Services y cuya característica más importante reside en su 'modularidad'.sumario Final de la Imagine Cup en España El proyecto VAMOS. Un veterano a la última dnm. 27-33 dnm.NET: Strategies. 16-26 Crear informes con SQL Server Reporting Services Los Reporting Services vienen a completar la amplia oferta relacionada con SQLServer. .desvan .NET Con el objetivo de poder generar código ajustado a la especificación común de lenguaje (CLS) de la plataforma .biblioteca. primer peer to peer bajo . servicios de transformación de datos. y es el concepto que explicamos en este artículo.Net cuatro maneras de distribuir aplicaciones.sumario Distribuir aplicaciones con . o para nosotros los más viejos.comunidad. 44-45 Particiones de Directorio de Aplicaciones Active Directory en Windows 2003 permite la creación y configuración de una nueva partición de directorio llamada Partición de Directorio de Aplicaciones.entrevistas Entrevista a Carlos Heras 55-56 58 dnm. Concepts.

.

Dadas las fechas del evento. Rafal Lukawiecki.com/europe/teched/ Danysoft presenta el nuevo InstallShield X La solución le ofrece todo lo que necesita para crear instalaciones de Windows a Linux y de servidores a dispositivos móviles InstallShield X combina el poder y flexibilidad de InstallShield DevStudio con el soporte multiplataforma de InstallShield MultiPlatform. y para dispositivos móviles desde una misma herramienta. empresa que lo representa en exclusiva. Esto permite reducir significativamente el tiempo. InstallScript™. en una única solución para todas las plataformas. David Chappell. y crear instalaciones para dispositivos móviles. Sus herramientas automatizadas y asistentes facilitan la creación de todo tipo de instalaciones.noticias Tech-Ed Europe 2004 en marcha El evento europeo definitivo de Microsoft sobre creación. Será desde el 29 de junio al 2 de julio y vuelve a Ámsterdam. posiblemente retrasemos la salida del siguiente número para publicar un avance del evento. Don Box.noticias.htm) <<dotNetManía 6 . John Craddock.noticias. Habrá seminarios pre-conferencia en los que te actualizarán rápidamente durante un día completo en las tecnologías más relevantes de desarrollo e infraestructura antes de las conferencias en sí. arquitectos de software y sistemas y profesionales de las TI europeos. estará allí y nos traerá jugosas entrevistas y un completo reportaje del evento. podrás 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 año sólo oirás hablar. para que usted ofrezca la mejor imagen a su cliente desde el primer momento. servicios de formación y consultoría a través de los servicios profesionales Danysoft. Además sus funciones de eliminación de conflictos aseguran que las instalaciones sean a prueba de fallos. más de 400 sesiones técnicas que te podrás organizar en tu agenda para completar un ciclo formativo intenso de cuatro días. etc. Mark Russinovich.dnm. protección y gestión de soluciones conectadas Ya está aquí la mayor conferencia del año para desarrolladores. al precio más conveniente. para que adquiera únicamente las características que necesite. implantación. Steve Riley. asesor técnico y coordinador de dotNetManía. Mac OS X y OS/400). instalar servicios web. Si te interesa asistir puedes encontrar más información en microsoft. Sus características avanzadas le permitirán configurar servidores de bases de datos.noticias. InstallShield X le ofrece la flexibilidad y potencia para desarrollar todos los instaladores Windows (MSI). Espero que merezca la pena esperar al siguiente ejemplar unos días más.noticias. RedHat Linux.noticias << dnm. Clemens Vasters. Jim Gray. Permite suministrar actualizaciones de sus productos rápidamente notificando al usuario final la existencia de actualizaciones de producto. después de tres años de celebrarse en Barcelona. Marino Posadas. en Holanda. En España puede obtener soporte técnico. por muy complejas que éstas sean. Algunos de los ponentes serán: Fernando Guerrero (único ponente español del que podéis leer un artículo sobre Yukon en el número 1 de dotNetManía). sistemas operativos y dispositivos.noticias noticias. (Danysoft.com/spanish/msdn/Spain/eventos/teched.com/installshield. En este año habrá contenido adicional sobre movilidad ya que se aprovecha para celebrar conjuntamente la Conferencia Microsoft Mobile Devcon (MDC). de plataforma cruzada (por ejemplo Solaris.asp y en microsoft. coste y soporte al mantener a sus clientes con las últimas versiones de su producto. InstallShield X está disponible en dos ediciones: Professional y Premier.

la plataforma de eLearning eLMS de Alhambra-Eidos. aunque en realidad ya hubo una “pre-alpha” para los asistentes al PDC del año pasado. y la nueva versión del Tour Guiado de WebMatrix. La mujer empresaria y el eLearning La plataforma de formación virtual Almagesto. dnm. Además se han añadido la herramienta de desarrollo ASP. Windows 2003 Server y.empresas. La Asociación Empresa Mujer -ASEM-. cinco sitios web preconstruidos y fácilmente modificables. y el Driver Install Frameworks.NET y el desarrollo en general.NET Starter Kits. También se distribuyó entre los asistentes algunas nuevas herramientas de desarrollo para Windows como el Windows Longhorn Driver Kit. desarrolladores de drivers. Como parte de esta iniciativa se presentó el pasado febrero la Primera Feria Virtual ASEM con un doble objetivo.noticias WinHec 2004 A principios del mes de mayo se celebró en Washington la versión Americana del Microsoft WinHEC 2004 (Windows Hardware Engineering Conference). donde cada año se explora el futuro para la plataforma Windows con la industria del PC. Esperamos que le sea útil. Esta edición se ha centrado en los avances de la tecnología para Windows XP.mspx Canon v 1. impulsar el área comercial. que le permitirán comenzar a trabajar de inmediato con la tecnología ASP.noticias empresas. y fabricantes se dan cita para obtener la información técnica y estratégica para el desarrollo de sus productos y servicios alrededor de Windows. ha puesto en marcha una iniciativa de apoyo al empleo femenino de alto nivel.NET versión 2.0. Anaya y A!Press. También incluye muchos artículos técnicos en español del sitio web MSDN Online así como un extenso archivo de referencias técnicas. Microsoft distribuyó la primera versión alpha oficial de Longhorn. videos y presentaciones narradas.NET dentro de su apartado específico.microsoft. por tanto. ejemplos.NET. Canon es la metodología 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. Bill Gates en la Keynote Seamless Computing: Hardware Advances for a New Generation of Software en el WinHEC 2004 CD Kit de recursos ASP .empresas . en el futuro de Longhorn a pesar de faltarle al menos dos años para su estreno. Borland y SOFTENG sellan su alianza como partners estratégicos para potenciar el uso de sus productos El acuerdo establece un marco de cooperación para incrementar la productividad de los proyectos en ambas compañías Borland y SOFTENG han anunciado su compromiso de trabajar de forma conjunta para potenciar el uso de sus productos. Este Kit incluye una amplia colección de documentación. guías de arquitectura y catálogos de libros de las editoriales MSPress. Producto del trabajo de dicho grupo es Canon en su versión 1. realización de consultoría así como de la introducción de mejoras en las prestaciones de los proyectos que desarrolla Softeng. y los ASP. descargas del .NET Framework y del Toolkit de Desarrollo Móvil y un listado de enlaces a sitios de internet relacionados con ASP. y brindar una oportunidad de formación múltidisciplinar a través de Internet. WinHEC es el evento donde ingenieros de hardware. escogida por la ASEM como medio formativo para sus afiliadas.NET Web Matrix. formado por diferentes profesionales del Área de Soluciones de Negocio y Desarrollo de Software han estado trabajando en el diseño una metodología propietaria para gestionar los proyectos de desarrollo de software que se llevan a cabo en Alhambra-Eidos. Windows Driver Foundation. asegurar la calidad en el resultado de los mismos. especialmente Delphi. a través de la organización de eventos y seminarios de formación. ha llevado a SOFTENG a convertirse en una de las empresas más importantes dentro de su red de partners en España y el único en la actualidad que opera en el área de Cataluña. cómo no. Para ello se ha contado con los servicios de Almagesto 4.0. así como versiones en español de los Starter Kits para Visual Studio .empresas. Más información en http://www.NET versión 2 En este número distribuimos conjuntamente con la revista el CD Kit de recursos ASP.0: Metodología convergente de desarrollo software Desde el segundo semestre de 2003 un Grupo de Metodologías. Como novedades en esta versión 2 se han incluido dentro del apartado "Descargas" una serie de controles gratuitos ofrecidos por terceras compañías líderes en el sector (como ComponentOne o Infragistics).com/whdc/winhec/default. El “know how” en productos Borland. en colaboración con la Consejería de Trabajo del Principado de Asturias.<< dnm. No debemos esperar una versión beta hasta el año que viene.

objetos de carácter estético que constituyen las huellas culturales de la utilidad y originalidad. interpretación. D. En total se repartirán más de 85.000. director general de la Fundación Pablo VI – UPSA. Beatriz Ordoñez. El ganador que nos representará el próximo mes de julio en Sao Paolo ha sido el proyecto VAMOS de la Universidad de Valencia. Un museo que. La propuesta ha sido seleccionada por su innovación. así como por Humanidad) y la dinamización cultural. nos acerca lo que serán los • Ser compatible con la riqueza sensomuseos del futuro. relacionándose y modificando el entorno. Assistant for Museum <<dotNetManía 8 . un proyecto que. Procedían de cinco universidades de distintas regiones de la geografía española: la Universidad Politécnica de Catalunya. un proyecto que nos acerca al museo del futuro. cataEl equipo ganador recogiendo sus diplomas junto a Rosa García. las posibilidades de aplicación a la vida dejando atrás su silencioso aposento para real. interactivo y cercano al visitante. rial de las visitas físicas. 1er Premio Una revolucionaria visión que tiene VAMOS: el museo del futuro un gran aliado en las nuevas tecnologías.000 dólares en premios en metálico para los ganadores. los autores de VAMOS señalan Museos interactivos. la Universidad Pontificia de Comillas de Madrid. en Sao Paulo. gracias a la cumplir al menos con las siguientes tecnología de los Pocket PCs y las redes características: inalámbricas. • Enriquecer las visitas con información Acabar con la de carácter virtual para facilitar la noción de los museos comprensión de las obras de arte como meros “conteexpuestas. la Universidad de Málaga y la Universidad Politécnica de Valencia. La final a nivel mundial ya está en su segunda edición y consistirá en un evento de varios días de duración en la primera semana de julio. las obras de arte como responsable de Imagine Cup España y el Ilustrísimo Sr. dialogar con el arte y con la sociedad. Así. en la que deben presentarse proyectos en los que se utilicen dispositivos móviles. deberá cumplir nuevas funciones como la conservación intelectual (entendida como el estudio. Brasil.Final de la Imagine Cup en España El proyecto VAMOS. para los autores de VAMOS. la Universidad de Deusto del País Vasco. nedores visuales” de • No ser un mecanismo estático de proobras de arte es el ducción de información sino tener un punto de partida de carácter dinámico que permita variar VAMOS (Virtual los contenidos. Todos los finalistas internaciones de cada país o región competirán por las tres primeras plazas. Para su selección se ha tenido en cuenta tanto su innovación y creatividad como su utilidad y posibilidades de implementación. interrogando constantemente. Ese es el objetivo de da a este nuevo modelo de museo debe VAMOS. 15. Occasional Sightseeing).000 dólares para el primero. servicios web y componentes inteligentes que aprendan a lo largo del tiempo. Cinco han sido los proyectos seleccionados para la final de la primera edición en España de Imagine Cup. logación y valoración de consejera delegada de Microsoft Ibérica.000 y 10. dinámicos. ganador del campeonato universitario Imagine Cup España de Microsoft << Imagine Cupes la competición informática para estudiantes universitarios que organiza Microsoft a nivel internacional. Los primeros premios son de 25. Ángel Berna Quintana. cercaque la arquitectura tecnológica adecuanos al visitante. de la universidad politécnica de Valencia. un espacio dinámico. segundo y tercero respectivamente.

La difícil y estresante tarea a la que solemos enfrentarnos todos cada mañana. Desayuno 3. Una secuencia más o menos lógica de lo que el usuario hace cada mañana y que el sistema debe conocer. y la situación meteorológica. lamentablemente. Universidad: Facultad de Informática. sus horarios y tareas habituales. sin miedo a posibles atascos. José Miguel Esteve y José Antonio Mocholí. Universidad Politécnica de Valencia. claro. y a esa hora en concreto. con toda la información que necesitamos para disfrutar de las obras de arte que en nuestro recorrido vamos encontrando. el sistema que. esta habitual y cotidiana situación tiene los días contados gracias a Never2Late. Llegada a destino/trabajo 2º Premio Never2Late.Net FrameWork SQL Server Aplicación: Asistente móvil para la visita a museos. 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 aplicación. estilo. Camino B 6. Despertar siempre a tiempo Despertarse a tiempo siempre. Una vez registrado. La respuesta a tan elevadas exigencias parece tener un nombre: VAMOS. etc. contamos con VAMOS. • Personalizar los contenidos que se muestran al visitante en función de sus gustos. un sistema que. No hay problema: sin que nos percatemos siquiera. basándose en una infraestructura de redes inalámbricas y dispositivos móviles. capaz de acompañar al visitante en todo momento durante su recorrido por el museo. un accidente y su consiguiente retención en la carretera. deberá introducir en el sistema la información de los pasos o tareas que debe realizar en cada ocasión para llegar a su destino. Nos detenemos frente a ella para examinarla más pausadamente. Entrada en el coche 4. llegaremos tarde. de forma transparente y automática. ya sea en el trabajo. • Facilitar que los visitantes puedan disfrutar del mayor número posible de obras en caso de disponer de poco tiempo para realizar la visita. etc. incluidos los posibles caminos que puede utilizar para llegar a éste. Despertar y ducha 2. nos sorprende una de esas obras. Nuestro alto en el camino ha merecido la pena pero. dinámica. VAMOS nos ofrece todos los datos sobre la misma: su autor. Los beneficios: Hacer más fácil la vida del usuario. éste nos ofrece la ruta perfecta a nuestros requerimientos. Por fin nos hallamos en el interior del museo y.<< dnm. Todo ello. Para buscar un ejemplo actual. Proyecto: VAMOS (Virtual Assistant for Museum Occasional Sightseeing). En tan sólo un par de clicks nos encontramos visitando las salas y exposiciones que más nos interesaban y además. podría ser: 1. VAMOS ha rehecho nuestra visita al museo. aprovechando su tiempo al máximo. tomando como punto de partida la propia experiencia del usuario. Sin embargo. nos guiará en todo momento en nuestra visita. la ducha que esa mañana no quiere darnos agua caliente y para colmo. El objetivo: no llegar tarde nunca más. interactiva y personalizada. así como nuestras preferencias. accidentes o lluvias torrenciales.universidad Llegar a tiempo. Ni un imprevisto más Despertarse con tiempo suficiente pero además teniendo en cuenta aspectos tan decisivos como el estado del tráfico esa mañana. De repente. Hagamos lo que hagamos. convierte el museo en un espacio interactivo y a la medida del visitante. No hablamos de una película de ciencia-ficción sino de una realidad posible gracias al sistema Never2 Late. también ha retrasado el plan de visita. VAMOS es un sistema completamente móvil. un sistema móvil que a modo de despertador le permitirá rentabilizar al máximo su tiempo. Autores: Vicente Bosch. adecuándola ahora al tiempo que nos queda. Tecnología: . • Ofrecer bajo un único punto de entrada diferentes servicios. Kristian Eide. de forma rápida y sencilla. trabajos previos. tras alquilar un dispositivo de mano en el propio museo. menos tiempo del que nos gustaría y sería necesario para poder visitarlo de forma provechosa. • Proveer información al visitante en cualquier momento durante la realización de una visita. itinerarios. Tras indicar al sistema el tiempo del que disponemos. Camino A 5. de nuevo. conectividad a Internet y capacidad de navegación aumentando de esta forma la interactividad entre usuario y museo. con <<dotNetManía 9 Comienza la visita . Pues bien. podría asimilarse a las tradicionales audioguías que desde ya hace tiempo encontramos en cualquier instalación de estas características pero con una importante diferencia: el sistema VAMOS ofrecerá al visitante información multimedia. cuando por fin conseguimos salir de casa. En nuestro Pocket PC. en su domicilio o el camino entre ambos. El despertador que no suena. inspiración. Su “secreto”: la movilidad. el despertador inteligente.

a partir de su propia experiencia. la aplicación establece que cuando el usuario ha visitado un lugar de la ruta elegida. además de la experiencia del usuario.Net FrameWork Web Services Redes Neuronales SQL Server 2000 Programación en C+. la experiencia del usuario en su utilización es de lo más sencilla y sólo necesita de un dispositivo móvil para disfrutar de ella. estilos. de igual modo. el usuario podrá conocer de forma rápida y sencilla su “perfecto” itinerario. Sus gustos. llegando a tiempo a su destino. datos meteorológicos e incluso información del calendario (vacaciones. preferencias.<< dnm. un sistema que hace posible un “turismo inteligente”. Para ello. así como teléfonos de información. Picassoft hará que el usuario disponga en la pantalla Su opinión es importante La absoluta actualización del sistema y. poco tiempo y demasiadas cosas que ver. historia. Picassoft ofrece al usuario. <<dotNetManía Una vez introducida esta información. Así. etc). 3º Premio Picassoft. puentes. Pero además de ofrecer el mejor recorrido por la ciudad. Never2Late ve que existe un embotellamiento de tráfico esa mañana en el camino que el usuario tiene que tomar para llegar a su destino. días festivos. el sistema Never2Late despertará al usuario a la hora exacta y necesaria para que llegue a su lugar de trabajo justo a tiempo. etc. Gracias a Picassoft. El turista inteligente Proyecto: Never2Late. Autores: Mauricio Asuar García y Alejandro Hernández de Madrid Díaz. su permanente ampliación. sino que 10 . Tecnología: . su experiencia sea lo más rica posible. un recorrido inteligente por la ciudad y lo más importante. tiempo del que dispone y momento en el que desea realizar la visita son combinados por el sistema con la valoración que otros turistas han otorgado anteriormente a monumentos y puntos de interés para así obtener el recorrido más satisfactorio. actualizado y personalizado. si por ejemplo. hacen de Picassoft una importante herramienta no sólo para el turista sino también para los responsables turísticos de cada una de esas ciudades. a la vez. éste se despierte y realice todas sus tareas habituales. al día siguiente. rincones o monumentos de esa ciudad que más votos positivos han conseguido por parte de las personas que las han visitado.universidad para lograr su propósito. Todo ello junto a datos de gran utilidad como horarios y días de visita. Esta información pasa a formar parte del sistema. sobre todo. Sencillo. Pronosticar de forma inteligente la hora de despertar al usuario implica valorar. Tras ejecutar Picassoft en su dispositivo móvil y elegir el idioma que prefiera. catedrales a las que llega justo cuando están cerradas al público. Es decir. La más completa información La ruta perfecta y a medida pero además con toda la información necesaria para que disfrutar de ella al máximo sea una realidad. que genera así listas con los lugares mejor valorados por los usuarios y. totalmente personalizado. Una visita sin duda para recordar siempre. siempre adecuándose además a sus gustos. el turista podrá con su dispositivo móvil conocer en todo momento la mejor ruta para visitar los rincones de una ciudad. Universidad: Escuela Técnica Superior de Ingeniería Universidad Pontificia de Comillas. priorizando los lugares. mediante un Pocket PC. Así. Esta escena tan habitual para el turista podrá no repetirse más gracias a Picassoft. Picassoft permite además que el usuario edite la ruta en cualquier momento. un programa diseñado por cuatro estudiantes de la Universidad de Málaga. monumentos que nunca localiza. El sistema Picassoft le acompaña en todo el recorrido ofreciéndole la información más completa de cada uno de los lugares que visita. otros factores decisivos como pueden ser la información del tráfico. Con toda esta valiosa información. el sistema Never2Late se sincroniza con el dispositivo móvil del usuario y pronostica. el sistema le ofrece en pantalla detallada información audiovisual de carácter turístico sobre el lugar dónde se encuentra: año de construcción.Net Aplicación: Despertador inteligente. de forma automática y cada vez que el usuario alcanza uno de sus destinos. eliminando y añadiendo lugares de forma manual. el tiempo necesario para que.ASP. Enormes mapas que no consigue nunca doblar adecuadamente. Un simple Pocket PC será a partir de ahora su mejor guía turístico. de su Pocket PC de un mapa que en todo momento le indique su situación actual dentro de la ciudad y de la ruta elegida. pueda emitir su valoración sobre el mismo. así como la ubicación de la próxima parada en la misma. servicios web y técnicas heurísticas Aprovechar el tiempo El objetivo de Picassoft es claro: permitir que cada turista saque el máximo provecho al tiempo del que disponga para visitar una ciudad y que. aspectos más destacados. hará que el despertador suene antes para evitar que el usuario se retrase por ese motivo. ofrece cada vez rutas más acordes a estas valoraciones. tiempo disponible o preferencias. Pese a que Never2Late utiliza un complejo entramado de redes neuronales. Una valiosa información que no sólo hará mucho más gratificante las próximas visitas de otros turistas. precios de entradas y ofertas especiales para grupos.

Pero además. conocer de forma sencilla y rápida el camino para llegar a ellos.. mucho más gratificante. Universidad de Málaga. el usuario decide el mapa que quiere recibir en su Pocket PC. Aplicación: Servicio de rutas y recorridos turísticos en Pocket PC. SQL Server 2000. Proyecto: My Street Finder. inteligente. se convierten en imágenes al ser enviados al usuario. Tecnología: Windows XP Professional. Universidad: Facultad de Ingeniería-ESIDE Universidad de Deusto. Office XP Professional.Net. Además. Basado en una arquitectura clienteservidor. Finalista My Street Finder. My Street Finder permite hacer cambios continuos en la información sin que ello afecte a la aplicación. Un mapa en el bolsillo Obtener un mapa de la ciudad. instalaciones eléctricas. con My Street Finder. esta aplicación hace posible que el usuario active la función guía en su Pocket PC para. Esta característica permite que cada usuario decida qué información del mapa desea recibir: datos de edificios. Visitar la ciudad al completo pero además. A través del mismo protocolo. Autor: David Sainz González. a la medida de sus necesidades. obtener en cualquier momento y lugar un mapa de la ciudad en la que se encuentran. A diferencia de otros sistemas.. My Street Finder permite que un usuario conozca en el mapa que recibe la posición exacta en la que se encuentra otro usuario del sistema. Proyecto: Picassoft Universidad: ETSI Informática. Aplicación: Servicio de Mapas La ciudad en movimiento Saber dónde está la calle Leganitos o. este proyecto permite al usua- <<dotNetManía 11 Información a medida . turistas e incluso trabajadores en busca de la ruta más corta hacia su destino pueden. carreteras.1.. Cartografía y sistema de coordenadas UMT. cuya información está almacenada de forma estática -por ejemplo en imágenes.Net Global Positioning System Protocolo Estándar de los GPS (NMEA 0183). conocer dónde se encuentra la estación de tren más cercana. . el entorno laboral y su mejor productividad es otro de los escenarios donde My Street Finder resulta especialmente útil. 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. el usuario puede recibir información sobre otros usuarios como es el nombre y la posición donde se encuentra en esos momentos. es necesario destacar la facilidad que ofrece este sistema a la hora de actualizar la información de los mapas ofrecidos. GPS . personalizada y. sobre todo. instaladores. completamente actualizados. Autores: Curro Basagoiti. de gran utilidad. Tecnología: Plataforma .Net FrameWork SDK 1.. aumentar o reducir el tamaño del mismo y. etc.que no permiten una actualización rápida de las mismas y en pocos años acaban resultando obsoletas. lo más importante. obtenga la visión más completa de la zona. desde una base de datos. incluso. Transeúntes. comerciales. localizar el punto al que se dirigen de forma más rápida. un símbolo en la pantalla le indique la posición exacta de la calle o punto de interés que busca y además. “navegar” por la ciudad en su dispositivo. convirtiéndolo en una actividad enriquecedora.Antonio Molina y Ana Reyna.<< dnm. optimizando de este modo su tiempo de trabajo. de esta forma.Web Matrix. Así por ejemplo. al alcance de su mano. Una aplicación de futuro que transformará el turismo actual. permitirá además a las autoridades responsables detectar posibles carencias en las instalaciones o monumentos de su ciudad y mejorar así la calidad de éstos. además de recibir el mapa que precisa. Esto se consigue gracias a la tecnología utilizada por el autor y que consiste en que los mapas generados no se almacenen en el servidor en formato fotografía sino que son datos en tablas que. este sistema puede facilitar a repartidores. la dirección que deberá seguir para encontrarlos.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.. rio obtener en su Pocket PC mapas de una ciudad o zona. Aunque a primera vista. con un “guía” que le acompañe es otra de las posibilidades que el usuario tiene gracias a My Street Finder. Estos son sólo algunos ejemplos de las numerosas aplicaciones que tiene My Street Finder. Iñaki Esteve. localizar puntos de interés e incluso saber hacia dónde dirigir nuestros pasos para llegar a ellos. My Street Finder pueda parecer una aplicación destinada a turistas o simplemente transeúntes. Un mapa en el que localizar calles o puntos de interés y. Así. calles.

está lloviendo. por ejemplo. El cualquier momento y desde cualquier lugar. es necesaria una definición previa de la información que le resulta interesante y un registro previo del usuario en el sistema. obras. ofrece un trayecto por el mismo adaptado al usuario. Autores: Sergio Edo. Para ello. El proyecto RAMPA busca ayudarles a superar estas dificultades. El fin de las barreras arquitectónicas Rampas. Cada día. si existe algún tramo en obras. RAMPA puede también ayudarle localizando el punto de interés o servicio que necesita. Escalable por tanto y completamente personalizable. monumentos. Por un lado. de forma activa: el sistema recibe una petición del usuario sobre una información concreta. etc. será mejor un camino corto aunque en él haya una escalera ya que se cansa mucho. puntos turísticos. <<dotNetManía 12 . Así. Tanto en un caso como en el otro. Calles. de forma sencilla. RAMPA. Esta adecuación del recorrido a las características del usuario (y no al contrario como suele ser habitual) mejora enormemente la calidad de vida del mismo.<< dnm. a través de un dispositivo Pocket PC. terísticas físicas del usuario. información sobre acontecimientos y/o las instalaciones principales que el usuario va a encontrarse por el camino y que pueden resultar de su interés. el clima para si. Oriol Mercadé y Vanesa Jiménez. Por otro lado. GPS Navigator Tom Tom. La utilidad de esta herramienta se completa aún más con la completa actualización de la información que RAMPA ofrece y que permitirá conocer en todo momento posibles obras en Proyecto: RAMPA Universidad: Facultad de Informática de Barcelona. el sistema deberá presentarle una interfaz completamente hablada. el sistema mostrará además el recorrido más adecuado para llegar al mismo. las personas con alguna deficiencia física o psíquica se encuentran con múltiples barreras arquitectónicas que pueden convertir un simple paseo en una carrera de obstáculos. bordillos. En segundo lugar. My Street Finder ofrece el mapa “a la carta” que necesita. ese camino. el diseño de RAMPA tiene en cuenta que la información debe ser ofrecida de la forma más sencilla en cada caso. es invidente. ese camino nunca sería el indicado para alguien que se desplaza con una silla de ruedas). RAMPA evalúa las peculiaridades del entorno y así. así. El sistema tiene en cuenta si el usuario va en silla de ruedas. Así. Universidad Politécnica de Catalunya. RAMPA le ofrecerá. el usuario de RAMPA podrá. el sistema tendrá en cuenta también condiciones como la celebración de eventos especiales o incluso. RAMPA evalúa las características particulares del usuario para así ofrecerle la información más adecuada a las mismas. Sin embargo. De forma sencilla y en tiempo real. estaciones de tren. elegir un recorrido que pase mayoritariamente por lugares cubiertos. camioneros. por ejemplo. RAMPA es capaz de ofrecer información relativa tanto al entorno físico de un edificio determinado como de una ciudad o región.Net Servidor CVS de compartición de código fuente frente a Visual SourceSafe. etc.universidad Esta funcionalidad hace de My Street Finder una herramienta muy útil para los servicios de seguimientos de flotas. Además. si hay posibilidad de transporte público. escaleras. repartidores o taxistas pueden conocer el punto exacto donde se encuentra cada uno de sus compañeros de trabajo. eventos especiales que tengan lugar en el mismo. RAMPA evalúa las características físicas del propio entorno a la hora de elaborar el recorrido adecuado. Todas las posibilidades RAMPA ofrece al usuario el mejor recorrido entre dos puntos. Para ello. las propias carac- Encontrar un lugar Además de facilitar el recorrido o ruta más adecuada a las deficiencias físicas o psíquicas del usuario. inclemencias meteorológicas que pudieran afectar al usuario en su recorrido. Tecnología: Plataforma . amigable y actualizada en todo momento. Así. Aplicación: Servicio de información sobre trayectos adaptados a personas con deficiencias físicas o psíquicas. Y por último. aceras o escaleras. y en el caso de que el usuario lo que solicite sea una ruta determinada para llegar a un punto de interés. por ejemplo. etc. Del edificio a la ciudad La propia definición y diseño del programa RAMPA incluye desde su origen la absoluta escalabilidad del sistema. tiene en cuenta factores como dónde se encuentran rampas. Una vez localizado. Y así elige el recorrido más adecuado según estos rasgos (para una persona que se mueve con muletas por ejemplo. si el usuario es invidente. junto a la misma. el proyecto RAMPA permite múltiples opciones de uso. Finalista. conocer el trayecto más adecuado a sus deficiencias físicas o psíquicas. muchos son los factores que tiene en cuenta. el sistema ofrece su información de dos modos: de forma pasiva para el usuario: el usuario recibe información sin tener que solicitarla. las direcciones de las calles. Tras conocer las características específicas de movilidad del usuario.

el formulario Windows. Pero. Esto se debe a que en ASP.ASCX asociado con el archivo de lógica determinan el comportamiento del formulario web. era muy común ya desde esas épocas reutilizar la funcionalidad de presentación de la información. utilizando el diseñador de formularios. que de esta clase desciendan.NET tenemos dos elementos bien diferenciables: el formulario ASCX.NET descubrimos que el comportamiento de la herencia no es exactamente el mismo que en su par. Sin embargo.UI. en las aplicaciones Windows. pegamos un control en un Web Form padre. cuyo contenido describe los controles que conformarán la apariencia de la página web y.NET tenemos dos elementos bien diferenciables: el formulario ASCX. resulta muy sencillo reutilizar funcionalidades incorporadas dentro de los formularios.NET. • Si. ¿Podríamos reutilizar la barra de navegación de nuestro sitio en todas sus páginas? ¿Existe la posibilidad de reorganizar la distribución de una página modelo y que los cambios realizados se reflejen en todas las páginas que fueron creadas a partir de ese modelo? ¿Es posible configurar.NET que conforman la lógica que regula el comportamiento del mismo formulario. por medio de propiedades. La herencia solo funciona a nivel de código . el archivo que contiene las instrucciones en . << Con .Pablo Abbate MCDBA/MCAD/MCSD/MCT Consultor independiente WebForm Templates Antes de que la Web llegara a nuestras vidas. nuestras aplicaciones tenían la apariencia de una o varias ventanas en Windows. cuyo contenido describe los controles que conformarán la apariencia de la página web y el archivo que contiene las instrucciones en . • No es posible heredar los elementos descriptos en un archivo ASCX.NET que conforman la lógica que regula el comportamiento del formulario • Una página web desciende de la clase Page del namespace System.NET. una interfaz no gráfica. los frames que deseamos mostrar dentro de una página? La respuesta. • El contenido del archivo . Esta característica permite distinguir el componente visual de la lógica dentro de la aplicación. por lo tanto. es sí. por otro lado.Web. necesitamos conocer el funcionamiento de una página web: <<dotNetManía 13 Funcionamiento de un formulario Web . sólo es cuestión de modificar la apariencia en una clase base y todos los formularios. tendrán la misma apariencia por defecto. 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. en todos los casos. éste no Antes de empezar a trabajar. Al enfocarnos en las aplicaciones Web en ASP. si deseamos que una clase herede los controles descriptos en su padre deberemos escribirlos dentro del código. o para nosotros los más viejos. En ASP.

nuestro frmencabezado podría tener un aspecto similar al de la figura 4. estos cuatro controles con los siguientes nombres: frmEncabezado. necesitaremos cuatro controles de usuario que servirán de frames para cada extremo del área de trabajo.asp. En la sección de code-behind deberemos modificar el comportamiento de dos métodos: El proyecto La idea es desarrollar una página modelo que nos permita reutilizar aquellos componentes comunes a todas las páginas sin tener que insertarlos cada vez que creamos un nuevo Web Form. Para personalizar el comportamiento de todos los formularios web crearemos una clase modelo que derive de la clase Page. En cada user control agregaremos todos los webform controls necesarios para dar el aspecto que queremos a cada frame. responde a la jerarquía de clases que vemos en la figura 2. frmDerecho. nuestro formulario web. Agregamos. tendrá la siguiente la apariencia de la figura 3. frmIzquierdo. al proyecto. Después de realizar nuestros cambios.net aparecerá en un Web Form hijo. Llamaremos a esta nueva clase: modelform Todos los formularios de la aplicación deberán descender de modelform para que posean su misma lógica. En este caso. Veamos como empezar… Figura1 El objetivo es que sólo se deba modificar el contenido del área de trabajo de cada página. Ahora. Por ejemplo. De este formulario heredarán todos los otros Web Forms de nuestra aplicación.NET Web Application y lo denominamos WebFormTemplate.<< dnm. Siguiendo con nuestro diseño. frmPie. Figura 4 <<dotNetManía Figura 2 Figura 5 14 . Para los frames que rodean al área de trabajo. Figura 3 Originalmente. Pasos En un proyecto de Visual Studio 2003 seleccionamos ASP. agregamos un nuevo Web Form denominado modelform. utilizaremos user controls que nos permitirán diseñar gráficamente el contenido de estos frames. y el resto de los componentes sean heredados del modelo. Este comportamiento difiere del formulario de Windows. haremos un diseño de acuerdo al esquema de la figura 1.

recordar que el nombre del control agregado debe ser AreaTrabajo. // Creamos una tabla para distribuir los frames Table TablaPagina = new Table(). . Lo modificaremos para que agregue nuestros frames a la página actual.UI.Add(LoadControl(“frmEncabezado.Add(CellFrmIzquierdo). deberemos repetir los pasos hechos con Main.ascx y así reutilizaremos todos los controles de usuario. Otro método que debe ser sobreescrito es Render.Controls.Controls. Este método es el responsable de la creación de todos los controles hijos en un control contenedor tal como un Page.Cells.ascx”)). // Agregamos el contenido de la página actual Control Area = this. Es importante. La tarea que lleva a cabo este método es la de enviar el contenido de un control de servidor a un objeto HTMLTextWriter. RowContenido. base.Add(LoadControl(“frmIzquierdo.Add( TablaPagina ). el método definitivo tiene el aspecto del fuente 2.modelform Fuente 2 <<dotNetManía 15 Bueno.UI.<< dnm.asp. // Creamos el Pie Form. ha llegado el momento de ver cómo ha quedado nuestra primera página terminada.Controls.FindControl(“AreaTrabajo”). sino que hereda de modelform (nuestro formulario modelo).Add(Form). Después de nuestra modificación.NET debemos especificar que nuestra página (Main) no desciende directamente de Page.Control. Modificamos las propiedades de tamaño para que abarque el 100% del alto y ancho de la página.Web.Cells.Add(Area).CreateChildControls().ascx”)).Controls.Web.Add(LoadControl(“frmDerecho. Para ello deberemos modificar la definición de la clase con el siguiente fragmento de código: protected override void Render(HtmlTextWriter writer) { // Rellenamos el inicio del código HTML writer. Por último.net protected override void CreateChildControls() { // Reemplazamos el formulario del archivo ascx por // un formulario creado desde el código HtmlForm Form = new HtmlForm(). public class Main : WebFormTemplate. en el código .ascx”)). Agregamos un nuevo Web Form con el nombre Main.Add(RowContenido). // Agregamos el Form this. // Agregamos la tabla de contenido a la página Form. // Rellenamos el contenido de la página. Para ello debemos agregar el código fuente 1 al code-behind de nuestro Web Form. RowContenido. } Fuente 1 CreateChildControls(): Es implementado por la clase System.Render(writer). Vea la figura 5. el cual escribe el contenido HTML en el cliente. también de la clase System.Control.Add(CellFrmDerecho). regresando a la ventana de diseño. arrastramos un webform control de tipo Panel sobre el Web Form. RowContenido. // Agregamos el contenido del frame Derecho CellFrmDerecho. Sólo debe quedar la directiva <@Page …> A continuación. // Agregamos el contendio del frame Izquierdo CellFrmIzquierdo.ascx”)).Add(CellFrmContenido).Controls.Controls.Controls.Controls. TableCell CellFrmIzquierdo = new TableCell().Write(“</body> </html>”) . // Creamos el Encabezado Form. // Rellenamos el fin del documento HTML writer. TablaPagina. TableRow RowContenido = new TableRow(). TableCell CellFrmDerecho = new TableCell(). Cada vez que agreguemos una nueva página.Add(LoadControl(“frmPie. base. TableCell CellFrmContenido = new TableCell(). Posteriormente accedemos al código HTML del formulario eliminando todo su contenido.aspx y lo colocamos como formulario de inicio desde el menú de Proyecto.Write(“<html><head><title>WebForm Template</title><head><body>”).Cells. if (Area != null) CellFrmContenido.

16 . y por otro suministra el informe en una fase paralela e independiente. aproximadamente.NET. La plataforma SQL Server Reporting Services está formado por tres componentes básicos: • Report Server • Report Designer • Report Server Data Base Report Server es un servicio Web que se hospeda en IIS y ASP . que le permite desarrollar funciones específicas para los informes. para la administración. en C# y comporta una serie de herramientas mación stateless es el que se viene utilizando en el desarrollo de arquitecturas .NET y que atiende las peticiones a informes. sino también genéricos. De esta forma cualquier usuario autentificado puede ejecutar o ‘consumir’ informes desde Internet Explorer.NET con Enterprise Services.Por José Miguel Torres Técnico Superior en Desarrollo de Aplicaciones Informáticas MRW SQL Server Reporting Services << SQL ServerReporting Services no es un Add-In para Visual Studio ni ninguna capa basada en . asegura y actualiza el origen de datos al cual está conectado. La ‘modularidad’ que ofrece la arquitectura de Reporting Services hace que. hace aumentar su escalabilidad teniendo la capacidad de servicio de unos 10 a 20 informes por procesador. pudiendo utilizarse sin ningún problema OLE DB y ODBC. Actualmente el modelo de progra- <<dotNetManía demostrado su ventaja frente a aplicaciones stateful (con estado) como son las aplicaciones cliente/servidor. SQL Server Reporting Services está totalmente desarrollado bajo código administrado. sin estado. y por otro lado. publicación y desarrollo de informes no sólo para orígenes de datos específicos de SQL Server y Oracle. el SQL Server Reporting Services. implantación. o bien desde una herramienta cliente que consuma el informe a través de un servicio Web. La razón de que Report Server sea un Web Service stateless. por una parte el administrador disponga de unas herramientas específicas para el mantenimiento de informes y a su vez integradas en tareas de administración como puede ser de sistema o de base de datos. creación. que por un lado establece. independientemente de que el destino del informe sea Web o Windows Form u otro contexto. el desarrollador tiene a su disposición una completa API y servicios.NET para otros servidores de informes de terceros fabricantes. por ejemplo móvil. integrados todos en Visual Studio . y que han Al fin ante nosotros tenemos un servidor de informes totalmente desarrollado por Microsoft. que empezó ya con MTS. Se trata de un servidor de informes basado en Web Services y cuya característica más importante reside en su ‘modularidad’.

<<dotNetManía
17

La diferencia fundamental con otros diseñadores de informes es que, por Fernando Bocigas, Product ejemplo, Crystal Reports es una herraManager de SQL Server y SQL mienta orientada al diseño de informes Reporting Services de Microsoft Ibérica y, si bien es cierto que puede publicar informes como Servicios Web e incluso posee dos interfaces estandarizadas como mercado. Diseño de informes tabulares, matriciales, son SOAP y COM, dista de la idea de servidor de ofrece SQL Server Reporting con gráficos, con objetos OLE, etcétera, además introServices, con herramientas de duce un concepto llamado ‘snaking columns’ que son administración propias, polílas utilizadas en los periódicos. Permite la interacción ticas de seguridad y más difey navegación por parte del usuario y los formatos de rencias que iremos viendo presentaciones más comunes (pdf, html, xls, csv,...), además adelante, un servidor de más de agregaciones de datos, etcétera. informes en toda regla. El diseñador de informes está integrado con Visual Studio .NET. El motor de diseño posibilita un asistente para la creación de informes y permite la importación desde informes Access, no habiendo posibilidad, de momento, de importación desde Crystal Reports ni de cualquier otro fabricante. Asimismo posee un generador de consultas SQL y posibilidad de vista previa, entre otras características. Desde el punto de vista de la administración de informes, SQL Server Reporting Services nos ofrece una herramienta basada en Web para tal fin. También tenemos la posibilidad de utilizar el intérprete de comandos para ejecutar utilidades e incluso herramientas de programación 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 autenticación de Windows y/o SQL Server. Otra característica a indicar es el historial de inforCaracterísticas mes, el cual representa en forma estadística cual ha sido la actividad de cada informe, lo que puede ayuA nivel de diseño 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 diseñadores del

<<

“El potente entorno de desarrollo que pone a su disposición Visual Studio .NET 2003 facilita la creación e implantación de soluciones de creación de informes con la mayor capacidad de ampliación de cara al crecimiento futuro. Microsoft SQL Server Reporting Services también proporciona la flexibilidad añadida de la creación de informes junto a una amplia variedad de fuentes de información, 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 impresión (PDF,TIFF) y de datos (Excel, XML, CSV)”

<< dnm.servidores.sql
peticiones a un mismo informe implicará una mala administración 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, basándose en XML, definir un informe con un schema publicado. Así que podemos utilizar SOAP para publicar informes desde una aplicación 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 análisis pero no será hasta la llegada de Yukon, dónde se fusionarán 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 administración o desarrollo, lógicamente, dependiendo del entorno de desarrollo o de producción 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 relación de requisitos por componentes.

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

<<dotNetManía

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 también se pueden obtener suscripciones propias en un espacio similar llamado Mis Suscripciones. Dichas suscripciones se entienden como distribuidores de informes automáticos a cliente y que pueden ser estándares o controladas por datos, en la que se sirven según una consulta, por ejemplo. La entrega puede ser mediante correo electrónico y/o mediante Web Services o servicios Windows, gracias a la arquitectura modular que están desarrollados los Reporting Services. Los informes se procesan en grupos de dos fases que separan el procesamiento de datos de la representación final. Esto permite representaciones de tipo de formato distintos, una mayor escalabilidad y la posibilidad de programar algunos componente mediante Visual Studio .NET. Esta característica diferencia claramente, la representación de informes de SQL Server Reporting Services con Crystal Reports. Éste último procesa cada informe desde la petición, pasando por la captación de datos y publicación 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. • Conexión con una instancia de SQL Server 2000 SP3a. • Sitio Web predeterminado accesible a través de http://<nombreDeServidor>. • Para Windows 2003, el equipo debe estar 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 técnico de Microsoft. • Servidor Web con ASP.NET. • IIS 5.0 o posterior instalado y configurado. • Sitio Web predeterminado accesible a través de http://<nombreDeServidor>. Servidor con SQL Server 2000 SP3a. Estación de trabajo cliente con Microsoft Visual Studio® .NET 2003 y MDAC 2.6 o posterior. Estación de trabajo cliente con acceso a un servidor de informes. Estación de trabajo cliente, sin requisitos previos. Estación de trabajo cliente, sin requisitos previos.

Administrador de informes

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

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

18

<< dnm.servidores.sql
Diseñar
El diseñador de informes forma parte de Visual Studio y la creación de un informe implicará la creación de un proyecto en el mismo de tipo Business Intelligence, mediante un asistente o simplemente un informe vacío (fig. 2).

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

<<dotNetManía
19

En el explorador de soluciones vemos el proyecto con dos carpetas, que refieren a las dos partes o módulos del informe, como muestra en la figura 3, el origen de datos y el diseño del mismo. En el origen de datos tenemos un asistente que nos ayuda a la disposición del mismo. Por defecto, SQL Server Reporting Services viene con una base de datos que ayuda en los tutoriales ya que la mayoría 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 mayoría de herramientas de diseño del mercado tienen un asistente que facilita el proceso de creación inicial, y en este caso SQL Server Reporting Services no es una excepción. En un tiempo breve creamos un informe en el que quizás lo más complejo sea la construcción de la cadena de la consulta, tarea que se facilita gracias a la herramienta de creación de consultas gráfica de Visual Studio .NET. En la figura 4 vemos parte de un proceso de creación mediante el asistente. Tenemos a nuestra disposición todo el potencial de la interfaz de Visual Studio .NET para el diseño 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 diseño cuando y como queramos. Podemos agregar el infor-

me a nuestra solución como un proyecto más, en definitiva, la utilización de SQL Server Reporting Services y Visual Studio .NET es muy provechosa. También 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 disposición todo el potencial de la interfaz de Visual Studio .NET para el diseño de un informe, desde el generador de la consulta SQL hasta los tipos de informes a utilizar

vemos que hay dos ficheros.sql Figura 4. por defecto. alojada bajo IIS y ASP . El primero hace referencia a la conexión de datos que es compartida y que no es mas que un archivo XML (fig.Tres pasos distintos del asistente de creación de informes. e l 20 .<< dnm. La seguridad. Es importante la planificación para la implementación y administración de los informes ya que no sólo 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. La dos herramientas de administración las encontramos en primer lugar en http://localhost/Reports (fig. 8) y el segundo. gestión e implantación y en segundo lugar tenemos un explorador en el que podemos ver los informes implantados. puede estar integrada bajo autenticación Windows y su implantación requiere de un estudio detallado y una fase de implantación minuciosa. como viene siendo tradicional entre productos de servidor de Microsoft. 7) y si los permisos de autorización nos lo permiten podemos navegar por dicho espacio Web. <<dotNetManía Figura 5. por defecto.NET y que por tanto deberá estar familiarizado con estos contextos. es http://localhost/ReportServer (fig. a través de IIS y/o Windows y/o SQL Server. la cual nos brinda operaciones de administración.servidores. El sitio Web. sino que además los clientes de estos informes pueden no estar dentro de un dominio local y que por tanto la operación de autorización y autenticación sean imprescindibles. Ver figura 5. es la definición del informe en RDL y cuando accedemos. Esquema de implantación distribuida. Implementar y administrar Lo mas importante de la herramienta de administración es que está basada en Web. En el ejemplo que se muestra en estas líneas realizado anteriormente llamado Ejemplo. rptEjemplo. 6).

SQL Server Reporting Services puede utilizar el SQL Agent para realizar programaciones de entrega. rskeymgmt. ya que se trata de un componente basado en Web Service. Es aquí dónde se guarda información de usuarios. Toda la información que maneja SQL Server Reporting Services se guarda en una base de datos del servidor SQL Server llamada ReportServer. etcétera. de ahí que el archivo de conexión sea XML. SQL Server Reporting Services soporta clúster de balanceo de carga en red (Network Load Balanced (NLB)). Jason Carlson. La combinación del comando rs. Además.<< dnm. rs. Reporting Services supone un entorno de creación de informes escalable y seguro que facilita la gestión. informes. para que sea compartida por otros informes y para que no consuma más que los recursos necesarios. La herramienta ReportServer Figura 7. si reside en un contexto de NLB éste se escalará hacia fuera en caso de que algún servidor esté indispuesto. roles. De manera transparente existe un componente que se encarga de administrar la utilización de ésta conexión.exe para la administración de cifrado de claves de los informes.sql Figura 6. y la herramienta Web no hará más que representar la funcionalidades según el perfil del usuario conectado.exe para la activación instantánea de servidores de informes. << . suscripciones. Al ser un Web Service stateless. rsactivate.exe para la administración de conexiones.exe para la ejecución de comandos automatizados. la base de datos de SQL Server Reporting Services puede residir en un cluster junto a demás servidores SQL Server. Como herramientas no gráficas destaca rsconfig. sin estado.exe junto a los demás permite secuenciar de manera programática operaciones de mantenimiento desde la consola del intérprete de comandos. 9).servidores. Product Unit Manager de SQL Server Reporting Services de Microsoft Corp. el acceso y la entrega de los datos empresariales al usuario final”. “Para los profesionales de TI. eventos. Éstas se programan para que un determinado informe a una determina fecha y hora se entreguen a unos determinados clientes. Explorador de Informes <<dotNetManía 21 explorador renderiza el informe hasta su presentación por defecto (fig. Todo el proceso es parametrizable lo cual aporta una gran abanico de posibilidades pudiendo incluso seleccionar el medio de transmisión y el formato de salida.

Ya que los informes están definidos por XML bajo la sintaxis de RDL (fig.Acceso al informe rptEjemplo desde el explorador web de SQL Server Reporting Services Desarrollo En cuanto a desarrollo se refiere. que puede ser utilizada para este fin. las posibilidades de desarrollo no se centran únicamente en un marco local limitado físicamente.NET Framework en el espacio de nombres System. podemos crear extensiones de representación. aplicar directrices de seguridad a nivel de informes y nos permite interactuar. no sólo con el origen de datos. En la figura 11 vemos el ejemplo de Web Service en el que encontramos algunos métodos que nos ofrece.NET. Por una parte WMI (Instrumental de administración de Windows) cuya misión es administrar el servidor de informes. también podemos perfilar o desarrollar funciones específicas bajo dicha sintaxis y aplicarlas a la representación de los informes. SQL Server Reporting Services cuenta con tres interfaces principales.Acceso al fichero AdventureWorks2000 desde el explorador web de SQL Server Reporting Services Figura 9.1.NET Framework 1. Destacar que ninguna interfaz está basada en COM+. particularmente la clase XmlTextWriter. simplemente utilizando las clases que nos ofrece . SOAP permite la publicación. también con cualquier aspecto del diseño del informe. el acceso URL que permite la integración en modo de portal para los informes publicados y por último SOAP. y que utilizamos con la facilidad y comodidad que brinda la utilización de los Web Services desde Visual Studio . Utilizando el .<< dnm. administración y acceso a cualquier informe y es por ello que empleando las API de SOAP podemos desarrollar una aplicación para administrar un servidor de informes. de entrega. en segundo lugar. 10).servidores. Figura 8. e incluso contando con servicios Web propios y componentes escalables aprovechando los servicios que ofrece los Enterprise Services a través de los Serviced Components.sql Pero las posibilidades de desarrollo van más allá del desarrollo de los informes. <<dotNetManía Figura 10.NET. las oportunidades son muy amplias.XML. todo ello desde un proyecto en cualquier lenguaje . Esquema RDL 22 .

un ejemplo de aplicación consola en C# que muestra el nombre y la descripción de un determinado informe registrado. en este caso Ejemplo y el resultado de la aplicación lo vemos en la figura 12.NET <<dotNetManía 23 De la misma forma que SOAP nos ofrece la posibilidad de administrar un servidor. En el código de a continuación.<< dnm. URL nos permite personalizar un explorador y WMI configurarlo.sql Figura 11. SQL Server Reporting Services cuenta con tres interfaces principales. en segundo lugar. administración y acceso a cualquier informe .Web Service subministrado por Reporting Services para el acceso y representación a informes desde Visual Studio .NET. y por último SOAP que permite la publicación. el acceso URL que permite la integración en modo de portal para los informes publicados. todo ello desde Visual Studio .servidores. Por una parte WMI cuya misión es administrar el servidor de informes.

Value ). } } catch (Exception e) { Console. foreach (Property p in retPropiedades) { Console.”).Name =”Name”. propiedades[1] = descripcion. Console.servidores.GetProperties (informe.Credentials = System.Read().propiedades).WebReference. muy escalable y flexible.CredentialCache. using ConsumidorWS..NET. pensar que un informe puede llegar a ser diseñado. <<dotNetManía Conclusión SQL Server Reporting Services es un conjunto de herramientas integradas cimentadas sobre pro- ductos como SQL Server y Visual Studio . lo hacen único. Su integración con demás tecnologías de servidor IIS. report.Name + “: “ + p. } Console.WriteLine(“Teclee Intro para finalizar. lo que puede ser una buena solución para el tráfico de grandes cantidades de documentos en corporaciones cuya extensión del negocio abarca varios países. publicado e implantado desde código.sql using System.<< dnm. descripcion.. nombre. ASP . Property[] propiedades = new Property[2].Message).Net. etc. } } } Código fuente 1 No es sorprendente pues.Name =”Description”.WriteLine (p. y para pequeñas que enconaran en SQL Server Reporting Services una herramienta de 24 . DefaultCredentials. propiedades[0] = nombre. Property descripcion = new Property().WriteLine (e. try { Property[] retPropiedades = report.NET. namespace ConsumidorWS { class Class1 { [STAThread] static void Main(string[] args) { ReportingService report = new ReportingService(). Property nombre = new Property(). string informe = “/Ejemplo/rptEjemplo”.

.

hace prácticamente parametrizable todo el proceso de utilización de informes así como la admi- nistración. 2004 ISBN: 0764568787 Microsoft SQL Server Reporting Services Brian Larson Editorial McGraw-Hill Osborne Media Páginas: 704 Publicado: Mayo.Vaughn <<dotNetManía Editorial: Pearson Education Págians: 400 Publicado: Previsto para Octubre 2004 ISBN: 0321268288 26 . con unas herramientas sencillas y potentes. James Counihan.servidores.sql Figura 12. bibliografía Professional SQL Server Reporting Services Paul Turley. George McKee.Todd Bryant. permite una total adaptabilidad funcional con tareas de mantenimiento de sistema. clasificación y desarrollo de informes fácil e integral.William R. Las API de SOAP que se ofrece para la parte de desarrollo.<< dnm. Resultado de la aplicación consola. Dave DuVarney Editorial: Wrox Páginas: 800 Publicado: Mayo. de sitios Web y de base de datos entre otros. 2004 ISBN: 0072232161 Hitchhiker’s Guide to SQL Server 2000 Reporting Services Peter Blackburn.

servicios de transformación de datos. hay un asistente que repasa la configuración de nuestro servidor y nos avisa de los prerrequisitos que no cumplimos y nos invita a instalarlos. los formatos en los que se envía (entre otros). ya que los la definición de los informes (ficheros RDL –Report Definition Language). Es por tanto perfectamente viable crear informes sin Visual Studio. éste servidor debe admitir ASP. servidor y un servidor SQL en el que instalará varias bases de datos. situándose en una rama media dentro del mercado del OLAP.NET. es una tarea bastante sencilla. tal y como nos tiene acostumbrados Microsoft. ¿Cómo empezamos? Bueno. servicios avanzados de DataWarehouse. es decir. servicios de alta disponibilidad. lo primero será instalar la parte de servidor. los informes a enviar. Veremos también los elementos que podemos colocar en nuestros informes. al menos de nombre los incluye dentro de lo que ha venido a llamar proyectos de Bussiness Intelligence. ya que al final Reporting Services expone un servicio web que es una interfaz perfectamente válida para administrar el servidor. << Realmente son una potente herramienta cliente ser- 27 <<dotNetManía vidor para la creación. De hecho Microsoft. como por ejemplo el data driven subscriptions. las fuentes de datos. Una herramienta extensible que nos dota de base sin embargo con un buen número de funcionalidades muy interesantes. compartidas o no. en él se desplegarán los informes. mecanismos de trasvase de registros. a través del cual podremos crear de forma sencilla nuestros informes de explotación de información. Vienen a completar la amplia oferta relacionada con SQL-Server. es un fichero XML estándar que cumple los requerimientos que marca un esquema de datos XSD público.NET. tareas programables.NET. a completar al motor relacional. la herramienta de diseño de informes y el despliegue de informes con Visual Studio. aunque bien es cierto que sería como desarrollar aplicaciones fuera del entorno. la respuesta obvia siempre es: por el principio.Por Miguel Egea SQL Server MVP portalsql. administración y despliegue de informes. Sin embargo quedará fuera del alcance de este documento la creación de informes sin Visual Studio. Completan también a los Analisys Services que ofrecen.NET. en concreto instalará las BBDDs ReportServer. el asistente de creación de informes que nos ofrecen los Reporting Services dentro del entorno de desarrollo de Visual Studio.com Crear informes con SQL Server Reporting Services Los Reporting Services son una nueva herramienta de servidor asociada a SQL Server. Veremos entre otras cosas. Necesitamos tener un servidor IIS. que tiene amplias funcionalidades como la replicación. desarrollo. poderse se puede. un avanzado mecanismo de copias de seguridad (como vimos en un artículo anterior en esta misma publicación). ReportServerTempdb y añadirá una base de datos nue- . Instalar los servicios de Reporting Services. algo bastante tedioso. Parte de estas funcionalidades las veremos con ejemplos a lo largo de este artículo. Después nos solicitará rutas. subscripciones que extraen las direcciones de envío.

proveedores. Aún así. después un poco más en detalle con cada uno de los elementos de los que disponemos en un informe.servidores.sql va. para el ejem- [ [ Consejo Si la BBDD es SQL SERVER no importa realmente para este paso si nuestra sentencia devuelve millones de registros. son muy similares a los informes de referencias cruzadas de Access por ejemplo. En cuanto seguimos. eligiendo eso sí. aun- 28 <<dotNetManía . En la siguiente pestaña del asistente nos preguntará si deseamos hacer un informe tabular o un informe de matriz. Para nuestro ejemplo elegiremos Matriz. que contiene un volumen bastante aceptable de datos llamada AdventureWorks2000. los informes tabulares reflejan los listados tradicionales -ya sabéis. A continuación el asistente nos preguntará cual es la instrucción SQL que vamos a usar para nuestro informe. artículos. información en columnas más o menos llamativas. vamos a construir nuestro primer informe. podemos poner en columnas datos que pertenecen a filas. ahí elegiremos el asistente para la creación de informes y cambiaremos a nuestro gusto el nombre del informe. Para comprobar que la sentencia es correcta.… Los informes de matriz sirven para contrastar información. Si lo que deseamos es instalar las herramientas necesarias para que un desarrollador construya informes.pero en columnas. el asistente comprueba que la consulta que estamos ejecutando es correcta para SQL.<< dnm. el asistente encontramos una de las características de los Reporting Services. plo utilizaremos algo muy sencillo. Elegid esta opción si estáis haciendo un listado de clientes. Creando nuestro primer informe Manos a la obra.Reporting Services no ejecutan la consulta para devolver registros sino que añade la sentencia SET FMTONLY ON antes para devolver sólo la estructura. es decir.NET y elegiremos los proyectos de Bussiness Intelligence. para eso abriremos el entorno de desarrollo de Visual Studio . vamos a contrastar la información de ventas por meses. En este paso. cada registro uno debajo de otro. más aún cuando esta conexión puede realizarse en el entorno de seguridad de Windows. solamente las herramientas de cliente tal y como aparece en la figura 1. Son adecuados por ejemplo para mostrar información de diferentes ejercicios o meses. En la figura 2 podemos observar la pantalla del asistente a la que nos estamos refiriendo. lanzaremos el mismo programa de instalación. Figura 2 Figura1 Un par de clics más y tendremos instalados los Reporting Services listos para desarrollar informes profesionales de forma sencilla. es decir se conecten a la misma base de datos con parámetros similares. los orígenes de datos compartidos. Es muy común que buena parte de los informes de una organización utilicen la misma conexión. Select * from SalesOrderheader. Veremos a continuación cómo crear informes primero siguiendo el asistente de creación de informes. podemos construir orígenes de datos específicos para cada informe si es que es ese nuestro deseo.

normalmente nuestro cliente será incapaz de valorar la complejidad o sencillez de construir nuestro informe. que tenga aspecto interactivo. como dice Anthony T. nos aparece una nueva pantalla en la que podemos decir qué campos van a ir a página. yo me atrevería a decir que dramáticamente importante. Para esto simplemente accederemos a las propiedades del elemen- Figura 4 Figura 3 29 <<dotNetManía lidad y marcaremos la opción Otro elemento de informe puede alterar la visibilidad. eligiendo el elemento que puede alterar esa visibilidad la caja de texto del año. y muchas veces ese resultado depende más de la maquetación . siempre es el resultado. a un nivel superior. Al final nos pregunta por el servidor de informes. ahí se realizará la implementación del informe. ya que vamos a hacer las agrupaciones por año y mes.NET. y qué campos vamos a mostrar en los detalles. no me atreveré a hacer ninguna recomendación en este artículo. En nuestro caso elegiremos que la fecha (OrderDate) se sitúe en columnas. este servidor debe admitir ASP. to fecha (que pusimos en columnas) y modificaremos los parámetros tal y como puede verse en la figura 3. ya que. quizá un buen diseñador gráfico ayude mucho más en esa tarea que un informático. agregar grupo. Lo que tendremos que hacer es añadir un nivel de agrupación por años. Para esto entraremos en la pestaña de visibi- Necesitamos tener un servidor IIS.sql que para hacerlo tendremos que personalizar algo nuestro informe al final. Hay algunos detalles más de formato y alineación que pueden darle un aspecto más profesional a nuestro informe. y rellenaremos los datos con los valores adecuados. columnas y filas. tal y como se observa en la figura 4. en filas. Añadiremos un grupo más. y después añadir una propiedad al grupo mes que indique que el nivel mes puede mostrarse o no en función del año. Una vez elegido el formato de matriz.Mann en su guía sobre Reporting Services. Lo primero que haremos será cambiar la expresión de fecha por el mes de la fecha. situad en esa casilla la URL para acceder a vuestro servidor de Reporting Services. su único patrón de medida. Podéis elegir el que más os guste —después siempre puede cambiarse— además de esa forma podéis ver cual es el que más os gusta. veamos qué pasos debemos dar para conseguirlo partiendo de la base del asistente. ya que al final Reporting Services expone un servicio web que es una interfaz perfectamente válida 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. será necesario ahora personalizarlo y darle más sentido. Nuestro objetivo será construir un informe de ventas por años y meses. será el grupo año. Es importante el aspecto. Con esto hemos creado nuestro primer informe. sin embargo. en él se desplegarán los informes.servidores. Para hacerlo pulsaremos botón derecho sobre la matriz.<< dnm. situaremos el código de cliente (CustomerID) y en los detalles situaremos el peso y el subtotal (Freight. subtotal).

Nuestra sentencia la vamos a dejar así: SELECT customerid. este conjunto de datos contendrá una relación de los posibles valores que va a tener nuestro informe. Naturalmente Reporting Services tiene mecanismos para facilitar esta tarea. bien cláusulas TOP que consigan el mismo objetivo. también encontrar las propiedades del informe.Freight. todos de una forma u otra necesitan un conjunto de valores por los que filtrar o algún mecanismo para reducir el volumen de información exactamente al que necesitamos.<< dnm. Como dice Anthony T. Este tipo de informes (y todos en realidad) puede exportarse a Excel. y muchas veces ese resultado depende más de la maquetación y el aspecto que de los datos en sí (que por supuesto tienen que ser correctos) Después volveremos a la pestaña de diseño. Esto hay que quitarlo justo antes de desplegar el informe. además de a PDF.NET seleccionaremos la pestaña datos y a continuación seleccionaremos Nuevo conjunto de datos. de forma predeterminada expongan funcionalidades que serían muy complicadas de otra forma. vamos a quitar todos los campos que no usamos para de esta forma mejorar el rendimiento del informe. e incluso XML con datos del informe. entre ellas las de crear un encabezado y pie de página (las veremos al menos brevemente más adelante). [ Para terminar nuestro informe vamos a darle un poco de sentido. [ Consejo Cuando estamos desarrollando informes es bastante común querer tener un acceso ágil a los datos. HTML con Office Web Componets. Para ello en el diseñador de Visual Studio . normalmente nuestro cliente será incapaz de valorar la complejidad o sencillez de construir nuestro informe. podemos usar en nuestra consulta bien cláusulas WHERE que disminuyan el número de registros.Subtotal FROM SalesOrderheader WHERE orderdate>=’20040101’ El aspecto final del informe es el que podéis observar en la figura 5. tenemos un buen número de formatos que pueden permitirnos que nuestros informes. su único patrón de medida. Veamos paso a paso como añadirle esta lógica.servidores.sql y el aspecto que de los datos en sí (que por supuesto tienen que ser correctos). Este conjunto de datos lo usaremos como base para nuestros parámetros. Siguiendo con nuestro ejemplo vamos a dotar a nuestro informe de la posibilidad de seleccionar el año del que mostrar la información.Mann en su guía sobre Reporting Services. CSV.orderdate. Es decir. y además está <<dotNetManía Figura 5 30 . en la esquina superior izquierda de cualquier report. siempre es el resultado. Agregando interactividad a los informes No hay informe que no necesite parámetros. A continuación incluiremos un nuevo conjunto de datos a partir de esta instrucción SQL SELECT DISTINCT Year(orderdate) Año FROM SalesOrderHeader . tal y como podemos ver en la figura 6. Pulsando con el botón derecho del ratón nos aparecerá un menú desplegable con varias opciones. Lo primero que vamos a hacer es añadir un nuevo conjunto de datos a nuestro informe.

esto nos permitirá seleccionar como valor el conjunto de datos que acabamos de crear. Hay varias formas de mejorar esto: Se puede crear un campo calculado en la tabla que sea el año y construir un índice por ese campo. la sentencia.Freight. no tiene nada que ver con la factura. finalmente quedará así: SELECT customerid.Subtotal FROM SalesOrderheader WHERE year(orderdate)=@año mos @año y cuyo valor será =parameters!parAño. en el mensaje elegiremos Año del informe.servidores. elegiremos de consulta. bastará con cambiar la sentencia que nos ha servido de base para el informe. consiguiendo así enlazar el informe con los parámetros que estamos solicitando. del conjunto de datos que hemos generado y añadiremos un parámetro (esta vez al dataset). [ .<< dnm. Vamos a ver también paso a paso como añadir un gráfico a nuestro informe. En el caso del que estamos hablando. Pensemos por ejemplo en la factura de la compañía telefónica. todas o casi todas tienen un gráfico de evolución del consumo en los últimos meses. aprovecharemos para crear nuestro conjunto a partir de un procedimiento almacenado. el código del procedimiento almacenado será muy sencillo.value. como nombre elegiremos ParAño. que llamare- 31 <<dotNetManía [ Consejo En general las sentencias SQL en que se hacen transformaciones o se usan funciones (como Year() en nuestro ejemplo) no son demasiado óptimas.sql Figura 7 Figura 6 la opción que estamos buscando: la opción de ver los parámetros del report. Con esto acabaríamos de crear el parámetro al informe. el origen de datos. no hay muchas facturas generadas por ERP’s más tradicionales que tengan esta información. podemos verlo a continuación: Después entraremos en las opciones del dataset. como valores disponibles. al hacer esta fórmula estamos impidiendo que SQL Server use los índices que potencialmente podemos tener por el campo. Está claro que aún no hemos usado el parámetro 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 diseñar el informe de ejemplo. Para conseguir esto. es añadir gráficos a este tipo de informes. Añadiendo gráficos a los informes Una de las cuestiones que generalmente es necesaria. ya que hasta ahora en los ejemplos siempre hemos venido usando sentencias directas. Comenzaremos esta parte creando un procedimiento almacenado en la BBDD AdventureWorks2000.orderdate. o se pueden usar rangos de fechas para expresar lo mismo. sin embargo. son datos absolutamente disjuntos. Seleccionaremos Agregar un nuevo parámetro.

de nada sirve un informe si no puede desplegarse. La herramienta es capaz de hablar con el Servidor de Reporting Services (a través del servicio web que expone) y enviar la información necesaria para desplegar el informe. añadiremos un par de cajas de texto en el pie de página arrastrándolos desde el cuadro de herramientas hasta la superficie del pie de página. Para realizar esta tarea veremos las opciones que ofrece Visual Studio . Despliegue de los informes Hasta esta parte del artículo sólo hemos hablado sobre cómo desarrollar los informes. Si lo estimamos oportuno.NET. es decir instalarse en algún lugar y ser visualizado. y además entraremos a personalizar el informe para que no muestre la leyenda. o bien justo debajo. y bien en un margen. Para proporcionar esta información hay variables globales que nos las ofrecen y que a través del editor de expresiones podemos acceder. 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 añadir el gráfico. es bastante sencillo invocar y no vamos a entrar en más detalles. Generalmente es interesante conocer datos como la fecha y la hora de generación del informe. Para poner la página en la que estamos y la fecha y hora de ejecución hemos usado respectivamente las variables globales Globals!ExecutionTime.sql Create Proc EvolucionVentasPorMeses (@año smallint ) as begin select month(orderdate) mes. pincharemos y arrastraremos un nuevo grafico a nuestro informe.servidores.<< dnm. Si lo pensamos tranquilamente. llevaremos el campo subtotal a valores y el campo mes a los campos de categoría. Una de las herramientas más potentes para desplegar informes es el propio Visual Studio .NET y veremos parte de las diferentes opciones de renderizado. únicamente recordar que añadiremos el enlace con el parámetro @año. Sin embargo Reporting Services solamente usará el primero de ellos. [ A continuación añadiremos un nuevo conjunto de datos. tanto los orígenes compartidos de datos como los propios informes. sin embargo.sum(Subtotal) Subtotal From SalesOrderheader where year(orderdate)=@año group by month(orderdate) order by 1 end go [ Consejo Algunos procedimientos almacenados (en SQL Server) pueden devolver más de un conjunto de registros. la tarea tampoco es especialmente complicada. lo que tiene cierto interés es cómo usar esos encabezados y pies de página para mostrar la información realmente relevante para todas las páginas. bas- 32 . El conjunto de datos se basará en este procedimiento almacenado. Para insertar valores. después desde las propiedades de la caja de texto podemos acceder al editor de expresiones y poner la expresión más adecuada. ta con pulsar con el botón derecho en el cuadro superior izquierdo de la ventana de diseño y obtendremos las dos opciones de menú que dan acceso a encabezados y pies. podemos hacer más grande ahora la superficie del informe. Más allá de lo obvio. Globals!PageNumber y Globals!TotalPages. no lo es debido a que el resultado de toda nuestra tarea no deja de ser Figura 8 <<dotNetManía Añadir encabezados y pies de página Añadir un encabezado o un pie de página es una tarea muy sencilla en el diseñador de informes. y la página y el total de páginas. es conveniente tener cuidado con esto y asegurarse de usar SET NOCOUNT ON cuando sea necesario. de la misma forma que hemos enlazado este parámetro para el conjunto de datos base para la matriz de datos. Después arrastraremos los campos del nuevo conjunto de datos a la superficie del gráfico. No llevaremos en este caso nada a serie.

Si por el contrario estamos desarrollando aplicaciones en ventanas tradiciones. que desde el entorno de producción. Una vez creada la referencia solamente hay que ejecutar el método Navigate del control pasándole como parámetro la dirección URL en donde hayamos desplegado el informe. ¿Y hace algo más? Pues la verdad es que sí. a los Microsoft Internet Controls. podrían tratarse las suscripciones. ¿Y cómo integramos esta visualización dentro de nuestras aplicaciones? Si las aplicaciones son Web nada Conclusiones Reporting Services. esta referencia es realizada mediante COM Interop. Otro detalle interesante a mi juicio es que cada una de las configuraciones admite estos parámetros. Dentro de la seguridad podemos programar que se haga impersonación. un fichero de extensión RDL que contiene en sí mismo toda la definición del informe de forma clara y transparente. y ya se encarga el propio informe de solicitarlos. En la figura 9 podemos ver el aspecto que tiene la pantalla una vez ejecutado el informe. al fin y al cabo no es más que navegar a una página web en la dirección URL en la que hayamos desplegado nuestro informe. de forma ágil y sencilla. Por último simplemente ejecutamos. cuyos valores pueden ser ‘True’ o ‘False’. como si de cualquier proyecto se tratase y tendremos nuestro informe situado en el servidor de informes. Toda esta tarea de configuración y de administración de nuestro servidor de Reporting Services podría quedar estropeada por que al desplegar un conjunto de informes sobrescribiésemos los orígenes de datos. Figura 8 más sencillo. Para conseguir el despliegue de los informes desde Visual Studio .servidores. como una poderosísima herramienta de generación de informes profesionales. además de la seguridad y las ‘interioridades’ de los Reporting Services Visualización de informes Una vez situado el informe en nuestro servidor de informes necesitaremos que nuestras aplicaciones tengan la capacidad de usarlos. bien con los parámetros en la propia URL. El que exista la propiedad OverwriteDataSources es realmente importante. podemos usar una referencia web al Servicio Web que exponen Reporting Services (http://NOMBRESERVER/ReportServer/ReporService. podemos poner hiperenlaces a las direcciones URL de los informes. bastará con añadir una referencia al navegador. y usar los métodos de RENDER para obtener la información de renderizado (incluso en un Stream). de la misma forma. definiéndose. es decir de invocar a esos informes para que muestren la información. es decir que podemos estar ejecutando en modo Debug nuestros informes contra servidores de pre-producción o desarrollo y en el momento que estén terminados. bien sin ellos. a pesar de su juventud en el mercado. 33 <<dotNetManía .NET tendremos que usar las propiedades del proyecto. Es bastante normal que el entorno de desarrollo acceda a servidores de desarrollo y que el entorno productivo a servidores de producción. en aplicaciones de escritorio tampoco es que sea mucho más complicado. Nada más sencillo de conseguir.NET. Tres son los parámetros que tendremos que configurar para que se haga el despliegue: OverwriteDataSources.<< dnm. muchas cosas más.sql un fichero XML con la definición del informe. y TargetFolder y TargetServerURL que indican respectivamente la ruta del servidor y la ruta dentro del servidor en el que desplegaremos nuestros informes.asmx). tanto programadas como gobernadas por los propios datos. que existen de varios tipos. la parte de administración de informes no la hemos tocado en este artículo y la dejamos pendiente para el futuro. tengan en cuenta que las cadenas de conexión 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 información. pero también podemos decidir usar un nombre de usuario y una contraseña o un usuario de Windows creado solamente para genera los informes. como herramienta cliente servidor puede ayudarnos a hacer informes profesionales dentro del propio entorno de Visual Studio . simplemente cambiar el combo para decir que desplegamos en productivo y ejecutar la aplicación. es decir que el IIS deje pasar nuestras credenciales hasta el servidor (o servidores) desde donde se extraiga la información. o podemos hacerlo también mediante acceso URL.

o extendido a partir de IChannel).Net Remoting y Web Service. por lo que sólo explicaré estas tres primeras en los próximos párrafos. << ¿Cuando usar cada método de distribución de aplicaciones? Esta variedad de elección tiene su sentido. o sin Biztalk. Además el modelo de remoting nos permite tener distinta serialización (binaria. De este modo. Pueden variar mucho los requerimientos entre una aplicación de facturación y una de logística en tiempo real. 34 <<dotNetManía .Net cuatro maneras de distribuir aplicaciones.Net. También utilizaré un servicio web cuando no sé con exactitud qué plataforma tendrá el cliente o cuando desarrollo información que será solicitada desde muchas aplicaciones diferentes para facilitar la integración. pero lo preguntas importantes que debemos hacernos al inicio de estos proyectos son: • ¿Desarrollaré los dos puntos de la aplicación (tanto el cliente como el servidor)? • ¿Qué grado de integración con otras aplicaciones debo tener? • ¿El usuario se conecta y se mantiene conectado. distintos canales de envío de mensajes (TCP. Por ejemplo si un servidor se cae. . los mensajes se conservan en local hasta que se restablece el servidor. mientras que la mensajería es exactamente lo contrario. es decir cuando no soy el dueño de la información. Si podemos utilizar métodos en forma asíncrona (incluso un servicio web nos crea los métodos BeginOperacion y EndOperacion para utilizarlo asíncrono) ¿Porqué utilizar mensajería? Tanto remoting como web service son tecnologías diseñadas para trabajar en forma síncrona.Net remoting puede enviar mensajes desde el servidor hacia los clientes. Además es muy útil para la integración de aplicaciones. esto significa por ejemplo que el cliente nos dejará instalar . a saber: Los servicios web.Por Daniel Manzini Arquitecto de Sistemas de Información Ubica Solutions Distribuir aplicaciones con . Los tres primeros métodos de distribución son controlados por el la plataforma . y radica en lo que quiere hacer el cliente a fin de cuentas con el proyecto. por lo tanto viene con características difíciles de implementar con los otros métodos. o extendida a partir de IFormatter). Pensando con el cliente Aunque una aplicación se encuentre dividida en n capas. Además .Net Remoting. SOAP. la lógica en los objetos DCOM en otro ordenador (servidor de aplicaciones) y la base de datos en un servidor diferente (el servidor de datos). sería tener a un thread que lea los mensajes que llegan y lo deserealice.NET Remoting Existe en . tenemos muchos aplicativos de gestión. Como en el presente artículo no tocaremos el tema de mensajería. Cuando esta gestión no requiere un tiempo vital en la respuesta (un control de gasto. Mensajería (MSMQ) y Componentes empresariales (COM+). Con tecnología DCOM muchas empresas fueron creando productos distribuidos.Net remoting nos es útil cuando deseamos distribuir una aplicación y controlamos los puntos donde se va a distribuir. donde para pagar una factura se tarda 60 días y se consulta su estado una media de tres a cinco veces en esos 60 días) se puede distribuir por medio .Net en sus ordenadores clientes y servidor. momento en que se envían los mensajes automáticamente. se conoce generalmente como aplicaciones cliente servidor a aquellas aplicaciones donde un cliente solicitaba información a un punto central por medio de una LAN. HTTP. vea en la tabla 1 que puede ilustrar similitudes y diferencias entre . Un servicio web es mucho más restrictivo en estos últimos puntos. El caso de integración sería colocar un mensaje en una cola de mensajes que forma parte de un flujo de trabajo de Biztalk. con la visualización en formularios. distintos modos de programación con los objetos (statefull or stateless) y compartir por valor o por referencia. o consulta esporádicamente? • ¿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.

ASP. Y para poder llegar a verlo trabajar tendré dos soluciones: la solución cliente con el proyecto cliente y el proyecto compartido. 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. es decir en el cliente y en el servidor. A los Figura1 <<dotNetManía 35 Con este ejemplo nos sacamos un par de dudas sobre los valores de retorno en remoting. Esto indica que por lo menos cuando trabaje con remoting tendré tres proyectos: el cliente. La petición que se realiza antes de llegar al canal se serializa por medio de un formateador. El canal representa.<< dnm. el servidor y uno compartido donde colocaré las clases que usa el cliente y que solicita al servidor. Por ejemplo tenemos el siguiente método en la clase Empleado_ReglaNegocio en remoto: public Empleado ObtenerNuevoEmpleado() { return new Empleado(). por ejemplo) hay que distribuirlo por medio de .plataforma.) lo puedo tener como MBR. Arquitectura de .NET Valor o referencia Con o sin estado TCP. y conceptualmente funciona igual que un parámetro por valor o por referencia.NET Remoting Para entender la infraestructura de remoting hay que saber tres conceptos: proxies. mientras que las reglas de negocio (BuscarUnEmpleado.Net se puede . es posible que la solución cliente se distribuya en 100 ordenadores. al llegar existe otro formatedor que deserealiza el mensaje y realiza la petición en el entorno remoto. } 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. Cuando llegamos a este punto nos damos cuenta que la clase Empleado debe estar en los lados del remoting. ese es un tema de seguridad y de mantenimiento. pero para aquellas aplicaciones donde el tiempo lo es todo (aplicativos para control de ambulancias. entonces. canales y mensajes. 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.Net remoting. De seguridad porque . dando por resultado el mensaje que se transmite. mientras que si fuera MBR tendríamos en local un puntero al objeto remoto.net Remoting Reside en Aplicación de consola Windows Service. SOAP. que no es nada más ni nada menos que el proxy. entonces obtendríamos en local una copia del objeto remoto —hay que tener en cuanta que este tipo de objeto se ejecutara en local—. Lo que hace el proxy cuando se hace una petición en local es delegar la petición por el canal al objeto remoto. Distribución de proyectos La finalidad es compartir objetos que están mas allá de la frontera de la aplicación. la conexión entre la aplicación local y la aplicación remota. En la vida real. HTTP. etc. Éstos se pueden compartir por valor o por referencia. Ahora nos meteremos con el proyecto compartido ¿es necesario poner las clases? En otras palabras ¿es necesario poner la implementación en cada uno de los 100 clientes? Bueno. BuscarEmpleadoporMail. o propios Binario. y la solución servidor con el proyecto servidor y el proyecto compartido. o propias Sólo .NET primeros los llamaré en adelante MBV(del inglés Marshal by Value) y a los últimos MBR (del inglés Marshal by Reference). La figura 1 ilustra el proceso. éstos pueden ser tipos incluidos en la plataforma o clase propias. email y otros datos) como MBV. Si la clase Empleado fuera MBV.Net CTS (de la plataforma) Web Service ASP.

abri- sión . Para que el objeto pueda ser llamado la aplicación de consola debe estar ejecutándose. Ahora que ya tenemos el servidor terminado. Como los objetos que voy a compartir son entidades de negocio (a mi me gusta decirles Objetos de Transferencia. además le indicamos que usaremos el puerto 1234. En cuanto a los nombres. mientras que si es SOAP se coloca la extensión . por defecto cuando se comparte un objeto que utiliza el transformador binario (el TCP si no le decimos lo contrario usa serialización binaria. en el proyecto compartido puedo usar clases abstractas o interfases. Ver fuente 2. un servicio de Windows. Para ello. mientras que en la solución cliente nos queda el proyecto cliente y el proyecto compartido.<< dnm. Eso me trae problemas de tiempo y de carga de red (acompaño un ejemplo con el nombre de serialización. como en el cliente sólo tengo la interfaz. llamamos al objeto remoto. el compartido que sólo son interfases. Por tal motivo tiene que heredar directa o indirectamente de MarshalByRefObject. Ahora echemos un vistazo a lo que escribimos para lanzar la aplicación. el servidor. Los objetos MBV se ejecutan en local. Ahora pasa al proyecto que tiene la implementación. Las consideraciones sobre la distribución no acaban aquí. A continuación voy a empezar a dejar ejemplos de código. con un determinado protocolo. cree una interfaz por la cual le pueda asignar el nombre al Empleado. Lo aconsejable es colocarlo dentro de un try – catch o pedir con el método GetChannel de la misma clase. específicamente por las interfases: mos una canal de comunicación. pasamos a crear dos soluciones que puedan ir demostrando algunas instrucciones básicas para por el otro lado en el servidor abrir un puerto.plataforma. 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. y el segundo. En el cliente. Vea el material de apoyo en dotnetmania. es la dirección donde está el servidor.REM.net descompilar si no tomamos los cuidados necesarios. Empecemos por el proyecto compartido. El código lo podrán encontrar bajo el directorio EJEMPLO01. Tenemos que decirle el tipo de la clase. ¿Porqué no usar DataSet o DataSet tipificados en lugar de objetos de transferencia? Es una buena pregunta. Primer ejemplo de . y por ultimo el tipo de objeto en remoting que es. y algún método que puede responder usando los valores internos del objeto. una aplicación de consola (para desarrollo viene muy bien).NET Remoting Ya puesto en la distribución. o en IIS. Generalmente se usa este tipo de aplicación para pruebas y desarrollo. Por sencillez. y de mantenimiento. En este caso también lo veremos por medio de una aplicación de consola. siendo de un tamaño 5 veces mayor. tendría el método CalcularImporte que multiplicaría la propiedad Cantidad x PrecioUnitario. por ejemplo si estuviera hablando de la clase Detalle de Factura. Ver fuente 1.GetObject que espera por lo menos dos parámetros: el primero. mientras que el HTTP usa serialización 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). 36 .com). Ésta es otro motivo para recalcar el uso de las interfases ya que . por lo tanto necesitan en local el código para poder funcionar. coloca la interfaz que espero. usamos el método Activator. usaría serialización binaria. ya que en su momento los estudié como parte del patrón Transfer Object 1) tendrá propiedades para acceder a los valores y cambiarlos si es necesario. los distintos ejemplos servidores estarán hosteados por aplicaciones de consola. Si tuviéramos que distribuir una aplicación en una LAN.SOAP. Con el canal registrado. Para poder compartirse tiene que haber una aplicación que lo lance. pasaremos al cliente. Es decir que termino teniendo en la solución servidor tres proyectos.Net acepta tener una única clase base. el tipo de objeto que se va a compartir. un nombre del objeto (URI). en este caso será una aplicación de consola. } } <<dotNetManía Siguiendo con el ejemplo de Empleado. por más que le indique que es serialización binaria se serializa como XML. string ObtenerNombre (). esta dirección está formada por protocolo de comunición + dirección IP (o nombre de maquina) + puerto que está esperando petición + nombre del objeto. en este caso. Por medio de la clase TcpChannel. ahora hay que indicarle qué clases se pueden compartir. si retorno un nulo. La clase Empleado se compartirá por referencia. registrarlo y sino elevar una excepción. Ver fuente 3. Las clases abstractas pueden llegar a tener implementación. y un proyecto de transferencia que son las clases que implementan las interfases del proyecto compartido. El servidor puede implementarse de tres maneras. Luego usamos el método estático RegisterChannel para registrar el canal. 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 ase- “Core J2EE Patterns” de Deepak Alur. luego lo ideal seria un servicio de Windows. Hay que tener presente que si fuera un canal que ya se está usando puede dar un error. pero con el DataSet tengo un problema. para ello. si alguien logra descompilarlas. por eso lo dejamos con el ReadLine puesto. Como ya vimos. por lo que es recomendable utilizar interfases que sólo se implementan en el servidor y como no tienen código de implementación. pues no verá mucho. pero antes un 1 comentario sobre los ejemplos. cuando un objeto tiene que pasar por un canal se serializa al partir y se deserializa al llegar.

using System.rem”.Runtime. public Empleado() { Console. System.plataforma. return _nombre.RegisterWellKnownServiceType( typeof(Empleado).Remoting.RegisterChannel(tcpch).WriteLine(“Presione ENTER para terminar el servicio”). Console. System. _nombre=nombre. namespace Servidor { class Servicio { [STAThread] static void Main(string[] args) { Console. } #region IAsignar Members public void AsignarNombre(string nombre) { Console. ChannelServices._nombre.Singleton).WriteLine(“Empleado.<< dnm.ReadLine(). } } } Fuente 2 <<dotNetManía 37 .Tcp.WriteLine(“Servicio._nombre).Main(): Se inicio el servicio”).Remoting. } public string ObtenerNombre() { Console.WriteLine(“Empleado.IAsignar { string _nombre.Runtime. WellKnownObjectMode. namespace Compartido { public class Empleado:MarshalByRefObject.Remoting.Channels. Console.nombre).WriteLine(“Creando el objeto Empleado”). using Compartido.Runtime.ObtenerNombre * retornando el valor {0}”. “Empleado.AsignarNombre * viejo valor = {0} * nuevo valor {1}”.Channels. } #endregion } } Fuente 1 using using using using System. using ICompartido. RemotingConfiguration. System.Remoting.net using System. TcpChannel tcpch= new TcpChannel(1234).Runtime.

En contra.SingleCall.1 del Framework.microsoft. pero sólo podemos usar el constructor por defecto. se crea. System. esto con un tipo de objeto singleton sería una sola instancia.0.Net Remoting 38 <<dotNetManía Los objetos MBR se pueden activar de tres maneras: SingleCall. sencillamente porque no se destruyó el objeto.ObtenerNombre(). y lógicamente consumiría menos recursos del servidor.0. sólo el constructor por defecto.Net Remoting aplicando las mejores prácticas la creación de un objeto (SingleCall y Singleton). mantenía el mismo valor y lo compartía con el nuevo proceso cliente. el objeto ya fue creado por el método GetObject. ChannelServices.<< dnm. Para mas información ver (http://support.0. Al activarse del lado del cliente puedo hacer un new. veremos que en el servidor se construye dos veces el objeto Empleado. System.Runtime.WriteLine(“Ya tengo el proxy creado”). } } } Fuente 3 gurarme de que funcione en cualquier ordenador puse 127. En el caso que no quisiéramos compartir las interfases. Nos cuestionaremos cada decisión de diseño de aplicaciones distribuidas y veremos como podemos resolverlas con . obj. Activado desde el Cliente.1:1234/Empleado. si tienes la versión 1. pero si vemos en la consola del servidor. lo cual se puede considerar una ventaja porque el código queda mucho mas fácil de leer. ¿Con ganas de probarlo? Compile todo. podemos utilizar una herramienta que se llama SoapSuds. ejecuta el método y se destruye el objeto remoto.RegisterChannel(ch).0 no tenía problemas. luego lanzamos el cliente hasta que llegue al punto de interrupción. varios clientes podrían crear instancias iguales. . el WellKnownObjectMode. Es muy útil para compartir información entre clientes. using ICompartido. Microsoft te recomienda que esperes a que exista un service pack para que funcione correctamente o que contactes a un número de teléfono de soporte.AsignarNombre(“dotNetMania”).Channels. cambiaremos el servidor otra vez a Singleton y ejecutaremos dos veces seguidas el cliente. Para ver cómo se comportan. la variable nombre estaba vacía y le asignamos el nombre dotNetMania.com/default. Por ultimo tenemos los objetos que se pueden activar del lado del cliente.Remoting.rem”).en-us.0. Ahora vamos a poner un punto de interrupción en el cliente donde decimos que el proxy ya está creado.net using using using using System. se puede decir que no recuerda nada del usuario que está utilizándolo. sólo cambiaremos en el ejemplo anterior.Net? ¿Llamo a mi psicólogo? No tranquilo. El Singleton es una sola instancia del objeto remoto para todos los procesos clientes que la llamen. y aquella donde se administra desde el cliente.Remoting.Channels. Console. el constructor aún no avisó que se creó el objeto ¿Bug de . Paramos el servidor si estuviera andando y volvemos a lanzarlo.Runtime. Lo que sucede es que cuando se hace la petición. System.1 en lugar del nombre de mi ordenador (también podía haber puesto localhost). Singleton. en el servi- Tipos de objetos en . ahora veremos el porqué. Igualmente podemos decir que son dos divisiones genéricas: aquella donde el servidor administra dor. El problema más importante que tienen es la escalabilidad. La primera vez que ejecutamos el cliente.GetObject( typeof(IAsignar). Algo importante en torno al SoapSuds. Al ejecutarlo. luego el cliente.aspx?scid=k b. La herramienta SoapSuds no extrae la información sobre distintos constructores.plataforma. esto es porque hay dos llamadas. una donde le asigno el nombre y una donde le pido el nombre. Según el código del cliente.Tcp.Remoting. ejecute el servidor. El SingleCall funciona igual que un servicio web sin estado.Singleton a WellKnownObjectMode. IAsignar obj = (IAsignar) Activator. es así.Runtime. si quisiéramos otros constructores deberíamos compartir la implementación.823445). “tcp://127. Generalmente se utilizan para procesos largos. ya que como la activación se maneja desde el cliente. y podrá ver como en el servidor solicitó el cliente. Esto hace que los objetos SingleCall sean los más escalables de los tres tipos. Los pasos quedan reflejados en la consola del servidor. Cabe aclarar que con la versión 1. string retorno = obj. la segunda vez le volvimos a asignar el mismo valor. namespace Cliente { class ClienteInicio { [STAThread] static void Main(string[] args) { TcpChannel ch = new TcpChannel(). Para ver un ejemplo. El tiempo de vida por defecto es de 5 minutos.

sobrecargo el método CrearEmpleado de igual manera que está sobrecargado el constructor de la clase Empleado. y por último al método RegisterActivedServiceType y le pasamos el tipo que queremos compartir como parámetro. ahora exponemos la clase Factoria y lo dejamos Singleton porque existirá una sola factoría para todos los clientes. WellKnownObjectMode.net Una ventaja que nos trae este tipo de activación es la posibilidad de usar distintos constructores. 2 3 “Design Patterns” de Erich Gamma. La idea principal es que la interfaz no cambie.Singleton). y de llamar indirectamente. Bajo esta misma buena práctica. En el cliente. “Factoria. Como la factoría será llamada desde el cliente.0. donde cada método de la factoría mapea a un constructor. En la aplicación de consola que inicia el servidor. porque no comparto la implementación. de en lugar de encapsular la creación de un objeto. ejecutamos el método RegisterActivatedClientType y le pasamos el tipo de objeto y la dirección donde está el servidor como parámetros. Console. En el servidor tuvimos que cambiar la manera de publicar el objeto. también podríamos usar el patrón Facade3. tengo la posibilidad de usar constructores. pero por medio de la factoría obtengo los mismos resultados. En el cliente la primera vez uso el constructor por defecto y luego otro constructor donde le asigno el nombre al empleado. Pero.ObtenerNombre().Net Remoting Para lograr todo esto. IAsignar CrearEmpleado(string nombre) } RemotingConfiguration. los cambios quedan de la siguiente forma: guntas.rem”).plataforma. Ralph Johnson y John Vlissides Idem II <<dotNetManía 39 Como se ve. no me gusta mucho por principios de programación distribuida ¿qué puedo hacer para tener la ventaja de constructores y no tener que compartir implementación. (¿Cómo hago para cambiar el servidor de ordenador sin reinstalar IFactoria factoria = (IFactoria) Activator.CrearEmpleado(“dotNetMania”).rem”.GetObject( typeof(IFactoria). string retorno = obj. } #endregion } } Fuente 4 se Empleado. después de registrar el canal. lo que deberíamos hacer es que la clase no se exponga directamente. sino indirectamente como respuesta a un método. en lugar de exponer la cla- Como se verá. comparto implementación y eso no me termina de convencer.”tcp://127. entonces el cliente se puede mantener. no puedo usar directamente el constructor específico de la clase empleado. pero el día de mañana quiero tener 5 ordenadores conectados a un servidor? ¿Cómo hago para que un objeto remoto permanezca siempre activo? ¿Cómo se avisa el cliente desde el servidor? ¿Cómo puedo utilizar Remoting con Multiservidores? ¿Cómo puedo aplicar seguridad?) . y que sea escalable? namespace Compartido { public class Factoria:MarshalByRefObject. ahora usamos dos llamadas a la clase RemotingConfiguration. Esto se conoce como una factoría2. luego en el proyecto compartido agrego la clase Factoria e implemento la interfaz IFactoria. puedo hacerlo fácilmente. Encontrarán el ejemplo en el directorio EJEMPLO02. En el cliente. para decirle el nombre.RegisterWellKnownServiceType( typeof(Factoria). IFactoria { public Factoria() { } #region Factoria Members public IAsignar CrearEmpleado(string nombre) { return new Empleado(nombre). Esto lo hace escalable. IAsignar obj = factoria. Esto constituye una buena práctica dentro de remoting. Empezaremos por la interfaz: public interface IFactoria { IAsignar CrearEmpleado(). necesitamos que herede de MarshalByRefObject. Ver fuente 4. Pero eso será tema de otro día al igual que otras pre- Una buena practica en .WriteLine(“Ya tengo el proxy creado”).<< dnm. } public IAsignar CrearEmpleado() { return new Empleado(). como comparto implementación. don- todos los clientes? ¿Qué hago si en el parque de ordenadores son todos Windows Me o 98? ¿Dónde realizo el host? ¿Y si quisiera usar esta misma arquitectura en un solo puesto de trabajo. la primera a la propiedad ApplicationName. Richard Helm.1:1234/Factoria. encapsulamos las llamadas del cliente al servidor.0.

a fin de distribuir el código. no formen parte de la CLS. Las aplicaciones pueden definir sus propios ámbitos con nombre.NET. algunas de las cuales no existían en el lenguaje Object Pascal como lo conocíamos hasta Delphi 7 o. tales como System. sin embargo. o namespaces. La nueva sintaxis de Object Pascal. básicamente. no se comportaban exactamente como se indica en dicha especificación.NET las definiciones de tipos se almacenan jerárquicamente en ámbitos con nombre. así como la interoperabilidad entre sus clases. lo cual ha obligado a construir un compilador prácticamente nuevo que.NET. conocida genéricamente como CLS (Common Language Specification). << Introducción La primera versión de Delphi. que podríamos ver como un subconjunto de aquél. de existir. sin embargo. El cumplimiento con dicho subconjunto.NET. <<dotNetManía 40 . no están presentes actualmente en las versiones del compilador para Win32. Con Delphi 2 apareció el compilador que producía código de 32 bits para la plataforma Win32. lo cierto es que ese compilador era. en lugar de código nativo. conocido como Object Pascal. Los lenguajes .NET Con el objetivo de poder generar código ajustado a la especificación común de lenguaje (CLS) de la plataforma . a punto de ser liberada hace ahora casi una década. eliminando ciertos tipos y alterando otros para poner Object Pascal al mismo nivel. que hace posible la reutilización del código entre distintos lengua- jes. Módulos y ámbitos con nombre En la plataforma . no contempla la posibilidad de crear alias para los ámbitos con nombre mejoras y extensiones a lo largo de los años. contaba con un evolucionado compilador de Pascal orientado a objetos. Delphi 8 es la primera versión de este producto preparada para crear aplicaciones para la plataforma . la actual versión de Object Pascal. pero Borland ha asegurado que actualizará dicho compilador para guardar un paralelismo que facilite el mantenimiento de una misma base de código entre proyectos Windows y proyectos . que los demás lenguajes .NET de Microsoft.NET. a pesar de estar presentes en el sistema común de tipos o CTS. Éste debe ajustarse a una especificación. Por ello ha sido necesario introducir algunos cambios. es inevitable. El ámbito con nombre. cuyos puntos más destacables van a ser descritos en este artículo. así como hacer referencia a otros para poder usar los tipos definidos en ellos. agregando nuevas palabras clave.NET pueden contar con características que. nombre con el que ha venido denominándose genéricamente a la plataforma de ejecución que representan todas las versiones de Windows de 32 bits. el mismo hasta la versión 7.Windows.Windows. sino superior.Por Francisco Charte Torre de Babel fcharte. es un concepto inexistente en Object Pascal… hasta ahora.com Cambios sufridos por Object Pascal en Delphi 8 . Borland ha tenido que introducir ciertos cambios en el compilador de Object Pascal que incorpora la versión 8 de Delphi.Forms o Microsoft. Aunque con ciertas A diferencia de otros lenguajes . En la CLS se detallan ciertas construcciones que deben ser contemplados en cualquier lenguaje. que generaba código de 16 bits para el sistema operativo Windows. genera código IL. en Delphi 8.

los identificadores Form y System. System. una estructura o enumeración. al tiempo. El problema estriba en cómo se entienden estos términos. Podemos establecer un ámbito por defecto en las opciones de proyecto <<dotNetManía 41 . no teniendo así que especificarlo en cada uno de ellos.Ejemplos.Forms. además. El nombre físico del archivo coincidiría con el del ámbito. públicos y publicados. utilizándose las palabras clave private. Con la visibilidad protegida ocurre otro tanto. Podemos. Tras añadir la anterior cláusula uses a un módulo. Por ejemplo: amplia del concepto de privado. iniciar un programa con una línea así: program dotNetMania. cuenta con un apartado en el que puede indicarse un ámbito por defecto que se añadiría automáticamente como prefijo al nombre de los módulos. Podríamos decir que es una interpretación Las estructuras de datos con métodos y propiedades no deben ser vistas como sustitutas de clases.Drawing.NET. en esta nueva versión la cláusula uses. La nueva versión del compilador de Object Pascal contempla el uso de las mismas palabras clave anteriores para recoger no sólo el nombre del módulo. pero los generados por el compilador reflejarían el nombre completo incluyendo el ámbito por defecto.Programa1.Form. protegidos. protegida y privada. Si Borland hubiese optado simplemente por restringir la visibilidad de los miembros private y protected.NET pueden asignar a los miembros de sus tipos una visibilidad entre tres posibles: pública. En Object Pascal un miem- uses System. ya sean módulos de programa. exclusivamente.Windows. añadiéndose únicamente la extensión correspondiente. Dicho nombre.Ejemplos. las clases derivadas de ésta y cualquier punto del módulo del que forme parte. Teniendo en cuenta estos nuevos modificadores. de miembros privados. pero nunca desde el exterior.lenguajes. evitando que sean accesibles desde puntos del módulo externos a su clase. y Object Pascal. por ejemplo el nombre de una clase.Net. begin … Para completar la posibilidad de trabajar con ámbitos con nombre. por tanto. El cuadro de diálogo de opciones de proyecto. Los módulos de código fuente tendrían el nombre indicado tras program o unit. library y package. Visibilidad de los miembros de un tipo Hasta la versión del compilador incorporado en Delphi 7. sino la especificación de un ámbito completo. sin embargo. en Delphi 8. En la CLS. En este caso la palabra program indica que el código de este módulo se introducirá en un ámbito denominado dotNetMania. por ejemplo. haciendo referencia en ambos casos a la clase Form del ámbito System.Forms. de paquete o cualquier otro tipo. protected. precediendo el identificador de tipo del nombre completo del ámbito. A la hora de hacer referencia a un determinado tipo. la conversión de proyectos de versiones previas sería más problemático. contempla la posibilidad de ir acompañada de nombres completos de ámbito. evitar que el código existente dé problemas a causa del cambio. establece indirectamente también el nombre del archivo físico. o bien referencias simples siempre que éstas no entren en conflicto con identificadores locales. Object Pascal contemplaba la existencia en un tipo. por ejemplo la definición de una clase. que serían funcionalmente equivalentes a los protected y private de C# o Visual Basic. un miembro private debe ser visible exclusivamente para los miembros de la clase de que forma parte. para ser más exactos la especificación común.Ejemplos. public y published para especificar la visibilidad de un bloque de declaraciones. System. En Object Pascal un miembro private es accesible desde la propia clase y también desde cualquier punto del módulo en que se ésta se haya definido.Programa1. bro protected es visible desde la propia clase. ahora la definición de Figura 1.Windows.Form serían equivalentes. dotNetMania. existiendo diferencias entre los lenguajes . su aplicación se reduce a tipos más o menos simples aunque con alguna funcionalidad Cómo podría Object Pascal adecuarse a las exigencias de la CLS y.Windows.net Los módulos Object Pascal. indican su nombre tras palabras clave como program.Programa1. En la plataforma . pueden emplearse referencias completas. unit.<< dnm. Todos los lenguajes .NET un miembro protegido sólo puede ser visible en la clase donde se ha definido y las clases derivadas a partir de ella. utilizada para hacer referencia a módulos externos. algo habitual en Pascal. Por ello se eligió añadir dos nuevos modificadores de visibilidad: strict protected y strict private.

ClaseEspecializada = class sealed … Figura 2. al tiempo. MiClase = class strict private MiembroPrivado: string. FY: Integer). strict protected MiembroProtegido: string. que se aloja en la pila. end. por ejemplo. El Explorador de código contempla los nuevos modificadores de visibilidad de Object Pascal Estructuras de datos más funcionales En Object Pascal las estructuras de datos. Esa posiUna clase de uso final es lo inverso de una clase abstracta. TPunto = record strict private x.net una clase podría tener la estructura siguiente: tras que la segunda es un tipo por referencia. entonces. posibilidad inexistente en versiones previas del compilador de Object Pascal. indicar que no podría redefinirse más en clases derivadas. y: Integer. las variables de tipo TPunto se alojarían como valores en la pila. convirtiéndola en clase de uso final. end. mien- A pesar de contar con un constructor. Ver figura 3. mediante asignación dinámica de memoria. campos de datos que. además de especificadores de visibilidad idénticos a los de las clases. como puedan ser los métodos. por el contrario. no tendría sentido permitir la creación de otras a partir de ella. del que van creándose objetos bilidad está ahora presente mediante la nueva palabra clave final. Dicho en otras palabras: convertir un método heredado en un método de uso final. pueden contener exclusivamente variables. no como un objeto de una clase. Ahora podemos hacer abstracta cualquier clase simplemente añadiendo el modificador abstract en la definición: ClaseAbstracta = class abstract … <<dotNetManía 42 . permite redefinir en una clase derivada miembros declarados como virtuales en la clase base. Para que una clase fuese considerada abstracta debía obligatoriamente contener al menos un método abstracto. Lo que no existía hasta el momento era la opción de redefinir el método y. algo que también ha cambiado en esta nueva versión. public constructor Create(FX. Esto hace posible la especialización de los métodos sin obstaculizar el mecanismo de utilización genérica conocido como polimorfismo. además. En Delphi . cuyo uso se muestra en el siguiente fragmento de código: ClaseBase = class public procedure Metodo: virtual. como un número o un carácter. sin implementación. Si.NET podríamos definir una estructura de datos como la siguiente sin problemas. es decir. pensada exclusivamente para servir como base de otras y no para crear objetos a partir de ella. override. definidas como registros con la palabra clave record. end. En los lenguajes . las propiedades y los constructores. public MiembroPublico: string. definimos una clase especializada en una tarea muy específica. Además. El compilador nos indica que no podemos derivar de una clase de uso final Métodos y clases de uso final El mecanismo de herencia de Object Pascal. end. son accesibles públicamente desde cualquier punto en el que sea visible el tipo. final. private MiembroDeEnsamblado: string. ¿Cuál es. protected MiembroProtegidoDeEnsamblado: string. la diferencia entre una estructura y una clase? Básicamente que la primera es un tipo por valor.<< dnm. Figura 3. las estructuras de datos pueden contener miembros de otros tipos. Este mismo concepto puede aplicarse también a la definición de una clase. como el de cualquier otro lenguaje orientado a objetos. Incluso pueden implementarse interfaces en una estructura. ClaseDerivada = class(ClaseBase) public // marcamos el método como de uso final procedure Metodo. las estructuras no pueden contar con métodos virtuales ni heredar unas de otras.lenguajes.NET. una clase de la que no podrían derivarse otras. En un caso así su cabecera incluiría la palabra sealed. procedure Dibuja.

que sería o no accesible desde el exterior dependiendo de la visibilidad que tenga. los archivos tradicionales de Pascal file of tipo o los procedimientos de gestión de memoria como GetMem y FreeMem. de tal forma que todos ellos se ejecutarían en el momento en que se genere dicho evento. no a los objetos que pudieran crearse de ella.X+B. Un mismo evento puede estar vinculado a varios métodos. La sintaxis con la que se usan los atributos en Delphi 8 es prácticamente idéntica a la de C#. por ejemplo.B: TPunto): TPunto. // Implementación del operador de suma class operator TPunto.A. los tipos Pointer y PChar.NET se denominan métodos estáticos de clase. . a continuación. de tal manera que podría utilizarse completamente usando la sintaxis MiClase. Para dar cabida a esta nueva necesidad. Se han descrito los que el autor ha considerado de mayor relevancia pero sin ánimo de ser exhaustivos. algo habitual en la plataforma . entre los cuales destacaríamos el operador @. propiedades y métodos. tipos anidados.X.NET cualquier clase puede contar con miembros de clase.Y+B. … end. es decir. Las variables de clase se definen en apartados class var. // Operador string() class operator Implicit(A: TPunto): string.net Miembros de clase En la plataforma . Esta clase.lenguajes. static. como las clases que actúan complementando a otras (class helpers). Una clase. public // Operador + class operator Add(A. Por último.NET.NET es la posibilidad de asociar atributos a los tipos y sus miembros.NET. definiéndose mediante la adición de la palabra clave static al final. hasta el momento. La definición de un evento en Delphi 8 contempla la necesidad de la multidifusión.<< dnm. equivalentes a var pero cuyos miembros pertenecerán a la clase. quizá de uso menos habitual.Create(A. por add y remove.NET. la directiva absolute. En esta nueva versión los métodos de clase . En la cartera quedan otros temas. Como puede apreciarse. utilizados hasta ahora. métodos.B: TPunto): TPunto. y las propiedades de clase simplemente anteponiendo la palabra class. también conocidos como miembros estáticos. tiene una variable de clase. podría contener la definición de otra clase.Metodo o MiClase. FY: Integer.NET han sido muchos y. En una clase además de variables.Propiedad. un método estático de clase y una propiedad de clase. también 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.Add(A. MiClase = class sealed private class var Variable: Integer. situándose entre corchetes delante del elemento al que se asociará.NET. de uso final. algunos de ellos. // una variable de clase public class procedure Metodo.NET existen clases compuestas exclusivamente de miembros estáticos y que son de uso final. end. importantes. como puede verse en el siguiente fragmento de código. la posibilidad de definir variables y propiedades de clase. pero su implementación al nivel del compilador es distinta de los miembros estáticos de una clase . propiedades y eventos también es posible ahora definir operadores. Object Pascal cuenta con la noción de métodos de clase. // Operador class operator Subtract(A. sin tener que crear objeto alguno. el tipo Real48. y la asignación directa de un método a un evento por los procedimientos Include y Exclude. Object Pascal es la posibilidad definir unos tipos dentro de otros. Para utilizarlos se dispone el nombre de la clase y. La sintaxis general queda resumida en el siguiente fragmento de código: patibles con la plataforma . la definición de un evento Un concepto novedoso introducido en la plataforma . el nombre del miembro.Y). Estos miembros. No existía. ofreciendo servicios para los cuales no es necesario crear objetos previamente. que pueden ser variables. Otra de las novedades que incorpora la nueva versión del compilador de <<dotNetManía 43 Otras novedades y cambios sustituye los apartados read y write.B: TPunto): TPunto. begin // Creamos un nuevo objeto con coordenadas // suma de los dos puntos result := TPunto. En la biblioteca de clases . alguna directiva nueva como $AUTOBOX o el operador & para poder usar como identificadores palabras que son reservadas en Object Pascal. pertenecen a la clase en sí. // Método estático de clase // Propiedad de clase class property Propiedad: Integer read Variable write Variable. end. Todos ellos tienen un tipo o mecanismo equivalente o similar en la plataforma . La sobrecarga de operadores facilita la ejecución intuitiva de ciertas operaciones. los cambios sufridos por el lenguaje Object Pascal en su adaptación al universo . datos que se convierten en meta-información que se almacena en los ensamblados conjuntamente con el código y puede recuperarse posteriormente con el mecanismo de reflexión.

Esta característica de servidor multisitio es bastante interesante para los proveedores de servicios de Internet. se corresponde con el nombre de dominio asociado a un sitio Web. es decir. con un sitio Web distinto en cada máquina.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. Con un solo equipo y una instalación del servidor Web IIS 6. • Un encabezado de host.com es el encabezado de host del sitio Web de esta revista. cada nombre de dominio se corresponderá con un sitio Web diferente. Cuando un cliente solicita una página a través del navegador Web la cabecera de petición HTTP correspondiente contendrá.Por Ángel Esteban Software Architect Alhambra-Eidos Configuración de varios sitios Web en IIS 6. una dirección IP distinta para cada sitio Web. el nombre de dominio que aparece en la URL. Esto nos va a suponer un ahorro considerable de direcciones IP. por ejemplo www. Una vez que hemos utilizado el encabezado de host dentro de IIS ya no podemos utilizar la dirección IP del servidor Web para acceder al sitio Web predeterminado de dicho servidor <<dotNetManía El encabezado de host (host header name) es el nombre con el que los usuarios conocen el sitio Web.0 (Internet Information Services) puede dar la impresión de que disponemos de múltiples equipos.dotnetmania. Se debe recordar que para poder utilizar un nombre de dominio lo debemos registrar en el sistema de 44 . • Un número de puerto. de esta forma se podrá diferenciar los sitios Web que tienen asignados una misma dirección IP.0 con una misma dirección IP En el presente artículo se va a comentar cómo configurar el servidor Web que nos ofrece Windows Server 2003 para disponer de múltiples sitios Web con una misma dirección IP. ya que podrá ofrecer a cada cliente un nombre de dominio que tendrá asociado una dirección IP distinta. Esta situación en la que varios sitios Web comparten una misma dirección IP se denomina multihosting (hospedaje múltiple o servidor multisitio). es decir. además de la dirección IP de la máquina. • Un sitio Web va a distinguirse atendiendo a la combinación de tres parámetros: • Una dirección IP. y es el concepto que pasamos a explicar a continuación. Esa información es detectada por el servidor Web e interpretada de forma conveniente para determinar qué sitio Web ha demandado el cliente. El mecanismo que nos va a permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host. Teóricamente se pueden crear un número ilimitado de sitios Web dentro de un mismo servidor. << Existe la posibilidad de utilizar la misma dirección IP entre diferentes sitios Web. En IIS 6. cuando en realidad pueden estar en la misma. En este caso a una misma dirección IP le corresponden varios sitios Web (multihosting). • Utilizar una única dirección IP en una tarjeta de red y asignar varios nombres de dominio a la misma dirección.

“Agregar”. De las múltiples combinaciones que pueden surgir a la hora de albergar distintos sitios Web. Configurando el sitio Web La herramienta de configuración de IIS 6.0. por lo tanto los navegadores que se conecten a nuestro servidor también deben soportar esta característica. Esto nos lo permite hacer a través de la hoja de propiedades de sitio Web. siempre y cuando se diferencien en el tercero. El encabezado de host es soportado por los navegadores Internet Explorer y Netscape Communicator a partir de sus versiones 4. De esta forma dos sitios Web pueden tener el mismo encabezado de host y la misma dirección IP pero distinto número de puerto.servidores. número de puerto y que se distingan por el encabezado de host. Si queremos hacer esto debemos asignar la dirección IP del servidor a un sitio Web determinado como si fuera un encabezado de host. Si asignamos a un sitio Web un número de puerto distinto del estándar (el puerto 80). El encabezado de host también lo podemos indicar a la hora de crear un nuevo sitio Web. por lo tanto. como el de la siguiente figura. Con este apunte finaliza este artículo que espero sea de gran utilidad a la hora de configurar servidores Web con Internet Information Services. . el servidor Web no podrá determinar a qué sitio Web quiere acceder el usuario. Para que un sitio Web se distinga de otro debe diferenciarse en al menos en uno de los parámetros citados anteriormente. número de puerto y encabezado de host. es decir no se diferencian ni en el número de puerto ni en la direc- Una vez que hemos utilizado el encabezado de host dentro de IIS ya no podemos utilizar la dirección IP del servidor Web para acceder al sitio Web predeterminado de dicho servidor. tal como se puede apreciar en la figura. Los sitios Web pueden compartir dos cualesquiera de sus tres componentes de identidad con otros sitios Web. Al diálogo de identificación avanzada de sitio Web llegamos desde la hoja de propiedades del sitio Web pulsando el botón “Avanzadas”. cuando pulsamos alguno de estos botones aparece otro dialogo. que nos permite modificar o añadir las propiedades que van a identificar de forma única un sitio Web.0 viene definido por la combinación de tres parámetros: dirección IP. El encabezado de host es una característica ofrecida por el protocolo HTTP 1. “Quitar” y “Modificar” que nos permiten cambiar las diferentes configuraciones de identificación para el sitio Web.1. Utilidad del encabezado de host Ya sabemos que un sitio Web dentro de IIS 6. que nos permitirá distinguir entre los diferentes sitios Web asociados a una misma dirección IP. Identificación avanzada de sitio Web Figura 3. ya que no ha enviado la información que identifica el nombre del sitio Web (nombre de dominio) al que se quiere acceder.Asistente para la creación de un sitio Web <<dotNetManía 45 En este diálogo se ofrecen una serie de botones. Si se modifica la configuración de un sitio Web y entra en conflicto con otro existente. En el diálogo que aparece en la siguiente figura se nos permite configurar el encabezado de host. es decir. También es posible indicar el número de puerto SSL en el caso que se utilicen conexiones seguras. el Administrador de Servicios de Internet (Administrador de Internet Information Services) nos ofrece la posibilidad de realizar la configuración de los encabezados de host para nuestro sitio Web. así como la dirección IP y el número de puerto del sitio Web. Por defecto el encabezado de host aparece en blanco. el encabezado de host sería la propia dirección IP y no un nombre de dominio. Los navegadores más antiguos no soportan los encabezados de host. la más interesante puede ser la de sitios Web que compartan la misma dirección IP y el mismo Figura1.<< dnm.iis nombres de dominio (DNS. En estos casos lo recomendable es actualizar la versión del navegador Web. nuestros clientes deberán escribir el número de puerto en la URL.0. automáticamente el servidor Web mantendrá este sitio Web detenido hasta que no se haya subsanado el error. Figura 2. Domain Name System) a través de un servidor de nombres. Especificando el encabezado de host ción IP ni en el encabezado de host. en el caso de que varios sitios Web compartan la misma dirección IP. En el segundo paso del asistente de creación del sitio Web aparece una caja de texto en la que podemos especificar este dato. es decir.

<< Las aplicaciones y los servicios podrán utilizar esta par- tición como base de datos y utilizar así las ventajas que ofrece Active Directory. la partición de aplicaciones forma parte del espacio de nombres del bosque y sigue la misma nomenclatura. 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. Creación de una partición de Aplicación 1.Por Pedro Gómez Alhambra-Eidos Particiones de Directorio de Aplicaciones Active Directory en Windows 2003 permite la creación y configuración de una nueva partición de directorio llamada Partición de Directorio de Aplicaciones. Desde domain management. podemos hacer lo siguiente: • Para crear una partición escribimos: create nc particióndirectorioaplicaciones controladordedominio • Para eliminar una partición escribimos: delete nc particióndirectorioaplicaciones 46 <<dotNetManía 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 . Abrimos Símbolo de Sistema y ejecutamos ntdsutil 2. Desde connection. Desde domain management. Desde connection. Los miembros del grupo de administradores del Enterprise pueden crear y administrar dichas particiones. ¡Sólo con los controladores de dominio especificados! Con lo cual. escribimos quit 6. También está la ventaja de que los objetos almacenados en una partición de directorio de aplicaciones no se replican al Catálogo Global. El motivo es evitar que las consultas LDAP a distintos Catálogos Globales no devuelvan datos incoherentes. replicaremos en los controladores que nos resulten localmente más útiles. Escribimos domain management 3. Sus tres posibles ubicaciones en un bosque serían: • Nuevo árbol de bosque • Árbol secundario de una partición de directorio de aplicaciones • Árbol secundario de una partición de directorio de dominio KCC (Generador y Comprobador de Topología de Réplica) mantiene automáticamente la topología de replicación de todas las particiones y mantiene la misma programación de réplica que las particiones de dominio. Otra ventaja es que las aplicaciones y los servicios que utilizan LDAP podrán seguir utilizando este protocolo para almacenar datos y acceder a los mismos. escribimos connection 4. Esta partición se replica sólo en los controladores de dominio determinados y siempre que ejecuten Windows 2003. Al igual que una partición de dominio. escribimos connect to server nombreservidor 5.

tendremos que escribir el nombre DNS del controlador de dominio 1. escribimos quit 6. añadimos una réplica de la partición test a un controlador de dominio llamado exchange2. escribimos connection 4. escribimos connection 4. En el ejemplo. escribimos connect to server nombreservidor 5. En el ejemplo. Escribimos domain management 3. escribimos quit 6. Desde connection. escribimos connect to server nombreservidor 5. Desde connection. creamos una partición de directorio de aplicaciones llamada test y que se va a ubicar en un dominio llamado exchange2003. Desde connection. Abrimos Símbolo del Sistema y escribimos ntdsutil Otra ventaja es que las aplicaciones y los servicios que utilizan LDAP podrán seguir utilizando este protocolo para almacenar datos y acceder a los mismos. Escribimos domain management 3.exchange2003.aes.aes Agregar o eliminar una Réplica de una Partición de Directorio de Aplicaciones Una réplica es una instancia en otro controlador de dominio. Desde connection.servidores.<< dnm. Debemos tener cuidado al elimi- <<dotNetManía 47 2. podemos utilizar también el comando null. Mostrar la información sobre una Partición del Directorio de Aplicaciones Figura 1. Los pasos a seguir son los siguientes: 1. domain management. Si no. Desde domain management. Abrimos Símbolo del Sistema y escribimos ntdsutil 2.windows nar la última réplica de una partición de aplicaciones ya que podemos perder los datos que estén en esa partición definitivamente. El parámetro null sirve para especificar que queremos crear dicha partición en el controlador al cual estamos conectados. Desde domain mangement podemos hacer lo siguiente: • Para agregar una réplica escribimos: Add nc replica particióndirectorioaplicaciones controladordedominio Figura 3 • Para eliminar una réplica escribimos: Remove nc replica particióndirectorioaplicaciones Para añadir o eliminar una réplica. Desde domain mangement escribimos list . Figura 2.

De no ser así. Solaris.icsharpcode.noticias . SharpDevelop o #develop es un IDE gratis para proyectos de VB.NET a C#. También. panel mini visor de clases. Abrimos Símbolo de Sistema 2.NET. http://www.NET y C# para la plataforma . permitir a los desarrolladores escribir aplicaciones del lado del servidor.com/archive/beta1/beta1. Escribimos: dnscmd nombreservidor /createbuiltindirectorypartitions /Domain/Forest/AllDomains nombreservidor es el nombre DNS del Servidor DNS y es obligatorio. Figura 5 En el servidor DNS se habrá creado la zona correspondiente a la partición. Se libera la Beta 1.NET.0 del Proyecto Mono Tras la adquisición de Novell. El parámetro 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. C++. Unix y Windows. Ver figura 4. mediante la línea de comandos se puede implementar de la siguiente manera: 1. Holding.noticias. Es Open Source bajo licencia GPL Más información en: http://www. conversor VB.html noticias.<< dnm.NET para Linux. MacOs X. Assambly Analyzer. Windows NT/XP y otros sistemas UNIX. Mono pretende aportar un entorno de desarrollo para Linux con la mayor productividad conocida.NET backend. Mono el proyecto del Miguel de Icaza. createbuiltindirectorypartitions Crea una partición de directorio de aplicaciones predeterminada. /AllDomains Crea una partición de directorio de aplicaciones DNS predeterminada de todo el dominio en un servidor DNS de cada dominio del bosque.net/OpenSource/SD/ Se libera la Beta 1. Esta es la primera beta de dos previstas antes de publicar la versión definitiva.servidores. /Forest Crea una partición de directorio de aplicaciones DNS predeterminada para todo el bosque donde se encuentra el servidor DNS especificado.noticias. aplicaciones cliente y servicios web y desplegarlos bajo Linux. Cuenta con características como integración con NUnit.go-mono. se puede crear manualmente desde la consola de DNS. /Domain Crea una partición de directorio de aplicaciones DNS predeterminada para todo el dominio donde se encuentra el servidor DNS especificado.0 de SharpDevelop: Fidalgo SharpDevelop Fidalgo (beta 1 de SharpDevelop) ya está terminado y ya está en el modo de sólo corregir bug.windows También está la ventaja de que los objetos almacenados en una partición de directorio de aplicaciones no se replican al Catálogo Global Figura 4 Al crear la zona nos aparecerá la opción de la figura 5. una implementación open source del framework . mejora de los File Templates y de la importación/exportación a Visual Studio .

.

lphant destaca por tener un núcleo al que se accede tanto en local como por acceso remoto mediante SOAP. en nuestros ratos libres). Antes de aparecer la plataforma . el programa debe de permanecer muchos días sin reiniciarse por lo que se tiene que ser extremadamente cuidadoso con la estabilidad y el consumo de memoria. T odas estas conexiones tienen que sincronizarse para acceder a ficheros o a listas.NET lphant es un proyecto de código abierto que implementa un cliente peer to peer (p2p) para la red eDonkey/eMule. multihilo. El núcleo de lphant es una librería que expone todas las funcionalidades de la red eDonkey. completamente separado del interfaz gráfico. 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 página web de lphant damos soporte a la gente interesada en el código y que desea saber cómo funciona.NET: Comunicaciones: lphant exprime al máximo la capacidad de comunicaciones de . El núcleo de lphant es autónomo e independiente del interfaz.NET. de esta manera el interfaz puede funcionar de forma remota.NET. por lo que cualquiera puede integrar la red eDonkey en sus aplicaciones con muy poco esfuerzo. sólo en aquellos casos en los que necesita ser compatible con eMule o eDonkey no usa XML.NET nos pareció buena idea comprobar si puede hacer sombra a C++ en su propio terreno.000 usuarios simultáneos y 70.NET es perfectamente válido para este tipo de desarrollos. Servicios web. Creación de controles y WinForms. Para más información http://www.000 descargas del programa. por lo que las capacidades multihilo hay que explotarlas. Modularidad: lphant utiliza la facilidad que proporciona . de contar con más de 3. En el peor de los casos aprenderíamos C# y sabríamos cuales son sus puntos flacos. por lo que es bastante fácil resolver los bugs que se van encontrando. especialmente complejos por la interacción con la API WIN32 son los controles derivados de ListView creados. Particularmente hemos comprobado como no nos hemos tenido que preocupar de los detalles de la implementación y nos hemos podido centrar en la resolución del problema. sin notar un descenso en su rendimiento (continuamente mientras el ordenador se dedica a otras tareas (por ejemplo reproducir video con buena calidad)). Los principales problemas encontrados durante el desarrollo de este proyecto han sido los relacionados con el interfaz gráfico (donde. Después de varios meses de desarrollo (al ser GNU. este tipo de proyectos supone una justificación para que el .NET en una aplicación exigente en cuanto a comunicaciones. tanto entrantes como salientes y no sólo se limita a TCP sino que usa intensivamente UDP. ArrayList. Multilenguaje: lphant tiene un motor multilenguaje propio basado en XML Portabilidad: El núcleo de lphant se compila perfectamente con MONO. <<dotNetManía Teniendo en cuenta que la gran mayoría de usuarios de este tipo de aplicaciones no tiene instalado . A lo largo del proyecto hemos disfrutado de las ventajas que supone emplear .NET Framework se instale en una gran cantidad de ordenadores domésticos.NET para hacer aplicaciones modulares mediante namespaces y proyectos separados.NET. XML: lphant demuestra cómo usar archivos XML ya que los usa para la mayoría de archivos que necesita. la necesidad de instalar . soportando cientos de conexiones simultáneas 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.com 50 . para desarrollar una aplicación con estos requerimientos la opción más lógica era C++.…).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). CPU. Por otro lado lphant dispone de un motor de skins para los diversos controles. Por otro lado debe tener un interfaz de usuario fácil de usar y un aspecto que no se puede alcanzar con los controles estándar.NET. Una aplicación p2p para la red eDonkey maneja cientos de conexiones simultáneas. ya que el núcleo expone sus objetos como servicios web que el interfaz consume.lphant.net por Juanjo Ariño lphant.NET. Por nuestra experiencia. de sacar más de 15 versiones. Pero con la llegada de . Además. Incluso lphant supera en algunos aspectos a programas escritos en C++ más trabajados como el eMule. el código fuente de lphant puede ser muy didáctico ya que cubre muchos e importantes aspectos de la programación en . estabilidad y manejo de memoria. Lamentablemente al no estar totalmente soportados los WinForms en MONO no puede decirse lo mismo del interfaz. El uso de la CPU también es importante ya que debe de funcionar en background mientras el usuario hace un uso habitual del resto de aplicaciones. primer peer to peer bajo . el entorno . Además cuando a algún un usuario le salta una excepción nos informa con el volcado de pila si necesidad de compilar versiones de debug especiales. Otra de las virtudes a destacar ha sido el excelente control de excepciones que lleva . por falta de funciones de .NET Framework. Para el interfaz gráfico de lphant se han creado diversos controles. Las motivaciones iniciales fueron aprender C#. proyecto lo hemos desarrollado un << Este grupo de programadores que inicialmente trabajábamos con C++ y que colaborábamos en el desarrollo de eMule.opensource.NET y comprobar la potencia de . De cara a los desarrolladores interesados en aprender .<< dnm. hemos comprobado que .NET Framework no está siendo un inconveniente serio una vez pasada una fase de reticencia inicial dónde tampoco se sabía cómo funcionaba el programa. Está escrito en C# íntegramente y es compatible con eMule y eDonkey (pudiendo incluso continuar descargas iniciadas con estos programas).

Marino Posadas: Coordinador de muchas de las once versiones realizadas hasta ahora. aún car también que el Master pasa por dos mantenían una fuerte composición autoetapas claramente diferenciadas. cliente/servidor. etc. Este año en Alhambra-Eidos nos hemos decantado por la programación para dispositivos móviles. y que además son colaboradores habituales de este medio: Luis Miguel Blanco: Coordinador y autor de una buena parte de los contenidos del Master. En seguida nos planteamos los últimos once años. respectivamente). Así surgió la primera convocatoria. Allá por 1992 comenzó a cobrar vida el área de formación de la entonces denominada Grupo EIDOS. Antonio Quirós: Bueno. En el curso 2004/2005 entra en su undécima convocatoria. viene haciendo de la programación en . Fundamentalmente centrado en las tecnologías de desarrollo de Microsoft. así como tutor de la versión virtual. Y por último. Más tarde fue la programación web. autor de documentación y Microsoft MVP en 2003 y 2004 (. Si nos centramos en fundizar en el conocimiento de los prolos aspectos organizativos es de destagramadores que. Para que nos hablen de la versión prevista para el curso 2004/2005 nos hemos reunido con algunas de las personas que en Alhambra-Eidos mantienen algún tipo de responsabilidad sobre dicho curso. el diseño de un programa de más calaTodo esto. General Area Manager de Alhambra-Eidos rios de las once convocatorias hasta ahora realizadas caeremos en como muchos recordarán. por supuesto. Pepe Hevia: Instructor de la versión presencial y creador destacado del material didáctico.Net Framework y Visual C#. era Clipper. Luego vino Windows y el primera es la que se produce desde 1993 a 1997 en que sólo se realizan versiones presenciales y otra segunda que acaece desde 1998 donde ponemos en circulación las primeras ediciones virtuales y mixtas. por tanto. Consideramos que esta es una de las más importantes noticias para el mundo del desarrollo y. por aquel entonces. En fin que cada convocatoria tiene su leit motiv y a poco que analicemos los temaAntonio Quirós.Net. yo creo que desde entonces eso centraba nuestra propuesta formativa. luego XML y los servicios web. si no hay más remedio nos remontaremos a la prehistoria (risas).comunidad. en cuanto do que sirviera para reglamentar y proa lo tecnológico. que estamos analizando la historia tecImpartíamos seminarios. confenológica del desarrollo de software en rencias. Como una consecuencia natural derivamos hacia Visual Basic y SQL Server. cursos.comunidad. que realizó el primer diseño del Master allá por el año 93 y hoy continua ayudando en la adecuación programática que cada año se realiza. dnm: Podríais hacernos una breve reseña histórica de vuestro Master. teníamos que darle cabida en nuestros programas didacta en sus perfiles. instructor en ambas modalidades. En los primeros años los temas <<dotNetManía 51 . Nuestro ámbito de especialización. de hecho la aparición de la novena edición (curso 2002/2003) prácticamente coincidió con el lanzamiento al mercado de Visual Studio .dnm.net << dnm.net Un veterano a la última La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de Software << Pocos programas formativos para desarrolladores tienen tanta solera como el Master Eidos en Desarrollo de Software. Existía un enorme déficit en el conocimiento de la orientación a objetos y. Antonio Quirós. Son once años formando a lo más granado de los programadores de nuestro país y de Latinoamérica.Net su asunto troncal desde hace ya tres años. Una Tampoco podíamos permanecer ajenos a la aparición de SQL Server Reporting Services.

establecimiento de relaciones con el alumnado. Respecto al alumnado también aparecen cambios históricos curiosos. De esa manera te conviertes en el espejo en el que se miran todos aquellos que se propongan acometer un proyecto similar al tuyo. Sin embargo. Los primeros asistentes procedían casi exclusivamente del mundo profesional. marcando la pauta al resto que todavía no ha empezado. Por supuesto que esta situación te obliga a tener que trabajar más. Son casi 10 años de publicaciones desde que Algoritmo estaba en papel.. que suponen una avanzadilla y una nota de atención sobre posibles opciones a seguir en un futuro cercano. Y. dnm: ¿Qué asunto consideráis que en este momento es el principal valor aportado a la colectividad de desarrolladores? Marino Posadas: Creo que existen varios valores añadidos. Software Architect de Alhambra-Eidos <<dotNetManía tecnológicos y académicos primaban sobre los demás. Más tarde se realizó la incorporación del mundo universitario. no nos olvidemos de la revista Algoritmo. La Librería Digital completa perfectamente este panorama. Algunos alumnos venían 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. dnm: Fuisteis de los primeros en abordar el formato eLearning de modo serio para este tipo de programas formativos.te atascas. sino que si -como muchas veces pasa.comunidad. el alumno que busca la obtención de dicha certificación se ha incorporado también a nuestra peculiar fauna. Finalmente. donde se publican artículos de calidad sobre novedades tecnológicas.net no profundizar en un tipo de conocimientos. Su afán era reciclarse tecnológicamente. la existencia de manuales on-line que permiten un primer acercamiento a una tecnología e incluso decidir si queremos o De izquierda a derecha: Marino Posadas. puesto que no hay nadie todavía que haya realizado nada similar. los cursos tutorizados suponen que no solo vas a seguir un manual fijo y previsto para tu progreso. ¿Cómo valoráis estos años de trabajo al respecto? Luis Miguel Blanco: Ha resultado en una experiencia francamente positiva. Por otro. Por último. y todavía se la sigue considerando un producto referente para miles y miles de desarrolladores y profesionales de las TIC. abonas el terreno para los demás y eso supone un elemento posicionador muy importante en el mercado de acciones formativas eLearning. si además queremos algún manual a bajo precio para leer en el metro. En este momento se alternan las tres mecánicas de organización y podemos decir con orgullo que todos los años liberamos al mercado tanto titulados que han hecho el Master en su versión presencias como en las virtual o mixta.<< dnm. estar a la última. Desde 1998 hay también una fuerte componente logística en toda la labor previa al lanzamiento. hay que reseñar que tras la adecuación realizada el año pasado para adecuar los contenidos del Master para que pudieran servir de base en la obtención de la certificación MCAD. debes permanecer en constante innovación. léase elaboración y organización de los contenidos. Ser pionero te otorga una ventaja enorme si organizas una buena estructura formativa. Centrándome ya en la parte de ele- Marino Posadas. un profesor asociado a cada módulo puede darte respuestas tanto en línea como en diferido. ya que para gran parte de los procesos a desarrollar. Por un lado. y volviendo al punto anterior. Luis Miguel Blanco y Pepe Hevia En este momento se alternan las tres mecánicas de organización y podemos decir con orgullo que todos los años liberamos al mercado tanto titulados que han hecho el Master en su versión presencial como en la virtual o mixta 52 . poder llegar a tecnologías que sus empresas les demandaban. etc. por supuesto. sistemas de evaluación.

net mentos que componen la oferta formativa de Alhambra-Eidos. desde la óptica de siempre.Net Ampliación del módulo de SQL Server 2000 para dar cabida a Reporting Services Actualización de todos los módulos de Java para dar cabida a las novedades de dicho mundo como los foros. tiene más cosas.y tan ameno como me gustaría que me contaran las cosas: con humor. etc.Net. En otras ocasiones hemos actualizado en el sentido de quitar unas cosas y poner otras. lo que permite comunicar más información al alumno a través de la combinación de elementos multimedia: audio. Todo ello sin perder de vista el rigor. ¿Qué diferencia existe? Antonio Quirós: En AlhambraEidos preparamos a los alumnos por ambas técnicas. teníamos que darle cabida en nuestros programas. les faltan décimas de segundos para que sus jefes les hagan caer el correspondiente marrón. Asimismo. Tampoco podíamos permanecer ajenos a la aparición de SQL Server Reporting Services. estudiar. Mi misión radica en hacerlo tan práctico y claro como sea posible -por mucho trabajo que esto lleve. Web y dispositivos de movilidad. le hemos añadido varias cosas. En primer lugar. citaría lo que ahora se llaman “espacios de colaboración”. pues. el Tablón de Anuncios. etc. investigar todos esos elementos y saber relacionarlos-. queremos huir de un programa solo tecnológico. video. de gestión de proyectos. de aseguramiento de la calidad. de cara a facilitar que la asimilación de todos los conceptos que se tratan en el curso le resulte una experiencia asequible y agradable. Tenemos que hablar también de arquitectura. Uno de los más importantes recursos lo compone el uso de nuestros videoseminarios. un módulo dedicado a introducir en el ámbito de la ingeniería del software. tan valorada por los programadores. como se dice literariamente. es decir la arquitectura multicapa ahora cubrimos la capa de interfaz con tres niveles diferentes: Windows. dnm: ¿Qué te planteas cuando diseñas y confeccionas el material que luego formará cada uno de los módulos del Master? Pepe Hevia: Ante todo. hemos actualizado también los contenidos de los módulos de Java para dar cabida a las novedades que en dicho mundo se han producido en los últimos tiempos. Si lo que quieres es certificarte y. por supuesto. Hay que recordar que en España somos el centro de referencia de Microsoft para formar a desarrolladores y el que más certificados MCAD entrega cada año. sino porque la evolución que observamos en las herramientas disponibles para su desarrollo está progresando con un alto grado de calidad. por tanto. ejemplos de la vida real. dnm: ¿Qué crees que es lo que más valoran los alumnos de vuestro Master? Marino Posadas: Quizá la organización de los cursos en una secuencia de dificultad paulatina. El perfil del desarrollador cada vez es más alto y. Así. texto. <<dotNetManía 53 . la seriedad y la responsabilidad que todo este proyecto conlleva. Dichas áreas permiten tener la sensación de que realmente existe un colectivo paralelo a donde dirigirse. Consideramos que este es el entorno hacia el que hoy todos los desarrolladores deben girar la vista. es decir que estamos ante una versión. creo que hemos conseguido combinar armoniosamente todas las tecnologías a nuestra disposición para lograr una relación tutoralumno altamente cercana a la presencial. tu programa debe estar basado en los cursos oficiales de Microsoft. dentro del contexto en que se va a aplicar y siempre desde la perspectiva de “romper los mitos”. existiendo un grupo de personas con las mismas inquietudes y necesidades que nosotros. por tanto. dnm: El año pasado se adecuó vuestro Master al temario necesario para preparar la certificación MCAD. pero que en cierto modo puedan verse relacionadas indirectamente con él -lo cuál implica conocer. es decir. etc. A nuestro programa del año pasado. Consideramos que esta es una de las más importantes noticias para el mundo del desarrollo y. La diferencia está en que el Master aporta más valor añadido. De esta manera el alumno puede entender toda la temática. Éste se potencia mediante los autotests. Por último. de metodologías. además te corre prisa hacerlo y no puedes dedicar un año académico. hemos introducido un módulo de programación de dispositivos móviles con Visual Studio . corregida y aumentada. en las versiones virtual y mixta. no sólo porque ya esté implantado. Una y otra son técnicas adecuadas y con las dos logramos resultados válidos. Sin embargo para el curso 2004/2005 sólo hemos ampliado. Esta puede realizarse a través de este plan formativo o a través de los cursos oficiales de Microsoft. También. garantizando que los pasos anteriores nos han conducido a donde nos encontramos con conocimiento de causa suficiente. la cafetería.<< dnm. ya fuertemente actualizado y estructurado a través de la noción de servicios web. y aunque eso es menos interesante para los programadores que trabajan con herramientas Microsoft. Para hacerlo hemos ampliado nuestro curso de SQL Server 2000 a fin de introducir dicha tecnología. Novedades de la versión para el curso 2004/2005 Un módulo específico de Introducción a la ingeniería de software Un módulo específico de Programación de Dispositivos Móviles con Visual Studio .comunidad. Para ello se introducen también otro tipo de nociones ajenas al master. que permite dar pasos seguros en el proceso de aprendizaje. ya que si aún no han tenido la oportunidad de hacer alguna aplicación al respecto. enseña más la vertiente práctica. dnm: Qué novedades aporta la versión para el curso 2004/2005 Antonio Quirós: Este año es un poco curioso. diapositivas. Si además de aprobar el MCAD quieres profundizar en las técnicas de desarrollo y en las buenas prácticas a seguir tu programa es el Master. la ilusión de poder proporcionar al usuario del módulo todos los conocimientos posibles.

<< 54 Contrasta con la anterior versión. publicó hace 3 años para recoger toda una vida de experiencia docente y divulgadora de estos mundos. Es la obra de 10 años de reflexión —según sus propias palabras en el prefacio— que el autor de “Programación en Windows”. las capacidades Multiproceso. Appleman.0. Es una obra que se lee mejor ahora que en el momento de su aparición. anuncia posibilidades y enumera los cambios más importantes. Coma flotante). <<dotNetManía . revisa los logros más importantes de los pioneros de la informática del siglo pasado. ASCII. Ahora.net dnm.net Moving to VB . y revisa desde los fundamentos conceptos archisabidos (Puertas lógicas. cuanto menos. el estudio en profundidad de los cambios debidos a la presencia de Programación Orientada a Objetos. Concepts. Recorre los inicios. y va avanzando en complejidad desde el código Morse a las interfaces de usuario visuales. recomienda estrategias.<< dnm. nos introdujo al API de Windows hace varios años en una obra clásica. cuando ya se conoce el producto y el lenguaje.biblioteca. and Code Daniel Appleman Editorial: A!Press Páginas: 560. nos muestra su propia visión del mismo. Analiza en términos sencillos muchos de los fundamentos de la informática (hardware y software). pero también para novatos. la interacción con COM+ y la forma en que . de la que cabe destacar. y “Programación en Windows 95”. Rústica Publicado: Junio 2001 ISBN: 1893115976 Hoy nos centramos en dos autores bien conocidos por los programadores. Para nostálgicos. antiguo miembro del equipo de desarrollo de Visual Basic 1. incluso remontándose al siglo IXX. de los que siempre sabe entresacar la visión clara y explicativa de quien ha conocido la informática en profundidad y se plantea ahora explicarla con palabras sencillas. Rústica Año: Noviembre 1999 ISBN: 073560505X Una obra curiosa. en una obra que podríamos llamar “comparativa”.NET gestiona la memoria. además.biblioteca.NET donde más que una revisión del producto. y puede apreciarse mejor su perspicacia. Code:The Hidden Language of Computer Hardware and Software Charles Petzold Editorial: Microsoft Press Pag. vuelve a la carga con VB.: 393.NET: Strategies.

Director General lleva al frente de Borland en España desde sus inicios.NET y J2EE a través de RMI sobre IIOP. Y modularidad en el sentido de poder . tenemos un producto.net Entrevista a Carlos Heras Carlos Heras es Alliances & Indirect Sales Manager de Borland Ibérica que junto a Néstor Miranda.NET. que ofrece interoperabilidad entre . y ver que consecuencias tendrán esas modificaciones en el desarrollo de la aplicación. Respecto a la construcción misma de las aplicaciones. como siempre ha hecho. tanto para . Con este producto es posible conectar componentes . Borland Janeva. pruebas. Esto quiere decir que el foco para Borland en estos momentos es el equipo de desarrollo al completo que necesitan herramientas de gestión de requisitos.NET con servidores de aplicaciones J2EE sin necesidad de utilizar Web Services. me consta que Borland ha publicado herramientas que pretenden cubrir el ciclo completo de desarrollo. ¿Puedes hablarnos algo más de esto? ¿Incluye eso la parte de instalación de aplicaciones? Como he comentado anteriormente la estrategia de Borland es precisamente ofrecer una solución que cubra el ciclo completo de desarrollo de aplicaciones. ¿Cómo definirías la estrategia de Borland en estos momentos? Actualmente Borland no sólo ofrece herramientas de desarrollo.NET. lo que en ciertos casos supone un nivel mayor de seguridad. ¿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. tanto para J2EE como para . codificación. modificar algo. Pero además. parece claro que existen dos plataformas de desarrollo que aglutinan a la mayor parte de los usuarios: J2EE y . En la actualidad.elavefenix. despliegue y gestión de cambios y configuración. << Borland lleva <<dotNetManía 55 ya una larga trayectoria desde Turbo Pascal.NET como para J2EE. Enlazando con la pregunta anterior…y de acuerdo con las previsiones –que sé que tenéis. análisis y diseño. pasando por Delphi y la serie de los Builder en la actualidad. y como es lógico estamos trabajando para ampliar el numero de compañías que lo adopten en los próximos meses.sobre crecimiento. ¿Cómo se ubica Borland y cuáles son sus planes de soporte futuros? Borland es consciente de ello y por eso proporciona la misma solución para ambas plataformas.Por Marino Posadas MVP Visual Developer C# Alhambra-Eidos www. Integración en cuanto que todas las fases del ciclo deben estar integradas para en cualquier momento poder volver atrás. sino que su estrategia actual se centra en ofrecer una solución completa de desarrollo de ciclo de vida de las aplicaciones (ALM). Las dos características principales de la solución de Borland son la integración y la modularidad. ¿pensáis que en España ese crecimiento va a materializarse en alguna iniciativa concreta? En concreto en España ya se ha materializado en varias compañías que han adoptado la solución completa de Borland. Aprovechando la celebración del Borland Days el pasado mes de mayo hemos querido conversar con él especialmente para que los más viejos recordemos nuestros tiempos de programadores en Turbo Pascal en DOS.

Últimamente. despliegue y gestión de sus soluciones totalmente integradas así como sus nuevas actualizaciones. Como partners estratégicos Borland Day contó con los líderes más importantes del sector: Accenture. Blake Stone. HP. Dentro ya de la parte que nos interesa en esta revista (.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. novedades de sus IDEs. Bea Systems. su definición.NET lo que significa encaminarse al futuro sin abandonar el pasado. Danysoft da servicios de formación. En cuanto a las Borland Day acoge durante su primera edición a más de 500 participantes Borland celebró ante más de 500 asistentes la primera edición de su macro evento Borland Day. soporte. La gran diferencia es que Danysoft da un gran valor añadido que nosotros estimamos muchísimo y esto hace que. efectivamente.directo. ¿Cómo sitúas Delphi . directores. y eso es algo que cualquiera haría. herramientas de definición y diseño. responsables de proyectos. la mayor parte de éstos son usuarios JBuilder. 56 << . Con más de 20 ponencias y workshops en tres salas en paralelo destacan las áreas más importantes en el proceso creativo del software: productividad. J2EE y . y claro. Delphi. con la que reducir sus costes y aumentar su productividad” aseguró Néstor Miranda. diseño. Durante este encuentro Borland ha aprovechado para mostrar las distintas soluciones para plataformas J2EE. Borland incrementa la productividad de las empresas con el máximo rendimiento de las inversiones gracias a su estrategia ALM de gestión del ciclo de vida de las aplicaciones basada en tres cualidades primordiales: flexibilidad. etc. En cualquier caso mantenemos una estrecha relación de más de 15 años con Ingram Micro y GTI. Borland ibérica distribuye sus productos a través de mayoristas como Ingram Micro y GTI. formación y soporte. test. También tenemos más de un millón en herramientas Java. consultoría. trata de mirar por la bola de cristal. Junto a sus principales socios estratégicos en España. Oracle y Telefónica Móviles que mostrarán la integración de sus productos con la soluciones Borland. y que cada vez se va a industrializar más. y anticípanos cómo ves el futuro inmediato de la construcción de software… Bueno resumiendo un poco creo que el futuro del desarrollo de aplicaciones se va a centrar en dos plataformas. sin embargo. Borland C# Builder es un claro ejemplo de la intención de Borland de ofrecer una solución para cualquier lenguaje. para construir un software de mayor calidad y en el menor tiempo posible. y además es un reconocimiento explicito del nivel de calidad de los ingenieros de Borland. pero también de minoristas como Danysoft que. En el caso de España se traduce únicamente para España debido a las diferencias entre el castellano que se habla aquí y el que se habla en América Latina. C++.NET). Pero claro.<< dnm. y su evolución a . rapidez y libertad de elección de la plataforma. basada en estándares y totalmente integrado con los líderes del sector. ¿Qué tal os tomáis esas “deserciones”? ¿Crees que son todavía secuelas de la marcha de Anders Hejlsberg? Bueno yo no hablaría de deserción sino que simplemente Blake ha aprovechado la oportunidad que se le brindaba de mejorar su carrera profesional. ¿Cómo afrontáis la localización de vuestros productos? El proyecto de localización se lidera en USA para todo el mundo y luego se trabaja con agencias locales.NET dentro de el panorama de los lenguajes de la actualidad? ¿Y C# Builder? ¿Os decantáis más por uno que por otro? Delphi para Borland es uno de sus productos estrella. Borland pretender brindar la mejor solución en la creación del software para la empresa. Microsoft. afortunadamente tenemos varios.NET creo que es un paso decisivo en la vida de este producto. desarrollos sobre dispositivos móviles. Mercury Interactive. “En esta jornada todos los profesionales de TI. Arquitecto Principal de JBuilder se ha incorporado al equipo de desarrollo de Visual Studio . desarrollo. Para la comunidad de desarrolladores de Delphi supone facilitarles la migración a la plataforma .Microsoft. <<dotNetManía sustituir alguna herramienta de Borland por otra de los principales fabricantes que hay en el mercado. Bajo el lema “Potencie su Desarrollo” dio a conocer a todos los profesionales involucrados en el proceso de desarrollo de aplicaciones. ¿Cuantos desarrolladores de Delphi estimáis que habrá actualmente en el mundo? Borland tiene más de dos millones de usuarios de sus herramientas Windows. analistas y desarrolladores. Y por último. y sus servicios de consultoría. por muy valida que sea.NET. Evidentemente. soluciones CORBA.NET. una parte muy importante de esta cifra es de desarrolladores Delphi. no tiene por que suponer una merma de la productividad del equipo. Director General de Borland Ibérica. en el sentido de una mayor utilización de herramientas especificas para cada una de las fases del ciclo de vida del desarrollo de las aplicaciones. habrán podido ver la única solución de desarrollo independiente. JBuilder. Por otra parte es una garantía para el futuro de cara a la buena integración entre los productos de Microsoft y de Borland. sin que ello implique una perdida de integridad entre las distintas fases de desarrollo de la aplicación. En América Latina se utiliza la versión inglesa.NET. y esto es fundamental para nosotros. parecen tener una estrecha relación con vosotros. calidad y movilidad. nuestra relación con ellos sea muy estrecha.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Si no desea recibir información comercial de esta empresa marque la casilla siguiente ❑ ❑ Nº1 ❑ Nº2 ❑ Nº3 ❑ Nº4 Envíe este formulario por email a la dirección suscriptores@dotnetmania. . Usted tiene derecho a acceder a sus datos. . . . . . . . a: La Caixa Número de cuenta 2100 4315 48 2200014696 (Indique su nombre en la transferencia) ❑ Domiciliación Bancaria Indique su número de cuenta: ❑ Tarjeta de crédito ❑ VISA ❑ MASTERCARD ❑ AMERICAN EXPRESS Número de su tarjeta: Fecha de caducidad: / (Imprescindible) Firma y sello (imprescindible) a de de 20 Usted autoriza a la mecanización de estos datos. Provincia . . . . . . . . . . . . . . o por 75 € para el resto de Europa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IMPORTES VÁLIDOS HASTA NUEVA OFERTA DATOS DE FACTURACIÓN CIF/NIF . . . . . S. . . . . . .Suscripción a dotNetManía ❑ Deseo suscribirme a dotNetManía por un año (11 ejemplares) y beneficiarme de la oferta del 10% de descuento por un importe total de 60 € para España. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATOS DE ENVÍO (sólo si son distintos de los datos de facturación) CIF/NIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o al fax (34) 91 499 13 64 También puede enviarlo por correo postal a la siguiente dirección: C/ Robledal. . . . . . . . . . . . . . . Población . . . . . . . . . . . Fax . ❑ Giro postal a nombre NETALIA. . . . . . . . . . . . . . . . Dirección . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . . ❑ Deseo suscribirme a dotNetManía por un año (11 números) por un importe de 45 € por ser estudiante (IVA incluido). . . . . . . . . . . . . . Sus datos no serán cedidos en ninguna de las formas posibles a terceras partes y no se utilizarán más que para el buen funcionamiento de su suscripción a la revista dotNetMania y para informarle de las actividades comerciales que realice la editorial Netalia. .L. . . . . . . . . . . . . . . . . .com. . . . . . . Fax . . . . . modificarlos y cancelarlos cuando lo desee. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Rivas Vaciamadrid Madrid (España) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . 135 28529. . . S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nombre y apellidos . . . . . . . .L. . . . Teléfono . . . . . . . . . . . . . . Población . . . . . . . S. . . . . . . . . . . . . . . . FORMA DE PAGO ❑ Talón nominativo a nombre NETALIA. . . . . . . . . Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o por 90 € para el resto del mundo (IVA incluido). . . . . . . . . . . . . . . . . . . . . . . ❑ Transferencia bancaria a nombre de NETALIA. . . . . . . . . OFERTA VÁLIDA SÓLO PARA ESTUDIANTES RESIDENTES EN ESPAÑA. . . . . . . . . . . . . . . . . Aporto fotocopia del carné de estudiante o sello del centro académico (IMPRESCINDIBLE). . Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . El responsable y destinatario de éstos es Netalia. . . . . . . . . . . . . . . . . . . . . . . . . . . .L. . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . .Empresa . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .L. . . S. . . . . . . . . . . . . S. . . . . . . . . . . . . Nombre y apellidos .

vsj. WS*”).NET 2005 (Dpto. se celebraron en Barcelona las Jornadas Académicas Microsoft Research 2004. según anunciaba Jim Livingston en el pasado Windows Hardware Engineering Conference (WinHEC) en Seattle. Blake Stone. Standard.noticias. Además de esta iniciativa. David Carmona (“Nueva generación de aplicaciones orientadas a servicios Indigo.Operativo (Windows Longhorn.uk/dotnet/display. como vehículos de publicación. A diferencia de las versiones anteriores. otro asiduo de congresos. algunos de los más sobresalientes investigadores y divulgadores de tecnologías Microsoft plantearon el “estado del arte”. Hugo Zaragoza (“Combinando Information Retrieval y Machine Learning en investigación”). segunda edición de los encuentros MicrosoftUniversidad que reunieron a más de 200 profesores universitarios y MVP’s de diferentes tecnologías. que al igual que sucedió anteriormente con Windows Installer XML.uk/dotnet/ 58 .NET Whidbey”). García. mantiene este sitio. Nuevos lenguajes .jasoft. en que el producto se presentaba en diferentes versiones (Home/Professional para XP y Web. “Cosas que podrían ser interesantes” (en función de preferencias del usuario). Beijing (China) o Cambridge (Reino Unido). future developments and Security at Microsoft”). Para más información. Los últimos incorporados a la ya larga lista (más de 30 miembros) son los citados.vsj. Longhorn podrá configurarse a gusto del usuario.co. correo.asp <<dotNetManía VSJ NET Home (inglés): http://www. Visual Studio Core). donde encontrarás muchas de sus aportaciones personales http://www. trabaja en alguno de los centros de investigación que Microsoft mantiene en Redmond. Delphi .NET: F#.nuevas necesidades de los sistemas de información”). Damien Watkins (“Multilanguage programming teaching with . fichero.noticias.htm FABER TOYS: Para usuarios que les gusta saber que pasa en su ordenador (gratis): Ejecuta programas Windows sin utilizar el Registro. En este caso. ese es la nueva versión del S. etc. o extender el concepto de búsqueda a cualquier objeto contenedor (documento. incorporando aquellas partes que se necesiten. Adam Wiener (“Microsoft Data Access current and future: import/export data from SQL Server as XML and an introduction to ObjectSpaces”).NET y Fortran 95 . Para más datos. bajo el epígrafe “Docencia e investigación en un mundo de Aplicaciones Orientadas a Servicios”. ha sido liberado bajo Common Public License (open-source) y SourceForge Repository.org/ utilidades del mes Gif Optimizer: comprime todos los GIF de un sitio sin reducción de calidad apreciable (gratis): http://chemware. en la versión de cliente. Ivan Medvedev (“Security Framework on the CLR.NET Common Language Runtime and the .desvan noticias.NET: La producción de compiladores para MSIL no cesa.com/ vstudio/team/bios/blakes . epígrafes como “Cosas que he buscado antes”. http://www.asp?id=289 Mercado de fichajes El hasta ahora CTO de Borland. Longhorn Marino Posadas No obstante si de un producto puede decirse que aglutina un conjunto de novedades fruto de la investigación.co.noticias. sino que no para de sorprendernos con nuevos apuntes sobre su arquitectura. Zonnon.). que permitirán un tiempo de instalación de 15 minutos y un montón de nuevas características en las instalaciones distribuidas y desatendidas. Durante 3 jornadas.NET Platform: What we’ve achieved and where we’re going”).nz/tgo. Mark Myers. Pablo Rodríguez (“Distribución de contenidos en redes de datos móviles e inalámbricas”). Michal Cierniak (“.noticias Microsoft se centra en la investigación Los pasados días 24-26 de Mayo. se incorpora a Microsoft en el equipo de desarrollo de Visual Studio . Enterprise o Datacenter para el servidor).co.faberbox.NET”) . agrupadas por roles de actividad. ver http://msdn. algunas noticias se hacen eco de las novedades que la compañía quiere implantar de cara a las búsquedas en Internet: posibilidad de búsquedas personalizadas y configurables de forma simple. La mayor parte de ellos. ya anunciado de forma oficial para 2006 y su versión de servidor para 2007). La sombra de Hejlsberg sigue siendo alargada… Enlaces recomendados Jasoft Sitio de José Manuel Alarcón. pudimos escuchar a: Rosa M. será el vendedor el que podrá realizar la selección de módulos a incluir en el sistema.NET Rotor as a research platform”) y Don Syme (“The . que no sólo se ha rehecho desde cero. ver: http://www. Rafal Luckawiecki (“A Subjective View of Next Decade in IT”). o son conocidos divulgadores de tecnologías. se trata de su modularidad. autor de varios libros y colaborador habitual de revistas informáticas.<< dnm. lo daba a conocer como los “bloques de construcción del sistema”. Senior Program Manager de Longhorn. Más código abierto de productos Microsoft Ahora le toca el turno a Windows Template Library. Stephen Emmott. Fernando Guerrero (“SQL Server Yukon . y arquitecto de JBuilder.com/fabertoys. Catherine Heller (“Nueva generación de herramientas de desarrollo con Visual Studio . Sin embargo.microsoft.

Sign up to vote on this title
UsefulNot useful