0% encontró este documento útil (0 votos)
129 vistas60 páginas

dnm001 PDF

Cargado por

Fabian Soto A.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
129 vistas60 páginas

dnm001 PDF

Cargado por

Fabian Soto A.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 60

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

NET Framework • Windows Server System

dotNetManía
www.dotnetmania.com
nº1 febrero 2004
Dedicada a los profesionales de la plataforma .NET

Microsoft prepara el
futuro
La evolución de la plataforma .NET
Longhorn y el Desarrollo
¿Programación en .Net en Yukon?
De Everett a Orcas, pasando por Whidbey

Intercambiando contenidos
en RSS con ASP.NET
Equivalencia de instrucciones
de C# y VB.NET (I)
Orientación a objetos.
Modelos en UML

Delphi 8 para Microsoft .NET Framework


dnm.editorial
<< dnm.editorial

¡Hola mundo!
<< Como cuando empezamos con un nuevo entor-
no y hacemos nuestro primer programa, hoy
raciones, unidos por la mismas manías. Con
una plataforma como .NET no podíamos resis-
publicamos el primer número de esta revista, tirnos a seguir con la labor que iniciamos los
y nos sentimos igual de impacientes que cuan- más viejos hace ya trece años. También están
do esperamos que la compilación finalice satis- los más jóvenes que sienten cuando van des-
factoriamente y aparezca esta frase tan usada cubriendo las interioridades de la plataforma
en los comienzos: ¡Hola Mundo! .NET, lo que nosotros sentíamos cuando des-
Pero no somos novatos. Muchos de nosotros cubríamos las indocumentadas de Clipper o de
ya hicimos clippeRmanía, y después FOXmanía, DOS o de Novell.
y después Algoritmo. Ahora, siguiendo erre que Cualquier tiempo pasado no fue mejor.
erre con nuestras manías, nos ha dado por edi- Nuestras revistas anteriores fueron, modestia
tar una revista especializada en la plataforma aparte, muy buenas. Pero con dotNetMania
.NET a la que hemos dado el nombre de creo que daremos lo mejor de nosotros mis-
dotNetManía. La primera revista en el mundo mos, porque contamos con una plataforma con
dedicada exclusivamente a los profesionales de una arquitectura tan amplia como impecable,
la plataforma .NET, escrita en castellano. porque tenemos más medios, más experiencia,
Ha llovido mucho desde nuestra primera porque somos más. Sólo faltabas tú, y por lo
revista, y sin embargo, nuestro espíritu sigue visto ya estás aquí.
siendo el mismo. Tenemos ganas de contar lo Esperamos sinceramente que nuestro tra-
que sabemos, de compartir lo que aprendemos, bajo te sea útil, que disfrutes leyéndola y
nuestros pequeños descubrimientos y nuestras aprendiendo con ella, tanto como nosotros
experiencias. haciéndola, y sobre todo, esperamos ser capa-
Aquí seguimos, los viejos “clipperos” (algu- ces de contagiarte el maravilloso virus de la
nos quedaron en el camino) y las nuevas gene- curiosidad.

Editor González, Jesús López, Jordi Rambla, Imprime


Paco Marín Jorge Serrano, José Manuel Alarcón, Campillo Nevado
([email protected]) Juan Torres, Liborio López, Luis www.campillonevado.com
Miguel Blanco, Marino Posadas,
Administración Miguel Egea, Miguel Katrib, Pablo Depósito Legal
Pilar Pérez Abbate, Pedro Gómez, Pedro Pozo, M-3.075-2004
([email protected]) Pepe Hevia, Salvador Ramos
Suscripciones/Administración
Asesor Técnico/Coordinación [email protected]
Marino Posadas Diseño y Maquetación
([email protected]) Éride Diseño Gráfico Redaccion
Tel.: (34) 91 477 48 85 [email protected]
Redactores y Colaboradores [email protected] • www.eride.net
Alejandro Mezcua, Angel Esteban, Publicidad
<<dotNetManía

Antonio Quirós, Antonio Rojo, David Edita [email protected]


Carmona, Eladio Rincón, Francisco netalia
Charte, Fernando Guerrero, Fernando Tf. (34) 91 6667477 Nuevos colaboradores
Nogueras, Guillermo ‘guille’ Som, Iván Fax (34) 91 4991364 [email protected]

3
dnm.sumario
Intercambiando contenidos en RSS con ASP.NET 8-11
Intercambie contenidos en Internet en sus páginas ASP.NET a través de la especi-
ficación RSS. Conozca brevemente la historia de esta especificación y aprenda a
utilizarla con el ejemplo propuesto.

Equivalencia de instrucciones de C# y VB.NET (I) 13-17


Cómo hacer las mismas cosas (o casi) en C# y Visual Basic .NET. Esta serie de artí-
culos pretende explicarte cómo hacer las mismas cosas tanto en C# como en Visual
Basic .NET.

ESPECIAL MICROSOFT PREPARA EL FUTURO

Microsoft y el desarrollo de software 18-19


Un vistazo al futuro
Mauricio Ulargui, director de la División .NET de Microsoft Ibérica hace una intro-
ducción al especial “Microsoft prepara el futuro” dando un vistazo general de las
nuevas tecnologías que se están preparando.

La evolución de la plataforma .NET 20-22


Perspectiva desde el punto de vista técnico de las nuevas tecnologías que están por venir.

Longhorn y el Desarrollo 23-29


Será el principio de una nueva época, marcando el final de las aplicaciones Win32 y el
dnm.sumario

comienzo del código gestionado.

¿Programación en .Net en Yukon? 30-35


¿Porqué? ¿Para qué? ¿Me he estado perdiendo algo hasta ahora?
¿Cansado de programar con Transact SQL? ¿Está preparado para utilizar su len-
guaje preferido para programar procedimientos almacenados? ¿Realmente será mejor?

De Everett a Orcas, pasando por Whidbey 36-42


Viaje desde Everett a Orcas pasando por Whidbey. Conozca las nuevas mejoras del
nuevo Visual Studio y el nuevo .NET Framework.

Orientación a objetos. Modelos en UML 44-50


