Dot Net Mania

60
 SQL Server Reporting Services Universidad Final de la Imagine Cup en España. Open Source lphant, primer peer to peer bajo .NET Comunidades La XI convocatoria del Master Eidos en Tecnologías Avanzadas para el Desarrollo de Software Un veterano a la última WebForm Templates • Distribuir aplicaciones con .Net Remoting • Cambios sufridos por Object Pascal en Delphi 8 .NET • Configuración de varios sitios Web en IIS 6.0 con una misma dirección IP • Particiones de Directorio de Aplicaciones dotNetManía  V isu al Bas ic. NET • C# • Del ph i • ASP .NE T • ADO .NE T • .NE T F ram ewo rk • W ind ow s Server Sys tem dotNetManía www.dotnetmania.com Dedicada a los profesionales de la plataforma .NET  nº5 junio 2004 • Precio: 6,00  (España)

Transcript of Dot Net Mania

Page 1: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 1/60

 

SQL Server Reporting ServicesUniversidad

Final de la Imagine Cup en España.

Open Sourcelphant, primer peer to peer bajo .NET

ComunidadesLa XI convocatoria del Master Eidosen Tecnologías Avanzadas parael Desarrollo de Software

Un veterano a la última

WebForm Templates •Distribuir aplicaciones con.Net Remoting • Cambiossufridos por Object Pascal

en Delphi 8 .NET •Configuración de variossitios Web en IIS 6.0 con unamisma dirección IP •Particiones de Directoriode Aplicaciones

dotNetManía

 Visual Basic.NET • C# • Delphi • ASP.NET • ADO.NET • .NET Framework • Windows Server Sy

dotNetManíawww.dotnetmania.com Dedicada a los profesionales de la plataforma .NE

nº5 junio 2004 • Precio: 6,00  € (España)

Page 2: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 2/60

Page 3: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 3/60

 

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

Cuando compramos, por ejemplo, un ejemplar deuna revista impresa a través de Internet, lo pagamoscon nuestra tarjeta de crédito, y más adelante llega elcartero a nuestra casa con el sobre correspondiente,habremos usado Internet como un medio más parahacer una transacción. En este proceso se han emple-

ado materiales tangibles como el papel y el sello, y hanintervenido personas como el cartero, o la persona quepreparó y envió la revista que pedimos.

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

habrá intervenido posiblemente ningún ser humanode forma directa.Internet, puramente como ámbito nos trae gran-

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

 A cambio, Internet como medio le ofrece a estarevista posibilidades que antes no tenían los mediostradicionales. Tenemos la posibilidad de publicar tan-to material de apoyo a cada artículo como queramos,incluyendo bibliografía, el sonido original de una entre-

 vista, vídeos, noticias, enlaces a otros artículos simila-res o páginas relacionadas y, por supuesto, el códigode ejemplo, proyectos, utilidades, etc. Un complementoal papel impensable hasta la aparición de Internet.Incluso el CD que acompañaba a las revistas puedequedar en desuso, puesto que desde Internet puedebajar todo lo que un CD contiene pero con la increí-ble ventaja de interactuar con artículos de otros núme-ros, actualizarse con el tiempo y corregir y ampliartodo el material de apoyo tantas veces como se desee.

Ésta y no otra es la misión principal del sitio enInternet de dotNetManía. Por supuesto, también sir-

 ve para mostrar cómo es la revista, y más teniendo encuenta que no distribuimos en quioscos, recoger pedi-dos e informar de cómo son las personas que escribenaquí, etc. En breve, Internet ha de servir también paraenviar avisos a los lectores y que también puedan opi-nar y dejar su opinión sobre los artículos e incluso paraestar puntualmente informado, pues en las noticias elpapel de una revista mensual tiene la clara desventajadel tiempo que transcurre entre que la noticia ocurre

 y cuando realmente llega al lector.En ningún caso dotnetmania.com es un portal o

una comunidad virtual, porque dotNetManía es unarevista impresa que usa Internet como medio paracomplementarse y difundirse.

Internet: medio y ámbito

    <    <

dnm.editorial<<

dnm.editorial

Editor Paco Marín

([email protected])

 Administración Pilar Pérez([email protected])

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

Publicidad Juan Manuel Urraca([email protected])

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 ‘gui-

lle’ Som, Iván González, Jesús López, Jordi Rambl a, Jorge Serrano, José Manuel Alarcón, José Miguel Torres, Juan Torr es , Liborio López , Luis Miguel Blanco, Marin o Posadas, Miguel Egea, Miguel Katr ib, 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 [email protected] • www.eride.net

Edita

Netaliac/ Robledal, 13528529 Rivas-Vaciamadrid (Madrid)

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

ImprimeGráficas Vallehermoso

 www.graficasvallehermoso.com

Depósito Legal M-3.075-2004

[email protected]

Redaccion [email protected]

 Nuevos [email protected]

Page 4: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 4/60

 

5dnm.sumario

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

WebForm Templates 13-15

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

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

Crear informes con SQL Server Reporting Services 27-33 Los Reporting Services vienen a completar la amplia oferta relacionada con SQL-

Server, a completar al motor relacional, que tiene amplias funcionalidades como lareplicación, servicios de alta disponibilidad, mecanismos de trasvase de registros,

 servicios de transformación de datos, tareas programables, un avanzadomecanismo de copias de seguridad.

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

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

cambios en el compilador de Object Pascal que incorpora la versión 8 de Delphi.

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

Particiones de Directorio de Aplicaciones 46-48 Active Directory en Windows 2003 permite la creación y configuración de unanueva partición de directorio llamada Partición de Directorio de Aplicaciones.

 Esta partición se replica sólo en los controladores de dominio determinados y siempre que ejecuten Windows 2003.

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

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

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

dnm.directo.entrevistas 55-56

 Entrevista a Carlos Heras 

dnm.desvan 58

d

  n  m .  s

  u  m  a  r  i  o

Page 5: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 5/60

d

Page 6: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 6/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

6

dnm.noticias<<

dnm.noticias

Tech-Ed Europe 2004 en marchaEl evento europeo definitivo de Microsoft sobre

creación, implantación,protección y gestión

de soluciones conectadas Ya está aquí la mayorconferencia del añopara desarrolladores,arquitectos de soft-

 ware y sistemas y profesionales de las

 TI europeos. Serádesde el 29 de junioal 2 de julio y vuelve

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

celebrarse en Barcelona.En este año habrá contenido adicional sobre movi-

lidad ya que se aprovecha para celebrar conjuntamentela Conferencia Microsoft Mobile Devcon (MDC).

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

tor y de los que el resto del año sólo oirás hablar.

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

 Marino Posadas, asesor técnico y coordinador de dotNetManía, estará

allí y nos traerá jugosas entrevistas y uncompleto reportaje del evento. Dadaslas fechas del evento, posiblementeretrasemos la salida del siguiente núme-

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

Si te interesa asistir puedes encontrar másinformación enmicrosoft.com/spanish/msdn/Spain/eventos/teched.asp

 y en

microsoft.com/europe/teched/

InstallShield X combina el poder y flexibilidad deInstallShield DevStudio con el soporte multiplata-forma de InstallShield MultiPlatform, en una única

solución para todas las plataformas, sistemas operati- vos y dispositivos.Sus características avanzadas le permitirán confi-

gurar servidores de bases de datos, instalar servicios web, y crear instalaciones para dispositivos móviles.

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

InstallShield X le ofrece la flexibilidad y potenciapara desarrollar todos los instaladores Windows (MSI),InstallScript™, de plataforma cruzada (por ejemploSolaris, RedHat Linux, Mac OS X y OS/400), y para

dispositivos móviles desde una misma herramienta.

Sus herramientas automatizadas y asistentes faci-litan la creación de todo tipo de instalaciones, por muy complejas que éstas sean. Además sus funciones de

eliminación de conflictos aseguran que las instalacio-nes sean a prueba de fallos, para que usted ofrezca lamejor imagen a su cliente desde el primer momento.

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

En España puede obtener soporte técnico, servi-cios de formación y consultoría a través de los servi-cios profesionales Danysoft, empresa que lo repre-

senta en exclusiva. (Danysoft.com/installshield.htm)

Danysoft presenta el nuevo InstallShield X

    n    o     t

     i    c     i    a    s  .    n    o     t     i    c

     i    a    s  .    n    o     t     i    c     i    a    s  .    n    o     t     i    c     i    a    s  .    n

    o     t     i    c     i    a    s  .    n    o     t     i    c     i    a    s

La solución le ofrece todo lo que necesita para crear instalaciones

de Windows a Linux y de servidores a dispositivos móviles

Page 7: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 7/60

 

dnm.no<<

dnm.noticias

 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 futu-ro para la plataforma Windows con la industria

del PC. WinHEC es el evento donde ingenieros de

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

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

 Microsoft distribuyó la primera versión alp-ha oficial de Longhorn, aunque en realidad ya

hubo una “pre-alpha” para los asistentes al PDCdel año pasado. No debemos esperar una versiónbeta hasta el año que viene. También se distri-buyó entre los asistentes algunas nuevas herra-mientas de desarrollo para Windows como elWindows Longhorn Driver Kit, Windows Driver 

 Foundation, y el Driver Install Frameworks. Más información enhttp://www.microsoft.com/whdc/winhec/default.mspx

 WinHec 2004

Bill Gates en la Keynote Seamless Computing:Hardware

 Advances for a New Generation of Software

en el WinHEC 2004

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

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

os y presentaciones narradas, descargas del

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

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

tecnología ASP.NET.

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

Esperamos que le sea útil.

CD Kit de recursos ASP.NET versión 2

Canon v 1.0: Metodología convergentede desarrollo software

Desde el segundo semestre de 2003 un Grupo de Metodologías, formado pordiferentes profesionales del Área de Soluciones de Negocio y Desarrollo deSoftware han estado trabajando en el diseño una metodología propietaria paragestionar los proyectos de desarrollo de software que se llevan a cabo en

 Alhambra-Eidos. Producto del trabajo de dicho grupo es Canon en su ver-sión 1.0.Canon es la metodología interna para desarrollo de software creada por

 Alhambra-Eidos con la finalidad de mejorar el nivel de madurez con el quese abordan sus distintos proyectos y, por tanto, asegurar la calidad en elresultado de los mismos.

Borland y SOFTENG sellan su alianza

como partners estratégicos para

potenciar el uso de sus productosEl 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 formaconjunta para potenciar el uso de sus productos, a través de la organizaciónde eventos y seminarios de formación, realización de consultoría así comode la introducción de mejoras en las prestaciones de los proyectos que desa-rrolla Softeng.

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

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

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

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

  e  m  p  r  e  s  a  s

  e  m  p  r  e  s  a  s  e

  m  p  r  e  s  a  s  e  m

  p  r  e  s  a  s

Page 8: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 8/60

 

es la competición in-formática para estudiantes universita-

rios que organiza Microsoft a nivelinternacional, en la que deben presen-tarse proyectos en los que se utilicen dis-positivos móviles, servicios web y com-ponentes inteligentes que aprendan a lolargo del tiempo.

La final a nivel mundial ya está ensu segunda edición y consistirá en unevento de varios días de duración en laprimera semana de julio, en Sao Paulo,Brasil. Todos los finalistas internacio-nes de cada país o región competirán

por las tres primeras plazas. Los pri-meros premios son de 25.000, 15.000 y 10.000 dóla res para el pr imero,segundo y tercero respectivamente. Entotal se repartirán más de 85.000 dóla-res en premios en metálico para losganadores.

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

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

El ganador que nos representará elpróximo mes de julio en Sao Paolo hasido el proyecto VAMOS de la Uni-

 versidad de Valencia. La propuesta ha

sido seleccionada por su innovación,

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

1er PremioVAMOS: el museo del futuro

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

 Acabar con lanoción de los museoscomo meros “conte-nedores visuales” deobras de arte es elpunto de partida de VAMOS (Virtual 

 Assistant for Museum

Occasional Sightseeing ),un proyecto que nos

acerca al museo del futu-ro, un espacio dinámico,interactivo y cercano al

 visitante.Un museo que, para