Un recorrido a través de las diferentes metodologías basadas en objetos (OMT, UML,
Métrica v3…) y los lenguajes de programación que implementan éstos conceptos
(C++, C#, VB.Net, Eiffel…). Y finalmente nos pararemos a hacer una primera
aproximación al Lenguaje Unificado de Modelado (UML).

dnm.laboratorio 52-55
Delphi 8 para Microsoft .NET Framework
La evolución hacia la revolución .NET
Un primer vistazo al nuevo Delphi, que abandona también a Win32 y se pasa al
código gestionado de .NET Framework

dnm.biblioteca.net 56
Microsoft Visual Basic.NET. Manueal Imprescindible
De Guillermo Som
Programación con ASP.NET
De Jorge Serrano

dnm.comunidad.net 57

Proyecto Golem

dnm.desvan 58
dnm.noticias
<< dnm.noticias

Ya está aquí el nuevo Delphi 8


para Microsoft .NET

En la 14ª edición del BorCon (Borland rendimiento optimizado para las


Conference 2003), el evento anual más principales bases de datos corpora-
importante de Borland, celebrado en tivas.
noviembre del año pasado en San Delphi 8 para Microsoft .NET
José, California, y para Europa en aparece en tres ediciones diferentes:
Ámsterdam, se presentó al nuevo desarrollos web robustos, ofreciendo Architect, para diseño guiado por
Delphi 8 para Microsoft .NET, una nue- cientos de clases y controles para apli- modelos, desarrollo y despliegue de
va edición diseñada para permitir a caciones de bases de datos de alto ren- aplicaciones .NET; Enterprise, para
los desarrolladores crear aplicaciones dimiento. También se anunció la apa- los equipos que desarrollan aplica-
basadas en la plataforma .NET y mi- rición del Borland Enterprise Core ciones empresariales de bases de
grar aplicaciones Delphi para Win32 Objects (ECO) que ayudará al desa- datos con ADO.NET; Professional,
con una compatibilidad total con rrollador a crear aplicaciones rápida- ideal para desarrollos web individua-
todas las clases de .NET. mente desde los diseñadores y que se les y aplicaciones de interfaz gráfica
Según dijo Simon Thornhill, incorpora a Delphi 8 para Microsoft de usuario para .NET.
Vicepresidente y General Manager .NET y a Borland C# Builder para Aquí en España se presentará el día
de .NET Solutions en Borland, “En Microsoft .NET, en sus ediciones 5 de febrero de 2004 en Madrid, en un
Microsoft han sido muy claros, ellos lle- Architect. ECO soporta MDA (Model evento de lanzamiento del producto
varán todo a código administrado. El fin Driven Architecture) y UML (Unified donde podrá ver de primera mano las
de Win32 está a la vista. Si quieres pro- Modeling Language). características de esta nueva versión.
gramar como un desarrollador de pri- Esta versión también agiliza el Los asistentes tendrán acceso a una
mera has de migrar a .NET ahora. desarrollo de aplicaciones ASP.NET oferta especial de lanzamiento.
Nosotros ayudaremos a los programado- capacitándole para construir robus- Inscripciones en el 902 344 556.
res de Delphi a hacer esta transición”. tos servicios web XML y aplicacio-
Delphi 8 para Microsoft .NET está nes HTML. El proveedor Borland Para más información:
diseñado para permitir el desarrollo Data Provider para ADO.NET http://www.borland.es y
rápido de aplicaciones fiables con ofrece, asimismo, soporte nativo de http://www.danysoft.com.

<< Curso de Presentaciones Efectivas Tfnos: 91 567 50 00/ 91 567 50 51 << Seminario técnico de generación
Imprescindible para la tramitación de http://www.microsoft.com/spain/tech- de informes con Crystal Reports
la certificación MCT net/comunidad/eventos/seguridad/cis- y Crystal Enterprise
26 de febrero de 2004 co_sectour5.asp 25 Febrero de 2004
Auditorio Microsoft Sala presentaciones Danysoft
C/ Pechuán, 1. 28002, Madrid. << Solución ALM de Borland
para la plataforma .NET Estébanez calderón nº 5, 3ª planta
http://www.microsoft.com/spain/forma- Organiza Grupo Danysoft (902 123 146)
cion/noticias/presentaciones.asp 18 Febrero de 2004
<<dotNetManía

Auditorio de Microsoft
<< V Cisco Secure Tour anual C/ Pechuán, 1
Fecha: 27 de Enero de 2004 Organiza Microsoft (902 197 198 ),
Hotel Meliá Castilla Borland (902 344 556 ) y el Grupo
C/ Capitán Haya, 43 Danysoft (902 123 146)
6
28020 - Madrid calendario.de.eventos
<< dnm.noticias

LEAD Technologies, Inc. y su distribuidor


para la península ibérica el Grupo Danysoft Últimos días para
han anunciado el lanzamiento de la versión
14 de LEADTOOLS, la premiada familia la inscripción en la
de herramientas y plug-ins gráficos para
desarrolladores. “Imagine Cup”
LEADTOOLS 14 está repleto de tec-
nologías de última generación, nuevas carac-
terísticas y mejoras significativas para las líne-
Imagine Cup es la competición
as de productos Raster Pro, Document,
internacional de tecnología para
Medical y Multimedia, con mejoras adicio-
nales para Raster Imaging, Vector y .NET estudiantes universitarios, que
a punto de llegar. deberán presentar un proyecto en
LEAD es uno de los líderes mundiales en el desarrollo de kits de herramientas el que se utilicen dispositivos
gráficas. móviles, servicios web y compo-
Mejoras de la nueva versión: nentes inteligentes que aprendan
• Anotaciones: nuevos objetos y características a lo largo del tiempo. Imagine
• Actualizaciones del Módulo OCR Cup está esponsorizada por
• Nuevo Módulo ICR Microsoft Corporation.
• Nuevo Módulo OMR (Proceso de Formularios)
• Nuevos diálogos comunes de imágenes Para participar lo primero que tie-
• 100 funciones de proceso de imágenes nen que hacer los estudiantes es
• DjVu® y KDC y varios nuevos formatos registrarse junto con los miembros
• Actualizaciones Medical Imaging de su equipo antes del día 6 de
• Actualizaciones Multimedia Febrero.
• Actualizaciones de librerías de clases C++
• Actualizaciones de objetos COM, incluyendo nuevos ejemplos de .NET En esta primera fase, la presenta-
• Próxima llegada: .NET y Raster Imaging v14 ción del proyecto se hará a través
Para más información o solicitar una copia de evaluación visite la web del dis-
del site (www.desarrollaelfutu-
tribuidor en www.danyshop.com ro.com) hasta el día 27 de Febrero
jurado estará formado por perso-
nal de Microsoft.
Los tres últimos finalistas recibi-
La operación “desguace” de Microsoft rán un viaje a Brasil con todos los
gastos pagados para participar en
Microsoft está acabando con el pasado más rápidamente de lo que nos tenía acos- la final internacional de la Imagine
tumbrados. De hecho, hace menos de un año que apareció Windows 2003 y su Cup en Brasil, para el primero; un
antecesor, Windows 2000 empezará a retirarse en Abril de este año en un proce- Pocket Pc a cada uno de los inte-
so progresivo que terminará en el 2007. Se comenzará con la retirada del canal de grantes del equipo, para el segun-
distribución, para terminar con la retirada del soporte del producto. do; y una Xbox con 3 juegos a cada
Pero Windows 2000 no es el único. La operación “desguace” de Microsoft tam- uno de los integrantes del equipo,
bién incluye a SQL Server 7, Outlook 2000, Windows 98, Office XP para desa- para el tercero.
rrolladores, Visio 2000, Visual Studio 6.0 SP3 y SP5 y algún producto más.
La final consistirá en un evento de
Sin embargo, aunque dejen de distribuirse, el soporte se mantendrá durante algún
varios días en Sao Paulo, Brasil.
tiempo, dependiendo de cada herramienta. Para SQL Server 7 habrá soporte has-
ta el 2007, por ejemplo, aunque otros como Windows 98 ya terminan. Todos los finalistas internaciona-
les de cada país o región compe-
El motivo no es otro que el fin del acuerdo con Sun sobre la distribución de la tirán por las tres primeras plazas.
máquina virtual de Java escrita por Microsoft. Ha terminado el plazo, y Microsoft
ya no podrá distribuir ninguno de sus productos que incluyan este software. Los premios son de $25.000,
Según Andy Boyd, Product Manager de MSDN Suscriber Downloads, productos $15.000 y $10.000 para el prime-
<<dotNetManía

como Office XP Professional con Frontpage o Windows NT 4, entre otros, sí serán ro, segundo y tercero respectiva-
actualizados con versiones sin la máquina virtual de Java para poder seguir des- mente. Este año se repartirán más
cargándose como hasta ahora. de $85.000 en premios en metáli-
Para más información consulte en el centro de soporte de Microsoft en: co para los ganadores.
http://support.microsoft.com 7
Por Jorge Serrano
Visual Basic y .NET MVP
www.PortalVB.com

Intercambiando contenidos en RSS


con ASP .NET

<< Cuando comenzó Internet, nadie conocía el alcance real ya que es realmente en lo que se ha convertido.
que hoy día tiene. Lo más valioso de la red de Y es que RSS no es otra cosa que un docu-
redes es la información, pero ¿tenemos control mento XML que sigue una serie de reglas que
sobre la información que se publica en Internet permiten traducir los contenidos de estos docu-
y tenemos acceso a ella fácilmente?. Desgra- mentos para que sean interpretables por cual-
ciadamente, la información fluye a una veloci- quier aplicación o programa que lo trate.
dad imparable e incontrolable, pero permanece Construir un documento RSS es por lo tanto,
inaccesible en muchos de los casos, y en otros, realmente sencillo, y podemos hacerlo con cual-
requiere que realicemos diferentes saltos entre quier editor como por ejemplo el bloc de notas
un lugar y otro en Internet para conocer las noti- de Windows.
cias e informaciones que publica un sitio y otro
o sobre un tema de interés. Es decir, la infor-
mación se encuentra dispersa y sin criterio algu-
no que nos permita compartir y acceder a ella
sin trastornos para los usuarios.
RSS no es otra cosa que un documento
Para tratar de evitar en parte esta desinfor- XML que sigue una serie de reglas
mación, apareció el concepto de RSS. Ahora bien, que permiten traducir los contenidos
¿qué y cómo es?, ¿cómo acceder a este tipo de de estos documentos para que sean
recursos? y sobre todo, ¿cómo tratarlos en nues- interpretables por cualquier
tras aplicaciones ASP .NET?. Esto es justamente aplicación que lo trate.
lo que veremos en este artículo.

¿Qué es RSS?
La definición oficial de RSS es Really Simple Historia y versiones de RSS
Syndication —distribución realmente simple— La historia de RSS no está del todo clara y
también conocido como Rich Site Summary —re- cuando uno se acerca a ella, parece más aden-
sumen enriquecido del sitio—, pero quizás trarse a una batalla de disputas que a una histo-
encuentre RSS con un significado más preciso ria de armonía y entendimiento. Pero lo que está
<<dotNetManía

aunque no coincida con sus siglas, el de Content claro es, que separando las diferencias, podemos
Syndication —distribución de contenidos—, que indicar que el embrión de lo que hoy se conoce
es quizás un significado más acertado para RSS como RSS, lo encontramos en Abril de 1997 y

8
<< dnm.asp.net

concretamente en UserLand, cuan-


do Dave Winer ofrecía unos scripts
para distribuir noticias en XML.
RSS, sin embargo, tuvo sus ini-
cios más serios en las oficinas de
Netscape en el año 1999 cuando lo
aplicaron a su propia red. Netscape
utilizó entonces, lo que era la prime-
ra versión de RSS, la v0.9 de Marzo
de 1999, basada en RDF Resource
Description Framework —marco de
descripción de recursos— y cuyo
objetivo era el de presentar la infor- Figura 1. Diagrama general de un documento RSS 2.0
mación en el WWW.
A partir de ese momento, han apa-
recido diferentes versiones mejoradas. En la figura 1 podemos observar Cada una de estas partes posee
La versión 0.91 de Julio de 1999 fue cuál es el formato general de un un conjunto de etiquetas y cada una
presentada por Netscape y no se basa- documento RSS versión 2.0. de éstas posee un determinado sig-
ba en RDF. Más tarde, aparecerían Analizando detenidamente la nificado. Aquí veremos las más
entre Julio y Noviembre de 2000 otras figura 1, observaremos que un docu- generales, que son las que se utili-
versiones como la 0.92 que era com- mento RSS 2.0 está compuesto por zan en la mayoría de los sitios Web,
patible con la 0.91, la 0.93, la 0.94 y la una cabecera —etiqueta rss— dón- pero para conocer más a fondo la
1.0. Posteriormente en Septiembre de de se indica la versión del docu- especificación de RSS 2.0, aconse-
2002 aparecería la versión 2.0. mento RSS, seguida de una etique- jo la visita del siguiente enlace:
De todas estas versiones, sólo tres ta que indica información sobre el http://blogs.law.harvard-edu/
versiones han sido tenidas en cuen- canal —etiqueta channel— del docu- tech/rss/
ta, la 0.91, la 1.0 y la 2.0, y de estas mento, y entre la etiqueta del canal, Para aclarar toda esta maraña de
tres, sólo dos de ellas son las más los elementos de contenido —eti- información, escribiremos un breve
extendidas y comúnmente aceptadas queta item— que pueden ser repe- documento RSS 2.0 de ejemplo
en Internet, la 0.91 y la 2.0. La ver- tidos tantas veces como contenidos (fuente 1) y explicaremos su conte-
sión 1.0 ha sido generalmente recha- diferentes queremos representar. nido y las partes de éste. Una ima-
zada por requerir acciones avanzadas
debido a que está basada en RDF. Las Versión RSS Responsable Descripción
otras dos, requieren menos esfuerzos
para ponerlas en funcionamiento. 0.9 Netscape Es una versión en desuso.
En la tabla 1 puede ver un resu- 0.91 UserLand Es de las más usadas, si bien,
men de las diferentes versiones de se recomienda el uso de la
RSS. versión 2.0 si se usa ésta.
La versión 2.0 de RSS es com- 0.92 UserLand Es una versión en desuso.
patible con la 0.91 y es en la que me 0.93 UserLand Es una versión en desuso.
voy a basar en este artículo por ser 0.94 UserLand Es una versión en desuso.
la más actual y la que se está exten- 1.0 Grupo de trabajo de RSS Basada en RDF, requiere
diendo de forma más clara. módulos de carácter
avanzado, por lo que es
rechazada en Internet.
¿Cómo es un documento RSS? 2.0 UserLand Es la versión comúnmente
<<dotNetManía

aceptada y extendida.
Un documento RSS es un docu-
Compatible con la versión
mento XML, con sus etiquetas y valo- 0.91.
res de acuerdo a una serie de reglas.
Tabla 1.Versiones de RSS

9
<< dnm.asp.net

gen vale más que mil palabras y entenderemos <?xml version=”1.0”?>


a la perfección lo que he explicado hasta ahora. <rss version=”2.0”>
Como vemos en el fuente 1, el artículo <channel>
<title>Título_del_Sitio_Web</title>
comienza por las etiquetas <rss> y </rss>. Dentro
<link>Dirección_de_la_Página_Web</link>
de estas etiquetas, encontraremos las etiquetas <description>Descripción_del_Sitio_Web</description>
<channel> y </channel> entre las que están los ele- <language>Nombre_de_Cultura_o_Idioma_con_RFC_1766</language>
mentos más importantes del documento RSS. <item>
<title>Título_del_Artículo</title>
Después de la etiqueta <channel> y antes de <description>Descripción_del_Artículo</description>
la primera etiqueta <item>, encontramos dife- <link>Dirección_Web_del_artículo</link>
rentes etiquetas que forman parte de la infor- <pubDate>Fecha_Hora_GMT_con_RFC_822</pubDate>
</item>
mación de cabecera y que identifica el sitio Web <item>
en el que se encuentra la información RSS. De <title>Título_del_Artículo</title>
esta manera, encontramos en las etiquetas <description>Descripción_del_Artículo</description>
<title>, <link>, <description> y <language>, las <link>Dirección_Web_del_artículo</link>
<pubDate>Fecha_Hora_GMT</pubDate>
informaciones sobre el sitio Web (título o nom- </item>
bre, enlace Web, descripción e idioma). De </channel>
todas estas etiquetas, la etiqueta <language> es </rss>
quizás la más destacable, pues indica el tipo de
idioma o lenguaje que se utiliza en el sitio Fuente 1. Ejemplo de documento RSS 2.0
siguiendo las normas indicadas en la documen-
tación RFC 1766 y que encontrará en la dirección
web: http://www.ee/support/Official/intro.html
Entre la etiqueta <item> e </item>, encon- tras aplicaciones ASP.NET. De hecho, en este
tramos los elementos del contenido que quere- artículo nos detendremos muy poco en la pre-
mos compartir. Este contenido se define en las sentación de la información del documento RSS.
etiquetas <title>, <description>, <link> y <pubDate> Para llevar a cabo nuestro cometido, añadi-
(título de la información, descripción, enlace remos un documento RSS al directorio raíz de
Web y fecha de publicación). Como en el caso nuestro servidor Web que en mi caso es
anterior, la etiqueta <pubDate> es la más desta- http://localhost/ ya que estoy trabajando con el
cable e indica la fecha de publicación de esta
información según las normas de la documen-
tación RFC 822 que encontraremos en la direc-
ción web: http://www.w3.org/Protocols/rfc822/
La historia de RSS no está del todo clara
y cuando uno se acerca a ella, parece más
ASP.NET con RSS
adentrarse a una batalla de disputas
Pese a todas estas explicaciones, aún nos que- que a una historia de armonía y entendimiento
da aprender a leer esta documentación en
ASP.NET. Esto puede ser realizado mediante
dos procesos: Uno que permita leer el conteni-
do RSS de una dirección Web directamente, y
otro que permita leer el contenido del archivo servidor Web local. A este fichero lo llamaré
para trabajar directamente con él. Generalmente, MiRSS.xml y tendrá el siguiente contenido. Ver
utilizaremos la primera acción y es ésa la que uti- fuente 2.
lizaré en este artículo. Pasemos ahora a la parte del desarrollo.
La capa de presentación es algo sobre lo que Crearemos una página sencilla en ASP.NET que
<<dotNetManía

debemos trabajar en una etapa posterior. Lo lea el contenido del documento RSS y lo mues-
importante en este momento es saber cómo tra- tre en pantalla. Evidentemente, este procedi-
bajar con este tipo de documentos desde nues- miento no es el mejor de todos ni tampoco será

10
<< dnm.asp.net

De la misma manera, hemos vis-


<?xml version=”1.0”?>
<rss version=”2.0”> to un ejemplo de documento RSS
<channel> 2.0 y hemos conocido sus partes más
<title>Mi Intranet</title> importantes. Finalmente, hemos rea-
<link>http://localhost/</link> lizado una aplicación en ASP.NET
<description>Esta es mi Web de pruebas</description> que nos ha permitido leer la infor-
<language>es-ES</language>
<item> mación de un documento RSS 2.0 y
<title>DotNetMania</title> mostrarla en pantalla.
<description>Pagina Web de la revista</description> Aunque se pueden hacer muchas
<link>http://www.dotnetmania.com/</link> más cosas con este tipo de docu-
<pubDate>Mon, 01 Jan 2004 01:12:23 GMT</pubDate>
mentos, dejo a su imaginación la
</item>
<item> cantidad de posibilidades que esto
<title>Microsoft MSDN .NET</title> le puede ofrecer. Sirva como ejem-
<description>Pagina web de Microsoft .NET</description> plo la posibilidad de trabajar con
<link>http://msdn.microsoft.com/netframework/</link> esta información dentro de un
<pubDate>Mon, 01 Jan 2004 07:28:15</pubDate>
DataSet y realizar búsquedas por un
</item>
</channel> determinado filtro para mostrar úni-
</rss> camente aquella información que
cumpla un determinado filtro o per-
Fuente 2. MiRSS.xml sonalizar la salida en el caso de
encontrarnos con recursos en dife-
rentes idiomas.
una vista ideal del contenido de un Conclusiones Por lo tanto, RSS nos ofrece
documento RSS 2.0, pero le será de En este artículo hemos realizado muchas posibilidades y ahora le
utilidad y ayuda para generar su pro- un breve repaso por la historia de corresponde a usted descubrirlas y
pio código. RSS y nos hemos centrado en aque- aplicarlas según sus necesidades y
La página ASP.NET la he deno- llas partes del documento que son criterio.
minado RSS.ASPX y su código pue- las más utilizadas.
de encontrarlo en nuestra página
Web http://www.dotnetmania.com,
en los recursos de este artículo.
Nuestra aplicación en ejecución
es la que se muestra en la figura 2.
Evidentemente, la información
mostrada en la figura 2 dista mucho
de la información que se pueda mos-
trar en un sitio Web; de hecho, lo
ideal es trabajar con hojas de estilo
para presentar la información de for-
ma personalizada dentro de un sitio
Web. Nótese, que la información
que contiene un documento RSS no
está formateada, o no debería estar-
lo, por lo que es ideal para que noso-
tros adecuemos la información al
formato de estilo de nuestro sitio
<<dotNetManía

Web sin romper para ello la armo-


nía, colores y formatos de texto. Figura 2. Ejecución del lector de documentos RSS 2.0 en ASP.NET

11
Por Guillermo ‘Guille’ Som
Visual Basic MVP desde 1997
www.elguille.info

Equivalencia de instrucciones
de C# y VB .NET (I)
Cómo hacer las mismas cosas (o casi) en C# y Visual Basic .NET

<< Una cosa que es indiscutible, en lo que a la progra- piada del lenguaje que hayamos elegido para
mación de aplicaciones para .NET Framework desarrollar nuestras aplicaciones para poder
se refiere, es que todos los lenguajes se apoyan hacer esa tarea. Lo mismo ocurrirá si pretende-
en las clases que ese marco de trabajo incluye. mos crear nuestras propias clases; tendremos que
Ya pasó la época en la que para hacer ciertas tare- saber cómo quiere .NET Framework que haga-
as comunes, como abrir un fichero, acceder a mos las cosas, qué requisitos nos exige y una vez
una base de datos o interactuar con el sistema que sepamos esas exigencias, podremos crear
operativo subyacente cada lenguaje de progra- nuestro propio juego de clases. En ambos casos
mación tenía su propia forma de hacerlo. Por debemos conocer la sintaxis que utiliza nuestro
suerte para los programadores ahora sólo nece- lenguaje predilecto para hacernos entender con
sitamos conocer una forma de trabajar: La for- .NET Framework.
ma que las clases de .NET Framework tienen
para hacerlo.
.NET Framework incluye casi toda la fun-
cionalidad que necesitamos para crear nuestras No sólo veremos la equivalencia sintáctica
aplicaciones, y si algo que necesitamos hacer no entre C# y VB .NET, también veremos
se incluye entre los numerosos espacios de nom- algunos conceptos que son exclusivos
bres plagados de clases de .NET Framework, de cada lenguaje.
podemos recurrir a componentes creados por
terceros e incluso crearlos nosotros mismos.
Ahora, lo importante es que, independiente-
mente del lenguaje que estemos usando, siem-
pre tendremos la oportunidad de hacer las cosas Se supone que si estamos programando en
al estilo de .NET Framework: Usar una clase Visual Basic .NET, o en C#, sabremos aplicar
para lo que necesitemos. las reglas sintácticas del lenguaje para poder
Para poder usar una clase, sólo necesitamos realizar todas las tareas... o casi todas, que algu-
<<dotNetManía

saber cómo declararla e instanciarla en la memo- nas veces no sólo es suficiente conocer la sin-
ria para que esté lista para usar. No necesitamos taxis del lenguaje, ya que si no conocemos
saber nada más, salvo conocer la sintaxis apro- cómo realizar ciertas cosas, por muy bien que

13
<< dnm.lenguajes.net

sepamos hacer un bucle FOR, no nos servirá Sin más historias empecemos viendo las dis-
de mucho. tintas tareas que podemos realizar en .NET
Voy a dar por supuesto que ya sabes progra- Framework comparadas entre los lenguajes C#
mar para .NET, es decir, ya sabes cómo hacer y Visual Basic .NET, veremos desde cómo decla-
las cosas para trabajar con las clases de .NET rar una variable hasta cómo llamar desde el cons-
Framework, (aunque no conozcas todas las cla- tructor de una clase derivada al de la clase base.
ses incluidas en .NET), ya sabes cómo crear tus
propias clases, ya sabes cómo derivar una clase Sintaxis básica
a partir de otra, ya sabes cómo implementar una
interfaz, ya sabes cómo crear un bucle o definir La declaración de las variables es una de las
una propiedad e incluso un constructor o un cosas que siempre tendremos que hacer en cual-
destructor (o finalizador); sí, se supone que ya quier aplicación.
sabes hacer todas esas cosas en el lenguaje que A lo largo de este y los siguientes artículos te
has elegido para programar, (en esta serie de mostraré una serie de tablas en las que usaré cier-
artículos supondré que ha sido el lenguaje C# o tos marcadores para indicar instrucciones o tipos
Visual Basic .NET), pero lo que seguramente de datos que tendremos que especificar. Por
ejemplo:

<tipo> Será el tipo de datos que vamos a defi-


nir. En Visual Basic se puede declarar una
variable sin necesidad de indicar el tipo de
…veremos desde cómo declarar una variable datos. Debido a que esta no es la forma reco-
hasta cómo llamar desde el constructor de una mendada de trabajar, voy a suponer que
clase derivada al de la clase base. tenemos seleccionada la opción que nos obli-
ga a realizar las declaraciones, asignaciones
y conversiones de forma correcta: Option
Strict On.
<ámbito> Será la cobertura que tendrá la varia-
ble. Si la declaración se realiza dentro de una
te gustaría es saber cómo hacerlo en el otro len- propiedad o método (función o procedi-
guaje. miento), en el caso de VB habrá que usar siem-
Y eso es lo que esta serie de artículos preten- pre Dim o Static, en C# no se usa ningún
de, explicarte cómo hacer las mismas cosas tan- modificador de ámbito. Si la declaración se
to en C# como en Visual Basic .NET. hace a nivel del tipo (clase o estructura) y no
Seguramente serán los programadores de Visual se indica el ámbito en C# o se utiliza Dim en
Basic los que tengan más interés en conocer cómo VB, será lo mismo que declarar la variable
trabajar con sintaxis de C#, por aquello de que como privada.
en algunos sitios valorarán más a quién sepa pro-
gramar en C# frente al que sólo sepa programar En dichas tablas se mostrará tanto el código
en el, siempre mal visto, lenguaje de la familia de C# como el de VB .NET. Puede que dicho
BASIC. código se muestre en varias líneas. En C# no sería
Aquí no voy a enseñarte a programar en nin- un problema, ya que el final de una instrucción
guno de los dos lenguajes más utilizados por los se indica con un punto y coma, pero en Visual
desarrolladores de .NET Framework, aunque Basic .NET todo el código debe estar en una
seguramente algunas de las cosas aquí explicadas línea física y en caso de que queramos que se con-
te ayudarán a clarificar tus ideas. Si quieres apren- tinúe con la siguiente, habrá que usar un espacio
<<dotNetManía

der a programar, deberías plantearte acudir a seguido de un guión bajo.


algún centro de formación, a algún sitio de En C# cuando se indique el <código> a escri-
Internet o comprarte algún libro. bir, podrá ser: una instrucción y acabará con pun-

14
<< dnm.lenguajes.net

to y coma; o un bloque de instruc- Modificador de ámbito C# VB .NET


ciones (más de una instrucción), en (visibilidad)
cuyo caso dichas instrucciones deben
estar dentro de un par de llaves { y }. Variables declaradas No se indica. Dim o Static
Ese par de llaves indicará el bloque en métodos, propiedades
de código. y bloques de código. Static hará que la
En Visual Basic .NET no existe variable mantenga el
último valor asignado
el concepto de bloque de código
independiente, aunque la mayoría Privado a la clase o tipo private Private
de las instrucciones definirán un blo-
que de código. Dicho bloque de Público, siempre accesible public Public
código estará definido por una pala-
bra clave y normalmente acabará con Accesible en el propio internal Friend
la instrucción End seguida de la pala- ensamblado
bra clave que define dicho bloque.
Accesible en la clase protected Protected
Por ejemplo, la definición de una
y en las clases derivadas
clase se indica usando la instrucción
Class y finaliza con las instrucciones Accesible en la clase, clases protected internal Protected Friend
End Class. derivadas y en el mismo
Aunque en VB cada instrucción ensamblado
(o serie de instrucciones) debe ocu-
par una sola línea, (la que se puede Tabla 1. Modificadores de accesibilidad (ámbito o visibilidad)
continuar con la siguiente usando
un guión bajo), dentro de esa mis-
ma línea pueden existir varias ins- La tabla 1 resume los modifica- Por ejemplo, si en C# declara-
trucciones separadas por dos pun- dores de accesibilidad que podemos mos una clase sin indicar el modifi-
tos; aunque esta forma de escribir usar tanto en Visual Basic .NET cador de visibilidad, será lo mismo
código no es recomendable porque como en C#. que haberla declarado private, sin
el código es más difícil de leer y pue- Dependiendo de dónde se embargo en Visual Basic .NET el
de causar más de un quebradero de declaren las variables y los tipos ámbito será Friend.
cabeza. (clases), sin indicar expresamente La tabla 2 muestra los modifica-
el modificador de visibilidad, es dores que se aplican de forma prede-
Modificadores de ámbito
o visibilidad
Las variables, métodos, propie-
dades, clases, etc., siempre tendrán sólo necesitamos conocer una forma de trabajar:
un nivel de visibilidad o cobertura,
La forma que las clases de .NET Framework
es decir, se tendrá que definir, explí-
cita o implícitamente donde serán tienen para hacerlo
visibles. En las siguientes tablas
veremos las instrucciones que per-
mitirán definir o modificar el nivel
de visibilidad de esos elementos, así
como los modificadores de visibili-
dad que podremos usar. posible que el ámbito de dicho ele- terminada si no se indican expresa-
En el caso de las instrucciones mento varíe. Incluso ese ámbito mente, así mismo muestra los modi-
Dim o Static de Visual Basic, sólo se puede ser diferente dependiendo ficadores permitidos según el tipo o
podrán aplicar a variables. del lenguaje usado. miembro que estemos declarando.
<< dnm.lenguajes.net

Tipos y Miembros Accesibilidad Accesibilidades permitidas Tipos de datos


de los tipos: predeterminada
Los tipos de datos de los lengua-
C# VB .NET C# VB .NET
jes de .NET son alias que hacen
enum / Enum public Public public Public referencia a los tipos de datos defi-
protected Protected nidos por el sistema de tipos comu-
internal Friend nes (Common Type System, CTS) de
private Private .NET.
protected Protected
En la tabla 3 podemos ver los
internal Friend tipos de datos con el nombre usado
por .NET y los alias usados en
Miembros de enum public Public Sólo public Sólo Public Visual Basic .NET y C#.

class / Class y private Friend public Public


miembros de
Los arrays o matrices
protected Protected
las clases. internal Friend Los arrays (matrices) son un tipo
private Private especial de variable por referencia y
protected Protected están basadas en la clase System.Array.
internal Friend Aunque sea un tipo por referencia, la
creación de matrices no implica la
Module (sólo VB) N.A. Friend N.A. Public utilización de la instrucción New, (que
Friend es la que se utiliza para crear una nue-
va instancia en memoria de una varia-
Miembros de Module N.A. Friend N.A. Public ble de un tipo por referencia), al
Friend
menos en Visual Basic, ya que en C#
Private
sí será obligatorio el uso de la ins-
interface/Interface private Friend public Public trucción new para crear el array; aun-
miembros de que cuando se declara y asigna al mis-
protected Protected
las clases. mo tiempo, no es necesario usar new
internal Friend
para crear el array.
private Private En Visual Basic, un array se defi-
protected Protected ne usando un par de paréntesis en el
internal Friend tipo de datos o en el nombre de la
variable. En C# se indica con un par
Miembros de interface public Public Ninguna Ninguna
de corchetes, pero siempre se usará
struct / Structure private Friend public Public en el tipo de datos:
En VB se puede usar de estas dos
protected Protected
formas: Dim var() As Integer o
internal Friend
Dim var As Integer()
private Private En C# se usará sólo de esta for-
protected Protected ma: int[] var;
internal Friend En Visual Basic, si al declarar el
array indicamos el número de ele-
Miembros de struct / private Siempre hay public Public
mentos, el array ya estará listo para
Structure. que indicar internal Friend
poder usarlo: Dim var(4) As Integer,
el ámbito. private Private
aunque no sería correcto hacerlo de
esta otra forma: Dim var As
<<dotNetManía

Tabla 2. Accesibilidades predeterminadas y permitidas Integer(4).


En C#, el equivalente sería:
int[] var = new int[5];

16
<< dnm.lenguajes.net

.NET Framework C# VB .NET Descripción, rango de valores


Tipos por valor:
System.Boolean bool Boolean Verdadero o falso.
System.DateTime N.A. Date Fecha y hora.
System.SByte sbyte N.A. Entero con signo de 8 bits.
System.Byte byte Byte Entero sin signo de 8 bits.
System.Int16 short Short Entero con signo de 16 bits.
System.UInt16 ushort N.A. Entero sin signo de 16 bits.
System.Int32 int Integer Entero con signo de 32 bits.
System.UInt32 uint N.A. Entero sin signo de 32 bits.
System.Int64 long Long Entero con signo de 64 bits.
System.UInt64 ulong N.A. Entero sin signo de 64 bits.
System.Char char Char Un carácter Unicode de 16 bits.
System.Single float Single Punto flotante de simple precisión (con precisión de 7 dígitos32 bits).
System.Double double Double Punto flotante de doble precisión (64 bits) .
System.Decimal decimal Decimal Tipo moneda con 28-29 dígitos significativos.

Tipos por referencia:


System.Object object Object Clase base de todos los tipos de .NET.
System.String string String Tipo que representa a cadenas de caracteres

Tabla 3.Tipos de datos predefinidos

Para declarar y asignar valores al mismo tiem- de eliminar el contenido de un array usando la
po, tanto en VB como en C#, se indicarán los instrucción Erase.
valores de cada elemento entre un par de llaves: Para acceder a un elemento de un array, en
En VB: Dim var() As Integer = {1, 4, 12, 2} VB se usará un índice numérico dentro de un par
En C#: int[] var = {1, 4, 12, 2}; de paréntesis, mientras que en C# ese índice se
indicará dentro de un par de corchetes:
En Visual Basic se puede cambiar el tamaño En VB: i = var(2)
de un array usando ReDim: En C#: i = var[2];
Dim var() As Integer
ReDim var(10) Otra diferencia entre Visual Basic .NET y C#
es que al definir un número de elementos en un
También podemos usar ReDim Preserve; en array, en C# se indicará el número de elementos
este caso, si el array ya contenía valores, dicho que tendrá el array, mientras que en VB el núme-
contenido se conserva al cambiar el tamaño: ro indicado será el valor del índice superior del
ReDim Preserve var(15) array:
En VB: Dim var(4) As Integer define un
En C# sólo se puede cambiar el tamaño de un array de 5 elementos, desde 0 hasta 4.
array usando new y no existe un equivalente para En C#: int[] var = new int[4]; define un
Preserve; si queremos conservar el contenido ante- array de 4 elementos, desde 0 hasta 3.
rior, debemos crear una copia y asignar los valo-
res de forma manual: En todos los lenguajes de .NET, el índice
int[] var; inferior de un array siempre será cero.
var = new int[11]; En el próximo número seguiremos repa-
<<dotNetManía

sando las diferentes formas de declarar varia-


Para eliminar un array, podemos asignarle un bles, métodos y otros elementos de .NET
valor nulo (null/Nothing), aunque en VB se pue- Framework.

17
Por Mauricio Ulargui
Director de la División .Net de Microsoft Ibérica
dnm.opinion

Microsoft y el desarrollo de software:


un vistazo al futuro
<< En primer lugar, es un placer para dad del desarrollador, haciendo aún rrolladores construir aplicaciones
mí, como director de la división más fácil la creación de las más poten- con una increíble experiencia de
.NET de Microsoft Ibérica, dar la tes aplicaciones y servicios Web. usuario y proporcionará una
bienvenida a dotNetManía, una Además simplificarán el acceso a arquitectura unificada para la pre-
revista que aparece con la vocación datos y la gestión, aprovechando las sentación del interfaz de usuario,
de extender el conocimiento de la últimas tecnologías de código ges- documentos y multimedia.
plataforma .NET en el mercado tionado y el uso de XML (eXtensible • WinFS El subsistema de al-
español. Precisamente, el nacimien- Markup Language). Microsoft intro- macenamiento de datos de
to de esta publicación no hace sino duce así mismo un nuevo concepto, Longhorn proporcionará total
confirmar la importancia que nues- WinFX, el modelo de programación seguridad al guardar tanto datos
tra plataforma está alcanzando en el para Windows Longhorn; construi- estructurados como no estructu-
mercado de las Tecnologías de la do sobre una extension del .NET rados y facilitará vías inmensa-
Información de nuestro país. Framework, WinFX proporciona mente mejoradas para encontrar,
Realmente, durante la Profe- una completa gama de clases para relacionar y actuar con la infor-
ssional Developer Conference (PDC) Windows, diseñadas para incremen- mación almacenada.
que tuvo lugar en octubre y a la que tar enormemente la productividad así • Indigo Una novedosa aproxima-
tuve la oportunidad de asistir, como la seguridad y fiabilidad de las ción a la creación y ejecución de
Microsoft ofreció a los desarrollado- aplicaciones. sistemas conectados, Indigo es el
res un vistazo previo a las nuevas tec- Con Windows Longhorn, Mi- nombre código de las nuevas tec-
nologías que se integran en la próxi- crosoft espera tender la base para nologías de comunicaciones en
ma ola de productos que irán apare- una nueva ola de innovación dentro Longhorn, las cuales se han dise-
ciendo en un futuro próximo. Los de la industria tecnológica – la cual ñado partiendo desde cero sobre
apartados más importantes, y sobre hará realidad una generación de apli- la arquitectura de servicios Web.
los que esta nueva publicación, caciones orientadas a la información, El soporte avanzado de los mis-
dotNetManía, a la que damos una construidas para un mundo conec- mos en Indigo proporciona mayo-
cálida bienvenida y deseamos el tado y que ofrecerán una experien- res capacidades para una mensa-
mayor de los éxitos, ha centrado su cia de usuario absolutamente impac- jería e interoperabilidad más segu-
primer número son la nueva versión tante, aprovechando al máximo las ra, fiable y transaccional.
del sistema operativo Windows, de últimas novedades en hardware que
nombre interno Longhorn, así como están apareciendo. Por otro lado, y como también
la nueva generación del sistema de En los artículos incluidos en este se explica más en detalle en otro artí-
desarrollo Visual Studio, con nom- número podrá tener una visión más culo, las nuevas versiones Whidbey
bre código Whidbey, y por último y detallada de las tecnologías que de Visual Studio y del .NET
no menos importante, la nueva ver- incorporan los productos citados, en Framework han sido pensadas para
sión de la base de datos SQL Server, particular de las novedades a nivel de permitir a los desarrolladores y
denominada Yukon. Estos lanza- plataforma que ofrecerá Windows arquitectos de software una mayor
<<dotNetManía

mientos están diseñados con el obje- Longhorn: facilidad en el diseño y creación de


tivo de cumplir el compromiso de • Avalon El nuevo subsistema grá- cualquier desarrollo, desde una sim-
Microsoft de extender la productivi- fico, el cual permitirá a los desa- ple aplicación cliente o Web, pasan-

18
<< dnm.opinion

do por aplicaciones para dispositivos móviles hasta aplicaciones


a escala global y orientadas a servicios.
Es más, Whidbey conduce a los desarrolladores un paso más
allá en el camino a Longhorn, con tremendas inversiones en có-
digo gestionado y un diseño de metodología muy adelantado que
permitirá el desarrollo de aplicaciones que separan la lógica de
negocio del interfaz de usuario. Las aplicaciones creadas con
Whidbey se ejecutarán sin problema en Longhorn, y las habili-
dades de desarrollo adquiridas al trabajar con Whidbey se apro-
vecharán plenamente al usar la siguiente versión de Visual Studio,
de nombre código Orcas, que verá la luz cuando se lance
Longhorn.
También se incluye en este número un interesante artículo
sobre la nueva versión de la base de datos de Microsoft, SQL
Server, denominada Yukon, la cual está diseñada para ofrecer
una experiencia más rica al usuario, mediante mejoras sustan-
ciales en aspectos cruciales como la escalabilidad, la disponibi-
lidad y la gestionabilidad; además se han contemplado otros
aspectos importantes como la inteligencia de negocio y una inte-
gración más completa con las herramientas de desarrollo, es decir
con “Whidbey”. Durante la primera mitad de 2004 se hará publi-
ca la Beta 2 de este producto, con la intención de lanzar la ver-
sión final durante la segunda mitad del mismo año.
Finalmente, y como complemento a la información que tie-
nen entre sus manos en este y futuros números de dotNetManía,
les recomendamos la visita del sitio web que Microsoft pone a
disposición de los desarrolladores, MSDN Online, en el que
podrán encontrar información actualizada sobre todas estas tec-
nologías y en general sobre todo lo que concierne al desarrollo
en la plataforma Microsoft.
Mauricio Ulargui, director de la división .NET de Microsoft Ibérica

La próxima revolución
Isaac Hernández, director de Operaciones y Marketing de Microsoft Ibérica

Pocas veces un evento dirigido a los desa- Como antesala de lo que será el lanza- jas que les ofrecerá el nuevo Windows, para
rrolladores de todo el mundo suscitó tanta miento más importante de la compañía has- crear soluciones que se sitúen a la altura
expectación e interés como lo hizo la ta la fecha, SQL Server “Yukon” y Visual de las circunstancias.
Professional Developers Conference que Studio .NET “Whidbey” harán su apari- Así pues, los meses que nos esperan
Microsoft celebró el pasado mes de octubre ción para mostrar a los desarrolladores las van a ser realmente interesantes para pre-
en Los Ángeles. Las razones tenían nom- enormes posibilidades que la plataforma parar el camino hacia estas nuevas tecno-
bres y apellidos: Windows “Longhorn”, .NET va a abrir ante sus ojos. logías que se nos avecinan y, por lo tanto,
SQL Server “Yukon” y Visual Studio .NET La nueva tecnología que se avecina va necesitarán de un gran esfuerzo, no sólo
“Whidbey”. a determinar un punto de inflexión en el desde el punto de vista del trabajo que
En un único evento los asistentes pre- trabajo de la comunidad de desarrollado- venimos desempeñando en Microsoft, sino
senciaron los cimientos sobre los que se res de todo el mundo. Por este motivo, también desde el punto de vista de otros
asentarán las bases de la tecnología de los Microsoft confía plenamente en su esfuer- actores implicados como partners, desa-
<<dotNetManía

próximos años. Sin ir más lejos, Windows zo para diseñar nuevas aplicaciones basán- rrolladores y usuarios para que todos jun-
“Longhorn” está siendo escrito desde cero, dose en estas tecnologías y va a colaborar tos convirtamos en realidad la próxima
lo que va a suponer un giro radical en la con todos ellos, tanto los que ya han apos- revolución.
mentalidad de los usuarios en cuanto a inte- tado por la plataforma .NET como por los
racción con los ordenadores se refiere. que lo harán cuando conozcan las venta-

19
Por David Carmona
Development Consultant - División de
Desarrollo y Plataforma de Microsoft Ibérica

La evolución de la plataforma .NET

.NET era sólo el principio, los próximos años seremos testigos del desembarco de nuevas
tecnologías que usarán el modelo de desarrollo .NET y XML para la construcción de nue-
vas aplicaciones impensables hasta ahora. Las próximas versiones de Visual Studio (Whidbey),
SQL Server (Yukon) y Windows (Longhorn) se encargarán de ello.

<< En julio del año 2000 Bill Gates año 2000 nos sirvió para conocer la sitivo (ya sea web, Windows o dis-
presentó en el Professional Developer plataforma sobre la que íbamos a positivo móvil). El objetivo próximo
Conference de Orlando (PDC) una desarrollar en el futuro. de Microsoft consiste en llevar este
vista preliminar de la nueva plata- Con estos precedentes se anun- modelo de arquitectura a otros dos
forma de desarrollo Microsoft ció una nueva conferencia PDC en elementos presentes en las aplica-
.NET. Han pasado tres años desde Los Ángeles el pasado mes de octu- ciones: el motor de almacenamien-
aquel evento y en este tiempo hemos bre. El interés superó todas nuestras to de datos y el sistema operativo.
sido testigos de cómo .NET ha pasa- expectativas, de hecho dos semanas Esto significa que .NET y XML for-
do de ser una visión de futuro a una antes del evento se colgó el cartel de marán parte de ambos, por lo que
realidad. Hoy la industria de la infor- “no hay billetes” por alcanzarse la las herramientas y el modelo de
mática no tiene dudas de la necesi- capacidad máxima del Centro de desarrollo que utilizaremos serán los
dad de abrir las aplicaciones a están- Convenciones. En esta ocasión mismos que en el resto de nuestra
dares abiertos, y que los servicios Microsoft presentó las dos siguien- aplicación.
web proporcionan la tecnología para tes oleadas de tecnologías que vivi-
conseguirlo. Por aquel entonces nos remos los próximos años, entrando Primera oleada:Yukon
resultaba complicado imaginarnos en detalle sobre el modelo de desa- y Whidbey
una aplicación sin componentes rrollo de cada una de ellas e incluso
COM, modelo de hilos o contado- repartiendo entre los asistentes un La primera oleada se centrará en
res de referencias. La integración juego de DVDs con una vista preli- el motor de almacenamiento estre-
entre aplicaciones se basaba en desa- minar de los bits definitivos. lla de Microsoft, SQL Server. La
rrollos a medida sobre APIs o pro- La idea principal de todo este próxima versión de SQL Server, lla-
tocolos propietarios. Tres años des- desembarco tecnológico gira en tor- mada provisionalmente Yukon, per-
pués ya casi no nos acordamos de no a .NET. En la actualidad utiliza- mite utilizar .NET como modelo
todo eso. .NET ha conseguido mos la plataforma .NET para cons- para el desarrollo de la lógica de ser-
introducirse en la gran mayoría de truir la lógica de negocio, exponer vidor. Hasta ahora teníamos que
<<dotNetManía

las empresas de software y ha cam- su funcionalidad por protocolos cambiar nuestra forma de desarro-
biado el modo en el que desarrollá- estándares y accederla en cualquier llar dependiendo de si nuestro códi-
bamos aplicaciones. Aquel PDC del momento y desde cualquier dispo- go se ejecutaba en la lógica de nego-

20
<< dnm.opinion

cio o junto a los datos. En el primer mación relacional, sino también de versión del Framework será muy
caso disponíamos de la ayuda del datos semi-estructurados en forma importante, tanto que en lugar de 1.2
Framework .NET, su librería de cla- de XML. Almacenar estos datos como correspondería llevará el nom-
ses, la posibilidad de utilizar cual- puede parecer sencillo (un docu- bre de 2.0. Al estar alineado con
quier lenguaje y un entorno como mento XML no es más que una Yukon, Whidbey estará especial-
Visual Studio .NET. Sin embargo, cadena de texto), pero el procesa- mente adaptado para el funciona-
todo cambiaba si nuestro código
debía ejecutarse en el propio servi-
dor. En ese caso teníamos que utili-
zar el lenguaje T/SQL perdiendo la
riqueza de las clases .NET, la orien-
.NET ha conseguido introducirse en la gran mayoría
tación a objetos, la facilidad de depu- de las empresas de software y ha cambiado el modo
ración y un sinfín de cosas más. en el que desarrollábamos aplicaciones
En Yukon podemos decidir si
nuestro código .NET se ejecuta en
la capa de negocio o en el mismo ser-
vidor de datos, de hecho un proce-
dimiento almacenado en Visual miento de los mismos es mucho más miento conjunto con éste. Además
Studio .NET no es más que otro complejo. Yukon permite validar los de la capacidad de escribir la lógica
tipo de proyecto. Podremos utilizar documentos XML almacenados de servidor de Yukon, dispondremos
cualquier lenguaje para escribir el según un esquema XSD que defina- de una nueva versión de ADO.NET
procedimiento almacenado y acce- mos y realizar búsquedas sobre los que nos permitirá sacar el máximo
der a los tipos .NET, por ejemplo mismos de forma indexada, con el partido al motor de almacenamien-
de acceso al disco, cifrado de datos mismo rendimiento que una bús- to. La mayoría de estas característi-
o tratamiento de imágenes. Además, queda tradicional. Incluso podremos cas están enfocadas a conseguir
Yukon permite que el proceso de relacionar los datos estructurados mayor rendimiento y escalabilidad en
depuración e instalación sean tam- con los elementos XML y tratarlos nuestra capa de acceso a datos (ope-
bién automáticos. Cuando acabemos de forma conjunta. Todo ello utili- raciones asíncronas, paginación de
el procedimiento almacenado será zando estándares como XQuery, que resultados), pero también nos per-
instalado en el servidor remoto y permite realizar consultas sobre mitirán construir aplicaciones nue-
podremos depurarlo como cualquier documentos XML del mismo modo vas muy difíciles de desarrollar hasta
código .NET, ejecutándolo paso a que T/SQL permite realizarlas ahora (notificaciones sobre cambios,
paso o consultando el valor de las sobre datos relacionales. servicios de colas de mensajes).
variables. El acceso por servicios web a La mayoría de las nuevas caracte-
.NET está presente en el resto Yukon también está contemplado, rísticas de Whidbey están dirigidas a
de elementos de Yukon. Además de incluyendo un conector SOAP nati- aumentar la productividad del desa-
procedimientos almacenados, po- vo que puede exponer vistas XML rrollador. Visual Studio .NET incor-
dremos desarrollar triggers, funcio- de los datos relacionales y semi- pora mejoras espectaculares en el
nes, tipos definidos por el usuario y estructurados o ejecutar procedi- diseño de formularios web y
agregaciones de datos. Visual Studio mientos almacenados y sentencias Windows, pero también incluye por
.NET se convierte también en la T/SQL dinámicas. primera vez herramientas que asisten
herramienta de desarrollo de Analysis al desarrollador como el refactoring,
Server, DTS o el recién incorporado Whidbey plantillas de código parametrizables,
generador de informes. corrector automático, etiquetas inte-
Los otros elementos presentes en La próxima versión del ligentes, etc.
una arquitectura .NET orientada a Framework .NET y Visual Studio Desde luego la línea de código
<<dotNetManía

servicios son el XML y los servicios (nombre en clave Whidbey) estará ali- más productiva es la que no tienes
web. Yukon está pensado para el neado con Yukon en esta primera ole- que escribir. Por eso Whidbey au-
almacenamiento no sólo de infor- ada. El cambio que veremos en esta menta considerablemente el núme-

21
<< dnm.opinion

ro de clases de la librería base para


>>
cubrir aspectos que antes teníamos
que programar nosotros mismos.
ASP.NET incorpora funcionalidad
típica también lista para usar, como las aplicaciones (transacciones, segu- elegir qué características queremos en
los webparts, las páginas maestras, ridad, colas de mensajes, etc.) evolu- nuestra aplicación de cada uno de esos
skins, membership, etc. También se cionan en un nuevo sistema llamado mundos. Por ejemplo, Avalon permi-
añaden características a los lenguajes Indigo pensado desde el principio para te un modelo conectado, donde cada
de desarrollo para mejorar la pro- que sea utilizado desde aplicaciones pantalla se descarga de un servidor
ductividad, como los genéricos o el con arquitecturas basadas en servi- (como las páginas web), y un modelo
editar y continuar. cios XML. De hecho Indigo incluye desconectado, donde todas las panta-
Para el desarrollo de aplicaciones también toda la fontanería necesaria llas son compiladas junto a la lógica
empresariales se incluye un nuevo para distribuir estos servicios entre en un mismo ejecutable descargable.
modelo de programación denomina- sistemas heterogéneos, según los Podremos optar también por un inter-
do Business Framework, con la fun- futuros estándares que añaden segu- faz orientado al documento (como una
cionalidad de metadatos, persisten- ridad, transaccionalidad o fiabilidad página HTML) o utilizar formularios
cia de entidades, seguridad, transac- a los servicios web. con controles Windows. Mostrar el
ciones y análisis OLAP, normalmen- Longhorn redefine los actuales interfaz mientras se descarga, definir-
te necesarios en este tipo de aplica- sistemas de almacenamiento en dis- lo de forma separada al código o eje-
ciones. Todo ello acompañado de un co. NTFS se hace transaccional, lo cutarlo de forma segura son otras de
motor de mapeo de objetos a bases que permite acceder y modificar el las opciones que dispondrá este nue-
de datos (ObjectSpaces) y diseñadores contenido del disco dentro de una vo modelo de desarrollo.
gráficos integrados en Visual Studio, transacción. Sobre esta tecnología se
además de herramientas que sopor- monta WinFS, un sistema que guar- ¡Quiero usarlo ya!
tan el ciclo de vida completo de un da el contenido de los archivos en
proyecto software. NTFS y la información estructura- Estas dos oleadas no serán inme-
da asociada a ellos (propiedades, rela- diatas. Yukon y Whidbey están toda-
Segunda oleada: Longhorn ciones, categorías...) en un almacén vía en una fase de beta temprana,
relacional. Esto proporciona capaci- Longhorn todavía no ha llegado a
La siguiente oleada de tecnología dades de clasificación y búsqueda este nivel y sólo está disponible una
vendrá liderada por la nueva versión impensables hasta ahora y que origi- vista preliminar de la tecnología. Si
del sistema operativo, llamada provi- nará un nuevo concepto de aplica- quiere adelantarse a estos cambios le
sionalmente Longhorn, e incluirá tam- ción. recomiendo que conozca lo que
bién la actualización de la plataforma El subsistema de interfaz gráfico supondrán (un buen inicio son los
de desarrollo .NET, denominada de Longhorn se denomina Avalon. En artículos de Yukon, Whidbey y
Orcas. Longhorn cambiará radical- un primer vistazo a esta tecnología nos Longhorn que encontrará en este pri-
mente el concepto de sistema opera- llamará la atención su nuevo motor mer número de doNetMania). Pero
tivo Windows hasta la fecha y el basado en 3D, o las capacidades mul- sobre todo tenga presente que el con-
modo en el que desarrollamos las timedia que posee, lo que nos permi- cepto básico de estos cambios es lle-
aplicaciones sobre él. tirá diseñar aplicaciones con un aspec- var el modelo de desarrollo .NET a
Como ocurría en Yukon, el pri- to alucinante. Sin embargo Avalon es todos los elementos de una aplica-
mer cambio importante que notare- mucho más que eso, y su principal ción, por lo que utilizar a día de hoy
mos en Longhorn es la integración objetivo se centra en eliminar las el Framework .NET le garantizará
completa con .NET y XML. La API barreras existentes entre aplicaciones una integración sencilla con estos
de acceso al sistema operativo es web y Windows. Con un mismo nuevos servicios y una curva de
manejada (WinFX) con un diseño de modelo de desarrollo ahora podremos aprendizaje mucho más rápida.
<<dotNetManía

clases pensado desde el principio para <<


su uso desde lenguajes .NET. Los
servicios del sistema operativo para

22
Por Marino Posadas
.NET MVP
www.elavefenix.net

Longhorn y el desarrollo
Es costumbre cada 2 años que Microsoft aporte una nueva versión de sus sistemas
operativos. No obstante, esta vez el período de tiempo será mayor, y según parece los
cambios internos en el sistema, también. Es la herencia de algo que comenzó con la
revolución .NET, de la cual esta edición de Windows es su exponente más completo.
Vamos a analizar algunas de las características de sus 3 APIs principales.

<< Probablemente, la maquinaria de primer sistema operativo construi-


publicidad del gigante de Redmond, do sobre código administrado (esto
ya haya conseguido que el nombre es, gestionado por el CLR de .NET,
que da título a este artículo no le con todo lo que eso supone de cara
resulte al lector algo desconocido. Se a la gestión y tratamiento de erro-
trata, desde luego, del nuevo sistema res, y muchos otros aspectos pro-
operativo que verá la luz —según gramáticos). Además, ha sido cons-
todos los indicios— para primeros ver el lector algunos enlaces com- truido desde cero, para soportar la
del 2006, y del que se dice que va a plementarios. iniciativa Trustworthy Computing
constituir una revolución del tama- (Informática fiable) que Microsoft
ño de la que supuso Windows 95 (o Una revolución propugna desde hace tiempo en
Win32) desde el punto de vista del todos sus sistemas, especialmente de
programador, si no mayor (hasta hay Cuando Microsoft abordó la cara a la seguridad.
quien afirma que el nombre de construcción de la plataforma .NET,
Windows ya no se usará a partir de no se trataba exclusivamente de una WinFX sustituye a Win32
ahora, pero eso tenemos que verlo...). nueva forma de construir aplicacio-
Microsoft ha tirado la casa por la nes Windows, basada en las API’s de Con ser importantes, éstas no
ventana, y, aún tratándose de una ver- Win32. El abandono del modelo son las únicas novedades: En reali-
sión muy preliminar del producto, ya COM/DCOM/COM+ en favor del dad, un conjunto de cambios tan
disponemos de sitios Web especiali- nuevo modelo, debía conllevar, ine- profundo no puede abordarse si no
zados, como http://msdn.micro- vitablemente, cambios profundos en es mediante una reconstrucción de
soft.com/Longhorn/ donde pueden todos los sistemas operativos que se todas las API’s básicas del sistema.
verse vídeos, presentaciones Power- construyesen a partir de ese momen- Así, lo que hasta ahora (y desde
<<dotNetManía

Point, algo de código fuente y artícu- to. Y lo cierto es que Longhorn va Windows 95), se ha denominado
los sobre el nuevo sistema operativo. a ser —en muchos aspectos— una Win32 pasa a ser WinFX, y estará
En el apartado dnm.desvan, puede revolución. Para comenzar, será el constituido por tres pilares funda-

23
<<dnm.windows

mentales: WinFS, Avalon e Indigo (tal y como


se les denomina en la actualidad con sus nom-
bres clave de desarrollo).

WinFS, la gestión de archivos

WinFS (Windows File System) será la API


encargada de la gestión del nuevo sistema de
archivos, que promete una búsqueda casi instan-
tánea de ficheros (al estilo de las consultas en
Figura 2: Diagrama esquemático
bases de datos), que se verá complementada con de Avalon
la tecnología Natural Search Technology, ten-
dente a resolver gran parte de los problemas aso-
ciados a las búsquedas de texto, y que dará ori- Indigo y las comunicaciones
gen a cambios profundos en la manejabilidad y Otras API’s complementarán este novedoso
la propia interfaz de usuario (UI). panorama: Indigo será el conjunto de API’s que
dará soporte a cualquier cosa relacionada con las
comunicaciones en el sistema. También ha sido
construida desde cero, y estará hecha de tal for-
ma que, según algunos gurús (como Don Box,
coautor del estándar SOAP para Servicios Web)
podrá instalarse en algunos sistemas operativos
anteriores, en la misma forma que ahora instala-
mos ciertos SDK’s para soporte añadido de fun-
cionalidades (como la propia SDK de SOAP, por
ejemplo).

Figura 1: Diagrama esquemático


de WinFS

Avalon y la Interfaz de Usuario

¿Y qué hay de ésta última? También aquí los


cambios serán profundos. Para empezar el siste-
ma de ventanas no estará gestionado por User32
como hasta ahora sino por una nueva API, lla-
mada Avalon, que se apoya directamente en
DirectX. Eso significa doble búfer en el dibujo Figura 3: Diagrama esquemático
de las ventanas, eliminación de los incómodos de Indigo
efectos de flickering, transiciones de objetos en
pantalla más suaves, toda suerte de transparen-
cias y efectos de degradado y 3D, y —en gene- Otro de los cambios importantes es que todas
ral— poder aprovechar todas las características las aplicaciones basadas en LongHorn, serán
que hasta ahora estaban reservadas para la mul- totalmente orientadas a objetos, y basadas en un
<<dotNetManía

timedia, dentro de las aplicaciones estándar de objeto central llamado Application, que suminis-
Windows. tra todos los servicios clave que se necesitan para

24
<< dnm.windows

ejecutar la aplicación. Vamos, pues,


a comentar algunas de las caracte-
rísticas principales del modelo de
aplicaciones de Longhorn.
Lo cierto es que Longhorn va a ser una revolución.
El modelo de aplicaciones Será el primer sistema operativo construido
de Longhorn sobre código gestionado por el CLR de .NET
El objeto Application es el objeto
raíz de todos los existentes en el
modelo de aplicaciones de Longhorn
—al igual que System.Object lo es de
.NET—. Application, posibilita el
manejo de una serie de páginas de del propio navegador de Internet tana de saludo inicial podría escri-
marcado (una versión de XML, lla- (similar a la funcionalidad que en birse exclusivamente en XAML,
mada XAML, o Extensible Applica- Visual Basic 6.0 ofrecían los Docu- como veremos a continuación. Por
tion Markup Language), que definen mentos ActiveX). El código fuente otro lado, —como es lógico— pode-
el aspecto (la interfaz de usuario) de es el mismo, y el único cambio nece- mos escribir aplicaciones utilizan-
una aplicación. Al igual que sucede sario es una directiva de compilación. do exclusivamente código fuente en
en ASP.NET, la funcionalidad es A partir de este supuesto, otros un lenguaje admitido (para el que
delegada a un fichero de código fuen- objetos del modelo darán soporte a exista el compilador .NET corres-
te asociado (escrito en cualquiera de otras características de las aplicacio- pondiente).
los lenguajes de .NET) que sopor- nes, como son la navegabilidad y el Mediante el objeto Application,
tará la capacidad de programación. mantenimiento de estado (en este caso, será posible incluso compartir códi-
En ese sentido, Microsoft ha dado el objeto NavigationApplication que go fuente entre distintas páginas. El
un paso muy importante, y, además, hereda directamente de Application, da objetivo de este código es manejar los
coherente con las ideas básicas de los soporte a esas características). eventos producidos por los elemen-
estándares. El ciclo de vida del obje- De la misma forma, una aplica- tos definidos en el fichero XAML.
to Application se convierte, por tan- ción Longhorn, separa la presenta- Pero, como hemos comentado antes,
to, en el propio ciclo de vida de la ción de la funcionalidad, hasta tal podríamos escribir una simple apli-
aplicación. punto, que una aplicación muy bási- cación de saludo utilizando para ello
La idea principal de XML es per- ca, cuya única funcionalidad con- un sencillo editor de texto, con el
mitir separar presentación de con- sistiese en presentar la clásica ven- código siguiente (en XAML):
tenido y eso es exactamente lo que
sucede aquí. Es más, ya existe un
estándar W3C (oficial), llamado
XForms, que define en términos de <Canvas
etiquetas XML, lo que debe ser una xmlns="http://schemas.microsoft.com/2003/xaml"
interfaz de usuario dada. Cuando el Background="LightCyan"
Width="100%" Height="100%">
receptor interpreta esas etiquetas lo
hace en función de su propio siste- <Text Canvas.Left="20" Canvas.Top="20" FontSize="18"> Saludos desde
ma operativo (se trate de Windows, Longhorn!!!
</Text>
Unix, Mac, un PDA o un móvil). <Image Source="4.bmp" Canvas.Left="50" Canvas.Top="70" />
Eso significa que podemos escri- </Canvas>
bir una aplicación para Longhorn y
distribuirla en múltiples escenarios.
<<dotNetManía

Incluyendo la posibilidad de que


cualquier aplicación se ejecute den-
tro de otra ventana, o bien dentro

25
<<dnm.windows

<!-- XAML file -->


Si grabamos este código en un
fichero con extensión .XAML y lo <Window
xmlns="http://schemas.microsoft.com/2003/xaml"
llamamos directamente desde xmlns:def="Definition"
Longhorn, el sistema lo interpreta- def:Class="Application1.Window1"
rá, ofreciendo la ventana de salida def:CodeBehind="Window1.xaml.cs"
Text="Application1" Visible="True"
de la figura 4.
>

<DockPanel xmlns="http://schemas.microsoft.com/2003/xaml"
xmlns:def="Definition" def:Language="C#" Background="White">
<FlowPanel ID="sourceFlowPanel"
MouseLeftButtonDown="OnLeftMouseDown"
Margin="10,10,0,0" Background="cyan" Width="150px"
Height="150px">
<Text ID="caption" Margin="10,10,20,20" FontSize="16">Click
on
Me</Text>
</FlowPanel>
</DockPanel>
</Window>
Figura 4:Ventana de salida
del código anterior. // C# Codebehind class

using System;
using MSAvalon.Windows;
Básicamente, Longhorn, crea using MSAvalon.Windows.Input;
una ventana a partir del elemento using MSAvalon.Windows.Controls;
using MSAvalon.Windows.Documents;
<Canvas> e incluye el resto de ele- using MSAvalon.Windows.Navigation;
mentos renderizando su interpreta- using MSAvalon.Windows.Shapes;
ción visual de acuerdo con los atri- using MSAvalon.Windows.Data;
butos establecidos para éstos (posi-
namespace Application1
ción, tamaño, etc.). {
Aunque los elementos utilizados public partial class Window1 : Window
en este sencillo ejemplo, no poseen {
private bool expanded = false;
más funcionalidad que la meramen- private void OnLeftMouseDown(object sender, MouseButtonEventArgs
te visual, podríamos asociarles accio- e)
nes o incluso dividir su codificación {
if (expanded)
en dos partes, como mencionába-
{
mos más arriba, codificando, por un sourceFlowPanel.Width = new
lado, la presentación (pongamos que Length(sourceFlowPanel.Width.Value/2);
creando un botón mediante el ele- sourceFlowPanel.Height = new
Length(sourceFlowPanel.Height.Value/2);
mento <Button>), o bien utilizando caption.TextRange.Text = "Pulsa";
código fuente equivalente. Veamos expanded = false;
esta equivalencia de la tabla 1, tal y }
else
como la señala Dino Esposito en su {
artículo “A First Look at Writing and sourceFlowPanel.Width = new Length(2 *
Deploying Apps in the Next Generation sourceFlowPanel.Width.Value);
sourceFlowPanel.Height = new Length(2 *
of Windows”:
sourceFlowPanel.Height.Value);
De la misma forma, podríamos caption.TextRange.Text = "Gracias por pulsar";
mezclar los dos códigos para que expanded = true;
—en un único archivo— tuviésemos }
<<dotNetManía

}
tanto el código declarativo como el }
funcional, tal y como podemos ver }
en la aplicación del fuente 1, que es
Fuente 1. Ejemplo de mezcla del código declarativo y el funcional.

26
<< dnm.windows

Creación de un botón de forma declarativa (código de marcas XAML) miento. WinFS se apoyará interna-
mente en el motor de Yukon (la
<Canvas xmlns="http://schemas.microsoft.com/2003/xaml">
<Button Canvas.Left="10"
nueva versión de SQL-Server, que
Canvas.Top="10" aparecerá este mismo año, hacia el
Width="90px" verano), y eso va a significar que
Height="32px">Pulsa</Button>
todo fichero formará parte de este
</Canvas>
sistema, capacitando al usuario la
Forma equivalente mediante código fuente en C# búsqueda con una rapidez similar a
la que obtenemos al buscar un dato
Button btn = new Button();
btn.Width = new Length(90);
en una base de datos.
btn.Height = new Length(32); En su vertiente programática,
Canvas.SetTop(btn, new Length(10)); WinFS se maneja utilizando las nue-
Canvas.SetLeft(btn, new Length(10));
vas librerías System.Storage y
btn.Content = " Pulsa ";
System.Storage.File, si bien exis-
Tabla 1 ten otras, como System.Search, que
permitirán la búsqueda de ficheros

un complemento extendido de la
//Acceso a ficheros de texto plano utilizando las API's de WinFs.
anterior (bien entendido que en este
caso, deberemos compilar el códi- using System;
go, para que el compilador de C# using System.Storage;
using System.Storage.Files;
produzca el ensamblado correspon-
diente, en el que se apoyará la par- class PruebaFicheros {
te funcional) (Ver Fuente 1).
static void Main() {
En lugar de utilizar una ventana
formateada al estilo Longhorn, con //Crea el fichero "Test.txt"
información de sistema, (objeto ItemContext ctx = ItemContext.Open();
Canvas), se utiliza una ventana sim- Folder folder = Folder.GetRootFolder(ctx);
string str = “”;
ple (elemento Window) en la que se file = new File (folder, "Test.txt");
define un botón y unas acciones aso- file.DisplayName = "Test.txt";
ciadas con él, que consisten en cam- file.Stream = System.Text.Encoding.ASCII.GetBytes (str);
file.Save ();
biar el tamaño del botón y el texto
del mismo. La gran ventaja de esta //Acceso al fichero
aproximación, no sólo es la posibi- file = folder.GetOneMemberWithName ("Test.txt") as File;
if (file != null)
lidad de interpretar esta interfaz de
{
usuario en distintos entornos (direc- str = System.Text.Encoding.ASCII.GetString(file.Stream);
to o host=navegador), sino que pue- }
den crearse marcos de interfaz de // Borrado del fichero
File file = folder.GetOneMemberWithName ("text.txt") as File;
usuario corporativos preestableci- if (file != null)
dos, a los que se le puede aplicar más {
tarde la lógica necesaria. file.Delete ();
}
Codificación en WinFS }
}
Uno de los mecanismos más
novedosos asociados con WinFS
<<dotNetManía

será la capacidad de búsquedas de Fuente 2. Ejemplo de acceso al sistema de ficheros a través de código.
ficheros y —en general— la nueva
forma de gestionar el almacena-

27
<<dnm.windows

por el contenido (ya sea parcial en su nombre, o mente del transporte. Y podemos distinguir
bien en sus datos internos), de forma similar a la dos tipos de puertos: con nombre y anóni-
característica Text Search, ahora presente en mos. Los puertos con nombre pueden ser
SQL-Server 2000. accedidos independientemente de cualquier
Para darnos una idea de lo simple que es el conexión o sesión de comunicaciones. Los
acceso por código al sistema de ficheros, obser- últimos sólo pueden accederse de forma
implícita, como parte del proceso de la
comunicación. De hecho, los únicos men-
sajes recibidos por un puerto anónimo serán
Todas las aplicaciones basadas en LongHorn, las respuestas a aquellos enviados a través de
serán totalmente orientadas a objetos, ese mismo puerto.
• En tercer término, se define un servicio como
y basadas en un objeto central
una pieza opaca de código que da soporte a
llamado Application. un puerto. Indigo se refiere a ese código eje-
cutable asociado al puerto como un servicio.
Y los servicios, pueden tener a su vez dos
características: políticas (policies) y contratos.
vemos el bloque del fuente 2, que crea, lee y, final- Las políticas indican las capacidades y requi-
mente, borra un fichero de texto plano. sitos del servicio, mientras que los contratos
Además, si utilizamos la nueva versión de establecen qué intercambios de mensajes son
Visual Studio .NET (Whidbey, todavía en fase aceptables para ese servicio (en términos de
beta) podemos observar mediante el examina- programación, los contratos serían similares
dor de objetos la convivencia de las librerías que a las interfaces, y de hecho, desde un progra-
utilizan las API’s de Win32 y las propias de ma, eso es lo que ocurre).
Longhorn. No olvidemos que la compatibilidad • Finalmente, los servicios se comunican con
será algo crítico respecto al nuevo sistema y, los puertos a través de canales. Un servicio
como ya se ha comentado, la desaparición total puede crear y usar un rango de canales para
del soporte Win32 haría que ninguna aplicación construir una aplicación. Las propiedades,
actual fuese capaz de funcionar en el nuevo sis- políticas y comportamientos de un canal,
tema. varían en función de las características de
comunicación que ese canal suministra.
Indigo y las comunicaciones El siguiente diagrama explica algo más esta
situación:
Para concluir esta breve introducción a las
características de Longhorn, y sus nuevas API’s
de programación, vamos a comentar algo sobre
Indigo, su sistema de comunicaciones.
Indigo se basa en 4 conceptos clave:
• Primero, un mensaje se ve como un con-
junto de datos que puede transmitirse gra-
cias a su conformidad con un modelo SOAP
(como es sabido, dicho modelo da soporte a
las transmisiones y recepciones de informa-
ción cuando utilizamos Servicios Web).
Fig 5. Esquema de objetos implicados
• En segundo lugar, los mensajes viajan a tra- en el transporte de mensajes
vés de puertos (ports). En Indigo, los puer-
<<dotNetManía

tos son puntos finales (end-points) de comu-


nicación entre servicios. Un puerto puede
enviar y recibir mensajes independiente-

28
<< dnm.windows

using System; versiones de Windows (Windows


using System.MessageBus; Server 2003 anticipa algunas cosas,
class app {
no obstante). Y como lección inicial,
static void Main() {
// Crea un Puerto con nombre y lo abre podemos ver cómo los modelos de
Port port = new Port(new Uri("soap://localhost/ejemploPuerto")); programación tienden cada vez más
port.Open(); a independizarse de plataformas y
// espera indefinidamente…
Console.ReadLine(); mecanismos de distribución, dentro
} de la filosofía “programar una vez y
} utilizar en cualquier parte”. Es nota-
ble la similitud del modelo ASP.NET
con el nuevo Avalon, las capacida-
Fuente 3. Crear y abrir un puerto. des de ejecución en navegador o
directamente del mismo programa,
Sólo a modo de introducción tos de la arquitectura SOA (Services y la posibilidad de acceder —literal-
incluimos en el fuente 3 el frag- Oriented Architecture). mente— a cualquier recurso del sis-
mento más pequeño posible de códi- tema, mediante código.
go que crea un puerto y lo abre. Conclusión En posteriores artículos profun-
Nótese la presencia de la librería dizaremos más sobre las caracterís-
System.MessageBus. Podemos afirmar, pues, que ticas de Longhorn, y su capacidad de
Como puede apreciarse, la filo- Longhorn es revolucionario tanto en programación, así como en la nueva
sofía asociada a los Servicios Web su concepción como en su modelo versión de Visual Studio .NET
está claramente presente en Indigo, de programación, especialmente si (Whidbey) que aprovecha e integra
al igual que se dejan entrever aspec- le comparamos con las anteriores muchas de estas novedades.

Microsoft creará una nueva división para el desarrollo


del núcleo de Longhorn
Brian Valentine, vicepresidente senior de la actual divi- cuyo nombre en clave es Blackcomb, sería la primera ver-
sión de desarrollo de Windows, encabeza ya la nueva uni- sión que integraría estas tecnologías tanto para equipos
dad llamada Windows Core Operating System Division de escritorio como para servidores, ¡y esto no estará dis-
(COSD) que se centrará en el desarrollo de las nuevas ponible hasta 2007 ó 2008! La creación de esta división
tecnologías para los sistemas operativos, así como de diri- y el retraso sufrido por Longhorn, parecen apuntar a que
gir el camino que seguirán éstos de acuerdo a las condi- será Longhorn el primero que cuente con este primer
ciones del mercado. núcleo sobre el que construirá Blackcomb, si bien en un
La nueva división tendrá tres áreas operativas: Testing, principio esto no es así.
Program Management y OS Development. Desde la redacción de dotNetManía pensamos que
Lo realmente importante es que, a partir de ahora, se son muy difíciles este tipo de predicciones tan a largo pla-
aunarán esfuerzos para la creación de una nueva tecnolo- zo, y que existe la posibilidad de que haya cambios tanto
gía que será compartida por todos los sistemas operativos en fechas como en estrategia.
de escritorio y servidores, las nuevas versiones de Office, En cualquier caso, el futuro que Microsoft está pre-
y otras aplicaciones de servidor, cuando salga al mercado, parando para sus productos pasa inevitablemente por lo
y esto será con la aparición de Longhorn (¿2006?). que esta nueva división sea capaz de desarrollar, puesto
Según el propio Brian comentaba en marzo del año que será la base de, prácticamente, todo lo que está por
pasado a ComputerWorld, la versión de Longhorn sería venir. La labor de Brian Valentine es, pues, fundamental
única y exclusivamente para equipos de escritorio y no para el futuro de la compañía. ¡Suerte Brian!
para servidores. La versión que sucederá a Windows 2003,

noticias.noticias.noticias.noticias
Por Fernando Guerrero
SQL Server MVP
www.solidqualitylearning.com

¿Programación en .Net en Yukon?


¿Por qué? ¿Para qué? ¿Me he estado perdiendo algo hasta ahora?

Algunos de los sistemas gestores de bases de datos existentes en el mercado


ofrecen la posibilidad de crear objetos programables en sus bases de datos uti-
lizando lenguajes de programación no diseñados específicamente para el trata-
miento de conjuntos de registros, como por ejemplo Java. Mientras que en SQL
Server seguimos con Transact-SQL. Sin embargo, esto cambiará con la aparición
de Yukon.

<< Esto es algo que desde hace algún tiempo nos ha vado a lidiar los sistemas de bases de datos des-
sonrojado en esas reuniones en las que el “pro- de ambos roles, y la perspectiva de unir ambos
fesional” de turno nos intenta menospreciar mundos de ese modo tan íntimo me pareció de
haciéndonos ver cuán inferiores somos porque lo más interesante.
nuestro sistema de gestión de bases de datos sigue Tras la primera reacción, vino el pánico: ¿Que
siendo Transact-SQL, no ya ANSI SQL 99, sino cualquier perforista venido a más, va a querer eje-
nuestro viejo y vetusto Transact-SQL, en vez de cutar sus chapuceros programas dentro de mi ser-
“modernos” y “versátiles” lenguajes como Java. vidor de bases de datos? ¡Eso sí que no! ¡Hasta ahí
Ahora podemos decir altivamente: Pues nues- podíamos llegar! No, mire usted, este programa
tro sistema es incluso mejor… bueno… lo será se ha estado ejecutando sin problemas en un main-
pronto. frame durante muchos años, y lo hemos conver-
Una de las fundamentales mejoras de la anun- tido a Cobol.NET, así que… ¿En Cobol.NET?
ciada nueva versión de SQL Server es la posibi- ¿En mi servidor? Esto será una broma, ¿verdad?
lidad de utilizar cualquier lenguaje de progra- Pues no es una broma y en un futuro no muy
mación basado en .NET para crear procedi- lejano veremos como nuestro horizonte como
mientos almacenados, y otros objetos progra- programadores de bases de datos se expande
mables, en nuestras bases de datos. enormemente… o cambiaremos de trabajo.

Euforia y Pánico “Pues yo no lo he necesitado hasta


ahora, y me ha ido muy bien”
Mi primera reacción ante esta noticia fue de
alegría y excitación (en el más tecnológico aspec- Si lo que has necesitado hasta ahora ha sido
<<dotNetManía

to de esta palabra). Yo siempre me consideré un lisa y llanamente ejecutar instrucciones de mani-


programador, más que un administrador de bases pulación de datos dentro de tu bases de datos,
de datos, aunque avatares de la vida me han lle- como los queridos SELECT, INSERT, UPDATE,

30
<< dnm.servidores.sql

y DELETE, es probable que no hayas necesita-


do nada más. Sin embargo es posible que no te La ejecución de programas externos median-
hayas querido meter en problemas, y hayas limi- te xp_cmdshell es, como poco, peligrosa, ya que
tado la funcionalidad de tu base de datos a aque- esto ha sido la fuente de no menos problemas
llo que se puede hacer con Transact-SQL. de seguridad en SQL Server. Por otro lado, sigue
existiendo el problema de cómo recuperar los
Una de las quejas más frecuentes que se le hacen
resultados de esta ejecución.
a Transact-SQL es su pésima gestión de errores,
Este es un ejemplo de cómo utilizar esta téc-
pero esto se ha corregido definitivamente en Yukon,
nica para obtener el contenido de un directorio:
proporcionando la misma gestión estructurada de
errores que en sus primos de .NET1. CREATE TABLE #miDir (
Por azares del destino, y por lazos familiares, LineaID int IDENTITY(1,1)
PRIMARY KEY,
soy ingeniero civil, y mi bautismo en la infor- Linea nvarchar(256))
mática vino creando modelos matemáticos para
resolver problemas de ingeniería. La verdad es INSERT #miDir
EXEC Xp_cmdshell 'dir c:\*.*'
que me gustó tanto esa experiencia que cada día,
SELECT Linea
poco a poco, me he ido despegando de la inge- FROM #miDir
niería civil para acercarme cada día más a la inge- WHERE Linea LIKE '[0-9]%'
niería informática. El caso es que si alguien quie- ORDER BY LineaID
re enfrentarse a complicados y motivadores pro-
blemas de programación, que trabaje en un gabi-
nete de ingeniería civil de los que se enfrentan a • La mayoría se ha rendido ante las muchas
proyectos completamente nuevos cada pocos limitaciones de estos sistemas y decidieron
meses. Este es el ambiente en el que me tocó vivir implementar estas soluciones en aplicacio-
durante muchos años, y a ello debo mis conoci- nes de cliente o en la capa de negocios.
mientos de programación.
La utilización de procedimientos de automa-
tización está sujeta a muchas limitaciones, sobre
Una de las fundamentales mejoras es todo de rendimiento, por lo que no muchos pro-
la posibilidad de utilizar cualquier lenguaje gramadores se aventuraron por este camino. Hace
tiempo escribí un ejemplo de cómo utilizar pro-
de programación basado en .NET para
cedimientos de automatización para acceder a
crear procedimientos almacenados
ADO desde Transact-SQL. En este caso pre-
tendía ilustrar que estos procedimientos podrí-
an proporcionar una puerta falsa para saltarse
¿Has intentado alguna vez acceder a objetos limitaciones de las funciones definidas por el
externos a SQL Server? Yo he visto todo tipo de usuario2.
trucos (hasta me ha tocado utilizar algunos yo La realidad es que en cuanto el interfaz con
mismo): dicho objeto se complica un poco, los procedi-
• Utilizar xp_cmdshell para ejecutar programas mientos de automatización empiezan a compli-
externos y enviar los resultados a una tabla. carse también y dan lugar a no pocos problemas
• Utilizar los procedimientos de automatiza- de activación. Por ejemplo, una clara limitación
ción de SQL Server, como SP_OACreate y de estos procedimientos es la incapacidad de
demás procedimientos relacionados. manejar colecciones de objetos.
• Los más aventurados hasta han creado pro- En cuanto a la creación de procedimientos
cedimientos extendidos, o externos, según extendidos, la verdad es que esto ha permaneci-
se quiera llamarlos. do como parcela exclusiva de expertos progra-
<<dotNetManía

1
Puedes leer más sobre las mejoras en Transact-SQL para Yukon en
http://msdn.microsoft.com/library/en-us/dnsql90/html/sql_YukonTSQLEnhance.asp
2
Podéis encontrar este ejemplo en http://www.solidqualitylearning.com/conferences/

31
<< dnm.servidores.sql

madores en C++, como mi buen


Es esta la razón por la cual recomiendo encapsular estos objetos amigo Gert Drapers (Program Ma-
COM tras otro objeto COM con un interfaz muy claramente defini- nager en Microsoft) que utilizó esta
do, con el único propósito de servir de acceso desde Transact-SQL. técnica para permitir que SQL Server
Este interfaz debería permitir su utilización desde SQL Server siguien- pueda utilizar correo electrónico
do el siguiente esquema:
mediante SMTP directamente
1. Crear una instancia del objeto utilizando sp_OACreate.
(www.sqldev.net)
2. Establecer muy pocas propiedades con sp_OASetProperty.
Sinceramente, esperaba que
3. Ejecutar muy pocos métodos con sp_OAMethod.
4. Leer muy pocas propiedades con sp_OAGetProperty. Microsoft hubiera convertido la ma-
5. Destruir la referencia al objeto COM mediante sp_OADestroy. yoría de los procedimientos extendi-
dos que vienen con SQL Server en
En especial, la creación de nuevos objetos COM a partir de pro- procedimientos de .NET. Sin embar-
piedades leídas desde otros objetos COM, es muy propensa a produ- go esto no ha sido así, ya que
cir errores de instanciación, con la obtención de punteros nulos. Microsoft ha aplicado un arraigado
Este sería un ejemplo simplificado de cómo utilizar procedimien- criterio en el mundo informático: “Si
tos de automatización para hacer uso de ADO desde dentro de una fun- funciona, no lo cambies”. No puedo
ción definida por el usuario: culparles por esta decisión, ya que
CREATE FUNCTION InsertNewValue
prefiero que dediquen sus esfuerzos
(@Value int) a otras áreas, como así han hecho.
RETURNS int A aquellos mortales que se estén
AS
planteando la posibilidad de crear
BEGIN
DECLARE @adoConn as integer procedimientos extendidos, les reco-
DECLARE @ret int miendo que se tomen un par de tilas,
DECLARE @sql varchar(2000) lo consulten detenidamente con la
DECLARE @rst int
almohada, y luego se busquen una
SET @sql = 'INSERT tempdb.dbo.TestInserts (Value) SELECT ' copia de la última beta de Yukon. Y
+ CAST(@Value AS varchar(10)) con esta versión beta que prueben a
EXEC @ret = sp_OACreate 'ADODB.Connection', @adoConn OUT implementar su solución de .NET,
ya que las ventajas, desde cualquier
IF @ret = 0 punto de vista pueden ser inmensas.
EXEC @ret = sp_OAMethod @adoConn, 'Open', NULL,
'Provider=SQLOLEDB;Server=CLOCKWORK;trusted_connection=yes;Databa
El Kit de Recursos de SQL
se=Tempdb' Server Yukon Beta 1, contiene un
libro blanco sobre la programación
IF @ret = 0
en .NET dentro de SQL Server:
EXEC @ret = sp_OAMethod @adoConn, 'Execute', @rst OUTPUT, @sql
Overview of .NET Programming
EXEC @ret = sp_OADestroy @adoConn Features in SQL Server Yukon (Un vis-
EXEC @ret = sp_OADestroy @rst tazo a las técnicas de programación
RETURN (SELECT CASE @ret .NET en Yukon). Es curioso obser-
WHEN 0 THEN IDENT_CURRENT('tempdb.dbo.TestInserts') var que el encabezado de cada pági-
ELSE NULL END) na simplemente menciona como
END título Overview of Programming
GO Features in SQL Server Yukon (Un vis-
tazo a las técnicas de programación en
Este ejemplo lo muestro simplemente para ilustrar el funciona- Yukon), sin el “.NET”. Por este
miento de estos procedimientos, no para sugerir su utilización de este encabezado, cabría pensar que este
modo, ya que este ejemplo en particular no podría considerarlo como libro blanco contemplaría todas las
<<dotNetManía