los autores de VAMOS,deberá cumplir nuevasfunciones como la con-servación intelectual(entendida como el estu-dio, interpretación, cata-logación y valoración de

las obras de arte comoobjetos de carácter esté-tico que constituyen lashuellas culturales de la

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

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

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

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

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

los contenidos.     d    o    t     N

    e    t     M    a    n     í    a

          <          <

8

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

ganador del campeonato universitario

Imagine Cup España de Microsoft

    <    <Imagine Cup

El equipo ganador recogiendo sus diplomas junto a Rosa García,consejera delegada de Microsoft Ibérica; Beatriz Ordoñez,

responsable de Imagine Cup España y el Ilustrísimo Sr.D.ÁngelBerna Quintana,director general de la Fundación Pablo VI – UPSA.

Page 9: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 9/60

 

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

• Proveer información al visitante en

cualquier momento durante la reali-zación de una visita.• Personalizar los contenidos que se

muestran al visitante en funciónde sus gustos, de forma transpa-rente y automática.

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

La respuesta a tan elevadas exigen-

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

 visitante.Su “secreto”: la movilidad. VAMOS

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

Comienza la visita

Por fin nos hallamos en el interior

del museo y, lamentablemente, con

menos tiempo del que nos gustaría y sería necesario para poder visitarlo deforma provechosa. Sin embargo, conta-

mos con VAMOS, el sistema que, trasalquilar un dispositivo de mano en elpropio museo, nos guiará en todomomento en nuestra visita. Tras indicaral sistema el tiempo del que dispone-mos, así como nuestras preferencias, éstenos ofrece la ruta perfecta a nuestrosrequerimientos. En tan sólo un par declicks nos encontramos visitando las salas

 y exposiciones que más nos interesaban y además, con toda la información quenecesitamos para disfrutar de las obras

de arte que en nuestro recorrido vamosencontrando. De repente, nos sorpren-de una de esas obras. Nos detenemosfrente a ella para examinarla más pau-sadamente. En nuestro Pocket PC, VAMOS nos ofrece todos los datossobre la misma: su autor, trabajos pre-

 vios, inspiración, estilo, etc. Nuestro altoen el camino ha merecido la pena pero,claro, también ha retrasado el plan de

 visita. No hay problema: sin que nospercatemos siquiera, VAMOS ha rehe-cho nuestra visita al museo, adecuán-dola ahora al tiempo que nos queda.

2º PremioNever2Late.Despertarsiempre a tiempo

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

Late, el despertador inteligente.

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

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

Ni un imprevisto más

Despertarse contiempo suficiente

pero además tenien-do en cuenta aspec-tos tan decisivoscomo el estado deltráfico esa mañana,

 y a esa hora en con-creto, y la situaciónmeteorológica. Elobjetivo: no llegartarde nunca más. Los beneficios: Hacermás fácil la vida del usuario, aprovechan-do su tiempo al máximo, ya sea en el tra-

bajo, en su domicilio o el camino entreambos. Todo ello, de forma rápida y senci-

lla, tomando como punto de partida lapropia experiencia del usuario, sus hora-rios y tareas habituales, itinerarios, etc.

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

Una secuencia más o menos lógicade lo que el usuario hace cada mañana

 y que el sistema debe conocer, podríaser:

1. Despertar y ducha2. Desayuno3. Entrada en el coche4. Camino A 5. Camino B

6. Llegada a destino/trabajo

dnm.universid<<

Proyecto:

VAMOS (Virtual Assistant for MuseumOccasional Sightseeing).

Universidad:

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

Autores:

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

.Net FrameWork SQL Server

Aplicación:

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

Page 10: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 10/60

 

Una vez introducida esta informa-ción, el sistema Never2Late se sincro-niza con el dispositivo móvil del usua-rio y pronostica, a partir de su propia

experiencia, el tiempo necesario paraque, al día siguiente, éste se despierte y realice todas sus tareas habituales, lle-gando a tiempo a su destino.

Pronosticar de forma inteligente lahora de despertar al usuario implica

 valorar, además de la experiencia delusuario, otros factores decisivos comopueden ser la información del tráfico,datos meteorológicos e incluso infor-mación del calendario (vacaciones,puentes, días festivos, etc). Con toda esta

 valiosa información, el sistema Never2Late despertará al usuario a lahora exacta y necesaria para que lleguea su lugar de trabajo justo a tiempo.

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

Pese a que Never2Late utiliza uncomplejo entramado de redes neurona-

les, servicios web y técnicas heurísticas

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

 vo móvil para disfrutar de ella.

3º Premio

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

Un simple Pocket

PC será a partir deahora su mejor guíaturístico. Gracias a

Picassoft , un programa diseñado por cua-tro estudiantes de la Universidad de

 Málaga, el turista podrá con su dispositi- vo móvil conocer en todo momento lamejor ruta para visitar los rincones de unaciudad, siempre adecuándose además a susgustos, tiempo disponible o preferencias.

Aprovechar el tiempo

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

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

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

Pero además de ofrecer el mejorrecorrido por la ciudad, Picassoft hará

que el usuario disponga en la pantalla

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

 xima parada en la misma.Sencillo, actualizado y personaliza-

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

La más completa información

La ruta perfecta y a medida peroademás con toda la información nece-saria para que disfrutar de ella al máxi-mo sea una realidad. El sistemaPicassoft le acompaña en todo el reco-rrido ofreciéndole la información más

completa de cada uno de los lugares que visita. Así, de forma automática y cada vez que el usuario alcanza uno de susdestinos, el sistema le ofrece en panta-lla detallada información audiovisual decarácter turístico

sobre el lugar dónde se encuentra:año de construcción, estilos, historia,aspectos más destacados, etc. Todo ello

 junto a datos de gran uti lidad comohorarios y días de visita, precios deentradas y ofertas especiales para gru-

pos, así como teléfonos de información.Su opinión es importante

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

 Así, la aplicación establece que cuan-do el usuario ha visitado un lugar de laruta elegida, pueda emitir su valoraciónsobre el mismo. Esta información pasaa formar parte del sistema, que generaasí listas con los lugares mejor valora-dos por los usuarios y, de igual modo,ofrece cada vez rutas más acordes a estas

 valoraciones, priorizando los lugares,rincones o monumentos de esa ciudadque más votos positivos han consegui-do por parte de las personas que las han

 visitado.Una valiosa información que no sólo

hará mucho más gratificante las próxi-

mas visitas de otros turistas, sino que     d    o    t     N

    e    t     M    a    n     í    a

          <          <

10

dnm.universidad<<

Proyecto:

Never2Late.

Universidad:

Escuela Técnica Superior deIngenieríaUniversidad Pontificia deComillas.

Autores:

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

Tecnología:

.Net FrameWork Web ServicesRedes NeuronalesSQL Server 2000Programación en C+,ASP.Net

Aplicación:

Despertador inteligente.

Page 11: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 11/60

 

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

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

 y, sobre todo, inteligente.

FinalistaMy Street Finder. Un mapaen el bolsillo

Obtener un mapa de la ciudad, locali-

zar puntos de interés e incluso saberhacia dónde dirigir nuestros pasos parallegar a ellos. Estos son sólo algunosejemplos de las numerosas aplicacionesque tiene My Street Finder .

 Transeúntes, tu-ristas e incluso traba-

 jadores en busca de laruta más corta haciasu destino pueden,con My Street Fin-der , obtener en cual-quier momento y lugar un mapa de laciudad en la que se

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

Información a medida

Basado en una arquitectura cliente-

servidor, este proyecto permite al usua-

rio obtener en su Pocket PC mapas deuna ciudad o zona, completamente actua-lizados. Esto se consigue gracias a la tec-nología utilizada por el autor y que con-

siste en que los mapas generados no sealmacenen en el servidor en formato foto-grafía sino que son datos en tablas que,desde una base de datos, se convierten enimágenes al ser enviados al usuario.

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

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

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

La ciudad en movimiento

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

positivo.

Una ventaja que My Street Finder proporciona permitiendo que el usua-rio reciba mapas de posiciones adya-centes a la que se encuentra en esosmomentos y, de esta forma, obtenga la

 visión más completa de la zona. Visitar la ciudad al completo pero

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

 y además, la dirección que deberá seguirpara encontrarlos.

 Aunque a primera vista, My Street 

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

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

Pero además, My Street Finder per-

mite que un usuario conozca en el mapaque recibe la posición exacta en la que seencuentra otro usuario del sistema. A tra-

 vés del mismo protocolo, el usuario pue-de recibir información sobre otros usua-rios como es el nombre y la posición don-de se encuentra en esos momentos.

dnm.universid<<

Proyecto:

My StreetFinder.

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

Autor:David Sainz González.

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

Aplicación:

Servicio de Mapas

Proyecto:

Picassoft

Universidad:

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

Curro Basagoiti, Iñaki Esteve,Antonio Molinay Ana Reyna.

Tecnología:

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

Aplicación:

Servicio de rutas y recorridos turísticos en Pocket PC.

Page 12: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 12/60

 

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

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

Finalista.RAMPA. El fin de las barrerasarquitectónicas

Rampas, escaleras, bordillos, obras.

Cada día, las personas con alguna defi-ciencia física o psíquica se encuentrancon múltiples barreras arquitectónicasque pueden convertir un simple paseoen una carrera de obstáculos. El pro-

 yecto RAMPA busca ayudarles a supe-rar estas dificultades.

El cualquier momento y desde cual-quier lugar, el usuario de RAMPA podrá, a través de un dispositivo PocketPC, conocer el trayecto más adecuado

a sus deficiencias físicas o psíquicas. Trasconocer las características específicas demovilidad del usuario, RAMPA evalúalas peculiaridades del entorno y así, ofre-ce un trayecto por el mismo adaptadoal usuario. Esta adecuación del recorri-do a las características del usuario (y noal contrario como suele ser habitual)mejora enormemente la calidad de vidadel mismo.

Encontrar un lugar

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

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

cer en todo momento posibles obras en

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

Del edificio a la ciudad

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

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

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

 vio del usuario en el sistema.de forma activa: el sistema recibe una

petición del usuario sobre una infor-mación concreta.

 Tanto en un caso como en el otro,RAMPA evalúa las características par-ticulares del usuario para así ofrecerle

la información más adecuada a las mis-mas, de forma sencilla, amigable y actua-lizada en todo momento.

Todas las posibilidades

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

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

En segundo lugar, RAMPA evalúalas características físicas del propioentorno a la hora de elaborar el reco-rrido adecuado. Así, tiene en cuenta fac-tores como dónde se encuentran ram-pas, aceras o escaleras, si existe algúntramo en obras, las direcciones de lascalles, si hay posibilidad de transporte

público, etc. Y por último, el sistematendrá en cuenta también condicionescomo la celebración de eventos espe-ciales o incluso, el clima para si, porejemplo, está lloviendo, elegir un reco-rrido que pase mayoritariamente porlugares cubiertos.

Por otro lado, y en el caso de que elusuario lo que solicite sea una ruta deter-minada para llegar a un punto de inte-rés, RAMPA le ofrecerá, junto a la mis-ma, información sobre acontecimientos

 y/o las instalaciones principales que elusuario va a encontrarse por el camino y que pueden resultar de su interés.

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

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

12

dnm.universidad<<

Proyecto:RAMPA

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

Autores:

Sergio Edo, Oriol Mercadé y Vanesa Jiménez.Tecnología:

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

Aplicación:

Servicio de información sobre trayectos adaptados a personas con deficiencias

físicas o psíquicas.

Page 13: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 13/60

 

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

 Al enfocarnos en las aplicaciones Web en ASP.NET descubrimos que el comportamiento de laherencia no es exactamente el mismo que en su par,

el formulario Windows. Esto se debe a que en ASP.NET tenemos dos elementos bien diferencia-bles: el formulario ASCX, cuyo contenido describelos controles que conformarán la apariencia de la pági-na web y, por otro lado, el archivo que contiene lasinstrucciones en .NET que conforman la lógica queregula el comportamiento del mismo formulario.

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

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

Funcionamientode un formulario Web

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

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

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

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

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

WebForm Templates

Pablo Abbate MCDBA/MCAD/MCSD/MCT 

Consultor independiente

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

Con .NET,    <    <

En ASP.NET tenemos dos

elementos bien diferenciables:

el formulario ASCX, cuyo contenido

describe los controles que

conformarán la

apariencia de la página web

y el archivo que contiene las

instrucciones en .NET que

conforman la lógica que regula

el comportamiento

del formulario

Page 14: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 14/60

 

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

El proyecto

La idea es desarrollar una páginamodelo que nos permita reutilizar aque-llos componentes comunes a todas laspáginas sin tener que insertarlos cada

 vez que creamos un nuevo Web Form.En este caso, haremos un diseño de

acuerdo al esquema de la figura 1.

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

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

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

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

Después de realizar nuestros cam-

bios, tendrá la siguiente la apariencia dela figura 3.Para los frames que rodean al área

de trabajo, utilizaremos user controlsque nos permitirán diseñar gráficamenteel contenido de estos frames.

 Veamos como empezar…

Pasos

En un proyecto de Visual Studio2003 seleccionamos  ASP.NET Web

 Application  y lo denominamos Web- FormTemplate.

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

 frmPie, frmIzquierdo, frmDerecho.En cada user control agregaremos

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

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

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

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

14

dnm.asp.net<<

Figura1

Figura 2

Figura 3

Figura 4

Figura 5

Page 15: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 15/60

 

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

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

 Form.Otro método que debe ser sobre-

escrito es Render , también de la claseSystem.Web.UI.Control . La tarea que lle-

 va a cabo este método es la de enviarel contenido de un control de servidora un objeto  HTMLTextWriter , el cualescribe el contenido HTML en elcliente.

Después de nuestra modificación, el

método definitivo tiene el aspecto delfuente 2. Agregamos un nuevo Web Form con

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

 A continuación, regresando a la ven-tana de diseño, arrastramos un webformcontrol de tipo Panel sobre el Web Form.

Es importante, recordar que el nombredel control agregado debe ser AreaTrabajo. Modificamos las propie-dades de tamaño para que abarque el100% del alto y ancho de la página.

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

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

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

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

mos todos los controles de usuario.

dnm.asp.net<<

 protected override void CreateChildControls()

{

// Reemplazamos el formulario del archivo ascx por

// un formulario creado desde el código

HtmlForm Form = new HtmlForm();

// Creamos una tabla para distribuir los frames

Table TablaPagina = new Table();

TableRow RowContenido = new TableRow();

TableCell CellFrmIzquierdo = new TableCell();

TableCell CellFrmContenido = new TableCell();

TableCell CellFrmDerecho = new TableCell();

// Creamos el Encabezado

Form.Controls.Add(LoadControl(“frmEncabezado.ascx”));

// Agregamos el contendio del frame Izquierdo

CellFrmIzquierdo.Controls.Add(LoadControl(“frmIzquierdo.ascx”));

// Agregamos el contenido de la página actual

Control Area = this.FindControl(“AreaTrabajo”);

if (Area != null)

CellFrmContenido.Controls.Add(Area);

// Agregamos el contenido del frame Derecho

CellFrmDerecho.Controls.Add(LoadControl(“frmDerecho.ascx”));

RowContenido.Cells.Add(CellFrmIzquierdo);

RowContenido.Cells.Add(CellFrmContenido);

RowContenido.Cells.Add(CellFrmDerecho);

TablaPagina.Controls.Add(RowContenido);

// Agregamos la tabla de contenido a la página

Form.Controls.Add( TablaPagina );

// Creamos el Pie

Form.Controls.Add(LoadControl(“frmPie.ascx”));

// Agregamos el Form 

this.Controls.Add(Form);

base.CreateChildControls();

}

 protected override void Render(HtmlTextWriter writer)

{

// Rellenamos el inicio del código HTML

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

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

// Rellenamos el contenido de la página.

base.Render(writer);

// Rellenamos el fin del documento HTML

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

 public class Main :

 WebFormTemplate.modelform 

Fuente 1

Fuente 2

Page 16: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 16/60

 

no es un Add-In para Visual Studio nininguna capa basada en .NET paraotros servidores de informes de terce-ros fabricantes. SQL Server Reporting Services está totalmente desarrollado

bajo código administrado, en C# y comporta una serie de herramientas

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

La plataforma

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

• Report Server• Report Designer• Report Server Data Base

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

te. Actualmente el modelo de progra-

mación stateless es el que se viene utili-zando en el desarrollo de arquitecturas.NET con  Enterpri se Serv ic es , queempezó ya con

 MTS, y 

que han

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

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

 vicio Web.     d    o    t     N

    e    t     M    a    n     í    a

          <          <

16

SQL Server Reporting Services

Por José Miguel TorresTécnico Superior en Desarrollo

de Aplicaciones Informáticas MRW 

Al fin ante nosotrostenemos un servidor

de informes totalmentedesarrollado porMicrosoft, el SQLServer Reporting

Services. Se trata de unservidor de informes

basado en WebServices y cuya carac-

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

laridad’, que por unlado establece, asegura

y actualiza el origen dedatos al cual estáconectado, y por otrosuministra el informeen una fase paralela e

independiente.

    <    <SQL ServerReporting Services

Page 17: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 17/60

 

La diferencia fundamental con otrosdiseñadores de informes es que, porejemplo, Crystal Reports es una herra-mienta orientada al diseño de informes

 y, si bien es cierto que puede publicarinformes como Servicios Web e incluso

posee dos interfaces estandarizadas comoson SOAP y COM, dista de la idea de servidor deofrece SQL Server Reporting Services , con herramientas deadministración propias, polí-ticas de seguridad y más dife-rencias que iremos viendomás adelante, un servidor deinformes en toda regla.

Características

 A nivel de diseño de informes, con SQL Server  Rerporting Services , podemos realizar todas las opera-

ciones que permiten actualmente los diseñadores del

mercado. Diseño de informes tabulares, matriciales,con gráficos, con objetos OLE, etcétera, además intro-duce un concepto llamado ‘ snaking columns’ que sonlas utilizadas en los periódicos. Permite la interacción

 y navegación por parte del usuario y los formatos depresentaciones más comunes ( pdf, html, xls, csv,...), ade-más de agregaciones de datos, etcétera.

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

tación desde informes Access, no

habiendo posibilidad, de momento,de importación desde Crystal Reports ni de cualquier otro fabricante.

 Asimismo posee un generador deconsultas SQL y posibilidad de vis-ta previa, entre otras características.

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

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

perfilar la escalabilidad de la arquitectura.

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

Fernando Bocigas, Product

 Manager de SQL Server y SQL

Reporting Services de MicrosoftIbérica

Fig 1.Diagrama de la arquitectura

    <    <

Page 18: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 18/60

 

Cada usuario (cliente) de una redcorporativa con cuenta autenticada de

 Windows, por ejemplo, con acceso aSQL Server Reporting Services , disponede un espacio Mis Informes en los quetiene un espacio para administrar y almacenar sus propios informes; asi-mismo también se pueden obtener sus-

cripciones propias en un espacio simi-lar llamado Mis Suscripciones . Dichas sus-cripciones se entienden como distri-buidores de informes automáticos acliente y que pueden ser estándares ocontroladas por datos, en la que se sir-

 ven según una consulta, por ejemplo.La entrega puede ser mediante correoelectrónico y/o mediante Web Services oservicios Windows, gracias a la arqui-tectura modular que están desarrolla-dos los Reporting Services .

Los informes se procesan en gruposde dos fases que separan el procesamientode datos de la representación final. Estopermite representaciones de tipo de for-mato distintos, una mayor escalabilidad

 y la posibilidad de programar algunoscomponente mediante Visual Studio.NET. Esta característica diferencia cla-ramente, la representación de informesde SQL Server Reporting Services conCrystal Reports . Éste último procesa cadainforme desde la petición, pasando porla captación de datos y publicación en el

 visor, en una misma fase, con lo que varias

peticiones a un mismo informe implica-rá una mala administración de recursos

 ya que hará tantos accesos al origen dedatos como peticiones, contrariamenteque SQL Server Reporting Services.

Los informes en SQL Server  Reporting Server se definen mediante unasintaxis propia llamada (RDL) Reporting Definition Language que permite, basán-dose en XML, definir un informe conun schema publicado. Así que podemosutilizar SOAP para publicar informesdesde una aplicación externa, ya sea en

 Windows o desarrollando controles web forms para renderizar informes publica-dos de manera transparente para unusuario.

SQL Server Reporting Services tienecompatibilidad con herramientas exis-

tentes de servicios de análisis pero noserá hasta la llegada de Yukon, dónde sefusionarán y aumentará la potencia entreambos.

Requisitos

Existen varias versiones de SQLServer Reporting Services:

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

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

En cuanto a requerimientos deSoftware, SQL Server Reporting Services ,

depende totalmente de un SistemaOperativo servidor; en la tabla 1 pode-mos observar una relación de requisitospor componentes.

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

18

dnm.servidores.sql<<

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

Componente Requisitos previos

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

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

2000 SP3a.

• Sitio Web predeterminado accesible a travésde http://<nombreDeServidor>.• Para Windows 2003, el equipo debe estar con-

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

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

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

http://<nombreDeServidor>.

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

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

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

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

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

Los informes en SQL

Server Reporting Server se

definen mediante unasintaxis propia llamada

(RDL) Reporting Definition

Language que permite,

basándose en XML,

definir un informe con un

schema publicado

Page 19: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 19/60

 

Diseñar

El diseñador de informes forma parte de VisualStudio y la creación de un informe implicará la crea-ción de un proyecto en el mismo de tipo Business 

 Intelligence, mediante un asistente o simplemente uninforme vacío (fig. 2).

En el explorador de soluciones vemos el proyecto

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

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

 Report Services .La mayoría de herramientas de diseño del merca-

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

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

cuando y como queramos. Podemos agregar el infor-

me a nuestra solución como un proyecto más, en defi-

nitiva, la utilización de SQL Server Reporting Services  y  Visual Studio .NET es muy provechosa. También des-de Visual Studio .NET, tenemos la posibilidad deimplementar y publicar el informe aunque es desde lasherramientas encomendadas para ello, donde encon-traremos mayor funcionalidad al respecto.

dnm.servidor<<

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

Tenemos a nuestra disposición todo el potencial

de la interfaz de Visual Studio .NET para el diseñode un informe, desde el generador de la consulta

SQL hasta los tipos de informes a utilizar

Figura 3.Esqueleto de un proyectoBusiness Intelligence.

Page 20: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 20/60

 

Implementar y administrar

Lo mas importante de la herramienta de admi-nistración es que está basada en Web, alojada bajo IIS

 y ASP .NET y que por tanto deberá estar familiari-zado con estos contextos. La seguridad, como vienesiendo tradicional entre productos de servidor de

 Microsoft, puede estar integrada bajo autenticación Windows y su implantación requiere de un estudiodetallado y una fase de implantación minuciosa. Esimportante la planificación para la implementación y administración de los informes ya que no sólo depen-de de un origen de datos ( ya que éste puede ser com-partido o propio de un informe) con unas premisasde seguridad propias y un alcance local o remoto, sinoque además los clientes de estos informes pueden noestar dentro de un dominio local y que por tanto laoperación de autorización y autenticación sean impres-cindibles, a través de IIS y/o Windows y/o SQL

Server. Ver figura 5.

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

En el ejemplo que se muestra en estas líneas rea-lizado anteriormente llamado Ejemplo, vemos que hay 

dos ficheros. El primero hace referencia a la conexiónde datos que es compartida y que no es mas que unarchivo XML (fig. 8) y el segundo, rptEjemplo, es ladefinición del informe en RDL y cuando accedemos,

e l     d    o    t     N

    e    t     M    a    n     í    a

          <          <

20

dnm.servidores.sql<<

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

Figura 5.Esquema de implantación distribuida.

Page 21: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 21/60

 

dnm.servidor<<

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

De manera transparente existe un componenteque se encarga de administrar la utilización de éstaconexión, para que sea compartida por otros infor-

mes y para que no consuma más que los recursos nece-sarios, de ahí que el archivo de conexión sea XML, yaque se trata de un componente basado en Web Service.

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

SQL Server Reporting Services soporta clúster debalanceo de carga en red ( Network Load Balanced (NLB)). Al ser un Web Service stateless , sin estado, sireside en un contexto de NLB éste se escalará haciafuera en caso de que algún servidor esté indispuesto.

 Además, la base de datos de SQL Server Reporting Services puede residir en un cluster junto a demás ser-

 vidores SQL Server .SQL Server Reporting Services puede utilizar el SQL

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

formato de salida.

Como herramientas no gráficas destaca rscon- fig.exe para la administración de conexiones, rs.exepara la ejecución de comandos automatizados,rskeymgmt.exe para la administración de cifrado declaves de los informes, rsactivate.exe para la activa-

ción instantánea de servidores de informes. La com-binación del comando rs.exe junto a los demás per-mite secuenciar de manera programática operacio-nes de mantenimiento desde la consola del intér-prete de comandos.

Figura 6.La herramienta ReportServer

Figura 7.Explorador de Informes

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

 Jason Carlson, Product Unit Manager de SQL Server 

Reporting Services

de Microsoft Corp.

<<

Page 22: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 22/60

<< 

Desarrollo

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

 je .NET. Ya que los informes están definidos

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

que puede ser utilizada para este fin.

Pero las posibilidades de desarrollo van más allá del desarrollo de los infor-mes. SQL Server Reporting Services cuenta con tres interfaces principales.Por una parte WMI (Instrumental deadministración de Windows) cuyamisión es administrar el servidor deinformes; en segundo lugar, el accesoURL que permite la integración enmodo de portal para los informes publi-cados y por último SOAP. SOAP per-mite la publicación, administración y acceso a cualquier informe y es por elloque empleando las API de SOAP pode-mos desarrollar una aplicación paraadministrar un servidor de informes, eincluso contando con servicios Webpropios y componentes escalables apro-

 vechando los servicios que ofrece los Enterpri se Serv ices  a través de losServiced Components, las posibilidadesde desarrollo no se centran únicamen-te en un marco local limitado física-mente. Destacar que ninguna interfazestá basada en COM+.

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

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

22

dnm.servidores.sql<<

Figura 10.Esquema RDL

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

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

Page 23: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 23/60

 

De la misma forma que SOAPnos ofrece la posibilidad de admi-nistrar un servidor, URL nos per-mite personalizar un explorador y 

 WMI configurarlo, todo ello desde Visual Studio .NET.

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

en la figura 12.

dnm.servidor<<

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

SQL Server Reporting Services cuenta con tres interfaces

principales. Por una parte WMI cuya misión es administrar el

servidor de informes; en segundo lugar, el acceso URL que

permite la integración en modo de portal para los informes

publicados, y por último SOAP que permite la publicación,

administración y acceso a cualquier informe

Page 24: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 24/60

 

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

Conclusión

SQL Server Reporting Services es un conjunto de

herramientas integradas cimentadas sobre pro-

ductos como SQL Server y Visual Studio .NET.Su integración con demás tecnologías de servidorIIS, ASP .NET, etc. lo hacen único, muy escalable

 y flexible, lo que puede ser una buena solución parael tráfico de grandes cantidades de documentos encorporaciones cuya extensión del negocio abarca

 varios países, y para pequeñas que enconaran en

SQL Server Reporting Services una herramienta de     d    o    t     N

    e    t     M    a    n     í    a

          <          <

24

dnm.servidores.sql<<

 using System;

 using ConsumidorWS.WebReference;

namespace ConsumidorWS

{

class Class1

{

[STAThread]

static void Main(string[] args)

{

ReportingService report = new ReportingService();

report.Credentials = System.Net.CredentialCache.

DefaultCredentials;

string informe = “/Ejemplo/rptEjemplo”;

Property nombre = new Property();

nombre.Name =”Name”;

Property descripcion = new Property();

descripcion.Name =”Description”;

Property[] propiedades = new Property[2];

 propiedades[0] = nombre;

 propiedades[1] = descripcion;

try

{

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

foreach (Property p in retPropiedades)

{

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

}

catch (Exception e)

{

Console.WriteLine (e.Message);

}

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

Console.Read();

}

}

}

Código fuente 1

Page 25: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 25/60

Page 26: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 26/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

26

dnm.servidores.sql<<

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

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

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

Figura 12. Resultado de la aplicación consola.

bibliografía

Professional SQL Server Reporting Services

Paul Turley,Todd Bryant, James Counihan, George McKee, Dave DuVarney 

Editorial: WroxPáginas: 800

Publicado: Mayo, 2004ISBN: 0764568787

Microsoft SQL Server Reporting Services

Brian Larson

Editorial McGraw-Hill Osborne Media

Páginas: 704Publicado: Mayo, 2004ISBN: 0072232161

Hitchhiker’s Guide to SQL Server 2000 Reporting Services

Peter Blackburn,William R.Vaughn

Editorial: Pearson EducationPágians: 400

Publicado: Previsto para Octubre 2004

ISBN: 0321268288

Page 27: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 27/60

 

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

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

 Veremos también los elementos que podemoscolocar en nuestros informes, las fuentes de datos,compartidas o no, la herramienta de diseño deinformes y el despliegue de informes con VisualStudio.NET. Sin embargo quedará fuera del alcan-ce de este documento la creación de informes sin

 Visual Studio; poderse se puede, ya que los la defi-nición de los informes (ficheros RDL – Report 

Definition Language), es un fichero XML estándar

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

¿Cómo empezamos?

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

 ReportServerTempdb y añadirá una base de datos nue-

Crear informes con SQL Server

Reporting Services

Por Miguel EgeaSQL Server MVP portalsql.com

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

Realmente son una potente    <    <

Page 28: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 28/60

 

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

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

Un par de clics más y tendremos instalados losReporting Services listos para desarrollar informesprofesionales de forma sencilla. Veremos a continua-

ción cómo crear informes primero siguiendo el asis-tente de creación de informes, después un poco másen detalle con cada uno de los elementos de los quedisponemos en un informe.

Creando nuestro primer informe

 Manos a la obra, vamos a construir nuestro primerinforme, para eso abriremos el entorno de desarrollode Visual Studio .NET y elegiremos los proyectos deBussiness Intelligence, ahí elegiremos el asistente para lacreación de informes y cambiaremos a nuestro gustoel nombre del informe. En cuanto seguimos, el asis-tente encontramos una de las características de losReporting Services, los orígenes de datos comparti-dos. Es muy común que buena parte de los informesde una organización utilicen la misma conexión, esdecir se conecten a la misma base de datos con pará-metros similares, más aún cuando esta conexión pue-de realizarse en el entorno de seguridad de Windows.

 Aún así, podemos construir orígenes de datos especí-ficos para cada informe si es que es ese nuestro deseo.En la figura 2 podemos observar la pantalla del asis-tente a la que nos estamos refiriendo. A continuaciónel asistente nos preguntará cual es la instrucción SQL

que vamos a usar para nuestro informe, para el ejem-

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

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

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

Para nuestro ejemplo elegiremos Matriz, vamos a

contrastar la información de ventas por meses, aun-     d    o    t     N

    e    t     M    a    n     í    a

          <          <

28

dnm.servidores.sql<<

Figura1

Figura 2

Consejo

Si la BBDD es SQL SERVER no impor-ta realmente para este paso si nuestra

sentencia devuelve millones de regis-tros.Para comprobar que la sentenciaes correcta,Reporting Services no eje-cutan la consulta para devolver regis-tros sino que añade la sentencia SETFMTONLY ON antes para devolversólo la estructura.

[ [

Page 29: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 29/60

 

que para hacerlo tendremos que personalizar algonuestro informe al final.

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

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

 Al final nos pregunta por el servidor de informes,ahí se realizará la implementación del informe, situad

en esa casilla la URL para acceder a vuestro servidorde Reporting Services.Con esto hemos creado nuestro primer informe,

será necesario ahora personalizarlo y darle más senti-do. Nuestro objetivo será construir un informe de ven-tas por años y meses, que tenga aspecto interactivo,

 veamos qué pasos debemos dar para conseguirlo par-tiendo de la base del asistente.

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

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

 Añadiremos un grupo más, a un nivel superior,será el grupo año. Para hacerlo pulsaremos botón dere-cho sobre la matriz, agregar grupo, y rellenaremos losdatos con los valores adecuados. Lo que tendremosque hacer es añadir un nivel de agrupación por años,

 y después añadir una propiedad al grupo mes que indi-que que el nivel mes puede mostrarse o no en funcióndel año. Para esto entraremos en la pestaña de visibi-

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

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

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

muchas veces ese resultado depende más de la maquetación

dnm.servidor<<

Figura 4

Figura 3

Necesitamos tener un servidor IIS, en él se desplegarán los informes,

este servidor debe admitir ASP.NET, ya que al final Reporting Services expone

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

el servidor

Page 30: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 30/60

 

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

Para terminar nuestro informe vamos a darle unpoco de sentido, vamos a quitar todos los camposque no usamos para de esta forma mejorar el rendi-

miento del informe. Nuestra sentencia la vamos adejar así:

El aspecto final del informe es el que podéis obser- var en la figura 5. Este tipo de informes (y todos en

realidad) puede exportarse a Excel, además de a PDF,HTML con Office Web Componets, CSV, e incluso XML con datos del informe. Es decir, tenemos unbuen número de formatos que pueden permitirnosque nuestros informes, de forma predeterminadaexpongan funcionalidades que serían muy complica-das de otra forma.

Agregando interactividad a los informes

No hay informe que no necesite parámetros, todosde una forma u otra necesitan un conjunto de valorespor los que filtrar o algún mecanismo para reducir el

 volumen de información exactamente al que necesi-tamos. Naturalmente Reporting Services tiene meca-nismos para facilitar esta tarea. Siguiendo con nues-tro ejemplo vamos a dotar a nuestro informe de laposibilidad de seleccionar el año del que mostrar lainformación. Veamos paso a paso como añadirle estalógica.

Lo primero que vamos a hacer es añadir un nue- vo conjunto de datos a nuestro informe; este conjun-to de datos contendrá una relación de los posibles

 valores que va a tener nuestro informe. Para ello enel diseñador de Visual Studio .NET seleccionaremosla pestaña datos y a continuación seleccionaremos

 Nuevo conjunto de datos , tal y como podemos ver en la

figura 6. A continuación incluiremos un nuevo con- junto de datos a partir de esta instrucción SQLSELECT DISTINCT Year(orderdate) Año FROM SalesOrderHeader  . Este conjunto de datos lo usare-mos como base para nuestros parámetros.

Después volveremos a la pestaña de diseño, en laesquina superior izquierda de cualquier report.Pulsando con el botón derecho del ratón nos apare-cerá un menú desplegable con varias opciones, entreellas las de crear un encabezado y pie de página (las

 veremos al menos brevemente más adelante), también

encontrar las propiedades del informe, y además está     d    o    t     N

    e    t     M    a    n     í    a

          <          <

30

dnm.servidores.sql<<

SELECT customerid,orderdate,Freight,Subtotal

FROM SalesOrderheader

 WHERE orderdate>=’20040101’

Consejo

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

Figura 5

Como dice Anthony T.Mann en su

guía sobre Reporting Services,

normalmente nuestro cliente seráincapaz de valorar la complejidad o

sencillez de construir nuestro

informe, su único patrón de medida,

siempre es el resultado, y muchas

veces ese resultado depende más de

la maquetación y el aspecto que

de los datos en sí (que por supuestotienen que ser correctos)

Page 31: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 31/60

 

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

Seleccionaremos Agregar un nuevo parámetro, comonombre elegiremos ParAño; en el mensaje elegiremos

 Año del informe; como valores disponibles, elegiremosde consulta, esto nos permitirá seleccionar como valorel conjunto de datos que acabamos de crear. Con estoacabaríamos de crear el parámetro al informe.

Está claro que aún no hemos usado el parámetropara construir la sentencia que sirve para obtener losdatos y que por tanto afecte al conjunto de datos que

hemos usado de base para diseñar el informe de ejem-plo. Para conseguir esto, bastará con cambiar la sen-tencia que nos ha servido de base para el informe, lasentencia, finalmente quedará así:

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

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

Añadiendo gráficos a los informes

Una de las cuestiones que generalmente es nece-saria, es añadir gráficos a este tipo de informes.Pensemos por ejemplo en la factura de la compañíatelefónica, todas o casi todas tienen un gráfico de evo-

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

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

dnm.servidor<<

SELECT customerid,orderdate,Freight,Subtotal

FROM SalesOrderheader

 WHERE year(orderdate)=@año

Consejo

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

[ [

Figura 6

Figura 7

Page 32: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 32/60

[ [ 

 A continuación añadiremos un nuevo conjunto dedatos. El conjunto de datos se basará en este procedi-miento almacenado, es bastante sencillo invocar y no

 vamos a entrar en más detalles, únicamente recordar

que añadiremos el enlace con el parámetro @año, dela misma forma que hemos enlazado este parámetropara el conjunto de datos base para la matriz de datos.

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

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

Añadir encabezados y pies de página

 Añadir un encabezado o un pie de página es una

tarea muy sencilla en el diseñador de informes, bas-

ta con pulsar con el botón derecho en el cuadrosuperior izquierdo de la ventana de diseño y obten-dremos las dos opciones de menú que dan acceso aencabezados y pies. Más allá de lo obvio, lo que tie-ne cierto interés es cómo usar esos encabezados y pies de página para mostrar la información real-

mente relevante para todas las páginas. General-mente es interesante conocer datos como la fecha y la hora de generación del informe, y la página y eltotal de páginas.

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

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

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

Despliegue de los informes

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

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

Si lo pensamos tranquilamente, la tarea tampo-co es especialmente complicada, no lo es debido a

que el resultado de toda nuestra tarea no deja de ser     d    o    t     N

    e    t     M    a    n     í    a

          <          <

32

dnm.servidores.sql<<

Create Proc EvolucionVentasPorMeses (@año smallint

)

as

begin

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

From SalesOrderheader

 where year(orderdate)=@año

group by month(orderdate)

order by 1

end

go

Figura 8

Consejo

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

[ [

Page 33: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 33/60

 

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

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

El que exista la propiedad OverwriteDataSources esrealmente importante, tengan en cuenta que las cade-nas de conexión no tienen por qué ser exactamente

iguales para acceder desde el entorno de desarrollo enel que estamos suministrando las credenciales con lasque hemos entrado al sistema para visualizar la infor-mación, que desde el entorno de producción. Es bas-tante normal que el entorno de desarrollo acceda aservidores de desarrollo y que el entorno productivoa servidores de producción. Dentro de la seguridadpodemos programar que se haga impersonación, es decirque el IIS deje pasar nuestras credenciales hasta el ser-

 vidor (o servidores) desde donde se extraiga la infor-mación, pero también podemos decidir usar un nom-bre de usuario y una contraseña o un usuario de

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

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

Visualización de informes

Una vez situado el informe en nuestro servidor deinformes necesitaremos que nuestras aplicaciones ten-gan la capacidad de usarlos, es decir de invocar a esosinformes para que muestren la información.

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

¿Y cómo integramos esta visualización dentro de

nuestras aplicaciones? Si las aplicaciones son Web nada

más sencillo, podemos poner hiperenlaces a las direc-

ciones URL de los informes, bien con los parámetrosen la propia URL, bien sin ellos, y ya se encarga elpropio informe de solicitarlos.

Si por el contrario estamos desarrollando aplica-ciones en ventanas tradiciones, en aplicaciones de escri-torio tampoco es que sea mucho más complicado,podemos usar una referencia web al Servicio Web queexponen Reporting Services (http://NOMBRESER-

 VER/ReportServer/ReporService.asmx), y usar losmétodos de RENDER para obtener la información derenderizado (incluso en un Stream), o podemos hacer-lo también mediante acceso URL, bastará con añadir

una referencia al navegador, esta referencia es reali-zada mediante COM Interop, a los Microsoft Internet Controls. Una vez creada la referencia solamente hay que ejecutar el método Navigate del control pasándo-le como parámetro la dirección URL en donde haya-mos desplegado el informe.

¿Y hace algo más?

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

Conclusiones

Reporting Services, como herramienta cliente ser- vidor puede ayudarnos a hacer informes profesionalesdentro del propio entorno de Visual Studio .NET, deforma ágil y sencilla, definiéndose, a pesar de su juven-tud en el mercado, como una poderosísima herramienta

de generación de informes profesionales.

dnm.servidor<<

Figura 8

Page 34: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 34/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

34

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

Esta variedad de elección tiene susentido, y radica en lo que quiere hacerel cliente a fin de cuentas con el pro-

 yecto. Pueden variar mucho los reque-rimientos entre una aplicación de fac-turación y una de logística en tiempo

real, pero lo preguntas importantes quedebemos hacernos al inicio de estosproyectos son:

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

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

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

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

• ¿El usuario recibe avisos desde elservidor?

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

para facilitar la integración.

.Net remoting nos es útil cuandodeseamos distribuir una aplicación y controlamos los puntos donde se va adistribuir, esto significa por ejemplo queel cliente nos dejará instalar .Net en susordenadores clientes y servidor. Ademásel modelo de remoting nos permitetener distinta serialización (binaria, SOAP,o extendida a partir de IFormatter ), dis-

tintos canales de envío de mensajes(TCP, HTTP, o extendido a partir de IChannel ), distintos modos de progra-mación con los objetos ( statefull or sta-teless ) y compartir por valor o por refe-rencia. Un servicio web es mucho másrestrictivo en estos últimos puntos.

 Además .Net remoting puede enviarmensajes desde el servidor hacia losclientes.

Si podemos utilizar métodos en for-ma asíncrona (incluso un servicio webnos crea los métodos BeginOperacion y EndOperacion para utilizarlo asíncro-no) ¿Porqué utilizar mensajería? Tantoremoting como web service son tecnolo-gías diseñadas para trabajar en formasíncrona, mientras que la mensajería esexactamente lo contrario, por lo tanto

 viene con características dif íci les deimplementar con los otros métodos.Por ejemplo si un servidor se cae, losmensajes se conservan en local hastaque se restablece el servidor, momen-to en que se envían los mensajes auto-

máticamente. Además es muy útil para

la integración de aplicaciones. El casode integración sería colocar un mensa-

 je en una cola de mensajes que formaparte de un flujo de trabajo de Biztalk,o sin Biztalk, sería tener a un thread quelea los mensajes que llegan y lo dese-realice.

Como en el presente artículo notocaremos el tema de mensajería, vea

en la tabla 1 que puede ilustrar simili-tudes y diferencias entre .Net Remoting  y Web Service.

Pensando con el cliente

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

60 días) se puede distribuir por medio

Distribuir aplicaciones con .NET Remoting

Por Daniel Manzini Arquitecto de Sistemas de Información

Ubica Solutions

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

    <    <

Page 35: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 35/60

 

de servicios web, pero para aquellas apli-caciones donde el tiempo lo es todo

(aplicativos para control de ambulancias,por ejemplo) hay que distribuirlo pormedio de .Net remoting.

Arquitectura de .NETRemoting

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

El proxy es un objeto que existe enlocal que realmente impersona a uno que

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

al objeto remoto. El canal representa,entonces, la conexión entre la aplicación

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

Distribución de proyectos

La finalidad es compartir objetos

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

primeros los llamaré en adelante MBV(del inglés Marshal by Value) y a losúltimos MBR (del inglés  Marshal by

 Reference).Por ejemplo tenemos el siguiente

método en la clase Empleado_ReglaNegocioen remoto:

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

Si la clase  Empleado fuera MBV,

entonces obtendríamos en local unacopia del objeto remoto —hay que teneren cuanta que este tipo de objeto se eje-cutara en local—, mientras que si fuera

 MBR tendríamos en local un puntero alobjeto remoto, que no es nada más ninada menos que el proxy. Viendo lasconsideraciones de los objetos por refe-rencia y por valor lo que puedo hacer estener las entidades de negocio (el emple-ado con su nombre, apellido, email  y otrosdatos) como MBV, mientras que las

reglas de negocio (BuscarUnEmpleado,BuscarEmpleadoporMail , etc.) lo puedotener como MBR.

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

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

to. De seguridad porque .Net se puede

dnm.platafo<<

Remoting Web Service

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

Se comparte por Valor o referencia Valor

 Modelo de estado Con o sin estado Con estadoCanales TCP, HTTP, o propios HTTP

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

Cliente Sólo .Net Cualquiera

Sistema de tipos CTS (de la plataforma) XML Schema

Tabla 1

Figura1

 public Empleado ObtenerNuevoEmpleado()

{

return new Empleado();

}

Page 36: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 36/60

 

descompilar si no tomamos los cuidadosnecesarios, y de mantenimiento, porquea la menor incidencia o cambio que ten-ga en una de las clases que esté en el pro-

 yecto compartido tendré que instalar los100 clientes. Para ello, en el proyectocompartido puedo usar clases abstractaso interfases. Las clases abstractas pue-den llegar a tener implementación, porlo que es recomendable utilizar interfa-ses que sólo se implementan en el servi-dor y como no tienen código de imple-mentación, si alguien logra descompi-larlas, pues no verá mucho. Es decir quetermino teniendo en la solución servi-dor tres proyectos, el servidor, el com-partido que sólo son interfases, y un pro-

 yecto de transferencia que son las clasesque implementan las interfases del pro-

 yecto compartido, mientras que en lasolución cliente nos queda el proyectocliente y el proyecto compartido.

Las consideraciones sobre la distri-bución no acaban aquí. Los objetos

 MBV se ejecutan en local, por lo tantonecesitan en local el código para poderfuncionar. Como los objetos que voy acompartir son entidades de negocio (a mime gusta decirles Objetos de Transferencia,

 ya que en su momento los estudié comoparte del patrón Transfer Object 1) ten-

drá propiedades para acceder a los valo-res y cambiarlos si es necesario, y algúnmétodo que puede responder usando los

 valores internos del objeto, por ejem-plo si estuviera hablando de la claseDetalle de Factura, tendría el métodoCalcularImporte que multiplicaría la pro-piedad Cantidad  x PrecioUnitario.

¿Porqué no usar DataSet o DataSet tipificados en lugar de objetos de trans-ferencia? Es una buena pregunta. Como

 ya vimos, cuando un objeto tiene quepasar por un canal se serializa al partir

 y se deserializa al llegar. Si tuviéramosque distribuir una aplicación en unaLAN, usaría serialización binaria, perocon el DataSet tengo un problema, pormás que le indique que es serializaciónbinaria se serializa como XML, siendode un tamaño 5 veces mayor. Eso metrae problemas de tiempo y de carga dered (acompaño un ejemplo con el nom-bre de serialización. Vea el material deapoyo en dotnetmania.com).

 A continuación voy a empezar a

dejar ejemplos de código, pero antes un

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

Primer ejemplo de .NETRemoting

 Ya puesto en la distribución, pasa-mos a crear dos soluciones que puedanir demostrando algunas instruccionesbásicas para por el otro lado en el ser-

 vidor abrir un puerto, con un deter-minado protocolo, para poder escucharlas peticiones del cliente y por el ladodel cliente como abrir el canal (puerto

 y protocolo) y obtener un objeto remo-to. El código lo podrán encontrar bajoel directorio EJEMPLO01.

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

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

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

La clase Empleado se compartirá porreferencia. Por tal motivo tiene queheredar directa o indirectamente de

 MarshalByRefObject . Ésta es otro moti- vo para recalcar el uso de las interfases ya que .Net acepta tener una única cla-se base.

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

 Ver fuente 2. Ahora echemos un vistazo a lo que

escribimos para lanzar la aplicación.

Por medio de la clase TcpChannel , abri-

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

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

 var una excepción.Con el canal registrado, ahora hay 

que indicarle qué clases se pueden com-partir. Tenemos que decirle el tipo de laclase, un nombre del objeto (URI), y por ultimo el tipo de objeto en remo-ting que es. En cuanto a los nombres,por defecto cuando se comparte un

objeto que utiliza el transformador bina-rio (el TCP si no le decimos lo contra-rio usa serialización binaria, mientrasque el HTTP usa serialización SOAP)se coloca como nombre el nombre dela clase seguido de un punto y la exten-

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

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

 ReadLine puesto. Ahora que ya tenemos el servidor ter-

minado, pasaremos al cliente. En este casotambién lo veremos por medio de unaaplicación de consola. Ver fuente 3.

En el cliente, llamamos al objetoremoto, para ello, en este caso, usamosel método Activator.GetObject que espe-ra por lo menos dos parámetros: el pri-mero, el tipo de objeto que se va a com-partir, como en el cliente sólo tengo lainterfaz, coloca la interfaz que espero; y el segundo, es la dirección donde está elservidor, esta dirección está formada por

 protocolo de comunición + dirección IP (onombre de maquina) + puerto que está espe-

rando petición + nombre del objeto. Para ase-     d    o    t     N

    e    t     M    a    n     í    a

          <          <

36

dnm.plataforma.net<<

namespace ICompartido

{

 public interface IAsignar

{

 void AsignarNombre(string nombre);

string ObtenerNombre ();

}

}

1 “Core J2EE Patterns” de Deepak Alur.

Page 37: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 37/60

 

dnm.platafo<<

using System;

using System.Runtime.Remoting;

using ICompartido;

namespace Compartido

{

public class Empleado:MarshalByRefObject,IAsignar

{

string _nombre;

public Empleado()

{

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

}

#region IAsignar Members

public void AsignarNombre(string nombre)

{

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

_nombre=nombre;

}

public string ObtenerNombre()

{

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

return _nombre;

}

#endregion

}

}

 using System;

 using System.Runtime.Remoting;

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

 using Compartido;

namespace Servidor{

class Servicio

{

[STAThread]

static void Main(string[] args)

{

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

TcpChannel tcpch= new TcpChannel(1234);

ChannelServices.RegisterChannel(tcpch);

RemotingConfiguration.RegisterWellKnownServiceType(

typeof(Empleado),

“Empleado.rem”,

 WellKnownObjectMode.Singleton);

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

Console.ReadLine();

}

}

}

Fuente 1

Fuente 2

Page 38: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 38/60

 

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

¿Con ganas de probarlo? Compile

todo, ejecute el servidor, luego el clien-te, y podrá ver como en el servidor soli-citó el cliente.

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

Tipos de objetos en .NetRemoting

Los objetos MBR se pueden activarde tres maneras: SingleCall , Singleton,

 Activado desde el Cliente. Igualmente pode-mos decir que son dos divisiones genéri-

cas: aquella donde el servidor administra

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

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

Para ver un ejemplo, sólo cambiare-

mos en el ejemplo anterior, en el servi-

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

El Singleton es una sola instancia delobjeto remoto para todos los procesosclientes que la llamen. Es muy útil paracompartir información entre clientes.El tiempo de vida por defecto es de 5minutos. Para ver cómo se comportan,cambiaremos el servidor otra vez aSingleton  y ejecutaremos dos vecesseguidas el cliente. La primera vez queejecutamos el cliente, la variable nom-bre estaba vacía y le asignamos el nom-bre dotNetMania, la segunda vez le vol-

 vimos a asignar el mismo valor, senci-llamente porque no se destruyó el obje-to, mantenía el mismo valor y lo com-partía con el nuevo proceso cliente. Lospasos quedan reflejados en la consoladel servidor.

Por ultimo tenemos los objetos quese pueden activar del lado del cliente. Alactivarse del lado del cliente puedo hacerun new, lo cual se puede considerar una

 ventaja porque el código queda muchomas fácil de leer, pero sólo podemos usar

el constructor por defecto, si quisiéra-mos otros constructores deberíamoscompartir la implementación. El pro-blema más importante que tienen es laescalabilidad, ya que como la activaciónse maneja desde el cliente, varios clien-tes podrían crear instancias iguales; estocon un tipo de objeto singleton sería unasola instancia, y lógicamente consumiríamenos recursos del servidor.

En el caso que no quisiéramos com-partir las interfases, podemos utilizaruna herramienta que se llama SoapSuds .La herramienta SoapSuds no extrae lainformación sobre distintos construc-tores, sólo el constructor por defecto.

 Algo importante en torno al SoapSuds ,si tienes la versión 1.1 del Framework,

 Microsoft te recomienda que esperes aque exista un service pack para que fun-cione correctamente o que contactes aun número de teléfono de soporte. Paramas información ver (http://sup-port.microsoft.com/default.aspx?scid=k b;en-us;823445). Cabe aclarar que con

la versión 1.0 no tenía problemas.     d    o    t     N

    e    t     M    a    n     í    a

          <          <

38

dnm.plataforma.net<<

 using System;

 using System.Runtime.Remoting;

 using System.Runtime.Remoting.Channels;

 using System.Runtime.Remoting.Channels.Tcp;

 using ICompartido;

namespace Cliente{

class ClienteInicio

{

[STAThread]

static void Main(string[] args)

{

TcpChannel ch = new TcpChannel();

ChannelServices.RegisterChannel(ch);

IAsignar obj = (IAsignar) Activator.GetObject(

typeof(IAsignar),

“tcp://127.0.0.1:1234/Empleado.rem”);

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

obj.AsignarNombre(“dotNetMania”);

string retorno = obj.ObtenerNombre();

}

}

}

Fuente 3

Nos cuestionaremos cada

decisión de diseño de

aplicaciones distribuidas yveremos como podemos

resolverlas con .Net

Remoting aplicando las

mejores prácticas

Page 39: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 39/60

 

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

mos el tipo de objeto y la dirección don-de está el servidor como parámetros.Pero, comparto implementación y 

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

Una buena practica en .NetRemoting

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

Empezaremos por la interfaz:

Como se ve, sobrecargo el métodoCrearEmpleadode igual manera que estásobrecargado el constructor de la clase

 Empleado, luego en el proyecto compar-tido agrego la clase  Factoria e imple-mento la interfaz IFactoria. Ver fuente 4.

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

 MarshalByRefObject .En la aplicación de consola que ini-

cia el servidor, en lugar de exponer la cla-

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

En el cliente, los cambios quedan dela siguiente forma:

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

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

podríamos usar el patrón Facade3, don-

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

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

todos los clientes? ¿Qué hago si en elparque de ordenadores son todos

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

mo puedo aplicar seguridad?)

dnm.platafo<<

namespace Compartido

{

 public class Factoria:MarshalByRefObject, IFactoria

{

 public Factoria()

{

}

#region Factoria Members

 public IAsignar CrearEmpleado(string nombre)

{

return new Empleado(nombre);

}

 public IAsignar CrearEmpleado()

{

return new Empleado();

}

#endregion

}

}

Fuente 4

 public interface IFactoria

{

IAsignar CrearEmpleado();

IAsignar CrearEmpleado(string nom-

bre)

}

RemotingConfiguration.RegisterWellKnownServiceType(

typeof(Factoria),

“Factoria.rem”,

 WellKnownObjectMode.Singleton);

IFactoria factoria = (IFactoria) Activator.GetObject(

typeof(IFactoria),”tcp://127.0.0.1:1234/Factoria.rem”);

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

IAsignar obj = factoria.CrearEmpleado(“dotNetMania”);

string retorno = obj.ObtenerNombre();

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

Page 40: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 40/60

 

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

rada hace ahora casi una década, contaba con un evo-lucionado compilador de Pascal orientado a objetos,conocido como Object Pascal, que generaba códigode 16 bits para el sistema operativo Windows. ConDelphi 2 apareció el compilador que producía códi-go de 32 bits para la plataforma Win32, nombre con

el que ha venido denominándose genéricamente a laplataforma de ejecución que representan todas las ver-siones de Windows de 32 bits. Aunque con ciertas

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

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

ble la reutilización del código entre distintos lengua-

 jes, así como la interoperabilidad entre sus clases. Loslenguajes .NET pueden contar con características que,a pesar de estar presentes en el sistema común de tiposo CTS, no formen parte de la CLS, que podríamos

 ver como un subconjunto de aquél. El cumplimientocon dicho subconjunto, sin embargo, es inevitable.

En la CLS se detallan ciertas construcciones quedeben ser contemplados en cualquier lenguaje, algu-nas de las cuales no existían en el lenguaje Object

Pascal como lo conocíamos hasta Delphi 7 o, de exis-tir, no se comportaban exactamente como se indicaen dicha especificación. Por ello ha sido necesariointroducir algunos cambios, agregando nuevas pala-bras clave, eliminando ciertos tipos y alterando otrospara poner Object Pascal al mismo nivel, sino supe-rior, que los demás lenguajes .NET.

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

Módulos y ámbitos con nombre

En la plataforma .NET las definiciones de tipos sealmacenan jerárquicamente en ámbitos con nombre, onamespaces , tales como System.Windows.Forms o Microsoft.Windows. Las aplicaciones pueden definirsus propios ámbitos con nombre, a fin de distribuir elcódigo, así como hacer referencia a otros para poderusar los tipos definidos en ellos. El ámbito con nom-bre, sin embargo, es un concepto inexistente en Object

Pascal… hasta ahora.     d    o    t     N

    e    t     M    a    n     í    a

          <          <

40

Cambios sufridos por Object Pascalen Delphi 8 .NET

Por Francisco CharteTorre de Babel 

fcharte.com

    <    <

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

A diferencia de otros lenguajes .NET,

la actual versión de Object Pascal, en Delphi 8,

no contempla la posibilidad de crear alias

para los ámbitos con nombre

Page 41: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 41/60

 

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

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

 program dotNetMania.Ejemplos.Programa1;

begin

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

El cuadro de diálogo de opcionesde proyecto, en Delphi 8, cuenta conun apartado en el que puede indicar-

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

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

 A la hora de hacer referencia a undeterminado tipo, por ejemplo el nom-bre de una clase, una estructura o enu-meración, pueden emplearse referen-cias completas, precediendo el identifi-cador de tipo del nombre completo delámbito, o bien referencias simples siem-

pre que éstas no entren en conflicto conidentificadores locales. Tras añadir laanterior cláusula uses a un módulo, porejemplo, los identificadores Form  y System.Windows.Forms.Form  serí-an equivalentes, haciendo referencia enambos casos a la clase Form del ámbi-to System.Windows.Forms.

Visibilidad de los miembrosde un tipo

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

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

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

ésta se haya definido. Podríamos

decir que es una interpretación

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

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

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

sivamente.

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

 Teniendo en cuenta estos nuevos

modificadores, ahora la definición de

dnm.lenguajes<<

Las estructuras de datos

con métodos y propiedades

no deben ser vistas

como sustitutas de clases,

su aplicación se reduce

a tipos más o menos

simples aunque con alguna

funcionalidad

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

 uses

System.Windows.Form, System.Drawing, System.Net,

dotNetMania.Ejemplos.Programa1;

Page 42: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 42/60

 

una clase podría tener la estructurasiguiente:

Estructuras de datosmás funcionales

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

¿Cuál es, entonces, la diferenciaentre una estructura y una clase?Básicamente que la primera es un tipo

por valor, que se aloja en la pila, mien-

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

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

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

TPunto = record

strict private

x, y: Integer;

 public

constructor Create(FX, FY: Integer);

 procedure Dibuja;

end;

 A pesar de contar con un construc-tor, las variables de tipo TPunto se alo-

 jarían como valores en la pila, como unnúmero o un carácter, no como un obje-to de una clase.

Métodos y clases de uso final

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

do en un método de uso final. Esa posi-

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

ClaseBase = class

 public

 procedure Metodo: virtual;end;

ClaseDerivada = class(ClaseBase)

 public

// marcamos el método como de uso final

 procedure Metodo; override; final;

end;

Este mismo concepto puede apli-carse también a la definición de una cla-se, convirtiéndola en clase de uso final,es decir, una clase de la que no podríanderivarse otras. Si, por ejemplo, defini-

mos una clase especializada en una tareamuy específica, no tendría sentido per-mitir la creación de otras a partir de ella.En un caso así su cabecera incluiría lapalabra sealed. Ver figura 3.

ClaseEspecializada = class sealed

Una clase de uso final es lo inversode una clase abstracta, pensada exclusi-

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

ClaseAbstracta = class abstract

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

42

dnm.lenguajes.net<<

 MiClase = class

strict private

 MiembroPrivado: string;

strict protected

 MiembroProtegido: string;

 private

 MiembroDeEnsamblado: string;

 protected

 MiembroProtegidoDeEnsamblado: string;

 public

 MiembroPublico: string;

end;

Figura 2.El Exploradorde código contempla los nuevos

modificadores de visibilidad de

Object Pascal

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

clase de uso final

Page 43: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 43/60

 

Miembros de clase

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

Object Pascal cuenta con la nociónde métodos de clase, pero su imple-

mentación al nivel del compilador es dis-tinta de los miembros estáticos de unaclase .NET. No existía, hasta el momen-to, la posibilidad de definir variables y propiedades de clase. En esta nueva ver-sión los métodos de clase .NET se deno-minan métodos estáticos de clase, defi-niéndose mediante la adición de la pala-bra clave static al final. Las variables declase se definen en apartados class var ,equivalentes a var pero cuyos miembrospertenecerán a la clase, y las propieda-

des de clase simplemente anteponiendola palabra class, como puede verse en elsiguiente fragmento de código.

Esta clase, de uso final, tiene una varia-ble de clase, un método estático de clase

 y una propiedad de clase, de tal maneraque podría utilizarse completamente usan-do la sintaxis  MiClase.Metodo o MiClase.Propiedad, sin tener que crearobjeto alguno.

Otras novedades y cambios

Otra de las novedades que incorpo-

ra la nueva versión del compilador de

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

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

sustituye los apartados read y  write, uti-lizados hasta ahora, por add y remove,

 y la asignación directa de un método aun evento por los procedimientosInclude y Exclude.

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

siguiente fragmento de código:

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

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

patibles con la plataforma .NET, entrelos cuales destacaríamos el operador @,la directiva absolute, los tipos Pointer 

 y PChar , el tipo Real48, los archivos tra-dicionales de Pascal file of tipo o los pro-cedimientos de gestión de memoriacomo GetMem  y FreeMem . Todosellos tienen un tipo o mecanismo equi-

 valente o similar en la plataforma .NET.Como puede apreciarse, los cambios

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

 vadas en Object Pascal.

dnm.lenguajes<<

 MiClase = class sealed

 private

class var

 Variable: Integer; // una variable de clase

 public

class procedure Metodo; static; // Método estático de clase

// Propiedad de clase

class property Propiedad: Integer read Variable write Variable;

end;

// Clase TPunto con algunos operadores sobrecargados

TPunto = class

strict private

FX, FY: Integer; public

// Operador +

class operator Add(A,B: TPunto): TPunto;

// Operador -

class operator Subtract(A,B: TPunto): TPunto;

// Operador string()

class operator Implicit(A: TPunto): string;

end;

// Implementación del operador de suma

class operator TPunto.Add(A,B: TPunto): TPunto;

begin

// Creamos un nuevo objeto con coordenadas

// suma de los dos puntos

result := TPunto.Create(A.X+B.X,A.Y+B.Y);

end;

Page 44: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 44/60

 

de utilizar la misma dirección IPentre diferentes sitios Web. Esta situación en la que

 varios sitios Web comparten una misma dirección IPse denomina multihosting (hospedaje múltiple o ser-

 vidor multisitio).Con un solo equipo y una instalación del servidor

 Web IIS 6.0 ( Internet Information Services ) puede dar

la impresión de que disponemos de múltiples equi-pos, con un sitio Web distinto en cada máquina, cuan-do en realidad pueden estar en la misma.

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

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

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

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

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

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

• Un encabezado de host.

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

Cuando un cliente solicita una página a través delnavegador Web la cabecera de petición HTTP corres-pondiente contendrá, además de la dirección IP de lamáquina, el nombre de dominio que aparece en laURL. Esa información es detectada por el servidor

 Web e interpretada de forma conveniente para deter-minar qué sitio Web ha demandado el cliente, de estaforma se podrá diferenciar los sitios Web que tienenasignados una misma dirección IP.

Se debe recordar que para poder utilizar un nom-

bre de dominio lo debemos registrar en el sistema de     d    o    t     N

    e    t     M    a    n     í    a

          <          <

44

Configuración de varios sitios Web

en IIS 6.0 con una misma dirección IP

Por Ángel EstebanSoftware Architect

Alhambra-Eidos

En el presente artículo se va a comentar cómo configurar el servidor Web que nos ofreceWindows Server 2003 para disponer de múltiples sitios Web con una misma dirección IP.Esto nos va a suponer un ahorro considerable de direcciones IP. El mecanismo que nos va

a permitir reutilizar de esta manera las direcciones IP se denomina encabezado de host, yes el concepto que pasamos a explicar a continuación.

Una vez que hemos utilizado

el encabezado de host dentro de IIS

ya no podemos utilizar la dirección

IP del servidor Web para acceder

al sitio Web predeterminado de

dicho servidor

    <    <Existe la posibilidad

Page 45: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 45/60

 

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

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

Los navegadores más antiguos nosoportan los encabezados de host, porlo tanto, en el caso de que varios sitios

 Web compartan la misma dirección IP,

el servidor Web no podrá determinar aqué sitio Web quiere acceder el usua-rio, ya que no ha enviado la informa-ción que identifica el nombre del sitio

 Web (nombre de dominio) al que sequiere acceder. En estos casos lo reco-mendable es actualizar la versión delnavegador Web.

Utilidad del encabezadode host

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

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

De esta forma dos sitios Web pue-den tener el mismo encabezado de host

 y la misma dirección IP pero distintonúmero de puerto. Si asignamos a unsitio Web un número de puerto distin-to del estándar (el puerto 80), nuestrosclientes deberán escribir el número depuerto en la URL.

De las múltiples combinaciones quepueden surgir a la hora de albergar dis-tintos sitios Web, la más interesantepuede ser la de sitios Web que compar-

tan la misma dirección IP y el mismo

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

Configurando el sitio Web

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

 Al diálogo de identificación avanza-da de sitio Web llegamos desde la hojade propiedades del sitio Web pulsandoel botón “Avanzadas”. En el diálogo queaparece en la siguiente figura se nos per-

mite configurar el encabezado de host,así como la dirección IP y el número depuerto del sitio Web.

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

 También es posible indicar el númerode puerto SSL en el caso que se utilicenconexiones seguras.

Si se modifica la configuración deun sitio Web y entra en conflicto conotro existente, es decir no se diferencian

ni en el número de puerto ni en la direc-

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

El encabezado de host también lopodemos indicar a la hora de crear unnuevo sitio Web. En el segundo paso

del asistente de creación del sitio Webaparece una caja de texto en la que pode-mos especificar este dato, tal como sepuede apreciar en la figura. Por defec-to el encabezado de host aparece enblanco.

Una vez que hemos utilizado elencabezado de host dentro de IIS ya nopodemos utilizar la dirección IP del ser-

 vidor Web para acceder al sitio Webpredeterminado de dicho servidor. Siqueremos hacer esto debemos asignarla dirección IP del servidor a un sitio

 Web determinado como si fuera unencabezado de host, es decir, el enca-bezado de host sería la propia direcciónIP y no un nombre de dominio.

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

Internet Information Services.

dnm.servidor<<

Figura1. Identificación avanzadade sitio Web

Figura 3.Asistente para la creaciónde un sitio Web

Figura 2.Especificando el encabezadode host

Page 46: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 46/60

 

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

Estas particiones tienen la ventaja de que sus datosse replican con otros controladores de dominio delbosque para proporcionar redundancia y tolerancia a

errores. ¡Sólo con los controladores de dominio espe-cificados! Con lo cual, replicaremos en los controla-dores que nos resulten localmente más útiles.

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

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

• Nuevo árbol de bosque

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

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

KCC (Generador y Comprobador de Topología de Réplica) mantiene automáticamente la topología dereplicación de todas las particiones y mantiene la mis-

ma programación de réplica que las particiones dedominio. También está la ventaja de que los objetos alma-

cenados en una partición de directorio de aplicacio-nes no se replican al Catálogo Global . El motivo es evi-tar que las consultas LDAP a distintos Catálogos Globales no devuelvan datos incoherentes.

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

1. Abrimos Símbolo de Sistema y ejecutamos ntdsutil 2. Escribimos domain management 

3. Desde domain management , escribimos connection4. Desde connection, escribimos connect to server nom-

breservidor 5. Desde connection, escribimos quit 6. Desde domain management , podemos hacer lo

siguiente:

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

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

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

46

Particiones de Directorio de Aplicaciones

Por Pedro GómezAlhambra-Eidos

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

    <    <Las aplicaciones

Estas particiones tienen la ventaja de que

sus datos se replican con otros controladores

de dominio del bosque para proporcionar

redundancia y tolerancia a errores

Page 47: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 47/60

 

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

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

Los pasos a seguir son los siguientes:

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

2. Escribimos domain management 3. domain management , escribimos

connection4. Desde connection, escribimos con-

nect to server nombreservidor 5. Desde connection, escribimos quit 6. Desde domain mangement pode-

mos hacer lo siguiente:

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

aplicaciones controladordedominio

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

Para añadir o eliminar una réplica,podemos utilizar también el comando

null . Debemos tener cuidado al elimi-

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

Mostrar la información

sobre una Partición delDirectorio deAplicaciones

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

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

mos connection4. Desde connection, escribimos connect 

to server nombreservidor 5. Desde connection, escribimos quit 6. Desde domain mangement escribimos

list 

dnm.servidores.win<<

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

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

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

Figura 3

Otra ventaja es que las

aplicaciones y los serviciosque utilizan LDAP

podrán seguir utilizando

este protocolo para

almacenar datos y acceder

a los mismos.

Page 48: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 48/60

 

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

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

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

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

tindirectorypartitions /Domain/Forest/AllDomains 

nombreservidor es el nombre DNS del ServidorDNS y es obligatorio.

createbuiltindirectorypartitions  Crea una particiónde directorio de aplicaciones predeterminada.

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

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

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

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

dnm.servidores.windows<<

Figura 4

Figura 5

También está la ventaja

de que los objetos almacenados

en una partición de directoriode aplicaciones no se replican

al Catálogo Global

noticias.noticias.noticias.noticias

Se libera la Beta 1.0de SharpDevelop:Fidalgo

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

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

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

Se libera la Beta 1.0del Proyecto Mono

 Tras la adquisición de Novell, Mono el proyecto del Miguel de Icaza, una imentación open source del framework .NET para Linux, Unix y Wind

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

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

Page 49: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 49/60

Page 50: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 50/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

50

dnm.opensource.net<<

lphant, primer peer to peer bajo .NET

lo hemos desarrollado ungrupo de programadores que inicialmentetrabajábamos con C++ y que colaborába-mos en el desarrollo de eMule. Las motiva-

ciones iniciales fueron aprender C#, elentorno .NET y comprobar la potencia de.NET en una aplicación exigente en cuan-to a comunicaciones, multihilo, CPU, esta-bilidad y manejo de memoria.Una aplicación p2p para la red eDonkey mane-

 ja cientos de conexiones simultáneas, tantoentrantes como salientes y no sólo se limita a

 TCP sino que usa intensivamente UDP. Todasestas conexiones tienen que sincronizarse paraacceder a ficheros o a listas, por lo que las capa-cidades multihilo hay que explotarlas. Además,el programa debe de permanecer muchos díassin reiniciarse por lo que se tiene que ser extre-madamente cuidadoso con la estabilidad y elconsumo de memoria. El uso de la CPU tam-bién es importante ya que debe de funcionaren background mientras el usuario hace un usohabitual del resto de aplicaciones, sin notar undescenso en su rendimiento (continuamentemientras el ordenador se dedica a otras tareas(por ejemplo reproducir video con buena cali-dad)). Por otro lado debe tener un interfaz deusuario fácil de usar y un aspecto que no sepuede alcanzar con los controles estándar.

 Antes de aparecer la plataforma .NET, paradesarrollar una aplicación con estos reque-

rimientos la opción más lógica era C++.Pero con la llegada de .NET nos parecióbuena idea comprobar si puede hacer som-bra a C++ en su propio terreno. En el peorde los casos aprenderíamos C# y sabríamoscuales son sus puntos flacos.Después de varios meses de desarrollo (alser GNU, en nuestros ratos libres), de sacarmás de 15 versiones, de contar con más de3.000 usuarios simultáneos y 70.000 des-cargas del programa, hemos comprobadoque .NET es perfectamente válido para estetipo de desarrollos. Incluso lphant supera enalgunos aspectos a programas escritos enC++ más trabajados como el eMule.

 Teniendo en cuenta que la gran mayoría deusuarios de este tipo de aplicaciones no tie-ne instalado .NET Framework, este tipo deproyectos supone una justificación para que

el .NET Framework se instale en una grancantidad de ordenadores domésticos. Pornuestra experiencia, la necesidad de instalar.NET Framework no está siendo un incon-

 veniente serio una vez pasada una fase de reti-cencia inicial dónde tampoco se sabía cómofuncionaba el programa.

 A lo largo del proyecto hemos disfrutado delas ventajas que supone emplear .NET.Particularmente hemos comprobado comono nos hemos tenido que preocupar de losdetalles de la implementación y nos hemospodido centrar en la resolución del problema.Otra de las virtudes a destacar ha sido el exce-lente control de excepciones que lleva .NET,por lo que es bastante fácil resolver los bugsque se van encontrando. Además cuando aalgún un usuario le salta una excepción nosinforma con el volcado de pila si necesidad decompilar versiones de debug especiales.Los principales problemas encontradosdurante el desarrollo de este proyecto hansido los relacionados con el interfaz gráfi-co (donde, por falta de funciones de .NETse ha tenido que usar la API de Windows)

 y el manejo de memoria (donde pagamosnuestra falta de experiencia para trabajar

con memoria manejada).De cara a los desarrolladores interesados enaprender .NET, el código fuente de lphant puede ser muy didáctico ya que cubremuchos e importantes aspectos de la pro-gramación en .NET:Comunicaciones: lphant exprime al máxi-mo la capacidad de comunicaciones de.NET, soportando cientos de conexionessimultáneas tanto TCP como UDP Multithreading : lphant maneja una canti-dad de threads muy alta que deben de sersincronizados para acceder a ficheros comu-nes o a listas ( Hashtables , ArrayList ,…). Modularidad: lphant utiliza la facilidad que

proporciona .NET para hacer aplicacionesmodulares mediante namespaces y proyec-tos separados.Servicios web. El núcleo de lphant es autó-

nomo e independiente del interfaz, de estamanera el interfaz puede funcionar de for-ma remota, ya que el núcleo expone susobjetos como servicios web que el interfazconsume.Creación de controles y WinForms. Parael interfaz gráfico de lphant se han creadodiversos controles, especialmente comple-

 jos por la interacción con la API WIN32son los controles derivados de ListView cre-ados. Por otro lado lphant dispone de unmotor de skins para los diversos controles. XML: lphant demuestra cómo usar archi- vos XML ya que los usa para la mayoría dearchivos que necesita, sólo en aquellos casosen los que necesita ser compatible con eMuleo eDonkey no usa XML. Multilenguaje: lphant tiene un motor mul-tilenguaje propio basado en XMLPortabilidad: El núcleo de lphant se com-pila perfectamente con MONO.Lamentablemente al no estar totalmentesoportados los WinForms en MONO nopuede decirse lo mismo del interfaz.lphant destaca por tener un núcleo al que seaccede tanto en local como por accesoremoto mediante SOAP, completamente

separado del interfaz gráfico. El núcleo delphant es una librería que expone todas lasfuncionalidades de la red eDonkey, por loque cualquiera puede integrar la red eDonkeyen sus aplicaciones con muy poco esfuerzo.Invitamos a los desarrolladores interesadosen el proyecto a colaborar o a aprender conun programa muy divertido de desarrollar.En el foro de desarrollo de la página webde lphant damos soporte a la gente intere-sada en el código y que desea saber cómofunciona.

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

    <    <

 

Este proyecto

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

y eDonkey (pudiendo incluso continuar descargas iniciadas con estos programas).

por Juanjo Ar

Page 51: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 51/60

 

dnm.comunidad.net<<

dnm.comunidad.ne

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

 para el Desarrollo de Software

formativos paradesarrolladores tienen tanta soleracomo el Master Eidos en Desarrollo deSoftware. En el curso 2004/2005 entraen su undécima convocatoria. Son onceaños formando a lo más granado de losprogramadores de nuestro país y deLatinoamérica. Fundamentalmentecentrado en las tecnologías de desarro-

llo de Microsoft, viene haciendo de laprogramación en .Net su asunto tron-cal desde hace ya tres años, de hecho laaparición de la novena edición (curso2002/2003) prácticamente coincidiócon el lanzamiento al mercado de VisualStudio .Net.

Para que nos hablen de la versiónprevista para el curso 2004/2005 noshemos reunido con algunas de las per-sonas que en Alhambra-Eidos mantie-nen algún tipo de responsabilidad sobre

dicho curso, y que además son colabo-radores habituales de este medio: Luis Miguel Blanco: Coordinador y autorde una buena parte de los contenidosdel Master, así como tutor de la versión

 virtual. Pepe Hevia: Instructor de la versión presencial y creador destacadodel material didáctico. Marino Posadas:Coordinador de muchas de las once ver-siones realizadas hasta ahora, instructoren ambas modalidades, autor de docu-mentación y Microsoft MVP en 2003 y 2004 (.Net Framework y Visual C#, res-pectivamente). Y por último, AntonioQuirós, que realizó el primer diseño del

 Master allá por el año 93 y hoy conti-nua ayudando en la adecuación progra-mática que cada año se realiza.

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

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

Nuestro ámbito de especialización,

como muchos recordarán, era Clipper.Impartíamos seminarios, cursos, confe-

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

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

convocatoria. Luego vino Windows y el

cliente/servidor. Co-mo una consecuencianatural derivamos ha-cia Visual Basic y SQLServer. Más tarde fuela programación web,luego XML y los ser-

 vicios web. Este año en Alhambra-Eidos nos

hemos decantado porla programación paradispositivos móviles.En fin que cada con-

 vocatoria tiene su leit motiv  y a poco queanalicemos los tema-rios de las once con-

 vocatorias hasta ahorarealizadas caeremos en

que estamos analizando la historia tec-nológica del desarrollo de software en

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

primera es la que se produce desde 1993a 1997 en que sólo se realizan versionespresenciales y otra segunda que acaecedesde 1998 donde ponemos en circula-ción las primeras ediciones virtuales y 

mixtas. En los primeros años los temas

    <    <Pocos programas

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

Tampoco podíamos permanecer ajenos a la aparición

de SQL Server Reporting Services. Consideramos

que esta es una de las más importantes noticiaspara el mundo del desarrollo y, por tanto,

teníamos que darle cabida en nuestros programas

Page 52: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 52/60

 

tecnológicos y académicos primaban

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

Respecto al alumnado también apa-recen cambios históricos curiosos. Losprimeros asistentes procedían casi exclu-

sivamente del mundo profesional. Su afánera reciclarse tecnológicamente, estar ala última, poder llegar a tecnologías quesus empresas les demandaban. Más tardese realizó la incorporación del mundo uni-

 versitario. Algunos alumnos venían a rea-lizar el Master como un estudio de post-grado que les permitiera ganar puntoscurriculares, ya que nuestro productosiempre ha gozado de un amplio presti-gio empresarial. Por último, hay que rese-ñar que tras la adecuación realizada el añopasado para adecuar los contenidos del

 Master para que pudieran servir de baseen la obtención de la certificación

 MCAD, el alumno que busca la obten-ción de dicha certificación se ha incor-porado también a nuestra peculiar fauna.

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

 Marino Posadas: Creo que existen varios valores añadidos. Por un lado, laexistencia de manuales on-line que per-miten un primer acercamiento a una tec-

nología e incluso decidir si queremos o

no profundizar en un tipo de conoci-mientos. Por otro, los cursos tutorizadossuponen que no solo vas a seguir unmanual fijo y previsto para tu progreso,sino que si -como muchas veces pasa- teatascas, un profesor asociado a cadamódulo puede darte respuestas tanto enlínea como en diferido. Y, por supuesto,no nos olvidemos de la revista Algoritmo, donde se publican artículosde calidad sobre novedades tecnológi-cas, que suponen una avanzadilla y unanota de atención sobre posibles opcio-nes a seguir en un futuro cercano. Soncasi 10 años de publicaciones desde que

 Algoritmo estaba en papel, y todavía sela sigue considerando un producto refe-rente para miles y miles de desarrolla-dores y profesionales de las TIC.

Finalmente, si además queremos algúnmanual a bajo precio para leer en elmetro, La Librería Digital completa per-fectamente este panorama.

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

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

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

Por supuesto que esta situación teobliga a tener que trabajar más, ya quepara gran parte de los procesos a desa-rrollar, léase elaboración y organizaciónde los contenidos, sistemas de evalua-ción, establecimiento de relaciones conel alumnado, etc., debes permanecer enconstante innovación, puesto que no hay 

nadie todavía que haya realizado nadasimilar. Sin embargo, y volviendo alpunto anterior, abonas el terreno paralos demás y eso supone un elementoposicionador muy importante en el mer-cado de acciones formativas eLearning.

Centrándome ya en la parte de ele-

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

52

dnm.comunidad.net<<

Marino Posadas, Software Architect

de Alhambra-Eidos

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

En este momento se alternan las tres mecánicas

de organización y podemos decir con orgullo

que todos los años liberamos al mercado tanto titulados

que han hecho el Master en su versión presencial

como en la virtual o mixta

Page 53: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 53/60

 

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

 video, diapositivas, texto, etc.dnm: El año pasado se adecuó vues-

tro Master al temario necesario para pre-

parar la certificación MCAD, tan valo-rada por los programadores. Esta pue-de realizarse a través de este plan for-mativo o a través de los cursos oficialesde Microsoft. ¿Qué diferencia existe?

 Antonio Quirós : En Alhambra-Eidos preparamos a los alumnos porambas técnicas. Hay que recordar queen España somos el centro de referen-cia de Microsoft para formar a desarro-lladores y el que más certificados

 MCAD entrega cada año. Una y otra

son técnicas adecuadas y con las doslogramos resultados válidos. La dife-rencia está en que el Master aporta más

 valor añadido, es decir, tiene más cosas,enseña más la vertiente práctica. Si ade-más de aprobar el MCAD quieres pro-fundizar en las técnicas de desarrollo y en las buenas prácticas a seguir tu pro-grama es el Master. Si lo que quieres escertificarte y, además te corre prisahacerlo y no puedes dedicar un año aca-démico, tu programa debe estar basadoen los cursos oficiales de Microsoft.

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

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

 virtual y mixta, citaría lo que ahora se

llaman “espacios de colaboración”,

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

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

 Master?Pepe Hevia: Ante todo, la ilusión

de poder proporcionar al usuario delmódulo todos los conocimientos posi-bles, de cara a facilitar que la asimila-ción de todos los conceptos que se tra-tan en el curso le resulte una expe-riencia asequible y agradable. Para ellose introducen también otro tipo de

nociones ajenas al master, pero que encierto modo puedan verse relacionadasindirectamente con él -lo cuál implicaconocer, estudiar, investigar todos esoselementos y saber relacionarlos-. Deesta manera el alumno puede entendertoda la temática, dentro del contextoen que se va a aplicar y siempre desdela perspectiva de “romper los mitos”.

 Mi misión radica en hacerlo tan prác-tico y claro como sea posible -pormucho trabajo que esto lleve- y tanameno como me gustaría que me con-taran las cosas: con humor, ejemplosde la vida real, etc. Todo ello sin per-der de vista el rigor, la seriedad y la res-ponsabilidad que todo este proyectoconlleva, por supuesto.

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

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

do, es decir que estamos ante una ver-

sión, como se dice literariamente, corre- gida y aumentada. A nuestro programadel año pasado, ya fuertemente actuali-zado y estructurado a través de la nociónde servicios web, le hemos añadido

 varias cosas. En primer lugar, un módu-lo dedicado a introducir en el ámbito de

la ingeniería del software. El perfil deldesarrollador cada vez es más alto y, portanto, queremos huir de un programasolo tecnológico. Tenemos que hablartambién de arquitectura, de metodolo-gías, de gestión de proyectos, de asegu-ramiento de la calidad, etc. Asimismo,hemos introducido un módulo de pro-gramación de dispositivos móviles con

 Visual Studio .Net. Consideramos queeste es el entorno hacia el que hoy todoslos desarrolladores deben girar la vista,

 ya que si aún no han tenido la oportu-nidad de hacer alguna aplicación al res-pecto, les faltan décimas de segundospara que sus jefes les hagan caer elcorrespondiente marrón. Así, pues, des-de la óptica de siempre, es decir la arqui-tectura multicapa ahora cubrimos lacapa de interfaz con tres niveles dife-rentes: Windows, Web y dispositivos demovilidad. Tampoco podíamos perma-necer ajenos a la aparición de SQLServer Reporting Services. Conside-ramos que esta es una de las más impor-tantes noticias para el mundo del desa-rrollo y, por tanto, teníamos que darlecabida en nuestros programas. Parahacerlo hemos ampliado nuestro cursode SQL Server 2000 a fin de introducirdicha tecnología. Por último, y aunqueeso es menos interesante para los pro-gramadores que trabajan con herra-mientas Microsoft, hemos actualizadotambién los contenidos de los módulosde Java para dar cabida a las novedadesque en dicho mundo se han producido

en los últimos tiempos.

dnm.comunid<<

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

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

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

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

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

Page 54: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 54/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

54

    <    <

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

Daniel Appleman

Editorial: A!PressPáginas: 560, Rústica

Publicado: Junio 2001ISBN: 1893115976

Hoy nos centramos en dos autores bien conocidos por los programadores. Appleman ,antiguo miembro del equipo de desarrollo de Visual Basic 1.0, nos introdujo al API de

 Windows hace varios años en una obra clásica. Ahora, vuelve a la carga con VB.NETdonde más que una revisión del producto, nos muestra su propia visión del mismo.

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

 y el lenguaje, y puede apreciarse mejor su perspicacia.

Code:The Hidden Language of Computer Hardware and Software

Charles Petzold 

Editorial: Microsoft PressPag.: 393, Rústica

 Año: Noviembre 1999ISBN: 073560505X

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

 y “Programación en Windows 95”, publicó hace 3 años para recoger toda una vida deexperiencia docente y divulgadora de estos mundos.

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

dnm.biblioteca.net<<

dnm.biblioteca.n

Page 55: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 55/60

 

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

 Actualmente Borland no sólo ofre-ce herramientas de desarrollo, como

siempre ha hecho, sino que su estrate-gia actual se centra en ofrecer una solu-ción completa de desarrollo de ciclo de

 vida de las aplicaciones (ALM), tantopara .NET como para J2EE. Esto quie-re decir que el foco para Borland en estosmomentos es el equipo de desarrollo alcompleto que necesitan herramientas degestión de requisitos, análisis y diseño,codificación, pruebas, despliegue y ges-tión de cambios y configuración.

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

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

 ximos meses.¿Qué es eso sobre Borland y la

“Suiza del Software”?

Es un ejemplomuy explicito queusamos cuando que-remos explicar laneutralidad de Bor-land que ofrece solu-ciones en todas las

plataformas y len-guajes.En la actuali-

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

Borland es consciente de ello y poreso proporciona la misma solución paraambas plataformas. Pero además, tene-mos un producto, Borland Janeva, queofrece interoperabilidad entre .NET y 

 J2EE a través de RMI sobre IIOP. Coneste producto es posible conectar com-ponentes .NET con servidores de apli-caciones J2EE sin necesidad de utilizar

 Web Services, lo que en ciertos casossupone un nivel mayor de seguridad.

Respecto a la construcción mismade las aplicaciones, me consta queBorland ha publicado herramientas que

pretenden cubrir el ciclo completo de

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

Como he comentado anteriormen-te la estrategia de Borland es precisa-mente ofrecer una solución que cubrael ciclo completo de desarrollo de apli-caciones, tanto para J2EE como para.NET. Las dos características princi-pales de la solución de Borland son laintegración y la modularidad.Integración en cuanto que todas lasfases del ciclo deben estar integradaspara en cualquier momento poder vol-

 ver atrás, modificar algo, y ver que con-secuencias tendrán esas modificacio-nes en el desarrollo de la aplicación. Y 

modularidad en el sentido de poder

Entrevista a Carlos Heras

Por Marino Posadas MVP Visual Developer C#

Alhambra-Eidos www.elavefenix.net

    <    <

Carlos Heras es Alliances & Indirect Sales Manager de Borland Ibérica que junto a Néstor

Miranda, Director General lleva al frente de Borland en España desde sus inicios.Aprovechando la celebración del Borland Days el pasado mes de mayo hemos queridoconversar con él especialmente para que los más viejos recordemos nuestros tiemposde programadores en Turbo Pascal en DOS.

Borland lleva

Page 56: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 56/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

56

dnm.directo.entrevistas<<

sustituir alguna herramienta deBorland por otra de los principalesfabricantes que hay en el mercado, sinque ello implique una perdida de inte-

gridad entre las distintas fases de desa-rrollo de la aplicación.Dentro ya de la parte que nos inte-

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

Delphi para Borland es uno de susproductos estrella, afortunadamentetenemos varios, y su evolución a .NETcreo que es un paso decisivo en la vida

de este producto. Para la comunidad dedesarrolladores de Delphi supone faci-litarles la migración a la plataforma.NET lo que significa encaminarse alfuturo sin abandonar el pasado. BorlandC# Builder es un claro ejemplo de laintención de Borland de ofrecer unasolución para cualquier lenguaje.

Últimamente, Blake Stone, Arquitecto Principal de JBuilder se haincorporado al equipo de desarrollo de

 Visual Studio .NET. ¿Qué tal os tomáisesas “deserciones”? ¿Crees que sontodavía secuelas de la marcha de AndersHejlsberg?

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

ingenieros de Borland. En cuanto a las

consecuenciasque su marchapueda ocasionarhay que tener encuenta que enBorland se traba-

 ja por equipos y que la salida deuna persona, pormuy valida quesea, no tiene porque suponer unamerma de la pro-ductividad delequipo.

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

Borland tiene más de dos millones

de usuarios de sus herramientas Windows. Evidentemente, una partemuy importante de esta cifra es de desa-rrolladores Delphi. También tenemosmás de un millón en herramientas Java,

 y claro, la mayor parte de éstos sonusuarios JBuilder.

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

El proyecto de localización se lide-ra en USA para todo el mundo y luegose trabaja con agencias locales. En el caso

de España se traduce únicamente paraEspaña debido a las diferencias entre elcastellano que se habla aquí y el que se

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

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

La gran diferencia es que Danysoftda un gran valor añadido que nosotrosestimamos muchísimo y esto hace que,efectivamente, nuestra relación conellos sea muy estrecha. En cualquiercaso mantenemos una estrecha rela-ción de más de 15 años con Ingram

 Micro y GTI. Pero claro, Danysoft daservicios de formación, soporte, con-sultoría, etc. y esto es fundamental paranosotros.

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

Bueno resumiendo un poco creoque el futuro del desarrollo de aplica-ciones se va a centrar en dos platafor-mas, J2EE y .NET, y que cada vez se

 va a industrializar más, en el sentido deuna mayor utilización de herramientasespecificas para cada una de las fases delciclo de vida del desarrollo de las apli-

caciones, para construir un software demayor calidad y en el menor tiempoposible.

<<

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

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

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

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

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

Page 57: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 57/60

<< 

IMPORTES VÁLIDOS HASTA NUEVA OFERTA 

DATOS DE FACTURACIÓN CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .

 Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . . Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

La CaixaNúmero de cuenta 2100 4315 48 2200014696

(Indique su nombre en la transferencia)

❑ Domiciliación BancariaIndique su número de cuenta:

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

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

Firma y sello (imprescindible)

a de de 20

Suscripción a dotNet Manía

Usted autoriza a la mecaniza-ción de estos datos. El res-ponsable y destinatario deéstos es Netalia, S.L. Ustedtiene derecho a acceder a susdatos, modificarlos y cance-larlos cuando lo desee. Susdatos no serán cedidos en nin-guna de las formas posibles aterceras partes y no se utiliza-

rán más que para el buen fun-cionamiento de su suscripcióna la revista dotNetMania y para informarle de las activi-dades comerciales que realicela editorial Netalia, S.L. Si nodesea recibir informacióncomercial de esta empresamarque la casilla siguiente ❑

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

Envíe este formulario por email a la dirección

[email protected], o al fax (34) 91 499 13 64

También puede enviarlo por correo postal

a la siguiente dirección:

C/ Robledal, 135

28529- Rivas Vaciamadrid

Madrid (España)

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

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

Page 58: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 58/60

 

     d    o    t     N

    e    t     M    a    n     í    a

          <          <

58

Microsoft se centra en la investigación

Los pasados días 24-26 de Mayo, secelebraron en Barcelona las Jornadas Académicas Microsoft Research 2004, segunda edición de

los encuentros Microsoft-Universidad que reunieron a más de 200 profesores universita-rios y MVP’s de diferentes tecnologías. Durante 3 jornadas, algu-nos de los más sobresalientes investigadores y divulgadores detecnologías Microsoft plantearon el “estado del arte”, bajo el epí-grafe “Docencia e investigación en un mundo de AplicacionesOrientadas a Servicios”, pudimos escuchar a: Rosa M. García,Stephen Emmott , Rafal Luckawiecki (“ A Subjective View of 

 Next Decade in IT ”), Ivan Medvedev (“Security Framework on theCLR, future developments and Security at Microsoft ”), DavidCarmona (“ Nueva generación de aplicaciones orientadas a servicios -

 Ind igo , WS *”),  Adam  Wiener (“ Microsoft Data Access current and future:

import/export data fromSQL Server as XML and an introduction toObjectSpaces ”),FernandoGuerrero (“SQL Server Yukon - nuevas necesidades de los sistemas de informa-ción”), Hugo Zaragoza(“Combinando Information Retrieval y Machine Learning en inves-tigación”), Catherine Heller (“ Nueva generación de herramientas de desarrollo con Visual Studio .NET Whidbey”), Pablo Rodríguez(“Distribución de contenidos en redes de datos móviles e inalámbricas ”),Damien Watkins (“ Multilanguage programming teaching with

.NET ”) , Michal Cierniak (“. NET Rotor as a research platform”) y Don Syme (“The .NET Common Language Runtime and the

.NET Platform: What we’ve achieved and where we’re going ”).La mayor parte de ellos, trabaja en alguno de los centros

de investigación que Microsoft mantiene en Redmond, Beijing(China) o Cambridge (Reino Unido), o son conocidos divul-gadores de tecnologías.

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

to, correo, fichero, etc.).

Longhorn

No obstante si de un productopuede decirse que aglutina unconjunto de novedades fruto de lainvestigación, ese es la nueva ver-

sión del S.Operativo ( WindowsLonghorn , ya anunciado de forma oficial para 2006 y su ver-sión de servidor para 2007), que no sólo se ha rehecho desdecero, sino que no para de sorprendernos con nuevos apuntessobre su arquitectura. En este caso, se trata de su modularidad .

 A diferencia de las versiones anteriores, en que el producto sepresentaba en diferentes versiones (Home/Professional para

 XP y Web, Standard, Enterprise o Datacenter para el servi-dor), Longhorn podrá configurarse a gusto del usuario, incor-porando aquellas partes que se necesiten, agrupadas por rolesde actividad, según anunciaba Jim Livingston en el pasado Windows Hardware Engineering Conference (WinHEC)en Seattle. Sin embargo, en la versión de cliente, será el ven-dedor el que podrá realizar la selección de módulos a incluir

en el sistema. Mark Myers , Senior Program Manager deLonghorn, lo daba a conocer como los “bloques de construc-ción del sistema”, que permitirán un tiempo de instalación de15 minutos y un montón de nuevas características en las ins-talaciones distribuidas y desatendidas.

Más código abierto de productos Microsoft

 Ahora le toca el turno a Windows Template Library , que aligual que sucedió anteriormente con Windows Installer XML,ha sido liberado bajo Common Public License (open-source)

 y SourceForge Repository , como vehículos de publicación. Nuevos lenguajes .NET: F#, Zonnon, Delphi .NET y 

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

Mercado de fichajes

El hasta ahora CTO de Borland, y arquitectode  JBuilder , Blake Stone, se incorpora a

 Microsoft en el equipo de desarrollo de VisualStudio .NET 2005 (Dpto. Visual Studio Core).Para más datos, ver http://msdn.microsoft.com/

 vstudio/team/bios/blakes . La sombra de

Hejlsberg sigue siendo alargada…

   n   o

   t    i   c    i   a   s .   n   o   t    i   c    i   a   s .   n   o   t    i   c    i   a   s .

   n   o   t    i   c    i   a   s .   n   o   t    i   c    i   a   s

 

dnm.desvan<<

Marino Posada

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

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

Enlaces recomendados uti l idades del mes

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

FABER TOYS: Para usuarios que les gusta saber quepasa en su ordenador (gratis): Ejecuta programas

 Windows sin utilizar el Registro.

http://www.faberbox.com/fabertoys.asp

Page 59: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 59/60

Page 60: Dot Net Mania

5/17/2018 Dot Net Mania - slidepdf.com

http://slidepdf.com/reader/full/dot-net-mania 60/60