una práctica aconsejable. mejoras de programación que esta


nueva versión incorpora, con espe-
cial enfoque en las relacionadas con

32
<< dnm.servidores.sql

.NET, pero no es así. Para empezar Los autores proponen una serie de escenarios en los que utilizar técni-
la discusión, este libro comienza con cas de programación .NET podría resultar interesante:
dos apartados que anuncian muy cla- • Regular expressions
ramente el talante del documento: • Gestión avanzada de cadenas de caracteres
• Limitations of T-SQL (Limita- • Criptografía
ciones de Transact-SQL) • Gestión del registro de eventos
• Advantages of CLR Integration • Acceso directo a ficheros
(Ventajas de la integración con • Acceso a biblioteca de funciones financieras
el CLR) • Ejecución de complejas operaciones matemáticas
• Cálculo geométrico
Si lo hubiera escrito yo, quizá • Complejas funciones de agregación
hubiera añadido otras secciones como:
• Advantages of set oriented pro- En cuanto a regular expressions, tengo que decir que los ejemplos pro-
gramming with T-SQL (Ven- puestos pueden codificarse en la mayoría de los casos muy eficientemente
tajas de la programación orien- en Transact-SQL, probablemente combinado CASE con el operador LIKE.
tada a conjuntos de registros Lo mismo podría decirse en cuanto a la gestión avanzada de cadenas de
con Transact-SQL) caracteres, aunque esto podría simplificarse mediante funciones que .NET
• Potential problems with CLR pro- ya ofrece, por lo que en aras de la comodidad (¿pereza?) podríamos prefe-
gramming (Problemas po- rir la utilización de .NET.
tenciales de la programación Sin embargo hay que entender algo muy importante: la incorporación
con CLR) de funciones de .NET no es gratuita, y tiene unas implicaciones claras en
el rendimiento de las consultas, ya que el sistema debe hacer llamadas a otro
Y es que este libro blanco, aun- subsistema para ejecutar estas funciones CLR. De algún modo, estamos
que aprecio los conocimientos de ante un caso similar a la utilización de Interop para utilizar objetos COM
los autores, a los que he tenido el desde .NET. Por lo tanto es imprescindible asegurarse de que la utilización
placer de conocer en persona, refle- de funciones de .NET no perjudica el rendimiento de nuestras consultas.
ja lo que a mi juicio puede ser la Por ejemplo, la expresión regular:
equivocación más grande que pue-
de producirse con esta nueva ver- Return Regex.IsMatch(zipCode, "^\s*(\d{5}|(\d{5}-\d{4}))\s*$")
sión de SQL Server: la separación
total entre dos mundos que deberí-
an entenderse: programadores de Puede sencillamente convertirse a T-SQL como:
bases de datos con T-SQL y pro-
gramadores de .NET. Solo hay que
SELECT CASE
echar un vistazo a los ejemplos de WHEN @zipCode
código propuestos para ver que sólo LIKE '[0-9][0-9][0-9][0-9][0-9]'
un par de páginas contienen ins- THEN 1
WHEN @zipCode
trucciones T-SQL que no sean sim- LIKE '[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'
plemente CREATE. THEN 1

<< ELSE 0
END

Parece más pesado de escribir, pero la ejecución de dicho código desde


T-SQL será más eficiente que una llamada a una función CLR definida den-
tro de SQL Server.
Lo mismo podría decirse sobre la gestión avanzada de cadenas de carac-
<<dotNetManía

teres o de funciones financieras y simples funciones matemáticas.


Sin embargo, donde ya empezamos a entrar en el campo de la progra-
mación CLR, es en cuanto debemos acceder a librerías externas para eje-

33
<< dnm.servidores.sql

cutar procesos complejos, como as Carretera). Las posibilidades po- librería de procedimientos en .NET
criptografía, complejos cálculos drían ser inimaginables para el pro- y los llamaría automáticamente des-
matemáticos y geométricos, o inte- gramador de bases de datos de hoy de la misma base de datos para
gración con procesos externos. en día. garantizar la consistencia de la infor-
Una importante aplicación de las Supongamos que una regla de mación en todo momento.
bases de datos es su utilización con negocio podría ser que las parcelas En aquél proyecto, el corazón del
Sistemas de Información Geográfica que estén a menos de 100 metros de sistema era una aplicación escrita en
(GIS en sus siglas en inglés). A mí me la costa no se pueden vender. Visual Basic, en Yukon posiblemen-
ha tocado lidiar con este problema
durante algunos años, y no es un pro-
blema tan simple como pueda pare-
cer. Utilizar datos geográficos impli-
en un futuro no muy lejano veremos como nuestro
ca utilizar operadores como distan-
cia, superficie, proximidad, etc. horizonte como programadores de bases de datos
Implementar estos operadores en T- se expande enormemente… o cambiaremos de trabajo
SQL es poco menos que imposible.
Diseñar una base de datos que sea
capaz de almacenar eficientemente la
topología de un espacio geográfico,
no es tarea fácil, si queremos restrin- Podríamos llegar a implementar esta te sería un conjunto de assemblies
girnos al terreno del diseño relacio- regla directamente en el mismo tipo escritas en Visual Basic .NET (¿por
nal. Intentar la implementación de de datos, y el sistema se encargaría qué no?)
operadores espaciales mediante la uti- de su cumplimiento independiente- Sé que esto me valdrá el califica-
lización de T-SQL en procedimien- mente del método utilizado para tivo de hereje, pero soy un firme
tos almacenados y funciones defini- modificar estos datos. defensor de Visual Basic .NET
das por el usuario, es poco menos que En un sistema que me tocó dise- como lenguaje de programación
imposible en la mayoría de los casos. ñar para un proyecto en Marruecos .NET por excelencia para progra-
Empresas del mundo GIS, como hace ya algunos años, me tocó inte- madores de bases de datos acos-
ESRI (www.esri.com), han solucio- grar diversas aplicaciones de oficina tumbrados a utilizar hasta ahora
nado el problema mediante la utili- con una base de datos de SQL Transact-SQL, ya que la sintaxis y
zación de librerías externas y la uti- Server (la empecé con 4.21 y la aca- la experiencia de programación se
lización masiva de información codi- bé con 6.5). El proceso de cálculo de asemejan mucho.
ficada dentro de campos BLOB, con programación de tareas era tan com-
una estructura propietaria de la plejo que MS Project no podía eje- Rendimiento
empresa. cutarlo (aún la última versión de este
Ahora imaginemos que podemos producto es incapaz de hacer este Se ha hablado mucho acerca de
crear tipos definidos por el usuario, tipo de cálculos), lo que me obligó la potencial ventaja de rendimiento
como por ejemplo: a crear una aplicación externa que que la utilización de procedimien-
tos de .NET tendría con respecto a
los tradicionales procedimientos
CREATE TYPE Parcela EXTERNAL NAME YukonCLR:Parcela
escritos en Transact-SQL, pero la
realidad aún no ha corroborado estas
Y que este tipo de dato Parcela hacía todo ese cálculo y almacenaba predicciones. El producto se
no solamente tuviera propiedades los resultados en SQL Server, utili- encuentra aún en Beta 1 y es muy
como Superficie, Propietario(s), zando MS Project simplemente para pronto para realizar pruebas de ren-
ValorCatastral, sino que también imprimir bonitos diagramas dimiento.
<<dotNetManía

pudiéramos implementar funciones GANTT. Si hubiera tenido en mis Sin embargo, como dato curioso,
como DistanciaA(@OtraParcela as manos SQL Server Yukon, hubiera podríamos comentar que Microsoft
Parcela) o DiatanciaA(@MiCarretera creado todo el proceso como una había decidido la implementación de

34
<< dnm.servidores.sql

algunos nuevos tipos de datos en .NET y, tras las para gestionar la memoria asignada a procedi-
pruebas preliminares de rendimiento que se han mientos almacenados se verá seriamente mer-
efectuado, se ha decidido su implementación como mada, y el rendimiento del sistema se degrada-
tipos de datos nativos. rá enormemente.
Como criterio general, y basándome en la
información de que dispongo en estos momen-
tos, la llamada puntual a procedimientos de .NET
para ejecutar complejos procesos matemáticos
proporcionará ventajas innegables a los progra-
madores de Yukon. Sin embargo la llamada repe- Microsoft había decidido la implementación
tida, por ejemplo registro a registro, de cortas de algunos nuevos tipos de datos en .NET y,
funciones de .NET desde código Transact-SQL, tras las pruebas preliminares de rendimiento
será en general más lento que la invocación de que se han efectuado, se ha decidido su
esta funcionalidad en Transact-SQL directa-
implementación como tipos de datos nativos.
mente.
Otro factor muy importante a tener en
cuenta es el impacto que la utilización de estos
procedimientos pueda tener en la utilización
de la memoria disponible para SQL Server.
Cada vez que se ejecuta un objeto programa- Conclusión
ble, SQL Server crea un contexto de ejecución
privado para esta llamada en particular, que Las mejoras en SQL Server siempre son bien-
facilite la ejecución simultánea de procedi- venidas, y la posibilidad de programar en dife-
mientos, sin que los datos de estas llamadas rentes lenguajes de programación es algo que lle-
independientes se mezclen. Si quieres obtener vábamos esperando bastante tiempo, y que hace
información sobre estos contextos de ejecu- fácilmente volar nuestra imaginación.
ción, puedes ejecutar la siguiente consulta en Sin embargo, es necesario estudiar seriamen-
SQL Server 2000: te en cada caso las ventajas o desventajas que la
utilización de esta tecnología ofrece para aplicar
la solución de programación más adecuada a cada
SELECT cacheobjtype, objtype, problema.
objid, dbid, dbidexec, uid,
Ahora más que nunca, las empresas deberán
refcounts, pagesused, sqlbytes,
sql aplicar criterios muy estrictos en cuanto a polí-
FROM master.dbo.syscacheobjects ticas de nomenclatura y codificación, para ase-
gurarse que serán capaces de mantener sus apli-
caciones de bases de datos.
Yo he visto sistemas en los que cada contex- Estoy firmemente convencido de las ventajas
to de ejecución ha llegado a tener algunos de esta tecnología, y me muero de ganas de apli-
megabytes de información. Y es que en este con- carla a sistemas reales, pero, sin la adecuada for-
texto de ejecución, SQL Server almacena valo- mación y entrenamiento, esto podría desembo-
res de variables privadas, y estructuras tempora- car en graves problemas para muchos sistemas
les de registros en memoria, como los resultados de bases de datos.
intermedios de algunas consultas complejas. Aquellas empresas que inviertan en formación
Ahora supón que dentro de tus procedi- y detallado análisis de sus sistemas, obtendrán
mientos almacenados creas estructuras com- innegables beneficios de estas nuevas posibilida-
plejas de datos, como objetos DataSet con des de programación. Sin embargo, aquellas
<<dotNetManía

muchos registros. En este caso, el contexto de empresas que sigan potenciando la chapuza y la
ejecución de cada usuario será anormalmente precariedad en la formación de sus técnicos, se
grande, con lo que la capacidad de SQL Server verán encaminadas al fracaso más rotundo.

35
Por Francisco Charte
Torre de Babel
www.fcharte.com

De Everett a Orcas, pasando por Whidbey

Microsoft trabaja en la que será la próxima versión de Visual Studio .NET y la


plataforma .NET, actualmente conocidas con el nombre en clave Whidbey, con
importantes cambios y novedades.

<< Introducción tos: los servicios que ofrece la plataforma, los


lenguajes de programación y el propio entorno
Aunque en ocasiones los nombres en clave de desarrollo, sin olvidar la integración con
escogidos para denominar un producto, en este Yukon, la próxima versión de SQL Server, o la
caso Visual Studio .NET, puedan parecer un sin posibilidad de crear documentos inteligentes
sentido, lo cierto es que tienen su lógica. para Word 2003 y Excel 2003.
El actual Visual Studio .NET 2003 fue cono-
cido antes de su presentación como Everett, NET Framework Whidbey
nombre de una ciudad del estado de Washington
relativamente cercana a Redmond, donde La versión 1.1 de la plataforma .NET, que
Microsoft tiene su cuartel general. Whidbey, apareció conjuntamente con VS.NET 2003, dará
denominación en clave de la versión de Visual paso a nueva versión en la que se ha mejorado
Studio .NET que aparecerá dentro de unos el rendimiento, contemplado el funcionamien-
meses, es el nombre de una isla, algo más lejos to sobre microprocesadores de 64 bits e intro-
de Redmond que Everett. Finalmente, Orcas es duciendo elementos como los tipos genéricos,
el nombre de otra isla, aún más distanciada que nuevos componentes para formularios Windows
la anterior, y se ha elegido como designación y ASP.NET, más funcionalidad en el acceso a
del sucesor de Visual Studio .NET Whidbey que, datos o una característica demandada especial-
según se prevé, será presentado algo antes de mente por los usuarios de Visual Basic conoci-
Windows Longhorn. da como editar y continuar.
Dejando de lado las anécdotas sobre nomen- Hay que tener en cuenta que no todos los
clatura de las mentes de Microsoft, VS.NET lenguajes .NET están obligados a implementar
Whidbey está a la vuelta de la esquina y, a dife- la funcionalidad disponible en la plataforma. La
<<dotNetManía

rencia de lo que ocurrió con VS.NET 2003, posibilidad de efectuar modificaciones al códi-
incorpora un importante número de novedades go de un ensamblado durante la depuración y,
que afectan a prácticamente todos los elemen- sin reiniciar, seguir con la ejecución, forma par-

36
<< dnm.plataforma.net

te de la versión Whidbey de la plata-


forma .NET, pero inicialmente el
equipo de desarrollo de C# no ha
decidido incorporarla al lenguaje,
algo que sí ha hecho el equipo de
Visual Basic .NET al tratarse de una
capacidad muy demandada por los La posibilidad de definir tipos genéricos
usuarios de dicho lenguaje. se ha incluido, no en el compilador de un determinado
La posibilidad de definir tipos lenguaje, sino al nivel de la propia plataforma.
genéricos, descrita en la especifica-
ción 2.0 del lenguaje C# hecha
pública recientemente, se ha inclui-
do no en el compilador de un deter-
minado lenguaje sino al nivel de la
propia plataforma. Esto significa
que cualquier lenguaje .NET pue- FTP; los nuevos atributos que faci- software sigue siendo el habitual PC
de contemplar el uso y creación de litan la integración con el depura- con Windows. No es extraño, por
tipos genéricos y, de hecho, tanto dor para mejorar la visualización ello, que la biblioteca de clases .NET,
C# como C++ y Visual Basic .NET de datos; o la facultad de crear en- o BCL (Base Class Library), incorpo-
aprovecharán esta nueva capacidad. samblados con tipos internos que re no pocas novedades en el campo
Al ámbito System.Collections se son accesibles para determinados de los formularios Windows.
ha añadido un nuevo subámbito, ensamblados indicados mediante el En el ámbito System.Windows.
llamado Generic, en el que encon- atributo InternalsVisibleTo, evi- Forms, que contiene la mayoría de
tramos clases genéricas para las tando así tener que hacer públicos las clases relacionadas con aplica-
estructuras de datos más habitua- tipos que sólo deberían ser visibles ciones clientes que se ejecutan en
les, como son las listas, colas, pilas en un ensamblado amigo pero no Windows, encontramos una serie de
y diccionarios. A diferencia de otras de terceros. nuevos componentes que, en su
soluciones, como es la conocida mayor parte, contribuyen a mejorar
STL (Standard Template Library) Formularios Windows el aspecto visual de los programas.
específica de C++, estos tipos gené- Ejemplos de estos componentes son
ricos o plantillas pueden ser utiliza- A pesar del innegable crecimien- FlowLayoutPanel y
dos desde cualquier lenguaje .NET, to de las aplicaciones Web, aquellas TableLayoutPanel, que simplifican
lo cual supone un gran avance. que usan como motor para su fun- la distribución de los componentes
Aunque en los puntos siguientes cionamiento la infraestructura propia en un formulario que se adapta auto-
me centraré en lo que podrían con- de Internet como son el protocolo máticamente a los cambios de reso-
siderarse las novedades más impor- HTTP y los navegadores, a día de hoy lución; SplitContainer, mediante
tantes que introduce la versión la mayor plataforma de ejecución de el que se facilita la configuración de
Whidbey de la plataforma .NET,
existen muchas otras que, sin consi-
derarlas menores, posiblemente ten-
drán una aplicación más específica y
reducida, como son la existencia de
la nueva clase SerialPort en
System.IO.Ports, que podemos uti-
lizar para acceder a los puertos serie
del ordenador y transmitir o recibir
<< <<dotNetManía

datos; la incorporación en el ámbi-


to System.Net de clases que per-
miten la conexión con servidores

37
<< dnm.plataforma.net

líneas de división de paneles en una acceso directo al menú Inicio de me parecen de mayor importancia.
ventana; ActiveDocumentHost, Windows y una opción de desinsta- Diseñar aplicaciones Web nunca
útil para alojar en una aplicación lación. Las aplicaciones, además, habrá resultado tan fácil y rápido como
objetos ActiveX como pueden ser los pueden ser configuradas para detec- con la llegada de la nueva versión de
documentos de Office; WebBrowser, tar automáticamente la existencia ASP.NET gracias a elementos como
un cliente Web en un control, etc. de actualizaciones en el servidor, las páginas maestras, la adición de cua-
También se han mejorado las barras impidiendo así que los usuarios renta y cinco nuevos componentes con
de botones y herramientas para que empleen una versión desfasada de la una apariencia fácilmente adaptable
aprovechen los temas de Windows solución. por temas y la incorporación de ele-
XP y tengan una apariencia similar En el entorno de Visual Studio mentos funcionales comunes como
a las barras de Microsoft Office. .NET existe una nueva opción de son la gestión de los miembros de un
Además de los componentes pro- publicación que abre un asistente sitio y sus preferencias.
piamente de interfaz, hay otros que —en la figura 1 se ve uno de sus Todos los componentes de for-
también influyen en la funcionalidad pasos— mediante el que se facilita mularios Web, aquellos que tienen
de las aplicaciones Windows. De ellos
destacamos los nuevos GridView y
DataContainer, controles de vincu-
lación a orígenes de datos, y el com-
ponente BackgroundWorker que
hace posible la ejecución de tareas en
un hilo independiente del principal
simplemente respondiendo a un even-
to, sin necesidad de crear un objeto
Thread y gestionarlo manualmente.
Figura 2.Visual Studio .NET Whidbey
Uno de los mayores problemas dispone de nuevos asistentes para la
que plantean las aplicaciones Win- creación de sitios Web
dows, en contraposición a las aplica- Figura 1. El asistente
para publicación de aplicaciones
ciones Web, es la dificultad que plan-
tea su distribución, instalación en los
clientes y posterior mantenimiento,
especialmente en empresas grandes la preparación del proyecto para que el prefijo <asp:>, son capaces de
con muchos puestos y diferentes loca- sea accesible para los clientes. generar HTML, cHTML, WML,
lizaciones geográficas. La versión XHTML, etc., posibilitando el acce-
Whidbey de la plataforma .NET solu- so a las aplicaciones desde práctica-
Formularios Web
cionará este problema a través de una mente cualquier dispositivo móvil
técnica que Microsoft ha denomina- Si importantes son las mejoras actual, tales como los Pocket PC o
do ClickOnce. para el desarrollo de aplicaciones teléfonos de última generación.
Mediante ClickOnce es posible cliente basadas en formularios Las nuevas posibilidades se ven
alojar la distribución de una aplica- Windows, no lo son menos las des- reflejadas en el entorno de VS.NET
ción en un servidor HTTP, un ser- tinadas a simplificar y optimizar la que, como se aprecia en la figura 2,
vidor FTP o una unidad comparti- creación de soluciones ASP.NET, en dispone de asistentes específicos
da de red, de tal manera que los especial las que emplean los ele- para la creación de sitios Web públi-
potenciales clientes no tienen más mentos conocidos como formularios cos, aplicaciones para intranets, etc.
que usar una dirección UNC o Web. No me extenderé mucho en Por cierto, para desarrollar apli-
URL, por ejemplo http://servi- este apartado y remito al lector al caciones Web ya no necesitaremos
dor.empresa.com/MiAplicacion, artículo monográfico que, sobre el las extensiones de FrontPage, es más,
<<dotNetManía

para conseguir una instalación auto- tema, escribirá Iván González en un ni siquiera será preciso disponer de
mática en su ordenador, incluyen- próximo número, por lo que men- IIS ya que ASP.NET incorpora aho-
do la adición del correspondiente ciono exclusivamente los puntos que ra su propio servidor Web exclusivo

38
<< dnm.plataforma.net

para desarrollo, un servidor que se inicia al abrir- mos normalmente en una aplicación para repre-
se VS.NET y deja de estar disponible al cerrar el sentar desde un punto de vista lógico los ele-
entorno. mentos sobre los que actuamos, como pueden
Acceso a datos ser clientes, pedidos, transacciones, etc. De esta
forma se consigue un nivel de abstracción muy
La introducción de ADO.NET en la prime- superior al que teníamos hasta el momento, lo
ra versión de la plataforma supuso, respecto a cual redunda en menos trabajo para conseguir el
otros modelos de acceso a datos, una cierta revo- mismo objetivo.
lución por la flexibilidad ofrecida a la hora de Además de las mencionadas, existen muchas
operar sin conexiones persistentes y la existencia otras mejoras, que no cambios, en ADO.NET,
de un esquema, basado en componentes de cone- como puede ser el acceso asíncrono a los datos
xión, adaptadores y conjuntos de datos, muy con- que evitan el bloqueo de la interfaz de usuario,
sistente. El mayor inconveniente es que este la posibilidad de efectuar actualizaciones por
esquema implicaba un necesario conocimiento lotes, la existencia de nuevos tipos de datos y la
de la estructura de los datos y el origen en que integración con Yukon o la mejora en el rendi-
residían, debiendo elegirse un conjunto de obje- miento de transferencia de resultados gracias a
tos u otros dependiendo de ello. las optimizaciones introducidas en clases como
En la versión Whidbey de ADO.NET se ha DataSet. También se ha eliminado la depen-
hecho especial hincapié en facilitar la mayoría de dencia de los MDAC (Microsoft Data Access
las operaciones sin perder un ápice de esa flexi- Components), simplificando así la distribución de
bilidad, gracias a la incorporación de un conjun- las aplicaciones.
to de clases genéricas, como son DbConnection
o DbTable, independientes del proveedor de
datos, así como la existencia de un modelo de fac-
toría que se encarga de crear los objetos especí-
ficos y facilita operaciones de enumeración de
proveedores y servidores disponibles. No ten- En la versión Whidbey de ADO.NET
dremos, por tanto, que saber de antemano si los se ha hecho especial hincapié en facilitar la mayoría
datos residen en un servidor SQL Server u Oracle
de las operaciones sin perder un ápice
para, en consecuencia, elegir un grupo de clases
u otras. de flexibilidad.
La clase DbTable en particular, descendien-
te de DataTable y base de clases más específicas
como OracleDataTable o SqlDataTable, cuen-
ta con todos los elementos necesarios para conec-
tar con un origen de datos, recuperar filas, intro-
ducir cambios y enviarlos de vuelta sin necesidad Lenguajes Whidbey
de crear todos los objetos que eran precisos en
versiones previas. La versión Whidbey de la plataforma .NET
Gracias a los denominados ObjectSpaces, apli- traerá consigo, además de cambios en la BCL,
cables en principio sólo a SQL Server 2000 y nuevas versiones de los compiladores de Visual
Yukon, será posible prescindir durante el desa- Basic .NET, C# y Visual C++ .NET. Todos ellos
rrollo del conocimiento de la estructura física de contemplan aspectos como la definición y uso de
los datos y detalles como la conexión o trata- tipos genéricos, a partir de diferentes sintaxis,
miento de filas individuales. El nuevo ámbito tema que merece un tratamiento aparte para ser
System.Data.ObjectSpaces contiene una serie descrito como se merece. También hay algunas
<<dotNetManía

de clases que, a partir de un esquema de corres- innovaciones más específicas.


pondencias, permite operar con objetos persis- El compilador de Visual Basic .NET aporta
tentes, entendiendo por objetos aquellos que usa- a los programas un objeto, llamado My, que faci-

39
<< dnm.plataforma.net

lita el acceso a la información y recursos de la


aplicación en curso, el usuario que la está eje-
cutando, el ordenador en el que está ejecután-
dose, etc. De esta manera, se reduce la cantidad
de código que los programadores que eligen este
lenguaje tienen que escribir, mejorando su ren-
dimiento. Los elementos principales de este
objeto son: My.Application, My.Computer,
My.Forms, My.User y My.WebServices.
Otras extensiones al lenguaje Visual Basic
.NET son la adición de tipos sin signo, la posi-
bilidad de definir tipos parciales, sobrecargar ope-
radores y la existencia de algunas nuevas ins-
trucciones como Continue y Using o el nuevo
operador IsNot.
Figura 3. Interfaz de acceso a datos generada
Los cambios al lenguaje C# están documen- mediante arrastrar y soltar
tados en la segunda versión de la especificación
de este lenguaje, hecha pública por Microsoft a
finales de octubre pasado y que puede obtenerse versión definitiva encontremos incluso más
de http://msdn.microsoft.com/vcsharp/team/ posibilidades.
language . Además de los tipos genéricos, C# per- Algunas de las ventanas de este nuevo IDE se
mite ahora definir tipos parciales, métodos anó- aplican por igual a varios o todos los lenguajes.
nimos y simplifica la implementación de tipos Podemos, por ejemplo, arrastrar una tabla desde
con iteradores. el explorador de servidores hasta un formulario y
En cuanto a C++, posiblemente lo más inte- obtener una interfaz completamente funcional,
resante sea la inclusión de la sintaxis C++/CLI indistintamente de que trabajemos con C# o
para escribir código .NET, sintaxis actualmente VB.NET. Además de incluir en el contenedor
en fase de estandarización por parte del ECMA
y que sustituirá a la extensión __gc para designar
clases .NET que, no obstante, seguirá estando
disponible. El objetivo es contar con una sinta-
xis estándar, basada en modificadores como ref
y operadores específicos, para operar desde C++
con clases .NET. También es destacable la inclu-
sión de un compilador Visual C++ .NET de 64
bits, una nueva versión de la STL y la posibili-
dad de crear aplicaciones para dispositivos móvi- Figura 4. Las etiquetas inteligentes
en el editor de VB.NET simplifican
les en C++ nativo. la corrección de errores

Visual Studio .NET Whidbey


todos los objetos necesarios, el entorno muestra
Tanto los servicios de la BCL como las posi- unas etiquetas inteligentes que facilitan el acceso
bilidades de cada lenguaje en particular tienen inmediato a las funciones más habituales. En la
su reflejo directo en el entorno de trabajo, el figura 3, por ejemplo, se aprecia la interfaz pro-
IDE de VS.NET, más adaptable y productivo ducida al arrastrar a un formulario Windows la
que en cualquier otra versión previa. Hemos de tabla Employees de la base de datos Northwind,
<<dotNetManía

apuntar, no obstante, que trabajamos con una así como el menú adjunto a la etiqueta inteligen-
versión alpha de dicho entorno, que ni siquie- te con opciones que permiten añadir un formu-
ra una beta, por lo que es de esperar que en la lario de detalle o modificar los parámetros de éste.

40
<< dnm.plataforma.net

Figura 5. Globo informativo


con ayuda sobre una excepción

Figura 6. El editor de VB.NET facilita el acceso a fragmentos de códigos


prefabricados

La idea de las etiquetas inteli- aparecen con un fondo distinto y a


gentes, tomada de Microsoft Office, los que puede accederse de manera
se aplica en otros contextos. El edi- secuencial mediante el tabulador. En
tor de VB.NET, por ejemplo, va la figura 7, por ejemplo, puede ver-
analizando el código a medida que se que hay dos parámetros de este
lo editamos y, en caso de detectar un tipo en un fragmento de código Figura 7. Los esqueletos de código cuentan
error, subraya como lo haría Word recién insertado: el nombre de la con elementos que debemos sustituir
al encontrar un fallo ortográfico. Lo variable y el nombre del archivo a
más interesante es que al situar el leer.
puntero sobre ese error, como se ha En contraposición al de VB.NET,
hecho en la figura 4, el editor nos el editor de código C# no nos ofre-
ofrece una serie de correcciones. ce fragmentos de código sino fun-
También se ha mejorado la infor- ciones de refactoring que muchos
mación ofrecida por el depurador echábamos en falta. Podemos selec-
cuando la ejecución se detiene por cionar un grupo de sentencias y gene-
alguna excepción, como puede ser rar un método a partir de ellas,
la imposibilidad de abrir un archi- encapsular el acceso a una variable, Figura 8. El editor de C# dispone
de opciones de refactoring
vo, ofreciéndose posibles soluciones cambiar el nombre de un miembro,
y acciones inmediatas que son acce- etc., todo ello lógicamente propa-
sibles en forma de enlaces. La figu- gando la modificación al nivel del
ra 5, por ejemplo, corresponde al proyecto. De esta forma es más fácil
globo informativo que aparece cuan- ir mejorando el código a medida
do intenta abrirse un archivo y éste que se edita y trabaja en él, incorpo-
no existe. rando algunas de las ideas de XP
El editor de VB.NET tiende a (Extreme Programming).
ahorrar la mayor cantidad de escri- Además de a los editores, tam-
tura de código posible, incorporan- bién se han añadido otras posibili-
do elementos como una opción del dades a los diseñadores Web y al pro-
menú contextual que da acceso a frag- pio entorno en sí mismo. Los archi-
mentos de código prefabricados y vos se guardan automáticamente
agrupados por categorías (véase figu- cada pocos minutos, pudiendo ser
ra 6). Estos esqueletos de código recuperados en caso de una caída del
genérico cuentan, además, con ele- sistema. Podemos copiar y pegar la
<<dotNetManía

mentos que deben sustituirse manual- ayuda sobre parámetros que apare-
mente para ser adecuados a cada ce normalmente en una etiqueta flo-
necesidad particular, elementos que tante, así como establecer marcas y

41
<< dnm.plataforma.net

ver rápidamente dónde hemos introducido cam- SOA (Service Oriented Applications). Este diseña-
bios gracias a las líneas de revisión. dor definirá, mediante el uso de diagramas, la
Si trabajamos con VB.NET, durante la depu- estructura lógica de los datos y sus interacciones
ración podemos introducir modificaciones en el con los componentes, siendo capaz de generar
código y continuar con la ejecución sin necesi- interfaces y clases, así como de efectuar ingenie-
dad de reiniciarla. Esta característica, descrita al ría inversa sobre el código ya existente.
inicio del artículo, está implementada en el núcleo Hay que destacar que estos diseñadores que
de la plataforma, pero, por ahora, tan sólo se ha aparecerán en VS.NET Whidbey son totalmen-
aprovechado con Visual Basic. te independientes de Visio, un producto que
El anclaje de las distintas ventanas que com- seguiría manteniéndose como opción para inge-
ponen el entorno resulta ahora más sencillo. Al nieros del software.
arrastrar una ventana aparecen una serie de ele-
mentos semitransparentes que nos indican el pun- Resumiendo
to en el que hemos soltar para anclar en ese mar-
gen, al tiempo que en la línea de estado obtene- A pesar de que, como ya he comentado, nos
mos indicaciones adicionales. encontramos ante una versión muy preliminar
de lo que serán la plataforma .NET y VS.NET
Whidbey, podemos afirmar sin dudarlo que se tra-
tará de una revisión realmente importante, mucho
más de lo que fue Everett. La integración con
Yukon, las mejoras en el desarrollo para disposi-
tivos móviles o la posibilidad de crear aplicacio-
nes para Office harán de este producto la herra-
mienta de desarrollo universal.
Si contamos con la versión preliminar de
Longhorn y el correspondiente SDK, VS.NET
Whidbey también nos servirá como avanzadilla
Figura 9. Elementos visuales que facilitan para ir conociendo lo que nos ofrecerá Orcas, el
el anclaje de las ventanas sucesor de Whidbey y que estará capacitado para
aprovechar el nuevo WinFX al completo: Avalon,
Indigo y WinFS. Como se aprecia en la figura
10, la integración del SDK con Whidbey nos
permite ir ya abriendo boca.
Diseño de servicios Web
¿Cómo es posible que en un artículo sobre
Microsoft .NET no haya aparecido aún el tér-
mino servicio Web? No es que me haya olvidado
de esta parte, que lógicamente sigue estando pre-
sente en VS.NET Whidbey, sino que la he deja-
do para el final sencillamente porque aún es difí-
cil evaluar las novedades dado que no se encuen-
tran disponibles en la versión alpha que Microsoft
ha distribuido.
No obstante, según la información facilitada
por el equipo de ASP.NET la versión Whidbey Figura 10. El SDK de Longhorn añade
<<dotNetManía

nuevos tipos de proyecto a VS.NET


elevará el desarrollo de servicios Web al nivel de Whidbey
RAD, facilitando herramientas de diseño tipo

42
entra en otro concepto de

di
se www.eride.net
ño
grupo éride
diseño gráfico • diseño web • diseño editorial
c/collado bajo.13 28053 madrid
diseño gráfico • diseño web • diseño editorial
Tel.: 91 477 48 85

✃ Suscripción a dotNetManía
Deseo suscribirme a dotNetManía por un año (11 ejemplares) y beneficiarme de la oferta del 10% de descuento por un importe total de 60
para España y Portugal; o por 75 para el resto de Europa; o por 120 para el resto del mundo (IVA incluido).
La suscripción se entiende a partir del número actual.

IMPORTES VÁLIDOS HASTA NUEVA OFERTA


DATOS

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 Caixa
Número de cuenta 2100 4315 48 2200014696
(Indique su nombre en la transferencia)

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

❑ Tarjeta de crédito
❑ VISA ❑ MASTERCARD ❑ AMERICAN EXPRESS
Número de su tarjeta:
Fecha de caducidad: / (Imprescindible)

Firma y sello (imprescindible)

a de de 20

Usted autoriza a la mecanización de estos datos. El responsable y destinatario de éstos es Netalia, S. L. Usted tiene derecho a acceder a sus datos, modifi-
carlos y cancelarlos cuando lo desee. Sus datos no serán cedidos en ninguna de las formas posibles a terceras partes y no se utilizarán más que para el buen
funcionamiento de su suscripción a la revista dotNetMania y para informarle de las actividades comerciales que realice la editorial Netalia, S. L. Si no desea
recibir información comercial de esta empresa marque la casilla siguiente ❑
Por Juan Torres
Antigoto
www.indesia.com/AniGoto

Orientación a Objeto. Modelos en UML


nen tanto estructuras de datos como comporta-
En este artículo vamos a intentar intro- mientos, los programas son, por tanto, una serie
ducir el paradigma de la orientación a obje- de objetos interaccionando entre sí, enviando y
to, distinguiendo entre lo que es la pro- recibiendo mensajes (cada uno de esos objetos
gramación, el desarrollo o el modelado tendrá una parte de datos y una funcional que
determinará su comportamiento).
orientado a objeto. Vamos a hacer un Bueno, todo esto está muy bien desde el pun-
recorrido a través de las diferentes meto- to de vista teórico, pero ¿qué supone para el pro-
dologías basadas en objetos (OMT, UML, gramador? Pues supone darle un mayor énfasis
Métrica v3…) y los lenguajes de progra- a las estructuras de datos que manejamos en
mación que implementan éstos concep- nuestros programas, ya que éstas soportan
mucho mejor las variaciones en los requisitos
tos (C++, C#, VB.Net, Eiffel…). Y final- que la funcionalidad que las rodea.
mente nos pararemos a hacer una prime- Poniendo un ejemplo: Si nos enfrentáramos
ra aproximación al Lenguaje Unificado de con la tarea de desarrollar un pequeño progra-
Modelado (UML). ma para gestionar la información relativa a unos
alumnos, sus profesores, etc.:

<< Comencemos preguntándonos en qué consiste la


Orientación a Objetos en el desarrollo de softwa-
re. Pues bien, lo primero es decir que estas téc- El punto de vista funcional
nicas suponen una nueva forma de pensar, y no
digo “nuevas” porque acaben de llegar, pues sus
ve el software como un sistema
comienzos datan de los 70, sino porque supo- que proporciona una o varias
nen un cambio en los hábitos de trabajo de funciones al usuario…
muchos desarrolladores, que durante este tiem-
po han seguido trabajando siguiendo el para-
digma funcional. Pero ¿qué diferencia a estas
dos formas de pensar? En realidad es sencillo.
El punto de vista funcional ve el software como • Desde un punto de vista funcional, empezare-
un sistema que proporciona una o varias fun- mos dividiendo el trabajo creando módu-
ciones al usuario; los programas son módulos de los que se encargan de “grabar”, “modifi-
código que interactúan usando datos para llevar car”, “borrar”, “mostrar”… datos. Haremos
<<dotNetManía

a cabo un fin. Por el contrario, desde el punto diagramas de flujos para representar estas
de vista orientado a objeto, el software se orga- funciones y en definitiva agruparemos las
niza como una colección de objetos que contie- funcionalidades para ir creando subpro-

44
<< dnm.arquitectura.uml

gramas. Vemos cómo lo que más nos impor- a Objetos. Para entender su significado debemos
tará son los verbos del enunciado de los entender qué es Modelar. Según la Real Academia
requisitos para transformarlos en trozos de de la Lengua Española, un modelo es “un esque-
código (algoritmos). ma teórico de una realidad compleja, que se elabora
• Desde un punto de vista orientado a obje- para facilitar su comprensión y el estudio de su com-
to, empezaremos estudiando los objetos que portamiento”. Por tanto, modelar quiere decir
aparecen en nuestro problema. En este diseñar esos esquemas teóricos para facilitarnos
caso, el objeto “alumno”, el objeto “profe- la comprensión del entorno de nuestro problema,
sor”, “asignatura”… y viendo la forma en si además seguimos la filosofía antes descrita esta-
que éstos interactúan y se relacionan. remos llevando acabo un Modelado Orientado a
Usaremos diagramas de objetos para repre- Objeto (por hacer un símil, modelar es realizar los
sentarlo todo y las funciones aparecerán planos de un edificio antes de enfrentarnos a su
como el comportamiento o interrelación construcción).
de dichos objetos. Lo que más nos impor- En este artículo vamos a referirnos siempre a
tarán serán los sustantivos del enunciado orientación a objeto en general, aunque de lo que
de los requisitos. más vamos a hablar es de metodologías de mode-
lado orientado a objeto que podamos usar para
llevar a cabo un desarrollo completamente orien-
Diferencias entre programación,
tado a objeto.
desarrollo y modelado orientados
a objetos Metodologías Orientadas a Objeto
Después de haber intentado diferenciar ambas Han sido muchos los autores que han pro-
formas de pensar, debemos estudiar las diferen- fundizado en la orientación a objeto. Creando
cias entre programación, metodologías, desa- reglas, técnicas, diagramas, etc., que facilitan en
rrollo y modelado orientados a objeto. Todos gran medida la tarea de modelar. De la recopi-
estos temas se refieren en realidad a lo mismo, lación y organización de éstas han surgido dife-
pero vistos desde diferentes enfoques o puntos rentes metodologías a lo largo de estos años
de vista. El adjetivo “Orientado a Objeto” se colo- (desde los 80). Podemos nombrar muchas como
ca a cualquier actividad relacionada con el desa- la Object Modeling Technique (OMT, Técnica de
rrollo de software que siga el punto de vista antes Modelado a Objeto), la OMT-2, el método
mencionado. El tema más conocido es la Pro- Object Oriented Software Engineering (OOSE,
gramación Orientada a Objeto, que consiste en el método de ingeniería del software orientado a
uso y creación de lenguajes de programación que objeto) o el Unified Modeling Language (UML,
implementen herramientas que permitan codi- Lenguaje Unificado de Modelado). De autores
ficar los programas manteniendo esta filosofía. como James Rumbaugh, Grady Booch, Ivar
Lógicamente, el ciclo de vida del software se com- Jacobson entre otros. Todas ellas son útiles a
pone de muchas más etapas, y en todas ellas la hora de enfrentarse con un desarrollo, aun-
podríamos usar esta forma de pensar. Por lo que que lógicamente las hay más y menos popula-
también podemos hablar de Análisis Orientado a res. La popularidad no siempre quiere decir
Objeto, Diseño Orientado a Objeto, etc. Sólo cuan- mayor calidad, pero en este caso supone un valor
do utilicemos esta filosofía durante todas las fases añadido. Y digo esto porque el ser más conoci-
podremos hablar de Desarrollo Orientado a Objeto. da y por lo tanto usada entre la comunidad de
Cuando hablamos de metodologías orientadas a desarrolladores (analistas, programadores, etc.)
objeto nos referimos a las reglas, técnicas, dia- supone que la documentación generada es más
gramas, etc., descritos por diferentes autores, y convencional (se atiene a las normas mayorita-
<<dotNetManía

que nos permiten llevar a cabo ordenadamente riamente observadas) y porque además encon-
nuestro trabajo; siempre desde esta forma de pen- traremos más personal para continuar o parti-
sar y trabajar. Y por último, el Modelado Orientado cipar en ellos fácilmente.

45
<< dnm.arquitectura.uml

De entre ellas y hasta hace muy rentes administraciones públicas.


poco tiempo se consideraba que la Aunque Métrica no es propiamente
OMT (de James Rumbaugh) era una metodología orientada a obje-
la más utilizada en el mundo profe- to (su versión 2 sólo contemplaba el
sional y universitario. Pero a media- enfoque funcional) en su versión 3
dos de los 90 los tres autores de los deja a la elección del equipo de tra-
métodos con mayor aceptación bajo el uso de técnicas orientadas a
(James Rumbaugh, Grady Booch objeto o no, para llevar a cabo sus
e Ivar Jacobson) se encuentran en actividades. Por tanto, podemos
la compañía Rational Software usar el Lenguaje Unificado de Mode-
Corporation, y empiezan a traba- lado como notación para dar un
jar en la reunificación de dichos enfoque orientado a objeto a los
métodos. De esta tarea surge la pri- proyectos realizados bajo Métrica.
mera versión del Lenguaje Unificado
de Modelado (UML). Dicho método Lenguajes Orientados
ha sido aceptado por la Object a Objeto
Management Group (OMG, es un
consorcio sin ánimo de lucro que Un punto muy importante a la
produce y mantiene especificacio- hora de valorar esta nueva forma de
nes, y está formado por la mayor adentrarnos en un proyecto de desa-
parte de las empresas y organismos rrollo son las herramientas softwa-
internacionales del sector, consultar re que tenemos a nuestra disposi-
http://www.omg.org) como están- ción. Y en este caso es una razón
dar para la definición de un lengua- más para que la orientación a obje-
je y notación de modelado. Por tan- to resulte atractiva, ya que son innu-
to, parece lógico entender que ésta merables las herramientas CASE,
es la metodología con mayor futuro lenguajes, entornos de desarrollo y
de continuidad y sobre la que inte- demás utilidades, que han ido sur-
resa centrar los esfuerzos formati- giendo alrededor de este mundo.
vos. Por ello será la que trataremos Concretamente vamos a parar-
en mayor medida y cuya notación nos a estudiar los lenguajes de pro-
usaremos para los diagramas o figu- gramación más importantes de los
ras de este artículo. considerados “Orientados a Objeto”,
Cabe hacer un inciso en este y las características que debe cum-
punto para destacar que para el sec- plir un lenguaje para serlo.
tor de la Ingeniería y el Desarrollo Lo primero es indicar que, aun-
del Software en España, este repa- que un proyecto haya sido diseñado
…desde el punto de vista so metodológico quedaría incom- usando metodologías orientadas a
orientado a objeto, pleto si no mencionáramos a objeto, el lenguaje de programación
el software se organiza Métrica. Métrica es un método usado para implementarlo no tiene
desarrollado por el Consejo Su- porqué serlo. Hay mecanismos para
como una colección perior de Informática del Ministerio codificar en un lenguaje tradicional
de objetos que de Administraciones Públicas toda la lógica generada. No obstan-
contienen tanto (http://www.csi.map.es), integrado te, usar un lenguaje que venga pro-
en el Plan General de Garantía de visto de características orientadas a
estructuras de datos
Calidad aplicable al desarrollo de objeto nos facilitará notablemente
<<dotNetManía

como comportamiento. software, que ofrece las pautas de la tarea de generar el código. Y digo
trabajo y documentación a la hora bien “generar” y no “crear” el códi-
de construir sistemas para las dife- go, porque tras un buen análisis y

46
<< dnm.arquitectura.uml

diseño orientado a objeto, gran par- Xerox Parc). Mucha gente lo con- jeto a uno procedimental es el
te de las líneas de nuestro programa sidera el primer lenguaje orientado Pascal. El producto que más popu-
serán automáticas. Pero ¿qué carac- a objeto. Smalltalk no es sólo un len- laridad le ha dado ha sido el
terísticas debe cumplir un lenguaje guaje, sino todo un entorno de desa- Borland Delphi, en el que se unirían
para ser considerado un verdadero rrollo, prácticamente un sistema un compilador de Object Pascal,
Lenguaje Orientado a Objeto? operativo que corre encima de una una buena librería de clases y un
Las características mínimas son "máquina virtual". Y todo en su potente entorno de desarrollo de
las siguientes: entorno son a su vez objetos que última generación.
podemos manejar, reutilizar y exten-
• Debe permitir el uso de objetos y der. Se ha usado durante muchos Java
clases de objetos. El lenguaje debe años sobre máquinas Digital, IBM,
proveer una sintaxis para las etc., y otros muchos lenguajes lo han Este es uno de los lenguajes orien-
clases (como plantillas para cre- tomado como modelo. tados a objeto más populares en la
ar objetos), que permita agru-
par sus datos y funcionalidad, class name Ventana
y mecanismos de instanciación superclass Object
(creación) de objetos a partir instance variables
v1 v2 v3 v4
de éstas.
• Debe permitir la creación de rela- class methods
ciones entre los objetos. Existirán crearA: unPunto deAnchura: ancho deAltura: alto
mecanismos sencillos que per-
instance methods
mitan plasmar las relaciones anadirCuadradoEn: unPunto deAnchura: ancho deAltura: alto
entre objetos que aparecen en
el análisis.
• Deben existir mecanismos espe- Fuente 1. Ejemplo de código en SmallTalk

ciales para la herencia entre obje-


tos. La herencia consiste en cre- C++
ar jerarquías de clases de obje-
tos que conservan las caracte- Este lenguaje fue inventado por actualidad. Proviene de un desarro-
rísticas de sus predecesores, y Bjarne Stroustrup (AT&T Bell llo de la empresa Sun Microsystems
debe ser posible expresarlo. Laboratories), como una evolución y es un claro sucesor de C++. Se
• Debe disponer de otras carac- del lenguaje C. Debido a la amplia intentó superar las limitaciones de
terísticas como el Polimorfismo, difusión del C (del que procede), del complejidad y oscuridad que éste
Encapsulamiento, Bibliotecas hecho de no ser un lenguaje propie- tenía, se le dotó de una importante
de Clases, etc. Cualquier len- tario (eso quiere decir que existen ver- biblioteca de clases y todo ello se unió
guaje puede cumplir uno o siones que trabajan sobre plataformas a una nueva forma de trabajar. Java
varios de estos requisitos, con lo diversas e incluso variantes gratuitas) se compila a un código intermedio
que será más o menos orienta- y del apoyo del sector, se ha conver- independiente de la máquina sobre
do a objeto. tido durante muchos años en el refe- la que corre, y es una máquina vir-
rente en lo que ha Programación tual la que se encarga de generar códi-
Ahora vamos a dar una lista de Orientada a Objeto se refiere. Podemos go para la plataforma concreta. Esta
algunos lenguajes considerados to- citar varias versiones comerciales característica le ha dotado de unas
talmente orientados a objeto. como Microsoft Visual C++, Borland capacidades de portabilidad y reuti-
C++ Builder, Objetive-C, etc. lización de código entre plataformas
Smalltalk inusitadas. Además le hacen perfec-
Object Pascal to para su uso a través de redes de
<<dotNetManía

Este lenguaje se diseñó en los ordenadores y, por supuesto, de


años 70 en el Palo Alto Reasearch Otro lenguaje surgido de aña- Internet que ha sido su mayor mer-
Institute de Xerox (conocido como dir características orientadas a ob- cado.

47
<< dnm.arquitectura.uml

C# to de desarrollo de software, sin im-


portar el tamaño o tipo concreto de
Otro sucesor de C++ recién lle- proyecto.
gado. Se trata del nuevo lenguaje Sirve para visualizar porque sus
El modelado en UML
diseñado por Microsoft dentro de su actividades nos crearán un esque- tiene tres vertientes,
nueva tecnología .NET. Ésta está ma mental adecuado del problema el Modelado Estructural,
basada en el uso de una máquina vir- a tratar y de la solución a desarro- el de Comportamiento
tual al igual que Java, pero llevando llar; permite especificar porque ob- y el Arquitectónico.
el concepto a una escala superior. tendrá resultados precisos y com-
Todos los lenguajes .NET se com- pletos, no arbitrarios; decimos que
pilan al mismo lenguaje intermedio, sirve para construir porque de sus
y el .NET Framework se encarga de especificaciones podremos pasar
generar el código para cada máqui- casi automáticamente (con genera-
na. Por lo tanto supone portabilidad dores de código en muchos casos) Modelado Estructural
de plataforma y de lenguaje. Además a implementaciones en lenguajes
de este lenguaje, Microsoft ha mejo- orientados a objeto como C++ o En él estudiaremos los objetos que
rado su producto más popular, Java; y, a parte de todo esto, los dia- tienen relevancia para nuestro pro-
Visual Basic, dotándole de verdade- gramas, esquemas, etc. que genera- blema. Éstos serán los conceptos
ra orientación a objeto en su versión remos se incorporarán como docu- importantes para nuestro sistema. Por
Visual Basic .Net. mentación eficaz de todo el proce- ejemplo, para el problema de desa-
Otros lenguajes orientados a so de desarrollo. rrollar un programa para la gestión
objeto pueden ser Eiffel, Ruby, El modelado en UML tiene tres de un Centro de Estudios los concep-
CLos, etc., aunque tienen menor vertientes, el Modelado Estructural, tos Alumno Antonio, Aula numero 5,
difusión. el de Comportamiento y el Ar- Asignatura de Matemáticas, Profesor
Don Javier, Curso Primero, Nota Sus-
using system; penso, etc. pueden ser los relevantes.
Debemos así mismo agrupar los obje-
namespace Dotnetmania.OrientacionObjeto.propiedades {
tos en clases, las cuales definen las
// Clase Alumno características comunes de un grupo
class Alumno{ de objetos.
De acuerdo con el ejemplo ante-
// Propiedades
private string nombre, apellidos; rior, podemos agrupar a todos los
// Metodos o funciones de comportamiento alumnos dentro de un grupo de ob-
public Alumno() {} jetos o clase (denominada Alumnos,
public string Nombre { que encierra a todas las característi-
get { cas o propiedades comunes a dichos
return nombre; objetos). Existirían más clases como
}
Profesores, Cursos, Asignaturas, etc.
set {
nombre = value; Para cada clase debemos identificar
} a todas las características de sus obje-
} tos y el comportamiento que éstos
}
tendrán. Es decir, cada clase lleva
Fuente 2. Ejemplo de código en C# consigo las propiedades (los datos)
y los métodos (las funciones) que ese
Introducción a UML objeto puede llevar a cabo. Por ejem-
quitectónico. Los tres tienen su im- plo, los objetos de la clase Profesores
<<dotNetManía

El Lenguaje Unificado de Modelado portancia, aunque dependerá del podrían poseer un método Calificar
sirve para visualizar, especificar, tipo de proyecto el que uno u otro lo que les permitiera colocar una nota
construir y documentar un proyec- sea más. para un Alumno.

48
<< dnm.arquitectura.uml

Además de esto, en esta parte del


modelo estudiaremos las relaciones
existentes entre las diferentes clases.
Estas relaciones o asociaciones
determinan el que, por ejemplo, la
clase Alumnos esté relacionada con
la clase Cursos, lo cual querrá decir
que los alumnos están matriculados
en un curso. Y especificaremos esas
relaciones, restringiéndolas y dán-
doles mayor semántica. Deberemos
decir si un alumno puede relacio-
narse con sólo un curso o con más
de uno, si un profesor puede ser a su
vez alumno, etc. Tendremos que cla-
sificar las relaciones entre objetos en
simples asociaciones, agregaciones
o relaciones de herencia (lo cual con-
llevará diferencias semánticas signi-
ficativas). Una agregación aparece
cuando un objeto “está compuesto”
o “puede descomponerse” en otros
objetos (un curso puede “estar com-
puesto de” asignaturas). Por el con-
trario, una relación de herencia (o
Generalización) aparece entre dos o
más clases denominadas Padre e
Hijos, en la cual un hijo es “todo lo ejemplo). Por tanto, Profesor y Modelado del Comportamiento
que es” su padre y algo más. Eso Alumnos son Personas y algo más.
quiere decir que una clase hija posee Todo lo anterior lo plasmare- Esta es la segunda parte del pro-
todas las propiedades y métodos de mos en una serie de diagramas ceso de modelado UML, en ella
su padre, y además las suyas. En el usando una notación especial. estudiaremos la parte dinámica de
ejemplo podría existir una clase Concretamente para esta parte del nuestro sistema, la interacción
Persona, que sería padre de Alumnos modelado, al que hemos denomi- entre los objetos. Interactuar es
y Profesores. Dicha clase tendría la nado estructural usaremos Dia- intercambiar mensajes que dan
propiedad Nombre (común a sus gramas de Clases y Diagramas de Ob- lugar al disparo de acciones que
hijos) pero Alumnos tendría además jetos (o de instancias). En el prime- alteran el estado (el valor de sus
propiedades como Calificación Final ro de ellos se dibujarán Clases y sus propiedades en un momento deter-
(que no tienen todas las Personas) y relaciones, y en el segundo Objetos minado, por ejemplo, los Profesores
Profesor tendría Salario (propiedad (es decir instancias o ejemplos de estarán en el estado activo mien-
que no tienen los Alumnos en el clases). tras tengan asignado un curso) de
los objetos y de su entorno. Estu-
diaremos esos estados, el paso de
Cuando hablamos de metodologías orientadas a objeto uno a otros, la naturaleza de esos
mensajes, el orden en que deben
nos referimos a las reglas, técnicas, diagramas, etc.,
ser enviados y recibidos, etc.
<<dotNetManía

que nos permiten llevar a cabo ordenadamente Estudiaremos además la interac-


nuestro trabajo. ción de nuestro sistema con el
mundo exterior (personas, dispo-

49
<< dnm.arquitectura.uml

<<
sitivos hardware, etc. En el ejemplo, nuestro
sistema interaccionaría con el Ministerio de
Educación para convalidar los programas de las
asignaturas) y la forma en que el sistema será
utilizado (los llamados Casos de Uso; un caso de
uso podría ser la forma en que ve nuestro sis-
tema un Profesor).
Todo ello se hará diseñando una serie de dia-
gramas. En este caso usaremos:
• Diagramas de Casos de Uso. En éste repre-
sentaremos a cada una de las formas en que
nuestro sistema será usado (casos de uso) y
los actores (entidades externas como perso-
nas, hardware u otros sistemas) que inte-
ractúan con él.
• Diagramas de Interacción. Sirven para mos-
trar el paso de mensajes a través de los obje-
tos. Se dividen en Diagramas de Secuencia y
de Colaboración. Su diferencia radica en que
los de secuencia hacen hincapié en la orde- ejecutará, qué archivos usará, etc. Para ello usa-
nación temporal de los mensajes, es decir, remos dos tipos de diagramas principales:
de en qué orden se envían; en cambio los de • Diagramas de Componentes. Lo usaremos
colaboración se centran en el flujo de con- para representar la organización de las par-
trol entre objetos. tes o componentes del sistema (en nues-
• Diagramas de Estados. Éstos no son más que tro ejemplo si usásemos una arquitectura
la representación en forma de máquinas de Cliente/Servidor podríamos representar
estados del cambio en los valores de sus el ejecutable del lado cliente y la base de
propiedades durante la vida de los objetos. datos de servidor con la información del
Es decir, representaremos como un estado centro).
a los posibles valores de las propiedades de • Diagramas de Despliegue. Los usaremos para
un objeto en un momento determinado y mostrar los nodos en que trabajan dichos
a través de qué evento podrá pasar a otro componentes (en nuestro caso las máquinas
estado (dentro de estos diagramas existe un clientes y los servidores).
caso particular, los Diagramas de Actividades,
que se centra en un tipo de estados deno- Para todo el modelado existe una notación
minados estados de actividad). concreta, pero UML deja abierta la posibilidad
de extender la notación a través de los denomi-
Modelado Arquitectónico nados estereotipos (elementos que no pertenecen
a la notación pero que hemos añadido para exten-
<<dotNetManía

En esta última parte del modelo estudiaremos derla) o bien colocando notas aclaratorias. En
la parte física del sistema. Cómo se dividirá en determinadas partes, como la arquitectónica son
ejecutables, bibliotecas, etc., en qué máquinas se muy utilizados.

50
dnm.laboratotio.net

Delphi 8 para Microsoft .NET Framework


La evolución hacia la revolución .NET.

Con la aparición de Delphi 8 para Microsoft .NET Framework, y después de la aparición


de C# Builder, Borland se convierte en el principal fabricante de herramientas de desa-
rrollo para la plataforma .NET

<< Después de la aparición de Delphi como un fabricante más fiable. Aplicaciones Windows Forms
8 para .NET Framework, creo que Rumores corrían por entonces de
a pocos les quedarán dudas ya de la posible desaparición de Borland Las aplicaciones Windows
que Win32 está tocando a su fin. ¿Quién se arriesgaría a pasar sus Forms están basadas en la biblio-
Ahora tenemos la posibilidad de desarrollos a un lenguaje, por bue- teca de clases y componentes del
hacer el cambio hacia el código no que fuese, cuyo fabricante se .NET Framework, lo que repre-
gestionado de .NET Framework tambaleaba? senta toda una novedad para los
también con Delphi. Ahora existe un entorno de pro- programadores de Delphi. Los
Aún recuerdo los años en los gramación a la medida de las nue- conocimientos de la VCL servirán
que Delphi competía con Visual vas tecnologías, sin basarse en lo a medias a la hora de desarrollar
Basic para atraer a los cientos de antiguo, estructurado, con una aplicaciones Windows Forms. Sin
miles de programadores que que- arquitectura irreprochable, con embargo, el lenguaje de progra-
rían migrar desde el viejo DOS a lenguajes igualmente irreprocha- mación sigue siendo Delphi.
un entorno de desarrollo Windows. bles, y además, y lo mejor de todo, En las aplicaciones Windows
Casi todos veíamos en Delphi, al es que ¡el lenguaje nos da igual! Forms la biblioteca de clases y
lenguaje más estructurado, al mejor, componentes es nueva. Los nom-
pero también veíamos a Microsoft Aplicaciones VCL Forms bres de las clases son nuevos, los

Este es uno de los muchos tipos


de aplicaciones que podemos desa-
rrollar con Delphi 8 para .NET y,
ciertamente, es el tipo de aplica-
ción en el que podremos aprove-
char al máximo nuestros conoci-
mientos y experiencia con Delphi.
Las aplicaciones VCL Forms
están basadas en la VCL.NET, una
<<
nueva versión de la VCL desarro-
llada principalmente para facilitar
<<dotNetManía

la migración de aplicaciones
Delphi 7 ó anteriores a la plata-
forma .NET.

52
<< dnm.laboratorio.net

componentes son nuevos, la jerar- En las aplicaciones Windows


quía de clases es nueva, los nombres Forms cada formulario está forma-
de las propiedades, métodos y even- do por un único archivo que con-
tos son nuevos. En resumen, todo tiene todo el código fuente, inclu-
es nuevo. Para desarrollar aplica- yendo lo que hacemos visualmente
ciones Windows Forms tendremos en tiempo de diseño.
que aprender a utilizar una nueva
biblioteca de clases y componentes. Aplicaciones ASP.NET Web
Forms
Las aplicaciones ASP.NET Web
Forms son aplicaciones para servi-
dores Web que generan contenido
HTML en respuesta a requeri-
mientos HTTP.
El .NET Framework provee
componentes del lado servidor que
generan automáticamente conteni-
do HTML. Delphi 8 para .NET
extiende ASP.NET Web Forms
mediante componentes DB Web
que simplifican el desarrollo de apli-
caciones ASP.NET Web Forms
enlazadas a datos.

La alargada sombra de Anders Hejlsberg

Anders Hejlsberg es casi un desconocido para la mayoría. Sin embargo,


fue ni más ni menos que el creador de Turbo Pascal y Delphi en su épo-
ca de 13 años en Borland. Más tarde, ya en Microsoft, fue arquitecto de
MS J++ y las Windows Foundation Class y arquitecto principal de .NET
Framework, y padre del lenguaje C#.
Ha pasado el tiempo, desde que Anders, crease su Turbo Pascal con el
que tantos aprendimos a programar, e incluso hacer nuestros primeros
pinitos con la programación orientada a objeto. Ha pasado tiempo, ya lo
creo, y ha resultado ser que se ha convertido en la persona que más ha
influido, de largo, en el desarrollo moderno de los lenguajes de programación. Casi en cualquier cosa con
la que trabajamos en la actualidad ha pasado por la cabeza de Anders Hejlsberg.
Este nuevo Delphi viene de lo que el creó hace tiempo, y ahora éste se adapta a .NET Framework don-
de él ha sido uno de los arquitectos principales. ¿Habrá tenido algo que ver Anders en que Borland haya
sido la primera en sacar su propio C# y haya adaptado su lenguaje más importante tan rápidamente?
<<dotNetManía

Delphi 8 es puro .NET y puro Delphi. Puro Anders Hejlsberg, entonces.

53
<< dnm.laboratorio.net

Aplicaciones ECO Windows Forms


La unión de las herramientas de Together y
Bold dieron como resultado ECO (Enterprise
Core Objects). ECO es un marco de trabajo de
tiempo de diseño y de tiempo de ejecución que
está disponible en la edición Architect de Delphi
8 para .NET.
En las aplicaciones ECO Windows Forms el cen-
tro es el modelo de la aplicación. ECO adhiere a la
metodología MDA (Model Driven Architecture) de
la OMG (Object Management Group), organiza-
ción de la cual Borland es un miembro activo.
En tiempo de diseño ECO provee:
• Herramientas de diseño UML para crear
gráfica y visualmente el modelo de la apli-
cación, el centro de las aplicaciones ECO.
Acceso a datos • Componentes para trabajar con objetos y
conjuntos de objetos mediante OCL y para
Delphi 8 para .NET ofrece un amplio abani- enlazarlos con los componentes visuales
co de posibilidades para acceder a bases de datos. habituales.
• Componentes para manejar la persistencia de
ADO.NET los objetos en archivos XML o en bases de
Soporte completo para ADO.NET, permi- datos relacionales y para generar el esquema
tiendo utilizar todos los componentes de acceso de la base de datos y permitir su evolución a
a datos de ADO.NET, entre los que se incluyen la par de la evolución del modelo.
componentes para acceso directo a MS SQL
Server y Oracle, proveedores OLEDB y ODBC. En tiempo de ejecución ECO provee:
• La infraestructura necesaria para obtener
Borland Data Providers colecciones de objetos, crear instancias y acce-
Delphi 8 para .NET soporta el uso de der al mecanismo de persistencia.
ADO.NET y lo extiende a través de los com-
ponentes Borland Data Providers (BDP). Los Arquitectura de los servicios
componentes BDP proveen una arquitectura de ECO
alto rendimiento y un modelo de programación Las herramientas de modelado están perfec-
unificado para acceder a distintas bases de datos. tamente integradas en el entorno de desarrollo
Su arquitectura abierta permite añadir fácil- y están basadas en las herramientas de Together.
mente soporte para otras bases de datos. Estas herramientas cumplen con el estándar
Los componentes BDP incluidos en Delphi UML (Unified Modeling Language).
8 para .NET permiten acceder a las siguientes
bases de datos: MS SQL Server, MS Access, El Diseñador UML de ECO
InterBase, DB2 y Oracle.
ECO permite el intercambio de información
VCL.NET con aplicaciones externas ya que permite impor-
La VCL.NET permite acceder a bases de datos tar y exportar modelos en formato XMI.
a través de los componentes basados en BDE,
dbExpress e InterBase Express, extendiendo las Visualización de código
<<dotNetManía

posibilidades de acceso a datos desde una aplica-


ción .NET y facilitando la migración de aplica- La edición Enterprise incluye una herra-
ciones Delphi 7 o anteriores. mienta de modelado que permite visualizar el

54
<< dnm.laboratorio.net

diagrama de clases del código fuen- Productos ALM los programadores Delphi dar un paso
te del proyecto. Este diagrama es adelante hacia la plataforma .NET sin
estático y no puede ser modificado. • Definición: Acceso a CaliberRM abandonar sus desarrollos actuales, así
desde el IDE. como aprovechar las ventajas de la
Delphi 8 para .NET y ALM • Diseño: Herramientas de mo- plataforma .NET y al mismo tiempo
delado UML integradas. la extiende con la VCL.NET, ECO
Delphi 8 para .NET se integra • Desarrollo: Delphi 8 para y la integración con las herramientas
perfectamente con el conjunto de .NET. ALM de Borland.
herramientas que forman parte de • Optimización: Integración con
la estrategia ALM (Application OptimizeIt Profiler para .NET.
Lifecycle Management) de Borland. • Despliegue: InstallShield Express,
Los productos ALM permiten InterBase 7.1, Janeva. Este artículo ha sido elaborado con la
que los administradores, diseñado- • Administración: Acceso a Star- colaboración de Borland Ibérica y
res, desarrolladores, responsables de Team desde el IDE. Danysoft. Para más información con-
las implementaciones y responsables sulte en http://www.borland.es y en
de las pruebas estén conectados en Resumen http://www.danysoft.com.
tiempo real, sin importar su locali-
zación, mejorando la productividad Delphi 8 para .NET es una herra-
y acelerando todas las etapas del pro- mienta de desarrollo para la creación
ceso de desarrollo de software. de aplicaciones .NET que permite a

El Grupo Danysoft anuncia las ediciones Standard y Profesional


de ComponentOne Doc-To-Help 7.
La nueva edición Profesional añade 5 nuevas funciones y un servicio de suscripción de un año.
• Búsqueda Natural: Añade fácilmen- • Editor de Mapa de Imagen: Rápida- • Editor de Cadenas de Contexto:
te capacidades de búsqueda en mente edita las imágenes insertadas y Define cadenas de contexto para
“Lenguaje Natural”. añades enlaces a los temas específicos Microsoft Help 2.0 y las conecta
• Utilidad Modular TOC: Automá- en el fichero de Ayuda. convenientemente a los temas de la
ticamente rellena todos los ficheros • Diseñador de Temas: Permite un Ayuda.
del sistema de Ayuda con una tabla control completo para construir
de contenidos con enlace totalmen- temas y permite la personalización
te funcional. sencilla para ajustar la apariencia y
forma de trabajo.

El Grupo Danysoft anuncia Componentone Studio Enterprise 2004 v1.


Esta nueva versión añade PDF para .NET, y más de 60 nuevas funcionalidades y mejoras.

Nuevo en ComponentOne Studio barras de herramientas para .NET WebSpell IDE para ASP .NET
Enterprise 2004 v1 ahora soportan el aspecto y forma incluye un botón “Cambiar Todo”;
• ComponentOne VSFlexGrid Pro 8: de trabajar de Microsoft Office el WebGrid para ASP .NET per-
Con más de 15 nuevas funciones 2003; nuevo componente PDF mite controlar sobre el lado clien-
incluyendo nuevos métodos para el para .NET; la visión previa para te los agrupamientos para colum-
soporte del portapapeles, propieda- .NET ahora soporta hiperenlaces nas, y mucho más.
des para personalizar imágenes y y anclajes; el Spell para .NET
mucho más. incluye soporte para chequeo de Para más información visite
• Nuevas funciones en los productos correcciones personalizado y dic- www.danyshop.com o contacte
.NET y ASP .NET: Los menús y cionarios personalizados; el con [email protected]

noticias.noticias.noticias.noticias
dnm.biblioteca.net
<< dnm.biblioteca.net
Desde este primer número vamos a formar una biblioteca con los libros .NET que más nos gustan.
No es una sección de evaluación de libros al uso, no vamos a criticar los libros que no nos gustan,
ni tienen porqué estar los más nuevos. Queremos ir agrupando los libros que recomendamos de
manera que cada libro que se publica en esta sección tendrá la categoría de libro recomendado por
dotNetManía. En este primer número hemos querido recomendar un par de libros de colaborado-
res de esta revista,por lo que quizás no hayamos sido muy imparciales,pero como también nos gus-
tan, ¡qué mejor que empezar nuestra biblioteca virtual con ellos!

Programación con ASP.NET mienta de desarrollo repasando todos y cada


uno de los controles de ASP.NET para el desa-
Jorge Serrano rrollo de aplicaciones web.
El libro además, nos muestra como acce-
Editorial: Anaya Multimedia der a fuentes de datos Microsoft Access,
Autor: Jorge Serrano Pérez Microsoft SQL Server y MySql. Además, hay
Nº de páginas: 960 un capítulo específico para enseñarnos a cre-
Tamaño: 17,5 x 22,5 cm ar y explotar nuestros propios Servicios Web
Referencia: 2318042 XML. El libro está acompañado de un CD-
ISBN: 84-415-1342-2 ROM con los ejemplos que se muestran en el
Precio orientativo: 48 6 libro.
Pubicación: Febre4o 2002 Se trata de un libro con un índice bastan-
te completo y que quizás asuste por su tama-
En este libro de casi 1000 páginas y de carác- ño, pero que a mi modo de ver, puede con-
ter teórico-práctico, aprenderemos a introdu- vertirse en un libro de referencia y aprendi-

<<
cirnos en la programación de aplicaciones web zaje muy completo.
con ASP.NET. Se trata de un libro que en sín-
tesis general, nos introduce a la historia des- Jorge Serrano es una de las personas con más
de ASP hasta ASP.NET, explicándonos las par- presencia en la comunidad de desarrolla-
tes generales de los lenguajes C#, Visual Basic dores de España y webmaster de una de
.NET y JScript.NET de .NET, y enseñándo- las mejores páginas de Visual Basic en cas-
nos a usar Visual Studio .NET como herra- tellano, portalVB ().

Visual Basic.NET. gramación con alguna versión anterior de


Visual Basic, a partir del capítulo sexto se enfo-
Manual imprescindible ca en todo lo relacionado con la programa-
Guillermo ‘guille’ Som ción orientada a objetos, dedicándole a este
tema nueve de los veinte capítulos del libro.
Editorial: Anaya Multimedia Un libro, que como dije al principio, hay
Autor: Guillermo ‘guille’ Som que tener en nuestra librería, pero que es una
Nº de páginas: 480 lástima que no haya abordado temas como la
Tamaño: 17,50x22,50 programación Web o el acceso a bases de
Referencia: 2311110 datos. Preguntando al autor el porqué de esas
ISBN: 84-415-1394-5 carencias, me respondió que además de que
Precio orientativo: 20,80 el número de páginas del libro estaba restrin-
Publicación: Agosto/2002 gido, “preferí tratar a fondo todo lo relacionado
con la programación orientada a objetos, ya que
Este libro, que como su nombre indica es considero que es mucho más importante para el
“imprescindible”, nos informa de las noveda- que quiere programar con .NET Framework que
des que tiene la nueva versión de Visual Basic dedicar unos cuantos capítulos a poner ejemplos
y nos explica de forma clara todo lo relacio- simples que al final no ayudarían al que realmente
nado a una de esas novedades que hacen de quiere aprender”.
Visual Basic .NET un lenguaje de programa- Esperemos que tenga oportunidad de
ción de los de verdad: La herencia. escribir una segunda parte sobre esos temas
El libro está enfocado principalmente al que se quedaron en el tintero y que estén tan
que se quiere iniciar en la programación con bien explicados como los temas que aborda
Visual Basic .NET. Para los que son nuevos en el libro.
en la programación, dedica los tres primeros
<<dotNetManía

capítulos para explicar los conceptos básicos Guillermo ‘guille’ Som es un auténtico pio-
de la sintaxis de VB .NET, desde cómo crear nero de la publicación de contenidos téc-
una variable hasta cómo hacer un bucle For. nicos en Internet en España. Acaba de abrir
Para los que ya tienen experiencia en la pro- su nuevo local en htpp://www.elguille,info

56
dnm.comunidades
<< dnm.comunidad.net

Golem Project
(… weblog en marcha)

Golem Project surge como una plataforma de soporte a sociedades


virtuales, pensada para que la comunidad universitaria, y en particu-
lar los estudiantes, puedan compartir y evaluar piezas de software en
un entorno que combina el ocio y el aprendizaje mediante el uso de
una revolucionaria técnica, denominada Sociedad Híbrida, que cons-
tituye una nueva forma de comunidad virtual. En Golem Project la
calidad de una pieza de software es función solamente del interés que
despierte en los participantes de la Sociedad.

<< Golem Project nace a partir de una iniciativa conjun- en castellano, el de INETA, y el de muchos
ta de Microsoft y el Creative Computer Group MVPs y destacados profesionales de las tecno-
(CCG) del laboratorio de Redes de Neuronas logías Microsoft. Gracias a sus weblogs podrán
Artificiales y Sistemas Adaptativos (RNASA) de compartir con nosotros información acerca de
la Universidade da Coruña, con el objetivo de sus proyectos, sus inquietudes, sus opiniones, etc.
acercar la tecnología .Net y los Servicios Web a Golem Project está en fase de construcción,
toda la comunidad universitaria, proporcionan- pero ya es posible colaborar con el equipo de
do un foro en el que compartir y divulgar cono- desarrollo a través del correo electrónico
cimientos y dudas acerca de éstos y otros temas. ([email protected]) o del formulario de colabora-
Golem Project es un entorno virtual en el que ción de la página Web (http://www.golem-
los estudiantes podrán participar en un juego y project.com), y ya se puede comenzar a cons-
aprender e intercambiar conocimientos a un mis- truir Servicios Web para jugar. Cualquier suge-
mo tiempo. Apoyándose en el paradigma de la rencia, comentario, duda o aportación será bien-
Sociedad Híbrida (http://www.hybridsociety.net) venida y tenida en cuenta.
y en las tecnologías Microsoft .Net para la creación
de Servicios Web, este proyecto pretende crear un
espacio común en el que todos los participantes
podrán exponer sus creaciones software y probar, Juan Jesús Romero Cardalda, es profesor en el
evaluar y criticar las de los demás. Departamento de Tecnologías de la Información y
Dentro de las iniciativas que forman parte de las Comunicaciones de la Universidade da Coruña
Golem Project se ha puesto ya en marcha el sitio ([email protected])
http://weblogs.golemproject.com, que aglu- Iván González Vilaboa, es investigador en el RNA-
<<dotNetManía

tina un conjunto de weblogs que crece día a día SA Lab // GIB del Departamento de Tecnologías
y entre los que se encuentran algunos tan inte- de la Información y las Comunicaciones de la
resantes como el weblog del equipo de MSDN Universidade da Coruña ([email protected])

57
dnm.desvan
<< dnm.desvan
Por Marino Posadas
noticias.noticias.noticias.noticias
Importantes avances hacia la computación cuántica
Científicos de la Universidad de Harvard, han conseguido dar un importante paso hacia la computación
cuántica al conseguir "parar" un pulso luminoso sin pérdida apreciable de energía y hacer que reanudara
su trayectoria un instante después, lo que podría tener importantes consecuencias en el desarrollo de orde-
nadores basados en la Mecánica Cuántica. Para más información, ver el artículo de Rick Callahan, Scientists
freeze pulse of light, for an instant (http://www.signonsandiego.com/news/science/20031209-2349-frozen-
light.html). Este logro viene a completar pasos anteriores como el publicado en la revista Nature (Solid stops
light) (http://www.nature.com/nsu/020107/020107-2.html), en el que se conseguía la detención utilizando
cristales especiales.

El autor de Tetris, trabaja en el división Microsoft, preparado para sacar el Service Pack 2 de
de juegos de Microsoft. Alexey Pajitnov, Windows XP
padre del popular juego Tetris, trabaja Para el momento de la publicación de éste primer número de
ahora en la Microsoft Games Division. dotNetManía, probablemente Microsoft ya tenga disponible
Según parece está trabajando en la actua- la beta del siguiente Pack de Windows XP, con mejoras en la
lidad en su segunda versión de la Caja de seguridad y multimedia, principalmente. Posiblemente en mayo
Pandora. ya estará disponible la versión definitiva y se dice que ya inclui-
rá algunas caracteríaticas de Longhorn. Para más información,
véase el sitio: http://news.com.com/2100-1016-5128984.html

¿Piensa Microsoft comprar AMD?


El sitio OS-News nos lo cuenta, en su editorial de John O’Sullivan:
http://www.osnews.com/story.php?news_id=5386

arículos y vídeos en la red


Revisión completa de Longhorn por Paul Thurrot:
http://www.winsupersite.com/reviews/longhorn_4051.asp
Análisis de las características de XAML (Avalon) por Chris Sells: http://www.sellsbrothers.com/spout/
Introducción a WinFS, por Quentin Clark (vídeo): http://www.msdn.microsoft.com/msdntv/episo-
de.aspx?xml=episodes/en/20031211WinFSQC/manifest.xml
Análisis comparativo de los 4 lenguajes principales de .NET, por Prashant Sridharan:
http://www.windowsfordevices.com/articles/AT6287100687.html

Bitácoras (WebLogs)
sitios y recursos Don Box (coautor de SOAP y XML-Schemas):
http://www.gotdotnet.com/team/dbox
Drew Marsh: http://weblogs.asp.net/dmarsh
Documentación oficial sobre Longhorn: Brian Jepson: http://www.jepstone.net/radio/2002/10/10.html
http://microsoft.com/Longhorn Clemens Vasters (sobre Indigo):
Herramientas .NET de todo tipo: http://staff.newtelligence.net/clemensv
<<dotNetManía

http://sharptoolbox.madgeek.com Ingo Rammer (Remoting):


http://www.ingorammer.com/Weblog/default.aspx
Para programadores y administradores
John Lam (IUnkown.com): http://www.iunknown.com
(Shell Extensión City): http://shellcity.net Peter Drayton (CLR): http://www.razorsoft.net/weblog

58
Seminario
Lanzamiento
Delphi 8
Madrid - 5 de Febrero
Auditorio Winterthur.
c/ Marqués de Villamagna, 8

Presentación + Demostración en directo de la nueva versión de Delphi.


Together C#Builder
edition
for .NET
Agenda
Delphi
9:30 Registro y entrega de Documentación
10:00 Introducción Delphi 8
Jason Vokes PLSM Borland EMEA
Star Team
10:45 El nuevo entorno de desarrollo para .NET Optimizet
Pablo Reyes. Director Area Formación. Servicios Profesionales Danysoft.
Caliber RM Profiler
11:45 Café for .NET
12:15 Características de Delphi 8 para el desarrollo de aplicaciones
Mirosoft
basadas en el framework .NET (FLC.NET)
Server 2003
Octavio Hernández. Director Area Técnica. Servicios Profesionales Danysoft.
Janeva
InterBase Con la colaboración de:

Para inscripción gratuita y más información;


www.borland.es
902 344 556

También podría gustarte