Vous êtes sur la page 1sur 60

n8 octubre 2004 Precio: 6,00 (Espaa) n8 octubre 2004 Precio: 6,00 (Espaa)

www.dotnetmania.com
Visual Basic.NET C# Delphi ASP.NET ADO.NET .NET Framework Windows Server System
Construyendo software en la otra orilla
opinin
Visual Studio 2005 beta 1
Completando el puzzle
Especial sobre la nueva versin de Visual Studio
Andrew Conrad, Software Design Engineer de Microsoft
Sean ODriscoll, Mximo responsable del Microsoft MVP Program
Seguridad de Internet Information Server (III)
SQL Server y el Service Pack 2 de Windows XP
Entrevistas
Andrew Conrad, Software Design Engineer de Microsoft
Sean ODriscoll, mximo responsable del Microsoft MVP Program
Adems
Seguridad de Internet Information Server (III)
SQL Server y el Service Pack 2 de Windows XP
Visual Studio 2005 beta 1
Completando el puzzle
Especial sobre la nueva versin de Visual Studio
ASP.NET 2.0
ADO.NET 2.0:
Evolucin, no revolucin
Generics y Visual Basic .NET
My, un nuevo namespace
Visual Studio Team System, a escena!
Un vistazo a Visual Studio 2005 beta 1
ASP.NET 2.0
ADO.NET 2.0:
Evolucin, no revolucin
Generics y Visual Basic .NET
My, un nuevo namespace
Visual Studio Team System, a escena!
Un vistazo a Visual Studio 2005 beta 1
Con .NET, posiblemente estemos
ante la mejor plataforma de desarrollo de
la historia. Independientemente de si la
competencia es mejor o peor, que todo es
opinable y no es objeto de esta editorial
polemizar al respecto, es evidente que
Microsoft dio un enorme salto de calidad
entre su Visual Studio 6 y su COM y
DCOM, y la plataforma .NET. Fue un
valiente empezar de cero, una apuesta
sobre un entorno moderno, adecuado a
las nuevas realidades tecnolgicas, y rom-
piendo en gran parte la compatibilidad
con lo anterior. Esa compatibilidad que
todos queremos en las migraciones, pero
que sabemos que se convierte en un las-
tre que antes o despus se ha de soltar.
S, yo creo realmente que con .NET,
por primera vez, Microsoft tiene la
mejor plataforma de desarrollo del mer-
cado y de la historia. Con esta cabecera
es difcil que el editor piense otra cosa,
ciertamente...
Ahora, con la primera beta de
Visual Studio 2005 y el nuevo .NET
Framework 2.0 podemos ver la evolu-
cin de este entorno. Si la primera ver-
sin de .NET fue una autntica revo-
lucin, sta segunda puede decirse que
es su evolucin, como dice sabiamen-
te Dino Esposito en su artculo sobre
ADO.NET y que yo creo que es apli-
cable a toda la plataforma. No habr
problemas de compatibilidad ni migra-
ciones traumticas.
Hemos querido hacer un especial
sobre Visual Studio 2005 beta 1 con
un artculo genrico que nos ofrece una
visin global de los cambios y mejoras
que se avecinan, otro sobre el nuevo
Team System, un sistema de gestin y
control del ciclo de vida de las aplica-
ciones, ADO.NET 2.0 y ASP.NET 2.0
y un par de artculos ms particulares
que hablan sobre Generics y My. En
general, un primer acercamiento y un
ensayo del especial que prepararemos
para cuando salga la versin definitiva.
Hasta entonces seguiremos publicando
artculos que poco a poco nos irn mos-
trando lo nuevo de esta nueva versin,
sin olvidarnos por supuesto de la actual.
Este mes estranamos la seccin
dnm.mvp que esperamos que sirva de
amplificador a la magnfica labor que
estos profesionales hacen.
Por ltimo, Delphi 2005 se presen-
ta en Espaa a finales de este mes. Otro
entorno que evoluciona con C# y
Delphi 7 incluido. Habr que verlo!
d
o
t
N
e
t
M
a
n

a
<
<
3
Visual Studio 2005 beta 1
dotNetMana
Dedicada a los profesionales de la plataforma .NET
Ao I Nmero 8 Octubre 2004
Precio: 6 (Espaa)
Editor
Paco Marn
(paco.marin@dotnetmania.com)
Administracin
Pilar Prez
(pilar.perez@dotnetmania.com)
Asesor Tcnico/Coordinacin
Marino Posadas
(marino.posadas@dotnetmania.com)
Redactores y colaboradores habituales
Antonio Quirs, Fernando Nogueras,
Guillermo guille Som, Jorge Serrano,
Jos Manuel Alarcn, Luis Miguel
Blanco, Marino Posadas, Pedro Pozo.
Adems colaboran en este nmero
Dino Esposito, Pep Lluis Baos, Jos
Miguel Torres, Eladio Rincn
Edicin y Suscripciones
.netalia
c/ Robledal, 135
28529 Rivas-Vaciamadrid (Madrid)
Tf. (34) 91 6667477
Fax (34) 91 4991364
Publicidad
Mediadev
Sophie Mancini (sophie@mediadev.es)
Tf. 93 426 22 57 - 670 99 74 64
Fax. 93 423 11 40
Imprime
Grficas Vallehermoso
www.graficasvallehermoso.com
Depsito Legal
M-3.075-2004
< <
dnm.editorial
8
dnm.sumario
Construyendo software en la otra orilla 8-9
Estamos cmodamente asentados en nuestro boyante mundo occidental sin percatarnos,
dentro de nuestra opulenta y relajada vida, de lo que pasa a nuestro alrededor, en
todo ese conglomerado de pases en vas de desarrollo, o claramente subdesarrollados,
que tambin piden su trozo en el reparto del pastel que nosotros deglutimos mientras
ellos recogen slo las migajas del mismo.
Entrevista a Andrew Conrad 10-11
Hemos tenido la ocasin de intercambiar algunas ideas con Andrew Conrad, Software
Design Engineer de Microsoft Corporation y experto en Objects Spaces.
ASP.NET 2.0 12-16
En este artculo relaizamos un buen repaso a las novedades de la nueva versin de
ASP.NET.
ADO.NET 2.0: Evolucin, no Revolucin 18-22
ADO.NET es el subsistema que gestiona el acceso a datos de la mayor parte de aplicaciones
.NET. Mejora respecto a los modelos anteriores (por ejemplo, ActiveX Data Objects), y
se caracteriza por tres elementos fundamentales: modelo desconectado, basado en el objeto
DataSet, gran soporte de XML, y una integracin perfecta con el resto de .NET
Framework, incluyendo ASP.NET y los servicios web.
Generics y Visual Basic .NET 23-30
Ya se ha escrito mucho sobre Generics con C# pero Visual Basic .NET tambin podr
usar y crear tipos genricos, por la sencilla razn de que los tipos genricos forman
parte del .NET Framework 2.0.
My, un nuevo namespace 31-33
Con My se intenta facilitar y poner orden al acceso de las funciones con el nuevo
namespace, y de paso crear adiccin a un tipo de programacin ms conceptual, donde
el lenguaje pierde la excesiva abstraccin de la sobrecarga del objeto heredado, pasando
a concretar directamente al objeto, qu funcin quiere realizar con l.
Visual Studio Team System, a escena! 34-36
Visual Studio Team System, nombre en clave Burton, ser la primera herramienta
seria para el control del ciclo de vida de las aplicaciones de Microsoft. En este artculo
hacemos una primera aproximacin.
Un vistazo a Visual Studio 2005 beta 1 38-42
El pasado mes de julio hemos recibido ya la primera beta de la herramienta de
desarrollo de Microsoft. En este artculo vamos a hacer un recorrido por las novedades
y mejoras ms significativas de lo que hemos visto hasta ahora.
Seguridad de Internet Information Server (III) 43-48
En las dos anteriores entregas de esta serie hemos aprendido a fortalecer la seguridad
de IIS aprovechando las caractersticas propias del sistema operativo. Adems de esto
Microsoft pone a nuestra disposicin algunas herramientas gratuitas pensadas para
proteger a IIS y que conviene conocer.
SQL Server y el Service Pack 2 de Windows XP 49-52
En ste artculo vamos a ver los cambios y novedades del Service Pack 2 para Windows
XP que afectan a SQL Server; primero se hablar de los cambios/novedades y despus
se analizar qu debemos hacer para que SQL Server pueda seguir recibiendo y
atendiendo a las peticiones que recibe a travs de la red.
dnm.mvp 53-56
Primer artculo de esta seccin en la que comenzamos hablando sobre los MVPs y con
una entrevista a Sean ODriscoll, Mximo responsable del Microsoft MVP Program.
dnm.comunidad.net 57
Desarrolla con MSDN
dnm.desvan 58
d
n
m
.
s
u
m
a
r
i
o
DiamondBack finalmente se llamar Delphi 2005
y se acaba de presentar en el Borland Conference
2004 en San Jos, California, en USA el pasado mes
de septiembre. En Espaa se presentar en Madrid,
en el auditorio Witnerthur, donde hace slo unos
pocos meses se present el flamante Delphi 8, el pri-
mer Delphi.NET. La presentacin correr a cargo
de Jason Vokes, European RAD Product Line Manager,
y Octavio Hernndez, Director de Servicios Profesionales
de Danysoft.
El nuevo Delphi 2005 incorpora numerosas nove-
dades y mejoras. La que ms destaca es la inclusin de
Delphi 7 -el Delphi Win32- y el C# Builder dentro
del mismo IDE de forma que podemos realizar aplica-
ciones .NET con Delphi o C# y aplicaciones Win32 con
Delphi 7. El prximo mes Octavio Hernndez publica-
r un artculo en dotNetMana explicando en profun-
didad todas estas novedades y mejoras del nuevo Delphi.
La compaa prev que el paquete est disponible
para su venta entre noviembre y diciembre. Para ms
informacin y reservas llame al 902 34 45 56.
d
o
t
N
e
t
M
a
n

a
<
<
6
dnm.noticias
<<
dnm.noticias
Presentacin de Borland Delphi 2005
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
La tecnologa de virtualizacin permite a los clientes
ejecutar mltiples sistemas operativos concurrentemen-
te en un nico servidor fsico, donde cada sistema ope-
rativo corre como si estuviese en su propio ordenador.
Microsoft Virtual Server 2005 alojado en el sistema
operativo Microsoft Windows Server 2003 ayuda a los
clientes a reducir el coste de hardware e incrementar la
eficacia funcional en tres escenarios clave: primero, en
la automatizacin del testeo de software y en entornos
de desarrollo; segundo, en el realojamiento de viejas apli-
caciones que se ejecuten sobre viejos sistemas operati-
vos; y tercero, en la consolidacin de la carga de traba-
jo de servidores mltiples, en la simulacin de aplica-
ciones distribuidas, de infraestructura de directorio o
departamentales en un nico servidor fsico
MVS 2005 incluye una instalacin simple y una
cmoda gestin de las mquinas basada en la Web, as
como un almacenaje robusto y caractersticas de net-
working. Adems las herramientas de gestin de los
servidores fsicos de Microsoft y de vendedores de
herramientas de gestin de terceras partes han sido
actualizadas para proveer a los administradores de una
experiencia uniforme de administracin a travs de la
combinacin de servidores fsicos y virtuales. Por ejem-
plo, un Virtual Server 2005 Management Pack para
Microsoft Operations Manager 2005 habilitar la moni-
torizacin centralizada y la administracin de rendi-
miento de mltiples servidores fsicos y virtuales.
Ambas ediciones tienen las mismas caractersticas y
slo se diferencian en la escalabilidad. Virtual Server
2005 Standard Edition soporta hasta 4 procesadores
y Virtual Server 2005 Enterprise Edition soporta
hasta 32 procesadores. Ambas versiones estarn dispo-
nibles a lo largo del mes de octubre.
Microsoft tambin est trabajando en un producto
adicional, el Virtual Server Migration Toolkit que
est actualmente en fase beta. VSMT automatiza la
migracin de un sistema operativo y las aplicaciones
instaladas en l desde un servidor fsico a un servidor
ejecutndose dentro de una mquina virtual que est
gestionada por Virtual Server 2005. Esta versin beta
puede descargarse desde http://www.microsoft.com/win-
dowsserversystem/virtualserver/evaluation/vsmtbeta.mspx.
Puede encontrar ms informacin en:
http://www.microsoft.com/windowsserversystem/
virtualserver.
Microsoft anuncia Virtual Server 2005
Borland Ibrica presentar el nuevo Borland Delphi 2005 en un
seminario gratuito que se celebrar en Madrid, en el auditorio
Winterthur en Madrid el 28 de octubre.
Microsoft ha anunciado la disponibilidad de Microsoft Virtual
Server 2005 ediciones Standard y Enterprise.
La necesidad de
contar con una solu-
cin completa para
garantizar la seguridad en Internet es un tema que
atae a todos los usuarios de ordenadores, ha afir-
mado Stephen Cullen, vicepresidente primero de
la Divisin para Soluciones y Productos para Seguridad
en Symantec. Asimismo dijo Symantec ha mos-
trado todo su apoyo a las acciones de Microsoft para
incrementar la concienciacin pblica sobre la nece-
sidad que existe para garantizar la seguridad infor-
mtica a la hora de lanzar el Service Pack 2 para el
sistema operativo Windows XP. Symantec se mues-
tra encantada de poder ofrecer esta seguridad a los
usuarios de Windows con el desarrollo de un anti-
virus para usuarios particulares y empresas, as como
productos integrados para seguridad compatibles
con este Service Pack 2.
Symantec va a poner a disposicin de sus clientes
una actualizacin para que el Security Center del
SP2 detecte el estado de los productos Symantec. Los
usuarios van a poder descargarse esta actualizacin a
travs del servicio LiveUpdate.
Los usuarios de los productos con marca Norton
pueden obtener informacin adicional sobre su com-
patibilidad con el Window XP SP2 visitando la pgi-
na http://service.symantec.com/xpinfo. Los clientes empre-
sariales que tengan alguna pregunta o duda sobre la
compatibilidad de las soluciones Symantec con el
Service Pack 2, pueden visitar http://service.syman-
tec.com/spinfo o ponerse en contacto con los centros
de la compaa para soporte tcnico.
dnm.noticias
<<
Symantec anuncia el soporte de sus soluciones al SP2 de Windows XP
dnm.noticias
Symantec ha anunciado la compatibilidad de sus productos antivirus para usuarios parti-
culares y empresas, las soluciones integradas para seguridad en la Red, y sus productos
para administracin corporativa, con el Service Pack 2 de Windows XP.
Microsoft anuncia que su sistema ope-
rativo cliente conocido como Longhorn
estar disponible en el ao 2006.
Microsoft anunci igualmente que las tec-
nologas de desarrollo WinFX, incluyendo el nuevo sub-
sistema de presentacin llamado Avalony el nuevo sub-
sistema de de comunicacin conocido con Indigo, esta-
rn disponibles para Windows XPy Windows Server
2003 en el ao 2006. Esta disponibilidad ampliar el
abanico de oportunidades para los desarrolladores, per-
mitindoles escribir aplicaciones que puedan funcionar
en cientos de millones de PCs, lo que dar lugar a mejo-
res experiencias para los usuarios de estos sistemas ope-
rativos.
Pero para poder cumplir con las fechas previs-
tas de un proyecto tan ambicioso como ste, ha habi-
do que sacrificar a uno de sus mdulos principales:
WinFS, que se lanzar despus de la salida de
Longhorn. Este nuevo sistema de almacenamiento
proporciona r capacidades avanzadas de organiza-
cin y gestin de los datos y estar disponible como
versin beta para su testeo en el momento en que
la versin cliente de Longhorn en el mercado.
Poner Longhorn a disposicin de los usuarios
en 2006 conllevar importantes avances en rendi-
miento, seguridad y fiabilidad, y ayudar a acele-
rar la creacin de nuevas e interesantes aplicacio-
nes por parte de los desarrolladores de toda la
industria, ha declarado Bill Gates, Chairman y
Director de Arquitectura de Software de Microsoft.
Hemos odo decir a nuestros clientes clara-
mente que quieren mejoras en la productividad,
una implementacin ms sencilla, incremento en
la fiabilidad y una mayor seguridad, adems de todas
las innovaciones en las que hemos estado traba-
jando. Hemos tenido que realizar algunos ajustes
para ofrecer a nuestros clientes empresariales, a los
consumidores y a los OEMs las caractersticas que
nos estn demandando en un plazo razonable de
tiempo, seal Jim Allchin, Vicepresidente del
Grupo de Plataformas de Microsoft, quien aadi que
nuestra visin a largo plazo para la plataforma
Windows sigue siendo la misma.
La fecha prevista para la disponibilidad del siste-
ma operativo Windows Longhorn Server contina
siendo 2007.
Las tecnologas de desarrollo WinFX estarn disponibles para Windows XP y
Windows 2003, mientras que WinFS no estar disponible en la primera versin.
Microsoft anuncia la disponibilidad de
Windows Longhorn para 2006
d
o
t
N
e
t
M
a
n

a
<
<
7
d
o
t
N
e
t
M
a
n

a
<
<
8
ver cmo se enfadan nuestros agricultores
porque compramos fruta, o pasa por nuestras fronte-
ras, adquirida por otros pases europeos, a nuestros
vecinos del otro lado del Estrecho. Es grotesco ver
cmo se enfadan nuestros pescadores cuando el
gobierno de Marruecos intenta sacar toda la ventaja
posible en la negociacin de acuerdos pesqueros,
cmo si no fuera tico que cada pas peleara por bus-
car lo que beneficia a su poblacin! Nuestros agricul-
tores, nuestros pescadores, etc. viven de forma razo-
nable, mayoritariamente tienen derechos sociales y
salarios dignos. Cuando se produce alguna catstro-
fe natural o artificial las subvenciones les llegan de
una forma u otra. Con lo que puede cobrar un ciuda-
dano europeo con un mes de la ms nfima pensin
no contributiva sera capaz de vivir todo un ao cual-
quier persona en la India. Pero cmo viven o quin
ayuda a sus colegas africanos que carecen de hasta lo
ms elemental? En el mundo desarrollado hemos tras-
pasado el concepto del tradicional enfrentamiento de
clases a otro en el que todas las clases sociales de nues-
tros pases se unen para defenderse de los producto-
res de los pases pobres que intentan, lgicamente,
dar salida a su trabajo para mejorar sus nfimas con-
diciones de vida.
Qu error! Parecemos no comprender que slo
contribuyendo al desarrollo de estos pases, compar-
tiendo lo que tenemos con ellos y no acaparando todo
para nosotros solucionaremos los grandes problemas
demogrficos que acucian a nuestro mundo. O es
que pensamos que el proceso migratorio que sufri-
mos desde frica se va a solucionar con medidas res-
trictivas y controladoras de la emigracin? Cuando la
gente no tiene nada que perder, nada les detiene tam-
poco en la consecucin de sus objetivos. Qu es
mejor, dar cabida a todos los africanos dentro de la
Unin Europea y dedicar un continente vaco a la rea-
lizacin de safaris o, por el contrario, desarrollar eco-
nmicamente esta zona del mundo para que quienes
viven en ella no tengan necesidad de venir a la nues-
tra? To be or not to be, that's the question
Se preguntar el lector qu tiene que ver esta refle-
xin con el mundo tecnolgico y las herramientas de
desarrollo de Microsoft. Pues s, algo tiene que ver.
Me explicar. En los ltimos aos estamos asistiendo
a un fenmeno cada vez ms imparable de crecimien-
to de lo que se denomina el desarrollo off shore
1
, o lo
que es lo mismo, de la contratacin de proyectos de
desarrollo de software a equipos que estn desplaza-
dos en otros lugares, lejos de donde se genera la nece-
sidad del producto. Evidentemente, este proceso slo
se realiza en pases donde el nivel de desarrollo cien-
tfico-tcnico es suficiente como para que pueda garan-
tizarse el xito. India es, en este momento, el proto-
tipo de pas donde el desarrollo off shore est toman-
do volmenes ms amplios. Grandes corporaciones
como Microsoft, Oracle, IBM, etc. mantienen cada
vez ms nutridos equipos de trabajo en dicho pas y
el crecimiento tecnolgico producido aporta unos
magnficos ndices al desarrollo del mismo.
As, segn los datos facilitados por la asociacin
india NASSCOM
2
, el mundo de las TI ha crecido en
la India desde los 5.000 millones de dlares en el bie-
nio 1996-1997 hasta los 20.000 previsibles en el bie-
Construyendo software en la otra orilla
Por Antonio Quirs
General Area Manager
Alhambra-Eidos
Estamos cmodamente asentados en nuestro boyante mundo occidental sin percatarnos, dentro
de nuestra opulenta y relajada vida, de lo que pasa a nuestro alrededor, en todo ese conglomera-
do de pases en vas de desarrollo, o claramente subdesarrollados, que tambin piden su trozo en
el reparto del pastel que nosotros deglutimos mientras ellos recogen slo las migajas del mismo.
< <
1
Que podra traducirse ms o menos como lejos de nuestra orilla.
2
NASSCOM. National Association of Software and Service Companies, www.nasscom.org
Resulta paradjico
nio 2003-2004, o lo que es lo mismo, que en siete
aos se ha cuadruplicado. Estas vertiginosas cifras de
crecimiento denotan la situacin que se est produ-
ciendo y son un claro signo de las ventajas que para
la mejora del nivel de vida de la poblacin aportan.
Lgicamente, el gobierno no es ajeno al proceso y
procura fomentarlo con ventajas a las empresas que
inviertan en este tipo de servicios, ya que son cons-
cientes de que el desarrollo de su pas en el siglo XXI
tiene una oportunidad nica de llevarse a cabo con
el auge de las tecnologas de la informacin y la opor-
tunidad que representa para ellos producir software
de forma mucho ms barata e igual de eficiente que
en cualquier otro pas desarrollado.
Un abono importante para este caldo de cultivo
es la concrecin cada vez ms rigurosa de metodolo-
gas de desarrollo, de sistemas de calidad, etc. que
contribuyen a normalizar y garantizar que el proce-
so de fabricacin de software se realiza de la forma
convenida y sin imprevistos. As, por ejemplo, en
India encontramos un nivel de empresas certificadas
CMM muy por encima de lo que se esperara de un
pas en el estadio de desarrollo tecnolgico en el que
ste se encuentra. Que terceros neutrales garanticen
la calidad y repetibilidad de los procesos realizados
es una garanta que las empresas que contratan este
tipo de desarrollo necesitan y buscan.
El desarrollo basado en herramientas Microsoft
no es una excepcin a esta tendencia, aun dira ms,
es uno de los que ms claramente est basculando a
ser realizado en pases como India basado en mto-
do off shore. A esto contribuye tanto la populariza-
cin y fcil acceso que las herramientas de Microsoft
para desarrolladores presentan, como la actitud de
Microsoft respecto a invertir en la India para desa-
rrollar la compaa en esa zona del mundo. Por ello
hoy tenemos en la India una de las colectividades
mejor formada y ms dinmica en .Net dentro de las
que podemos encontrarnos en el mundo.
Un ltimo factor trascendental es el auge de las
comunicaciones. Hoy resulta barato, rpido y cmo-
do comunicar de forma inmediata y eficaz cualquier
lugar del mundo con otro. Telefona, video confe-
rencia, Internet, etc. son elementos que hacen que el
proceso de fabricacin de software pueda realizarse
de forma ptima a miles de kilmetros de distancia
de donde se produce la necesidad e incluso de don-
de se controla y dirige el proceso de desarrollo.
Este no es un proceso que afecte slo a la India.
El desarrollo off shore est manteniendo tambin un
fuerte impulso en Rusia, Mxico, Chile, etc., es decir
en todos aquellos pases donde existe un buen nivel
de desarrollo cientfico tcnico y unos deficientes
niveles de desarrollo socio econmico. En ltima ins-
tancia se trata de un proceso similar al de los pesca-
dores en Marruecos o de los productores de pltanos
en Ecuador; lo que se busca es producir all para ven-
der en el mundo desarrollado. En este caso, el natu-
ral impulso de las empresas a producir ms barato se
constituye en el motor de un proceso que puede con-
tribuir a mejorar el equilibrio en cuanto a posibili-
dades de acceso a niveles aceptables de calidad de vida
que las distintas zonas del mundo presentan. Mientras
los humanos no seamos capaces de plantear medidas
ms racionales para lograr este objetivo, ste no repre-
senta un mal modo de conseguirlo.
Evidentemente, muchos lectores dirn que en
esto se esconde el tpico proceso capitalista de bus-
car una mayor acumulacin de riqueza al producir
con costes ms baratos. Sin duda, as es. Pero qu
preferimos? Quedarnos para nosotros solos, privile-
giados occidentales, todas las ventajas de nuestro sis-
tema o, al menos, contribuir con procesos como ste
a que otros pases se desarrollen y entre todos poda-
mos construir un mundo algo ms equilibrado que
el actual. Japn dio un gran ejemplo en su da apo-
yando el desarrollo de algunos de los pases que lo
rodeaban, sacando gran parte de sus procesos pro-
ductivos a vecinos suyos como Corea y otros. Estos
pases han mantenido un razonable nivel de creci-
miento y se han constituido en una zona del mundo
que ha pasado de no existir a contar entre las desa-
rrolladas. India puede seguir ese mismo camino y el
software puede ser para ellos lo que el proceso indus-
trial fue para Corea. Lo importante es que cada vez
se garantice ms que toda la poblacin mundial tie-
ne acceso a similares niveles de posibilidades de exis-
tencia y desarrollo personal.
d
o
t
N
e
t
M
a
n

a
<
<
9
dnm.opinion
<<
el mundo de las TI ha crecido en
la India desde los 5.000 millones de
dlares en el bienio 1996-1997 hasta
los 20.000 previsibles en el bienio
2003-2004.
hoy tenemos en la India una de las
colectividades mejor formada y ms
dinmica en .Net dentro de las que
podemos encontrarnos en el mundo
d
o
t
N
e
t
M
a
n

a
<
<
10
facilidad de uso y la accesibilidad de las tareas de
programacin tiene que ver con la interfaz de usua-
rio. Cul es su relacin con las bases de datos, en tu
opinin?
Creo que incrementar la facilidad de uso de las
tareas de programacin tiene mucho que ver con el
soporte global de herramientas y eso significa un mejor
nivel de abstraccin. La industria en general, ha hecho
un buen trabajo en las interfaces grficas de progra-
macin, pero se echa de menos ms control del flujo
de datos. Lo que se necesita es una aproximacin al
control de datos ms prxima a los elementos de pro-
gramacin que al medio de almacenamiento. Por ejem-
plo, cuando diseo un sistema o aplicacin, me gusta-
ra tratar a los clientes o la contabilidad como elemen-
tos de la interfaz visual. UML ha sido de gran ayuda,
obviamente, pero se necesita dar un paso ms.
Hasta qu punto es importante el feedback de
vuestros usuarios?
Pensamos constantemente en los diferentes tipos
de desarrolladores que utilizan nuestras API's de pro-
gramacin. En otras palabras, pensamos constante-
mente en la gente que va a utilizar nuestros produc-
tos, y en la forma en que les gustara interaccionar con
el entorno de desarrollo.
En qu forma est conectado el acceso a datos
con la nueva API WinFS (Windows File System) que
presentar Longhorn
1
?
WinFS pretende convertirse en un almacn de
objetos de gran magnitud que introducir un nivel de
abstraccin totalmente nuevo para acceso a datos en
las aplicaciones tradicionales cliente/servidor. Creo
que esto va a revolucionar el mundo del acceso a datos,
permitiendo que los objetos de negocio ms comple-
jos sean modelados de una forma mucho ms prxi-
ma a las construcciones del lenguaje de programacin.
Podemos decir que el modelo de datos que propone
WinFS supone un nivel de abstraccin totalmente
nuevo ms all del modelo de datos relacional basa-
do en tuplas. Los desarrolladores, seguirn realizan-
do el mismo tipo de operaciones con datos que hasta
ahora (consultas, modificaciones o bsquedas), pero
el cdigo funcionar en el dominio del modelo y no
en el de de almacenamiento a bajo nivel.
Segn esto, cul es el objetivo principal en inves-
tigacin ahora mismo en tu departamento?
Podra decirse que la integracin del acceso a datos
en el lenguaje de programacin. La base de esta inves-
tigacin estriba en permitir que, de alguna forma, el
acceso a datos sea parte de las estructuras del propio
lenguaje independientemente del almacenamiento
(incluyendo el almacenamiento en memoria). A esta
lnea de trabajo le queda todava mucha investigacin
que hacer, pero creemos que podra convertirse en un
estndar de facto, en un futuro no muy lejano.
Eso se implementar en una sintaxis similar a la
que propone Generics? Quiero decir como una exten-
sin de las expresiones regulares del lenguaje
Es muy pronto todava en el ciclo de diseo para
decir cmo ser la sintaxis final. Generics, efectivamen-
Entrevista a Andrew Conrad
Por Marino Posadas
MVP Visual Developer C#
Alhambra-Eidos www.elavefenix.net
< <
Una de las ponencias que ms llam la atencin en el pasado evento de Microsoft Research en Barcelona, fue
la de Adam Wiener. Se trataba de presentar la tecnologa conocida como Object Spaces, que significa un paso
ms en la abstraccin de la capa de datos de cara al desarrollador, estableciendo un correspondencia entre la
entidad de negocio (Cliente, Factura, etc.) y la tabla de la base de datos que la representa.Aunque Adam se mar-
chaba tuvimos ocasin de intercambiar algunas ideas con el Jefe de Proyecto para el que trabaja: Andrew
Conrad, Software Design Engineer de Microsoft Corporation.
Incrementar la
1
En el momento de la entrevista se desconoca que la primera versin de Longhorn no incluira WinFS
d
o
t
N
e
t
M
a
n

a
<
<
11
dnm.directo.entrevistas
<<
te, resuelve algunos de esos problemas
sintcticos, pero tambin existen otros
desafos.
En la ponencia de Adam Wiener
en el evento de Microsoft Research
hemos podido ver algunas demos muy
interesantes en relacin con los lla-
mados object spaces. Constituye eso un
intento de ver la aceptacin de esa tec-
nologa por parte de los usuarios, o
supone el comienzo a una nueva apro-
ximacin a la gestin de datos?
Object Spaces es lo que -bsicamente-
entendemos por una tecnologa relacio-
nal de correspondencia entre objetos. El
proyecto ha surgido como consecuencia
del trabajo en WinFS, y no existir ms
como un mecanismo aislado. Como dije
antes, WinFS va a erigirse en una tecno-
loga base importantsima de carcter
Objeto/Relacin (por similitud con el con-
cepto Entidad/Relacin), y dispondr de su
propio modelo de datos, que es un nivel
de abstraccin superior al de las bases de
datos relacionales clsicas.
Entonces cmo va a estar presente
en Visual Studio 2005? Incluir ste
algn tipo de implementacin de WinFS?
Object Spaces ya no es parte de Visual
Studio 2005. De hecho, ya no existe
como producto aislado. En su lugar, los
escenarios asociados a Object Spaces, se
soportarn mediante WinFS.
En la sesin de Adam Wiener
hemos visto cmo tratar una base de
datos como punto de origen y destino
de XML. Crees que el almacenamien-
to en XML ser real alguna vez? O qui-
zs no es algo prctico desde el punto
de vista del almacenamiento?
El soporte nativo de XML estar
presente en SQL Server 2005 a travs
del tipo de dato XML. Todava existe
bastante debate en la comunidad de
desarrollo sobre dnde debe encajar
esta caracterstica exactamente. En mi
opinin, los problemas de rendimien-
to se resolvern. Sin embargo la pre-
gunta aqu es si el almacenamiento
XML ser alguna vez un elemento
prioritario en las aplicaciones empre-
sariales, o si XML permanecer sim-
plemente como el formato predomi-
nante de serializacin de datos.
Don Box coment una vez la nece-
sidad de crear un lenguaje basado en
datos, en lugar de objetos. Su nombre
sera X#. Puedes decirnos algo ms al
respecto?
Precisamente, X# fue un proyecto
de investigacin que ahora ha evolu-
cionado hacia la integracin de datos en
el lenguaje de la que hablaba anterior-
mente. Creo que este trabajo no va a dar
lugar a nuevos lenguajes, sino a ciertas
mejoras en los ya existentes.
Qu piensas de las bases de datos
orientadas a objetos? Tony Goodhew
me comentaba hace 3 aos que por el
momento Microsoft no estaba intere-
sada en eso. Sigue igual la situacin?
Pues no. Yo ms bien sugerira que
lo contrario es lo que est sucediendo en
este momento. WinFS va a ser un alma-
cn de objetos que abstraiga la relacin de
almacenamiento. Esto no es una autnti-
ca base de datos orientada a objetos en el
sentido en que se entenda esto hace 15
20 aos, pero al final, soporta los mismos
escenarios. Adems SQL Server 2005 per-
mitir crear UDT's (tipos definidos por el
usuario), que son el primer paso para el
soporte nativo del estilo Objeto Relacional
en una base de datos.
Quiere eso decir que un tipo
podra almacenarse junto a sus mtodos
de alguna forma? Y qu hay de los
eventos? Si entendemos un evento como
un mecanismo de comunicacin no-
coercitivo entre dos mtodos de una cla-
se (o de la misma clase), podr un obje-
to comunicarse con otro? Esto tendra
fuertes implicaciones en el diseo e
implementacin de la capa de datos
Bueno, no soy un experto en lo que
Yukon soportar finalmente ni en lo que
se planea para l en un futuro. Para ms
informacin te recomiendo el sitio
http://msdn.microsoft.com/msdnmag/
issues/04/02/UDTsinYukon/default.aspx
2
.
Recuerdo un viejo libro de John
Hughes llamado Object Oriented
Databases, en el que el autor plantea
algunas ideas sobre el lenguaje SQL
Orientado a Objetos en el que en las clu-
sulas SELECT y WHERE podran aparecer
operaciones (lase llamadas a mtodos).
Existir algo parecido cuando la idea
que propones este lista?
Para m, SELECT y WHERE son sim-
plemente construcciones sintcticas. La
cuestin interesante aqu es si las ope-
raciones pueden aparecer en el predi-
cado y la proyeccin de una consulta.
Tcnicamente hay mucho trabajo que
hacer, aunque desde el punto de vista
del usuario, parece fascinante.
Finalmente, algunas conclusiones
acerca del futuro de las bases de datos
Una oportunidad para especular
En mi opinin, creo que la edad del
modelo de datos relacional, en trmi-
nos de tareas de programacin, est lle-
gando a su fin. En un momento no muy
lejano, los programadores corporativos
podrn acceder y programar sus bases
de datos en formas mucho ms prxi-
mas a las construcciones y lenguajes
actuales. En otras palabras, la disyunti-
va entre orientacin a objetos y bases de
datos relacionales sufrir un nivel de
abstraccin que conducir a un aumen-
to de la productividad para los desarro-
lladores de bases de datos.
Quiero, sin embargo, puntualizar que
el modelo relacional continuar siendo el
modelo preferido de almacenamiento
debido a su probada eficacia. La nica dife-
rencia ser que muchos desarrolladores
accedern a esos datos sin necesidad cono-
cer su autntica estructura interna.
2
Se trata de un excelente artculo de Peter W. DeBetta, donde el autor analiza extensamente esta caracterstica. Recomendamos su lectura.
Marino Posadas y Adam Wiener en las jornadas acadmicas de Microsfot Research
d
o
t
N
e
t
M
a
n

a
<
<
12
principales que se ha marcado
el equipo de desarrollo de ASP.NET es el de reducir
entre un 70% y un 75% el cdigo fuente necesario
para escribir una solucin web. Ese objetivo princi-
pal, lleva intrnseca algunas otras mejoras y por
supuesto, la aparicin de una nueva versin de un len-
guaje lleva consigo igualmente modificaciones y nue-
vas incorporaciones. En este artculo, asumiendo el
riesgo que entraa hablar de una versin beta de un
producto, veremos aquellas caractersticas y aspectos
que sern aadidos casi con total seguridad, como
novedad o como mejora en ASP.NET 2.0.
Completa compatibilidad hacia atrs
Como viene siendo habitual en productos Microsoft,
ASP.NET 2.0 presenta una completa compatibilidad
hacia atrs con ASP.NET 1.0 y ASP.NET 1.1.
Esta caracterstica es fundamental si deseamos tra-
bajar y mejorar nuestras aplicaciones ASP.NET desa-
rrolladas en versiones anteriores con las nuevas carac-
tersticas que presenta ASP.NET 2.0.
Nuevos controles Web
Una de las ms importantes actualizaciones de
ASP.NET 2.0 tiene que ver con el incremento de con-
troles que sern incorporados a esta nueva versin, la
cul contar con aproximadamente 45 nuevos con-
troles listos para ser utilizados en nuestras aplicacio-
nes web. Esta amplia incorporacin es una impor-
tante caracterstica para los desarrolladores de apli-
caciones web, que aunque ya contaban con un gran
nmero de controles, no necesitarn ya recurrir a con-
troles de terceras empresas o programar los suyos
propios para incorporar carctersticas avanzadas a
sus aplicaciones web.
Hay que recordar por otro lado, que algunos de
estos controles ahora incorporados a .NET, ya exis-
tan en diferentes sitios web de Microsoft como
www.GotDotNet.com o www.asp.net dnde se podan
descargar gratuitamente para su instalacin y utiliza-
cin. Sin embargo, la comunidad de desarrolladores
demandaba que esos controles estuvieran incluidos
en el paquete de desarrollo. Esto es lo que ha ocurri-
do con alguno de estos controles como por ejemplo
el control Menu o el control TreeView.
An as y dividiendo los nuevos controles en gru-
pos, destacaramos los correspondientes a los nuevos
controles de acceso de datos que aportan un juego
ms amplio de posibilidades para el desarrollador,
controles de acceso que proporcionan, entre otros,
mecanismos de autentificacin y autorizacin que
antes debamos construirnos nosotros mismos, con-
ASP.NET 2.0
La aparicin de ASP.NET supuso un gran adelanto en lo que a la programacin de aplicacio-
nes web se refiere, sin embargo, siempre hay detalles que mejorar y aadir a un lenguaje de
programacin. No existe de hecho ningn lenguaje de programacin perfecto, pero ASP.NET
es uno de esos lenguajes que cuando apareci se acercaba de manera tmida al limbo de esa
perfeccin y ahora con las mejoras aadidas a lo que ser ASP.NET 2.0, podramos pregun-
tarnos sin dudar, estaremos cerca de ver por fin un entorno de desarrollo web prctica-
mente perfecto que cumpla las necesidades de la comunidad de desarrolladores?
Uno de los objetivos
< <
Por Jorge Serrano
Visual Basic y .NET MVP
www.PortalVB.com
troles de navegacin que nos ofrece mecanismos para
interactuar con las pginas y recursos de un sitio web
incorporando controles como el anteriormente
comentado Menu que proporciona interesantes nove-
dades para el desarrollador de aplicaciones web, o con-
troles para dispositivos mviles que aportan valor aa-
dido a las aplicaciones web desarrolladas para este tipo
de dispositivos.
Temas, cortezas y otras cscaras
Las capas o temas, son muy extendidos en aplica-
ciones Windows, pero en las aplicaciones web no han
terminado de cuajar pese a que se han estado incor-
porando con frecuencia. Microsoft ha observado este
fenmeno y ha incorporado de lleno y de manera prc-
tica este concepto en su lenguaje.
El objetivo de usar temas y capas en nuestras apli-
caciones web, es el de otorgarlas de la interfaz grfi-
ca o visual que resulte de nuestro agrado. Un ejem-
plo prctico de un uso parecido al que tendrn los
temas y capas en ASP.NET 2.0, es el que ofrece la
conocida herramienta DotText de weblogs que simula
este mecanismo.
Los temas son similares a un gran fichero CSS o
Cascading Style Sheets (http://www.w3.org/Style/CSS)
que contiene estilos y formatos para los objetos y ele-
mentos de una pgina web, con el fin de dotarla de
una presentacin o un aspecto visual determinado. Un
tema viene identificado por un nombre determinado
y est contenido por imgenes, controles de capas y
ficheros CSS.
Respecto a los controles de capas, estos estn for-
mados por ficheros de texto que contienen las decla-
raciones por defecto para las propiedades que tienen
relacin con la capa de presentacin de los controles
de una pgina web.
Por defecto, en ASP.NET 2.0, tenemos dos temas
que podemos utilizar. Los nombres de estos temas son
BasicBlue y SmokeAndGlass, y estn localizados en la
ruta C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\
ASP.NETClientFiles\Themes suponiendo que sea sta
la ruta en la que se instal Microsoft .NET Framework
2.0. Obviamente, nosotros podemos desarrollar y escri-
bir nuestros propios temas.
Para aplicar los temas en ASP.NET 2.0, es nece-
sario realizar algunas intervenciones. En la cabecera
de la directiva de la pgina ASPX, debemos indicar
mediante la etiqueta Theme, el tema a usar parecido a
como se comenta a continuacin:
<%@ Page Language="VB"
Theme="Nombre_del_Tema" %>
En el cdigo de la pgina ASPX, deberemos ade-
ms, declarar la cabecera como:
<heat runat="server">
...
</heat>
Si queremos evitar indicar el tema a usar en la
directiva de las pginas web, deberemos realizar algu-
nas modificaciones dentro del archivo web.config.
Estas modificaciones pueden ser de la forma:
<configuration>
<system.web>
<pages theme="Nombre_del_Tema" />
<system.web>
</configuration>
En el caso de querer aplicar un tema a todas las
pginas web de un servidor web, deberemos aplicar
determinados cambios, que ahora por extensin obvia-
r, en el archivo machine.config.
Por ltimo, si deseamos que un determinado con-
trol que pertenece a una pgina o aplicacin web a la
que hemos indicado el uso de temas, no quede afec-
tado por las propiedades definidas dentro de un tema,
bastar con indicrselo en la propiedad EnableTheming
de la forma:
<asp:Textbox ID="TextBox1" runat="server"
EnableTheming="false" />
Recordemos por ltimo, que un tema contiene o
puede contener diferentes capas. Las capas son archi-
vos de texto con la extensin .SKIN que pueden estar
formadas por CSS e imgenes. Esto nos permite aa-
dir un juego interesante de posibilidades de presenta-
cin a nuestras aplicaciones.
d
o
t
N
e
t
M
a
n

a
<
<
13
dnm.plataforma.asp.net
<<
Una de las carencias que tena ASP.NET
era la escasa capacidad para desarrollar
la capa de presentacin de las pginas en
una aplicacin web. Esta tarea pendiente
para el equipo de desarrollo de ASP.NET
ha quedado ahora subsanada con las
denominadas Pginas Maestras o Mater Pages.
Master Pages o Pginas
Maestras
Esta es quizs una de las modifica-
ciones y mejoras ms importantes del
desarrollo de aplicaciones ASP.NET. Al
menos as lo veo yo desde el punto de
vista prctico del programador, pero
esto no deja de ser una opinin extric-
tamente personal y prefiero que cada
uno saque sus propias conclusiones al
respecto, as que veamos exactamente
de qu se trata.
Una de las carencias que tena
ASP.NET era la escasa capacidad para
desarrollar la capa de presentacin de
las pginas en una aplicacin web. Esta
tarea pendiente para el equipo de desa-
rrollo de ASP.NET ha quedado ahora
subsanada con las denominadas Pginas
Maestras o Mater Pages.
Las Pginas Maestras utilizan la filo-
sofa de la herencia para llevar a cabo su
cometido. De esta manera, podremos
usar lo que en algunos lugares en
Internet se ha denominado como
Herencia Visual, un trmino que me gus-
ta a medias y que viene a significar la
capacidad que tiene una pgina inicial
o maestra (as asignada por nosotros)
para compartir su contenido en el res-
to de pginas web de una aplicacin.
Dicho de otra manera, la pgina web
ASPX heredar la estructura definida
en la maestra y aplicar el correspon-
diente contenido de la forma en la que
se haya indicado.
Los Controles de Usuario que se uti-
lizaban hasta ahora, dejarn paso libre
a las Pginas Maestras simplificando y
mejorando enormemente el aspecto
visual de nuestras aplicaciones web.
Una pgina maestra tiene la exten-
sin .MASTER, y dentro de un pro-
yecto web, podemos tener tantas pgi-
nas maestras como deseemos. A conti-
nuacin veremos un breve y sencillo
ejemplo que nos ayude a comprender
cmo funciona el tratamiento de las
Pginas Maestras y de cmo aplicar su
contenido basndonos en ellas.
Toda aplicacin web contiene, por
lo general, tres partes diferenciadas tal
y cmo se muestra en la figura 1, la
cabecera, el cuerpo y el pie. De forma
global, la cabecera y el pie y otras par-
tes como el ttulo de la aplicacin web,
por ejemplo, se repiten a lo largo de
todas las pginas de una aplicacin. El
cuerpo es la parte que siempre queda
alterada dependiendo del diseo y for-
ma de desarrollar nuestras aplicacio-
nes.
El uso de las Pginas Maestras requie-
re que dentro de la pgina Default.mas-
ter aadamos las partes generales repe-
titivas de las pginas de una aplicacin
web. Por lo general estas partes son la
cabecera y el pie de las pginas de nues-
tra aplicacin, aunque podemos ade-
cuarlo a nuestras necesidades, de hecho,
podemos incluso como ya hemos comen-
tado, crear ms de una pgina maestra
para utilizarlas en nuestras pginas web.
Podemos adems si es nuestro deseo,
d
o
t
N
e
t
M
a
n

a
<
<
14
dnm.plataforma.asp.net
<<
Figura 1. Partes generales de una
pgina Web
<%@ Master Language=VB CompileWith=Default.master.vb AutoEventWireup=false
ClassName=MasterPage_master %>
<html>
<head runat=server>
<title>ASP.NET 2.0 - Demo Master Pages</title>
</head>
<body>
<! INICIO CABECERA >
<table width=100% height=3 bgcolor=silver>
<tr bgcolor=silver>
<td width=1px></td>
<td><font face=Verdana size=2>Ejemplo Cabecera</font></td>
</tr>
</table>
<! FIN CABECERA >
<! INICIO CUERPO >
<form id=form1 runat=server>
<asp:ContentPlaceHolder ID=Cuerpo Runat=server></asp:contentplaceholder>
</form>
<! FIN CUERPO >
<! INICIO PIE >
<table width=100% height=3 bgcolor=silver>
<tr bgcolor=silver>
<td width=1px></td>
<td><font face=Verdana size=2>Ejemplo Pie</font></td>
</tr>
</table>
<! FIN PIE >
</body>
</html>
Fuente 1. Default.master
<%@ Page Language=VB AutoEventWireup=false CompileWith=Default.aspx.vb
ClassName=Default_aspx MasterPageFile=~/Default.master %>
<asp:Content ID=Contenido1 ContentPlaceHolderID=Cuerpo runat=server>
<font face=Verdana size=3>
Cuerpo de la pgina Web<br>
Ejemplo de uso de Mater Pages con ASP.NET 2.0
</font>
</asp:Content>
Fuente 2. Default.aspx
indicar la pgina maestra a utilizar por defecto en nues-
tro proyecto.
La pgina Default.master est formada por dife-
rentes instrucciones, entre las que est la directiva
@Page en la que se indica en la etiqueta MaterPageFile
la pgina maestra relacionada, y la referencia a un con-
trol ContentPlaceHolder. Este control contendr el con-
tenido de la pgina web Default.aspx. Un grfico
esquemtico que resume todo esto que estoy comen-
tando es lo que puede verse en la figura 2.
La mezcla que se produce entre las dos pginas, la
denominada en nuestro caso como Default.master y
la denominada como Default.aspx que hace referen-
cia a la anteriormente comentada Default.master, es
ejecutada por .NET y genera en el servidor y de for-
ma transparente al usuario, la pgina Default.aspx
final, la cul es convertida en cdigo HTML para que
sea visualizada por el navegador web del cliente.
Web.Config
El archivo web.config ha sufrido algunas peque-
as modificaciones entre las cuales destacaremos las
siguientes:
Seguridad
Otra de las nuevas caractersticas de ASP.NET 2.0
es la posibilidad de utilizar en el archivo web.config
la cadena de conexin a bases de datos dentro de una
nueva seccin destinada para este fin con la posibili-
dad adicional de encriptarla.
Esta informacin encriptada estar almacenada
dentro de la siguiente seccin:
<protectedData>
...
</protectedData>
Personalizacin
La API de personalizacin permite almacenar
informacin o datos de los usuarios que visitan nues-
tro sitio, evitando el uso de otras tcnicas que no lle-
gaban a ser eficientes del todo para el sistema.
Para subsanar esta accin en el pasado, se poda
almacenar informacin de los usuarios que visitaban
un sitio web a travs de bases de datos, a travs del uso
de cookies o combinando ambas tcnicas, pero al no
resultar una tarea del todo eficiente, en ASP.NET 2.0
aparece una nueva etiqueta para subsanar esto, la eti-
queta de perfil <profile>...</profile> que se inclui-
r en el archivo web.config.
Otras mejoras destacables
Existen multitud de mejoras de mbito general
aadidas a ASP.NET 2.0. A continuacin veremos
algunas de ellas:
ASP.NET en 64 bits
Los procesadores de 64 bits tambin necesitan
comer y puesto que .NET ofrece ya la posibilidad de
desarrollar aplicaciones en 32 y 64 bits, obviamente
en ASP.NET 2.0, podremos desarrollar nuestras apli-
caciones web para sistemas operativos 64 bits.
Adicionalmente, nuestras aplicaciones de 32 bits,
sern compiladas por el JIT directamente a 64 bits,
para ser ejecutadas as como aplicaciones nativas de
64 bits. No sern necesarias por lo tanto, acciones de
recompilado o modificaciones de cdigo para llevar a
cabo estas acciones.
d
o
t
N
e
t
M
a
n

a
<
<
15
dnm.plataforma.asp.net
<<
Los procesadores de 64 bits tambin necesitan
comer y puesto que .NET ofrece ya la
posibilidad de desarrollar aplicaciones en
32 y 64 bits, obviamente en ASP.NET 2.0,
podremos desarrollar nuestras aplicaciones
web para sistemas operativos 64 bits.
Figura 2. Partes de una pgina web con el
uso de las Pginas Maestras
Aviso on line de incidencias
En muchos casos, los desarrolladores deben pro-
porcionar los mecanismos oportunos para que en el caso
de darse diferentes errores o problemas en la ejecucin
de nuestras aplicaciones web, se lleven a cabo determi-
nadas tareas, como por ejemplo el envo de mensajes de
correo electrnico con avisos o detalles que nos infor-
men de determinadas incidencias que se produzcan en
la ejecucin de nuestras aplicaciones.
De esta manera en ASP.NET 2.0 podremos enviar
notificaciones por correo electrnico en el caso de
que se produzca una determinada excepcin.
Contadores locales
Una accin muy frecuente y habitual en aplica-
ciones web, es la que tiene por objetivo contabilizar
el nmero de veces que se hace clic sobre un deter-
minado control. De esta manera se puede monitori-
zar la actividad de los usuarios que acceden a deter-
minados recursos del sitio web o bien, aquellas accio-
nes que se realizan sobre determinadas opciones y
objetos del sitio.
Una aplicacin web puede registrar una accin
de clic utilizando la API de recoleccin de contado-
res de dos formas, usando la API directamente, o bien
permitiendo la integracin de contadores, en cuyo
caso se puede realizar mediante los controles
AdRotator e HyperLink. Esta informacin es enviada
al proveedor para que la almacene en un medio cons-
tante como bases de datos o archivos de datos.
IIS y los entornos de ejecucin
Respecto al entorno de ejecucin, Microsoft
ASP.NET 2.0 puede ser ejecutado sobre IIS (Internet
Information Server) 5.0 o superior, por lo que esto
quiere decir que ASP.NET 2.0 puede ser ejecutado
en sistemas operativos Microsoft Windows 2000
Server o superiores.
En lo que se refiere a IIS 6.0, podremos utilizar
las caractersticas de autentificacin que se incorpo-
rarn en ASP.NET 2.0 para controlar los accesos a
recursos como imgenes o archivos, e incluso a pgi-
nas ASP o JSP por ejemplo.
Las nuevas incorporaciones en Visual Studio 2005
Una de las mejoras, aunque ms perteneciente a
Visual Studio 2005 que a la propia versin de
ASP.NET 2.0, es la posibilidad de contar con la
opcin de arrastrar y soltar bases de datos en un
WebForm y crear de forma rpida y sencilla el cdi-
go y controles de acceso necesario para bases de datos.
Bastar con arrastrar y soltar una tabla sobre el
WebForm correspondiente, y Visual Studio 2005
generar todo el cdigo por nosotros con la base de
un control GridView por detrs para gestionar sus
datos directamente. Nuestro trabajo quedar redu-
cido nicamente a modificar las opciones generales
del control y algunas partes del cdigo para perso-
nalizarlo.
Sin duda, ste es uno de los aspectos ms tiles
en el desarrollo de aplicaciones web, ya que el tiem-
po de desarrollo se reduce as enormemente.
Hablando tambin del entorno RAD de desarro-
llo, en Visual Studio 2005 podremos utilizar las opcio-
nes de autocompletado en archivos de configuracin
y en el cdigo de controles web.
En cuanto a la ejecucin tambin han hecho apa-
ricin algunas mejoras. Por ejemplo, cuando desde
el entorno de desarrollo pulsamos la tecla de ejecu-
cin F5, puede ocurrir que no hayamos activado la
depuracin de nuestra aplicacin web. Ahora el entor-
no detecta esta posibilidad y nos da a elegir diferen-
tes opciones, tal y como se muestra en la figura 3.
Conclusiones
En este artculo, hemos podido comprobar algu-
nas de las mejoras aadidas e incorporadas en
ASP.NET 2.0 y Microsoft Visual Studio 2005.
Si bien el producto ASP.NET 2.0 no est cerra-
do y est sujeto a diferentes cambios y modificacio-
nes de ltima hora, es muy difcil que el modelo final
vare sustancialmente con lo que aqu hemos visto.
Como hemos podido apreciar, nos encontramos
con un conjunto de mejoras muy enfocadas a la capa
de presentacin y de negocio de aplicaciones web.
La seguridad sigue jugando un papel fundamental en
.NET, cada vez mayor. As, la nueva versin de
ASP.NET incorpora interesantsimas novedades que
hacen ms fcil la vida al desarrollador, aportando
mayor robustez y eficiencia a los desarrollos de apli-
caciones web, y un alto nivel competitivo con otras
tecnologas de desarrollo web del mercado.
d
o
t
N
e
t
M
a
n

a
<
<
16
dnm.plataforma.asp.net
<<
Figura 3.Aviso de opcin de depuracin no activada en
Visual Studio 2005
d
o
t
N
e
t
M
a
n

a
<
<
18
el rendimiento de ADO.NET
es muy bueno, y su implementacin dentro del IDE
de Visual Studio, sin precedentes. As pues, qu cabe
esperar de la versin 2.0? Otro cambio radical que
requiera el retoque del cdigo existente? O quiz el
cambio de los objetos existentes por otros nuevos
ms poderosos y flexibles? A la vista de la Beta 1, nin-
guna de esas situaciones va a producirse. El leit-motiv
de ADO.NET 2.0 tiene otro tono: evolucin, no
revolucin.
Reubicando ADO.NET en el rompecabe-
zas de .NET Framework
Ms que el modelo de objetos en s, es el papel
vinculante que ADO.NET juega en el contexto del
Framework, lo que ha cambiado. En aplicaciones
Windows, e incluso en la mayora de las aplicacio-
nes ASP.NET, ADO.NET se ha convertido en el
motor de back-end para objetos ms utilizables por
los programadores, tales como los componentes de
acceso a datos, (por ejemplo, los SqlDataSource,
DataConnector) que permiten vinculacin de datos
sin cdigo e incrementan considerablemente la pro-
ductividad. Ahora bien, significa eso que mgica-
mente nuestras aplicaciones van a tener acceso a
datos sin necesidad de codificacin alguna, y que
los objetos de ADO.NET se han vuelto innecesa-
rios?
Los objectos ADO.NET son piezas esenciales de
las aplicaciones que acceden a datos en .NET, pero
han sido desplazados -de alguna forma- hacia el pro-
pio motor de acceso, a travs de operaciones comu-
nes de vinculacin de datos (databinding). Por ejem-
plo, en ASP.NET 2.0 existe ahora mucha menos nece-
sidad de tratar con los objetos ADO.NET que antes.
ASP.NET 2.0, y Windows Forms, ejecutan
muchas operaciones automticamente en conjun-
cin con una nueva familia de controles enlazados
a datos. Ambos ofrecen cdigo de acceso a datos,
que simplifican muchos de los pasos esenciales en el
manejo, ubicndolos en el Framework a travs de
clases parciales auto generadas y otras nuevas mejo-
radas. Como resultado, mucho de ese cdigo nece-
sario antes de la implementacin real de la lgica de
datos, queda ahora encerrado o generado por estos
automatismos.
Visual Studio 2005 tambin es parte funda-
mental de estas modificaciones, y juega un papel
principal en la apreciacin que el programador pue-
da tener de este conjunto de cambios. Un sistema
totalmente renovado de diseadores visuales hace
que la programacin de los nuevos mecanismos de
acceso sea notablemente superior a la de sus pre-
decesores, tanto en la programacin Web como
Windows. De hecho, en ocasiones, la presencia
constante de estas caractersticas, parece ocultar
algunos de los cambios presentes en el nuevo mode-
lo de objetos. Pero, como vamos a ver a continua-
cin, ADO.NET 2.0, es sin duda ninguna, la mejor
implantacin que Microsoft ha hecho hasta ahora
de un modelo de acceso a datos.
ADO.NET: Evolucin, no Revolucin
Por Dino Esposito
Training and Consulting
Wintellect
ADO.NET es el subsistema que gestiona el acceso a datos de la mayor parte de aplica-
ciones .NET. Mejora respecto a los modelos anteriores (por ejemplo, ActiveX Data Objects),
y se caracteriza por tres elementos fundamentales: modelo desconectado, basado en el
objeto DataSet, gran soporte de XML, y una integracin perfecta con el resto de .NET
Framework, incluyendo ASP.NET y los servicios web.
Por si esto fuera poco,
< <
Qu hay de nuevo y porqu
Ciertamente, la aceptacin de ADO.NET fue total
desde su primera versin. Consciente de esta cir-
cunstancia, el equipo de trabajo ha planteado la ver-
sin sobre aquellas cosas que podan ser mejoradas y
prestando especial atencin a la eliminacin de cier-
tos defectos o incoherencias. El cdigo existente, fun-
cionar sin cambios, pero podemos retocar cosas en
diferentes partes del modelo, para conseguir mejoras
en el rendimiento y la calidad.
Como citbamos al principio, ADO.NET es un
modelo desconectado, que se centra en gran mane-
ra en el soporte del objeto DataSet. Un objeto seria-
lizable, accesible en forma remota, e ideal para trans-
mitir datos y estados entre las distintas capas de una
aplicacin, desde la de presentacin a la de datos.
Como muchos de vosotros habris experimentado,
sin embargo, tiene ciertas imperfecciones. Cuando
se serializa, (como por ejemplo en algunas opera-
ciones de Remoting) no reduce o comprime la can-
tidad de informacin transferida. Al contrario, dira
yo. Paradjicamente, parece que incrementa el
tamao de los datos. Al final, puedes encontrarte
con megas de informacin movindose entre las dis-
tintas capas de la aplicacin. La solucin a este pro-
blema tiene un impacto notable en el rendimiento
de las aplicaciones.
En relacin con esto, observamos cambios en la
interfaz de programacin de su clase hermana:
DataTable. Por alguna razn en las versiones anterio-
res, se trataba como un "objeto secundario". Muchas
de las caractersticas de los DataSets no estaban dis-
ponibles para stos ltimos, sin ningn motivo tcni-
co aparente. Por ejemplo, no se les poda serializar
directamente a XML, y adems no podan ser pasa-
dos como argumentos o valores de retorno de un ser-
vicio Web. Tambin carece de una interfaz de strea-
ming para cargar informacin y exponer sus filas a un
objeto Reader. Adems, sufra de la misma enferme-
dad de serializacin que su colega, el DataSet.
Otros aspectos que pedan una mejora, (y que tam-
bin tienen un notable impacto en el rendimiento de
las aplicaciones) son: posibilidad de programar el esta-
do de una fila (aadida, modificada o borrada), un API
para averiguar la informacin de Schema de una tabla,
y soporte para almacenamiento de los tipos del CLR.
Todas estas novedades aparecern en esta versin 2.0,
incluso si algunas no han sido incluidas momentne-
amente en la Beta 1. De igual forma, cuando quere-
mos escribir cdigo para acceso a un modelo relacio-
nal pero ignoramos la base de datos en que se implan-
tar finalmente, tenemos que construir cdigos equi-
valentes para los distintos proveedores (SQL-Server,
Oracle, Access, etc). Una pesadilla, no?
En versiones anteriores, ADO.NET aliviaba nota-
blemente esos problemas a travs de una serie de inter-
faces tipo IDBxxx, pero todava no suministraban toda
la funcionalidad necesaria. ADO.NET 2.0, sin embar-
go, suministra un nuevo API, independiente del pro-
veedor de datos, que modifica la arquitectura interna
de los proveedores administrados. Comencemos ana-
lizando el nuevo formato de Remoting para DataSets y
DataTables.
Formato de Remoting optimizado
En una tpica aplicacin en 3 capas, tpicamente
utilizamos .NET Remoting y DataSets, para el inter-
cambio de informacin entre capas. El rendimiento
en esta situacin no es ptimo ahora por las razones
citadas antes. La razn es que el DataSet (igual que su
hermano DataTable) serializa a XML incluso si utili-
zamos un Binary Formatter. Esto conduce a una alta
demanda de CPU y memoria, y consume ancho de
banda. Esta caracterstica puede pasar inadvertida en
aplicaciones cuyo trfico de informacin sea escaso.
Pero resulta muy evidente a partir de miles de regis-
tros en el DataSet, provocando cuellos de botella en
algunas aplicaciones.
El origen de este problema, es bien conocido, pero
las soluciones manuales no siempre resultan de utili-
dad. Por esta razn, la nueva propiedad
RemotingFormat, presente para los objetos DataSet y
DataTable, es ms que bienvenida. Lo que sigue es la
solucin al problema de serializacin antes citado:
Una vez que el DataSet est listo para serializacin,
se modifica la propiedad RemotingFormat por el valor
adecuado. El nuevo DataSet har el resto, cuando el
d
o
t
N
e
t
M
a
n

a
<
<
19
dnm.plataforma.ado.net
<<
ADO.NET no es una revolucin sino una
evolucin, que garantiza total compatibilidad
con el cdigo anterior. Adems se le ha
aadido al nuevo .NET Compact Framework.
DataSet ds = LoadData();
StreamWriter writer = new StreamWriter(file);
ds.RemotingFormat = SerializationFormat.Binary;
bin.Serialize(writer.BaseStream, ds);
writer.Close();
d
o
t
N
e
t
M
a
n

a
<
<
20
dnm.plataforma.ado.net
<<
Formatter, solicite datos para serializar. El valor binario
se suministra a partir de una nueva clase de enumera-
cin, SerializationFormat, que incluye tambin un valor
para XML, comportndose por defecto en la misma for-
ma en que lo haca en versiones anteriores. Pero no
importa el contexto en el que la operacin tiene lugar
(Remoting, serializacin a disco, o almacenamiento en
sesiones ASP.NET out-of-process), el impacto de la seria-
cin es importante. El diagrama de la figura 1 muestra
la tremenda diferencia en rendimiento entre la seriacin
XML y la binaria.
Mejoras en el objeto DataTable
Hay muchas situaciones en las que un DataSet
resulta excesivo, y un simple DataTable encaja mejor
con la solucin. En aplicaciones Windows o Web
estndar, no resulta un problema porque podemos
rehacer el cdigo para usar DataTables y ya est. Pero
en la programacin de servicios web, ste no es el caso
porque las DataTables no estn soportadas. La razn
es que la infraestructura de los servicios web utiliza
XmlSerializer para tomar parmetros y devolver cade-
nas. No soporta objetos que utilizan referencias cir-
culares como DataTable y DataSet. Una referencia cir-
cular es cuando un objeto define una propiedad de un
cierto tipo, y -a su vez- ese tipo define una propiedad
del primero. Ambos objetos hacen eso, pero slo el
DataTable carece de soporte. Por qu? Debido a la
poco conocida interfaz IXmlSerializable, que slo el
DataSet implementa. Esta interfaz suministra mto-
dos alternativos para el XmlSerializer de modo que
evita el proceso predeterminado que provocara un
fallo debido a esas referencias circulares. En
ADO.NET 2.0, DataTable tambin implementa esa
interfaz, haciendo posible su uso en servicios web.
Otra diferencia entre ambos era la forma de imple-
mentar los mtodos WriteXml() y ReadXml() para la
persistencia de datos en ficheros de este tipo. En esta
versin, funcionan para ambas clases.
Otra novedad respecto al objeto DataTable es la
presencia de un nuevo objeto, DataTableReader, que
permite recorrer el contenido en lectura:
El objeto DataTableReader funciona bsicamente
como cualquier otro reader, excepto que sus iteracio-
nes las realiza sobre una cach de registros de nueva
creacin. A diferencia de la coleccin Rows, el reader
maneja una coleccin de slo lectura que no incluye
filas marcadas para borrado, y slo tiene en cuenta la
versin actual para cada registro. Si la tabla es modi-
ficada durante la iteracin, no pasa nada puesto que
se est utilizando una copia de cach.
La otra cara de la interfaz de streaming (de acceso
a disco) del DataTable tiene que ver con su mtodo
Load(), usado para rellenar un DataTable vaco a par-
tir de cualquier reader .NET. Load() lo rellena con
valores provenientes de un origen de datos utilizan-
do la interfaz IDataReader. Si el objeto ya contiene
filas, las nuevas se unen a las existentes. La forma en
que esto tiene lugar depende del parmetro opcional
LoadOption.
El conjunto de valores posibles de este enumera-
do se adjunta en la tabla 1.
Figura1. Comparacin de rendimiento entre seriacin
XML y binaria en procesos de Remoting
Tabla1
Opcin Descripcin
OverwriteRow
Todos los valores nuevos
sustituyen la informacin
presentada para cada fila y
columna.
PreserveCurrentValues
Sobrescribe los originales
de cada fila, pero no los
actuales, que se preservan.
UpdateCurrentValues
Los valores nuevos sobres-
criben los actuales pero
dejan intactos los originales.
DataTable dt = LoadData();
dt.WriteXml(outputFile);
DataTableReader r = dt.GetDataReader();
while (r.Read ())
{
// ERROR: es de solo lectura
// r["Nombre"] = "SoyYo";
}
dt.Load(reader, LoadOption.OverwriteRow);
API independiente del proveedor
En el modelo de objetos de ADO.NET, un pro-
veedor es un componente que suministra funcio-
nalidades de E/S para un origen de datos determi-
nado: SQL Server, Access, Oracle, OLE DB, etc.
Pero esto requiere conocer con anterioridad el pro-
veedor de destino, y de hecho, requiere una llama-
da al constructor especfico de cada uno al crear la
conexin:
Esto permite trabajar en modo de enlace tempra-
no, pero no es muy flexible si se necesita acceder a dis-
tintos orgenes con el mismo cdigo. En ADO.NET
1.x, cada clase se basa en una interfaz (IDbConnection,
IDbCommand, etc). Estas interfaces exponen mtodos
genricos para la creacin de comandos y readers sin
necesidad de conocer exactamente el proveedor. Pero
esto no basta. Primero, todava es necesario crear las
conexiones (el punto de entrada real en el mecanismo
conector) usando enlaces tempranos; segundo, no hay
forma de crear DataAdapters y CommandBuilders de
forma genrica.
ADO.NET 2.0 introduce un API comn para cre-
ar cdigo independiente del proveedor. En lugar de
interfaces, la nueva API hace uso de clases base abs-
tractas, y -ms importante- presenta una variacin del
modelo de proveedores administrados basada en esti-
lo factora, como vemos a continuacin:
Cada proveedor recibe un nombre invariable, que
coincide con su espacio de nombres. Con esta tcni-
ca se puede obtener el objeto generador (factory object)
para cada proveedor administrado. El mtodo estti-
co GetFactory(), del objeto DbProviderFactories, devuel-
ve ese objeto, que es una instancia de la clase de pro-
veedor especfico que deriva de DbProviderFactory. Por
diseo, cada clase proveedora tiene una propiedad
esttica llamada Instance implementada para instan-
ciar y devolver el objeto que se requiera. Una vez que
se dispone del "objeto factora", podemos operar como
siempre.
Otras mejoras en los proveedores admi-
nistrados
Existen otras dos mejoras en los proveedores admi-
nistrados, que tienen que ver con el almacenamiento
de la cadena de conexin y con operaciones batch.
La mayor parte de las aplicaciones almacena las
cadenas de conexin en ficheros de configuracin, lo
que es excelente desde la flexibilidad, pero insuficiente
desde la seguridad, ya que se almacena en texto pla-
no. .NET Framework 2.0, soporta reas protegidas
en los ficheros de configuracin y utiliza encriptacin
XML estndar para ocultar el texto de forma que resul-
te transparente para programadores y usuarios.
Adems, esta nueva versin, define una nueva seccin
en los ficheros de configuracin, especialmente pen-
sada para almacenar cadenas de conexin, llamada
connectionStrings. A continuacin vemos como modi-
ficar el fichero Web.config de una aplicacin Web, para
almacenar cadenas de conexin protegidas:
Como primer paso, hacemos referencia a un nom-
bre de seccin llamado protectedData. Y dentro de l
se selecciona el mecanismo de proteccin deseado:
Bien, y cmo se puede situar contenido encrip-
tado en dicho fichero? Lo primero, es escribir el
contenido en texto plano estndar. A continuacin
utilizamos la nueva versin de la popular utilidad
ASPNET_REGIIS.EXE, en la siguiente forma:
Donde Foo es el nombre que damos a nuestra apli-
cacin.
En el cdigo fuente adjunto podemos ver el aspec-
to que tendra este fichero una vez encriptado:
d
o
t
N
e
t
M
a
n

a
<
<
21
dnm.plataforma.ado.net
<<
// Establecer una conexin a SQL Server
SqlConnection conn = new SqlConnection(connString);
string provider = "System.Data.SqlClient";
DbProviderFactory fact;
fact = DbProviderFactories.GetFactory(provider);
DbConnection conn = fact.CreateConnection();
<configuration>
<protectedData>
<protectedDataSections>
<add name="connectionStrings"
provider="RSAProtectedConfigurationProvider"/>
</protectedDataSections>
</protectedData>
aspnet_regiis.exe -pe connectionStrings -app /Foo
<configuration>
<protectedData>
<protectedDataSections>
<add name="connectionStrings"
provider="RSAProtectedConfigurationProvider"/>
</protectedDataSections>
dnm.plataforma.ado.net
<<
Como el cdigo requiere una lectura de la seccin
connectionString el texto ser automticamente desen-
criptado y devuelto. Desde programa, para leer cade-
nas de conexin podemos utilizar el siguiente cdigo:
Y esto funcionar sin importar la configuracin
de encriptacin.
Otra pequea mejora en la interfaz de programa-
cin de proveedores administrados que puede tener
un impacto positivo en las aplicaciones, es la actuali-
zacin de datos batch update. Como es sabido, este
mecanismo permite lanzar mltiples actualizaciones
al servidor en una sola instruccin, pero no necesa-
riamente en un simple viaje de ida y vuelta al servi-
dor. En ADO.NET 1.x, los adaptadores propagan las
actualizaciones a la base de datos a razn de una fila
por viaje.
Obviamente, este comportamiento puede tener
un impacto grande en el rendimiento en determi-
nadas circunstancias. En esta versin, los adaptado-
res, disponen de una propiedad UpdateBatchSize,
(establecida a 1 para preservar la compatibilidad),
que determina el tamao de cada envo batch.
Adems, estos procesos ahora pueden ejecutarse den-
tro de una transaccin. Tngase en cuenta, sin
embargo, que un tamao excesivo puede acaparar
recursos de red, obtenindose el resultado opuesto
al deseado. Lo ideal sera realizar pruebas de rendi-
miento (benchmark) para determinar las necesidades
en cada situacin.
Conclusin
ADO.NET 2.0 no es una revolucin sino una evo-
lucin, que garantiza total compatibilidad con el cdi-
go anterior. Adems se le ha aadido al nuevo .NET
Compact Framework. Sobre todo, ADO.NET sumi-
nistra ms facilidad de uso para escenarios simples,
pero tambin caractersticas avanzadas de rendimiento
y facilidad de programacin.
Este artculo, obviamente, solo analiza la punta
del iceberg, y, ciertamente, no suministra un anlisis
exhaustivo de ADO.NET. Otra rea importante que
me he saltado es su integracin con SQL-Server 2005.
ADO.NET suministra soporte integrado de caracte-
rsticas especficas de SQL Server 2005, tales como
mltiples conjuntos de resultados activos, comandos
asncronos, tipos nativos XML y CLR y dependen-
cias de datos. stas son caractersticas apasionantes y
muy elegantes en su implementacin, que merecen
un artculo en s mismas. Quizs en una prxima oca-
sin. Sigan al tanto.
El ttulo original de este artculo es ADO.NET 2.0:
Evolution not Revolution y est escrito en ingls. Ha
sido traducido por Marino Posadas.
ConnectionStringSettingsCollection coll;
coll = ConfigurationSettings.ConnectionStrings;
string conn;
conn = coll["Nwind"].ConnectionString;
</protectedData>
<connectionStrings>
<EncryptedData >
:
<CipherData>
<CipherValue>cQyofWFQ =</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>
d
o
t
N
e
t
M
a
n

a
<
<
23
Los tipos genricos nos dan la posibilidad de tener
tipos que permitan almacenar datos de distintos tipos
sin perder la funcionalidad y sin la sobrecarga extra
de tener que realizar conversiones (casting) al recu-
perar un elemento. A los genricos tambin se les
conocen como tipos con argumentos de tipos an-
nimos, tipos parametrizados o tipos con parmetros
polimrficos.
Por ejemplo, si tenemos una lista en la que que-
ramos almacenar datos de tipo entero, podemos cre-
ar una lista especfica que slo acepte valores de tipo
entero. El problema es que si esa lista la construimos
con una coleccin, por ejemplo del tipo ArrayList, el
entero se guardar como un dato de tipo Object, por
tanto cada vez que queramos recuperar el valor ten-
dremos que hacer una conversin de Object al tipo
almacenado. El problema principal es que aunque
podemos hacer comprobaciones y dems chequeos
de que el tipo de datos almacenado es el adecuado,
esas comprobaciones se tendrn que hacer en tiem-
po de ejecucin, no en el de compilacin.
La solucin que actualmente tenemos es crear esa
lista usando un array, de esta forma no ser necesa-
rio hacer ningn tipo de conversin al recuperar el
valor, adems de que el compilador se encargar de
avisarnos de que estamos haciendo algo mal, ya que
toda la comprobacin de tipos se realiza en tiempo
de compilacin. El inconveniente es que en la mayo-
ra de los casos es ms prctico usar una coleccin en
lugar de un array, ya que as conseguimos mayor fun-
cionalidad, sobre todo si es una lista que no tiene un
nmero fijo de elementos.
Y si en lugar de tener una coleccin cuyo tipo
de datos interno sea Object pudiera ser el que noso-
tros quisiramos? En ese caso el rendimiento estara
garantizado, ya que obtendramos todas las ventajas
de las colecciones sin pagar un precio en cuanto a
rendimiento se refiere, porque toda la comprobacin
de los tipos almacenados se hara en tiempo de com-
pilacin. Y aqu es donde entran los tipos genricos
o los tipos con parmetros genricos. Usando los
tipos genricos podemos definir una coleccin del
tipo de datos que necesitemos. Si la coleccin va a
almacenar datos de tipo entero podemos crear, por
ejemplo una lista de tipo entero, de forma que el tipo
interno de dicha lista sea precisamente un tipo ente-
ro y as no habr necesidad de hacer ningn tipo de
comprobacin al almacenar un dato en la lista ni ten-
dremos que hacer una conversin al recuperar dicho
dato. Si posteriormente pensamos en crear una lista
para almacenar datos de tipo Cliente, pues la creamos,
y sin necesidad de tener que hacer nada especial, ni
tener que crear una nueva lista especialmente para
almacenar los datos del tipo Cliente. Lo nico que
tendremos que hacer es definir una coleccin que
admita cualquier tipo de datos y cuando creemos una
nueva instancia de dicha coleccin, le indicamos qu
tipo de datos va a almacenar y as ser el propio CLR
el que se encargue de hacer todos los preparativos
para que dicha coleccin slo almacene el tipo de
datos que hemos indicado. Es como si le dijramos
< <
Generics y Visual Basic .NET
Por Guillermo Guille Som
Visual Basic MVP desde 1997
www.elguille.info
Es mucho lo que se ha escrito (y seguramente se seguir escribiendo) sobre esta nueva
caracterstica de la prxima versin de .NET Framework. Pero en casi todas las ocasiones
es referente a que es una nueva caracterstica de C#. Para los que an no lo sepan, espero
que se enteren de que Visual Basic tambin existe y que forma parte de la familia de len-
guajes de .NET y por tanto Visual Basic .NET tambin podr usar y crear tipos genricos,
por la sencilla razn de que los tipos genricos forman parte del .NET Framework 2.0.
Los tipos genricos: Introduccin
d
o
t
N
e
t
M
a
n

a
<
<
24
dnm.lenguajes
<<
al compilador que la coleccin es del
tipo de datos tal o cual y que slo admi-
ta valores de ese tipo en concreto.
Utilizando cdigo de C#, si tenemos
una coleccin declarada de la siguiente
forma: List<T> lo que tenemos es una
lista de T, es decir una lista del tipo de
datos T. T no es ningn tipo de datos
nuevo, simplemente es una forma de
decirle al compilador que cuando se cree
un nuevo objeto del tipo List, el tipo de
datos que almacenar ser del que se
indique al instanciarlo, por ejemplo:
List<int> creara un objeto del tipo List
cuyo tipo interno ser int; por otro lado,
tambin podemos crear listas de cual-
quier otro tipo, por ejemplo:
List<Cliente>, en este caso, el compila-
dor tendr en cuenta que nuestra inten-
cin es almacenar objetos del tipo
Cliente.
Los tipos genricos en Visual
Basic .NET
La ventaja de que los tipos de datos
genricos formen parte del propio
.NET Framework es que se pueden usar
con cualquiera de los lenguajes de .NET,
entre ellos Visual Basic.
Como ya estamos acostumbrados, la
sintaxis usada en Visual Basic casi siem-
pre difiere de la usada en C#. En el caso
de generics no es una excepcin y para
crear una coleccin genrica tendremos
que usar la instruccin Of seguida del
tipo de datos que se utilizar en dicha
coleccin. Por ejemplo, si queremos que
el tipo de datos que almacene la clase
List sea de tipo entero, la declaracin la
haremos de esta forma: List(Of Integer).
Si es de tipo Cliente, la declaramos de
esta otra: List(Of Cliente) y desde enton-
ces ser el propio compilador el que se
encargue de todo lo necesario para
generar el cdigo IL que utilice sola-
mente el tipo de datos indicado.
Supongo que la justificacin de usar
Of es porque las instrucciones del len-
guaje Basic siempre se han caracteriza-
do por ser lo ms parecidas al ingls
hablado, por tanto si tenemos la decla-
racin List(Of T) la podamos leer como:
una lista de T, que es como se reco-
mienda que se lea este tipo de declara-
ciones para que nuestras neuronas se
vayan acostumbrando a pensar de for-
ma diferente, y as poder asimilar mejor
el significado de los tipos generics.
Lo que s es cierto, es que ese pen-
samiento es ms fcil de conseguirlo
viendo la forma en que se usa en VB, ya
que, como suele ser habitual, el C# es
algo ms crptico: List<T>, pero inde-
pendientemente del lenguaje que use-
mos, lo importante es que la introduc-
cin de los tipos genricos o tipos an-
nimos en .NET Framework nos facili-
tar la creacin de ciertos tipos de datos,
adems de que en muchas ocasiones
mejorar el rendimiento de nuestras
aplicaciones.
Veamos algunas de las posibilidades
que nos da el uso de generics, que como
tendremos la posibilidad de comprobar
no slo se utiliza para crear tipos, sino
que tambin lo podremos usar para cre-
ar mtodos con parmetros de tipos
annimos (genricos).
Las colecciones del espacio de
nombres Generic
La nueva versin de .NET Frame-
work incluye un espacio de nombres con
colecciones que utilizarn los tipos gen-
ricos: System.Collections.Generic. En este
espacio de nombres se incluyen clases
como Collection, Dictionary, List,
LinkedList, Queue, Stack adems de inter-
faces como ICollection, IDictionary, IList,
IComparable, IEnumerator, etc. Todas
estas clases e interfaces nos permitirn
crear objetos que acepten tipos de datos
annimos (o genricos) que nos propor-
cionarn las ventajas de los tipos genri-
cos: seguridad de tipos y rendimiento.
Cuando creamos un objeto de cual-
quiera de estas clases es cuando indica-
mos el tipo de datos que queremos que
contenga, de esta forma el compilador
sabr que tipos de datos puede conte-
ner y nos alertar cuando intentemos
aadir algn dato que no sea del tipo
adecuado. Esto ltimo es as incluso si
tenemos desconectado Option Strict,
aunque sea en modo advertencia (war-
ning) lo cual es de agradecer, ya que si
no se hiciera esa comprobacin, no ten-
dra muchas ventajas usar las clases del
espacio de nombres Generic.
Ventajas de usar las colecciones
Generic
Es habitual que al definir una clase
de un tipo, por ejemplo Cliente, tambin
definamos una clase-coleccin para
almacenar ese tipo. En estos casos, tam-
bin es habitual que esa clase-coleccin
(Clientes) se derive de algunas de las cla-
ses base del espacio de nombres
Collections, como CollectionBase o
Los tipos genricos nos permiten tipos que almacenan datos
de distintos tipos sin perder funcionalidad y sin la sobrecarga
de realizar conversiones al recuperar un elemento.
Los elementos que podemos declarar en nuestro
cdigo como generics son clases, estructuras,
interfaces, delegados y mtodos (Sub o Function)
pero no propiedades.
d
o
t
N
e
t
M
a
n

a
<
<
25
dnm.lenguajes
<<
DictionaryBase, dependiendo del tipo de coleccin que
queramos crear, en nuestra clase Clientes tendremos
que definir ciertos mtodos, por ejemplo, el mtodo
Add, para que se asigne un valor del tipo que quere-
mos almacenar: Cliente. De igual forma, cuando acce-
demos a uno de los clientes que contiene nuestra colec-
cin, tendremos que hacer una conversin de tipos
(casting) para que devuelva uno de tipo correcto, ya
que internamente las colecciones almacenan los datos
usando el tipo Object.
Veamos un pequeo ejemplo que aclare este pun-
to. En el fuente 1 vemos cmo sera la clase-colec-
cin Clientes, para que slo acepte elementos de tipo
Cliente.
Como podemos comprobar, el mtodo Add aade
slo elementos del tipo Cliente a la coleccin, por tanto
ni en tiempo de compilacin nos permitir aadir un ele-
mento que no sea del tipo adecuado, pero la propiedad
Item, como devuelve un elemento del tipo Cliente, for-
zosamente debe hacer una conversin desde Object a
Cliente, ya que internamente la coleccin almacena los
elementos como el tipo Object, no como de tipo Cliente.
En el fuente 2 podemos ver un ejemplo de cmo
usar esta coleccin.
La ventaja de usar una coleccin del espacio de
nombres Generic es que no necesitamos definir nin-
guna clase para este propsito, ya que como este tipo
de colecciones permiten almacenar cualquier tipo de
datos, tendremos la seguridad de que slo se almace-
narn elementos del tipo que indiquemos, en nuestro
caso del tipo Cliente. Pero an hay ms, al recuperar
un elemento, no habr que hacer ninguna conversin,
ya que el tipo de datos interno de la coleccin ser
del tipo Cliente.
En el fuente 3 tenemos un ejemplo de cmo usar
una coleccin Generic que acepte elementos del tipo
Cliente.
Como podemos comprobar, el cdigo para usar
los dos tipos de colecciones es bastante similar. La
diferencia est en que en el fuente 2 estamos usando
la clase-coleccin que nosotros hemos definido para
almacenar solamente elementos del tipo Cliente y en
Imports System.Collections
Public Class Clientes
Inherits CollectionBase

Public Sub Add(cli As Cliente)


MyBase.List.Add(cli)
End Sub
Default Public Property Item(index As Integer) As Cliente
Get
Return CType(MyBase.List(index), Cliente)
End Get
Set(value As Cliente)
MyBase.List(index) = value
End Set
End Property
End Class
Fuente 1
Private Sub pruebaCLientes()
Dim clis As New Clientes
Dim c1 As New Cliente(Guillermo, Som)
clis.Add(c1)
clis.Add(New Cliente(Pepe, Lpez))

Esto dar error en tiempo de compilacin


clis.Add(pepe)

c1 = clis(2)
Console.WriteLine(Elemento 2: {0}, c1)
End Sub
Fuente 2
Private Sub pruebaClientesGeneric()
Dim clis As New List(Of Cliente)
Dim c1 As New Cliente(Guillermo, Som)
clis.Add(c1)
clis.Add(New Cliente(Pepe, Lpez))

Esto dar error en tiempo de compilacin


clis.Add(pepe)

c1 = clis(2)
Console.WriteLine(Elemento 2: {0}, c1)
End Sub
Fuente 3
d
o
t
N
e
t
M
a
n

a
<
<
26
dnm.lenguajes
<<
el fuente 3 usamos la coleccin List del espacio de
nombres Generic, la cual al instanciarla, le hemos indi-
cado que el tipo de datos que debe almacenar es del
tipo Cliente:
Dim clis As New _
System.Collections.Generic.List(Of Cliente)
Con esta declaracin, el compilador sabe que slo
debe almacenar elementos del tipo indicado despus
de Of, y lo que es ms importante, internamente no
usar objetos del tipo Object sino del tipo Cliente.
Los datos genricos en las colecciones de tipo
IDictionary
La coleccin Dictionary del espacio de nombres
Generic tambin tiene sus ventajas ya que, como sabe-
mos, las colecciones basadas en IDictionary manejan
los datos con el par clave (key) y valor (value), y la ver-
sin genrica admite dos tipos de datos annimos, el
primero para almacenar la clave y el segundo para
almacenar el valor. En las colecciones de tipo
Dictionary clsicas, tanto la clave como el valor son de
tipo Object, por tanto es obvio que usar este tipo de
coleccin en la que se pueden definir tanto el tipo de
la clave como el valor, es una gran ventaja, no slo por
la seguridad de tipos sino tambin en lo que a rendi-
miento se refiere.
Si queremos utilizar una coleccin Dictionary cuyas
claves sean de tipo String y el valor de tipo Cliente, lo
haremos de esta forma:
Dim clis As New Dictionary(Of String, Cliente)
Si preferimos utilizar claves numricas, la decla-
ramos de la siguiente forma:
Dim clis As New Dictionary(Of Integer, Cliente)
Los datos internos de las colecciones del tipo
IDictionay se almacenan en objetos del tipo
DictionaryEntry, el cual nos permite acceder tanto a la
clave (key) como al valor (value), por tanto es habitual
usar un objeto DictionaryEntry para recorrer todos los
elementos de la coleccin, pero en el espacio de nom-
bres Collections.Generic no existe una definicin de este
tipo que acepte parmetros annimos. Aunque s que
existe la estructura KeyValuePair, que nos servir para
acceder al par de datos que cada elemento de las colec-
ciones genricas Dictionary almacenan.
Para poder usar esta estructura, debemos indi-
car los mismos tipos de datos que se utilizaron para
definir la coleccin, tal como podemos ver en el
fuente 4:
Tipos genricos definidos por el usuario
Como hemos comprobado, solamente con las
colecciones del espacio de nombres Generic ya ten-
dramos mucha funcionalidad y rendimiento en los
nuevos proyectos creados con Visual Studio 2005,
pero la implementacin en .NET Framework 2.0 de
estos tipos annimos o tipos parametrizados no aca-
ba con las colecciones genricas, ya que tambin
nos permite crear nuestros propios tipos genricos
adems de poder definir incluso simples mtodos que
acepten parmetros annimos.
Mtodos genricos o mtodos con parmetros de
tipo annimo
Los mtodos de nuestra aplicacin (Sub o Function)
pueden declarar tipos annimos para que se puedan
usar parmetros o argumentos de los tipos que defi-
namos. De esta forma podramos crear mtodos con
argumentos genricos, los cuales se usarn directa-
mente y el compilador sustituir el tipo usado al lla-
mar a dicho mtodo por los parmetros annimos
indicados en la definicin del mtodo.
Por ejemplo, si tenemos un procedimiento lla-
mado pruebaParametroGeneric que define un parme-
tro de tipo genrico, podramos llamar a dicho mto-
do usando cualquier tipo de dato sin necesidad de cre-
ar sobrecargas que acepten esos tipos de datos dife-
rentes, por ejemplo:
pruebaParametroGeneric(22)
pruebaParametroGeneric(43.50)
pruebaParametroGeneric("hola")
La ventaja de que los tipos de datos genricos
formen parte del propio .NET Framework es
que se pueden usar con cualquiera de los
lenguajes de .NET, entre ellos el Visual Basic.
For Each de As KeyValuePair(Of String,
Cliente) In clis
Console.WriteLine({1},{0},de.Key,de.Value)
Next
Fuente 4
d
o
t
N
e
t
M
a
n

a
<
<
27
dnm.lenguajes
<<
La forma de definir este procedimiento sera la
siguiente:
Private Sub pruebaParametroGeneric(Of T)_
(ByVal uno As T)
Es decir, usamos la instruccin Of justo despus
del nombre del mtodo e indicamos un nombre fic-
ticio para indicar el tipo de dato annimo. Si ese
mtodo recibe parmetros del tipo annimo los decla-
raremos usando el habitual As seguido del nombre
usado despus de Of. Por tanto Of T indicar que este
mtodo acepta datos genricos del tipo T; ese tipo se
conocer al usar el mtodo y el compilador insertar
el cdigo correspondiente para que cada vez que se
haga referencia a T dentro del mtodo se use el tipo
utilizado para llamarlo.
Por ejemplo, para la primera llamada a este
mtodo genrico en el que el tipo de datos usado
es Integer, el cdigo IL generado por el compilador
es el siguiente:
call void Module1::pruebaParametroGeneric<int32>(!!0)
Es decir, el compilador genera el cdigo para usar
el tipo adecuado.
As, a primera vista, podra parecer que esta for-
ma de declarar mtodos es ms eficiente que declarar
mtodos sobrecargados, ya que slo tendramos que
declarar un solo mtodo en lugar de uno diferente
para cada uno de los tipos de datos que vayamos a usar.
Si tenemos las mismas tres llamadas anteriores, usan-
do la sobrecarga nos veramos obligados a declarar
tres mtodos, uno para cada uno de los tipos de datos
usados: Integer, Double y String.
El nico problema que hay con los mtodos de
parmetros genricos (o annimos) es que dentro del
mtodo no se sabe que tipo de dato se usar, por tan-
to estamos limitados en cuanto a las cosas que pode-
mos hacer con el parmetro. Por ejemplo, no podr-
amos hacer ningn tipo de operacin aritmtica, no
podramos hacer comparaciones, y slo podramos
usar los mtodos definidos en la clase Object, ya que
al fin y al cabo todos los tipos definidos en .NET se
derivan de la clase Object. Por tanto, lo que podamos
hacer con los parmetros annimos de un mtodo
genrico ser lo mismo que podamos hacer con un
dato de tipo Object.
En el fuente 5 podemos ver la declaracin del
mtodo genrico usado en los ejemplos anteriores:
Desilusionado? Tampoco iba a ser todo perfec-
to... algn fallo deba tener...
De todas formas, no est todo perdido, como ten-
dremos oportunidad de ver ms adelante, hay una for-
ma de indicarle al .NET Framework que queremos que
nuestro tipo annimo tenga ciertas caractersticas.
Antes de ver cmo hacer que el tipo annimo no
lo sea tanto, vamos a ver cmo podemos usar ms de
un parmetro annimo.
De igual forma que podemos declarar una lista con
varios parmetros, tambin podemos definir un mto-
do que admita ms de un tipo annimo, para ello indi-
caremos despus de Of varios tipos que posteriormente
sern sustituidos por los tipos reales.
Por ejemplo podramos definir un mtodo que reci-
ba 2 parmetros (o argumentos) de dos tipos diferentes,
la declaracin sera tal como se muestra en el fuente 6.
Es decir, despus de Of indicamos los tipos a usar
separados con comas. Por supuesto, aqu seguimos
La nueva versin de .NET Framework incluye un espacio de nombres con colecciones
de tipos genricos: System.Collections.Generic. En este espacio de nombres se
incluyen clases como Collection, Dictionary, List, LinkedList, Queue, Stack adems de
interfaces como ICollection, IDictionary, IList, IComparable, IEnumerator, etc.
Private Sub pruebaParametroGeneric(Of T) (ByVal uno As T)
Console.Write(El valor es: {0} , uno)
Console.WriteLine(y el tipo de datos es: {0},_
uno.GetType.Name)

esto dar error ya que uno * 2 se convierte en T * 2


y el compilador nos informar de que:
el operador * no est definido para
los tipos T e Integer
Console.WriteLine(El doble de {0} es {1}, uno, uno * 2)
End Sub
Fuente 5
d
o
t
N
e
t
M
a
n

a
<
<
28
dnm.lenguajes
<<
teniendo las restricciones de que no
podemos hacer demasiadas cosas con
esos parmetros, incluso si sabemos
que ambos sern de tipo Integer no
podramos hacer una simple suma, por
la sencilla razn de que el compilador
no nos permitir hacer una conversin
explcita. Por supuesto que siempre
nos quedara el recurso de declarar los
parmetros de tipo Object, pero... en
ese caso ya no estaramos usando tipos
genricos.
Nuestros propios tipos genricos
De la misma forma que podemos
definir mtodos (que no propiedades)
con argumentos genricos, tambin
podemos declarar nuestros propios tipos
de datos (clases, estructuras, delegados
e interfaces). La forma de definir una
clase genrica es parecida a lo que has-
ta ahora hemos estado viendo. En el
fuente 7 tenemos una clase que acepta
tipos genricos:
Esta clase nos permitir hacer cosas
como las mostradas en el fuente 8.
Por supuesto, las clases tambin pue-
den definir varios tipos genricos e
incluso declarar constructores, etc. En
el cdigo del fuente 9 tenemos una cla-
se con varios tipos annimos y cons-
tructores, con y sin parmetros.
Pero siempre con las mismas res-
tricciones indicadas anteriormente: que
el tipo de datos usado slo se conocer
cuando se haya declarado una variable
de la clase, por tanto en el cdigo inter-
no de la clase no podremos hacer lla-
madas a mtodos que posiblemente
estn en el tipo finalmente usado.
Restricciones en los tipos genricos
Como hemos visto anteriormente
uno de los problemas que tenemos con
los tipos genricos que hemos declara-
do es que no podemos utilizar ningu-
no de los mtodos que posiblemente
tendrn, salvo los expuestos por la cla-
se Object; tampoco podemos realizar
ningn clculo aritmtico, ni siquiera
podemos realizar conversiones expl-
citas; todo esto es debido a que el com-
pilador no conoce de antemano el tipo
que se usar en el parmetro annimo,
ya que ese conocimiento solamente lo
tiene al declarar una clase o al llamar a
un mtodo.
Como vemos esto es una limitacin
muy importante, ya que si el cdigo que
tenemos en uno de estos tipos o mto-
dos annimos debe realizar alguna com-
probacin o algn tipo de accin sobre
uno de los parmetros, no podramos
hacerlo.
Para solventar estos problemas
podemos declarar tipos genricos que
restrinjan los tipos de datos que pode-
mos usar como parmetros annimos.
De esta forma, podemos forzar a que
el tipo usado cumpla ciertas condicio-
nes, por ejemplo, que implementen cier-
tas interfaces o que se deriven de tal o
cual clase e incluso que el tipo usado
tenga al menos un constructor sin par-
metros; en C# adems podemos indicar
Private Sub pruebaVariosGeneric(_
Of T1,T2) (ByVal uno As T1, _
ByVal otro As T2)
Console.WriteLine(uno: {0}, _
otro: {1}, _
uno, otro)
End Sub
Fuente 6
Public Class tipoGenericVB(Of tipo)
Private _unaPropiedad As tipo
Public Property unaPropiedad() As tipo
Get
Return _unaPropiedad
End Get
Set(ByVal value As tipo)
_unaPropiedad = value
End Set
End Property
End Class
Fuente 7
Sub pruebaTipoGenericVB()
Dim t1 As tipoGenericVB(Of String)
t1 = New tipoGenericVB(Of String)
t1.unaPropiedad = Hola

Dim t2 As New tipoGenericVB(Of Integer)


t2.unaPropiedad = 22

End Sub
Fuente 8
Public Class tipoGenericVB2(Of tipo1, tipo2)
Sub New()
End Sub
Sub New(ByVal uno As tipo1, ByVal otro As tipo2)
Me.unaPropiedad = uno
Me.otraPropiedad = otro
End Sub

Private _unaPropiedad As tipo1


Public Property unaPropiedad() As tipo1
Get
Return _unaPropiedad
End Get
Set(ByVal value As tipo1)
_unaPropiedad = value
End Set
End Property

Private _otraPropiedad As tipo2


Public Property otraPropiedad() As tipo2
Get
Return _otraPropiedad
End Get
Set(ByVal value As tipo2)
_otraPropiedad = value
End Set
End Property
End Class
Fuente 9
d
o
t
N
e
t
M
a
n

a
<
<
29
dnm.lenguajes
<<
que el tipo annimo sea un tipo por referencia o por
valor. Todo esto es posible gracias a las restricciones
(constraints) de los parmetros usados en nuestros tipos
genricos.
Veamos cmo podemos obligar que se usen cier-
tos tipos.
Las restricciones (constrains) se hacen como si decla-
rsemos el tipo annimo con la restriccin que que-
remos usar, por ejemplo si los tipos usados deben
implementar la interfaz IComparable se declarara de
la siguiente forma: Of T As IComparable.
Por ejemplo, en el fuente 10 tenemos un mtodo
con tipos annimos que deben implementar la inter-
faz IComparable:
Aunque esto tampoco sera nada del otro mundo,
ya que esa misma funcionalidad la podemos conseguir
simplemente declarando el parmetro del tipo
IComparable, tal como se muestra en el fuente 11 y el
compilador tambin nos avisara si quisiramos pasar
como parmetro un objeto que no implemente esa
interfaz.
Pero lo que no podremos hacer sin el uso de los
generics es poder comprobar que no slo implemente
una interfaz, sino que implemente varias interfaces o
que el parmetro disponga de un constructor.
Restringir a tipos que implementen varias interfaces
Para poder restringir a tipos que implementen
varias interfaces debemos incluir todas las interfaces
entre un par de llaves despus de As, tal como pode-
mos ver en la siguiente declaracin:
Private Sub pruebaVarios(Of T As {ICloneable,_
IComparable})(ByVal uno As T)
Restringir a tipos que se deriven de una clase
Adems de restringir una o ms interfaces, tam-
bin podemos indicar que dicho tipo se derive de una
clase en concreto, dicha clase la indicaramos de igual
forma que con las interfaces, la nica restriccin en el
uso de clases es que solamente se puede indicar una
clase. Esto, en parte, podra parecer lgico ya que los
tipos de .NET no se pueden derivar de ms de un tipo,
aunque s podemos hacer que una clase se derive indi-
rectamente de otra, por ejemplo si la clase Contenido
se deriva de (hereda) la clase CID y la clase Palabra se
deriva de Contenido, Palabra tambin hereda los miem-
bros de CID. Por supuesto en esta jerarqua de cla-
ses, las interfaces implementadas por los tipos bases
tambin forman parte de las clases derivadas.
La forma de hacer esa restriccin sera igual que
con las interfaces y el orden en el que se indique la
Los tipos genricos no forman parte de las
especificaciones comunes de .NET (CLS), por
tanto si queremos que nuestra aplicacin sea
compatible con esas especificaciones no
podremos usar componentes que
expongan clases genricas.
En C#, adems de las restricciones que hemos visto, tambin se
pueden hacer otras dos ms:
1- Que el tipo sea un tipo por referencia.
2- Que el tipo sea un tipo por valor
La forma de hacer estas restricciones ser usando class o struct
respectivamente y se usarn tal como se muestra a continuacin:
// el tipo usado debe ser un tipo por referencia
class GenericCS4<T> where T : class
// el tipo usado debe ser un tipo por valor
class GenericCS4V<T> where T : struct
Private Sub prueba(Of T As IComparable)_
(ByVal uno As T)
Console.WriteLine(_
{0} implementa IComparable, _
GetType(T).Name)
End Sub
Fuente 10
Private Sub pruebaSin(ByVal uno As IComparable)
Console.WriteLine(_
{0} implementa IComparable, _
CObj(uno).GetType.Name)
End Sub
Fuente 11
d
o
t
N
e
t
M
a
n

a
<
<
30
dnm.lenguajes
<<
clase no tiene importancia, aunque deberamos indi-
carla al principio, (antes de cualquier otra restric-
cin), de esta forma, si algn programador de C# ve
nuestro cdigo le resultar ms fcil entenderlo, ya
que en C# las restricciones a clases deben aparecer
antes del resto de tipos restringidos.
El siguiente cdigo muestra un mtodo que res-
tringe los tipos a usar como parmetros a los que
implementen dos interfaces (ICloneable e IComparable)
y estn derivadas (directa o indirectamente) de una
clase llamada CID.
Sub prueba2(Of T As {CID, ICloneable,
IComparable}) _
(ByVal uno As T)
Restringir a tipos que implementen un constructor
La ltima restriccin que podemos indicar es que
el tipo annimo tenga un constructor que no reciba
parmetros, con idea de que se pueda crear usando
As New Tipo.
En este caso, utilizaremos la propia instruccin
New, la cual se agregar en la lista de restricciones,
como si de una interfaz o clase se tratara:
Sub prueba3(Of T As {CID, New })(uno As T)
Slo queda aclarar una cosa ms, los tipos de datos
que se pueden usar para realizar restricciones deben
ser tipos por referencia y que no estn sellados es
decir, que no estn marcados como NotInheritable, al
menos en Visual Basic, ya que C# puede restringir
los tipos genricos a tipos por valor.
Y esto es todo lo que por ahora se puede decir
sobre generics desde el punto de vista del progra-
mador de Visual Basic .NET, no sin recordar que
an estamos tratando sobre la versin beta 1 de
.NET Framework; por tanto es posible que la sin-
taxis usada pueda variar, como ya lo hizo desde la
primera alfa de Visual Studio 2005 (entonces lla-
mada Whidbey).
Nota a tener en cuenta
En estos ejemplos estamos mostrando
solamente la declaracin de mtodos, pero
las restricciones tambin las podemos apli-
car de la misma forma a clases, estructuras,
interfaces o delegados. ]
[
El cdigo usado en los ejemplos de este artculo, en versin completa, as como los mismos ejemplos para C# se pueden descargar como siempre
en el material de apoyo de este artculo en nuestra pgina web en : www.dotnetmania.com/articulos/008/apoyo/generics.html
Manipular el texto de un TextBox
Por Guillermo Guille Som (elguille.info)
Seleccionar todo el texto de un TextBox:
TextBox1.SelectAll()
Copiar el texto seleccionado de un TextBox en el portapapeles:
TextBox1.Copy()
Pegar el contenido del portapapeles en un TextBox:
TextBox1.Paste()
Cortar el texto seleccionado de un TextBox en copiarlo en el
portapapeles:
TextBox1.Cut()
Comprobar si un TextBox puede deshacer:
VB: If TextBox1.CanUndo Then ...
C#: if(TextBox1.CanUndo) ...;
Deshacer el ltimo cambio realizado en un TextBox:
TextBox1.Undo()
Procedimientos de eventos
Por Guillermo Guille Som (elguille.info)
Asignar dinmicamente un evento a un procedimiento:
VB: AddHandler TextBox1.Enter, AddressOf TextBox1_Enter
C#: TextBox1.Enter += new EventHandler(TextBox1_Enter);
Quitar un procedimiento de evento:
VB: RemoveHandler TextBox1.Enter, AddressOf TextBox1_Enter
C#: TextBox1.Enter -= new EventHandler(TextBox1_Enter);
trucos.trucos.trucos
NOTA: Salvo que se indique lo contrario, el cdigo mostrado es vlido tanto para VB .NET como para C#,
si bien para usarlo con C# habr que aadir un punto y como (;) al final.
d
o
t
N
e
t
M
a
n

a
<
<
31
reconciliar My.frusta-
cin, motivado por My.incapacidad de
escribir My.buen.cdigo, siguiendo la
emergente tecnologa de lnea nica y
las muchas ganas de escribir artculos...
decid escribir My.auto.parafarnalia.
Cuando en antao estbamos abu-
rridos de programar con lenguajes de
bajo nivel, los lenguajes de alto nivel
nos devolvieron la ilusin. Cansados
por el modelo de ejecucin que nos
obligaba a menudo repetir y repetir
las mismas secuencias de programa-
cin, las pobres herramientas de depu-
racin y el dudoso aprovechamiento
de recursos, nos hizo pensar que todo
iba a ser ms fcil. Poder sintetizar
funciones en un solo mandato y la
obsesin por reutilizar cdigo nos
pareca fantstico, tanto los depura-
dores como la optimizacin en el uso
de recursos estaban por fin alcanzan-
do un buen nivel.
Empezamos a inventar complejas
DLL's, API's, MFC's, mil y un artilu-
gios que junto al versionado de lengua-
jes terminaron por crucificarnos. Quizs
buscando la coherencia, C++ fue y ha
sido el nico lenguaje que ha manteni-
do una evolucin vertical y continua,
sobreviviendo al tornado .NET (no olvi-
demos que es el lenguaje de lenguajes).
Sin embargo los que apostaron por un
lenguaje de evolucin paralela y al gran
invento runtime, tuvieron que vivir a
bordo de un buque sin quilla; por citar
alguno recordaremos como de Quick
Basic 2.0, 3.0, 4.0, 4.5... pasamos a Visual
Dos 1.0, Visual Basic 2.0, 3.0, 4.0, 5.0,
6.0, dios mo!, el cambio a cada uno de
ellos signific para el que menos un cal-
vario. Todo para recorrer un largo cami-
no que nos conducira a lo que final-
mente hemos venido a llamar POO o
Programacin Orientada a Objetos.
Qu bien, Visual Basic .NET es un
autntico lenguaje OO orientado a
objetos.
Sinceramente la ilusin me embar-
ga, tengo ganas de llorar! Es tan gran-
de la ilusin, que no puedo evitar pen-
sar que ha valido la penar recorrer
todo el largo camino para llegar aqu.
Tengo la sensacin de ser un autnti-
co gur, me s los truquillos de un
montn de versiones de un lenguaje!
pero para qu me sirve?, creo que
ahora la nostalgia me hace echar de
menos aquel:
mov ah,88h
int 15h
sub ax,[MemCorr]
jbshort InitMemory
< <
MY, un nuevo namespace
Por Pep Lluis Bao
Grupo de Desarrolladores
Spain.Net
Recientemente nuestro maestro Daniel A.Seara, me rechaz dos trucos cortos porque segn me
cuenta, y con toda razn, no describan ninguna tecnologa, as como tampoco detallaba apenas cdi-
go. Apenas cdigo!, pero si la codificacin est desapareciendo! qu rabia! Casi seguro tampoco
podr publicar My.primer.articulo porque My.como.tecnologa es difcil de describirla dentro del con-
cepto de programacin convencional.
Con la idea de
Private My as Pep_Lluis = new Pep_Lluis
Public sub DeclaroMyIdea()
My.Paradigma.de.Programacion.Conceptual = new concept
My.Opinion.Sobre.Programacion.Conceptual = new neuronal.concept
If My.Opinion.Sobre.Programacion is not My.Opinion.Acertada then
My.Problema.es.Gordo
End if
End sub
Fuente 1
d
o
t
N
e
t
M
a
n

a
<
<
32
dnm.lenguajes.vb.net
<<
Al menos el mov continua siento el mismo mov des-
pus de ms de 30 aos!
Finalmente cuando estbamos seguros de haber
dado en el clavo y bajo la estela del me.esto, me.LoOtro,
aparece un misterioso My.
Me.aborda una tremenda curiosidad, qu caray
ser el My, y a cuento de qu viene el My, si precisa-
mente ya tenemos todo lo que necesitamos; adems
ahora que empiezo a entender la programacin orien-
tada a objetos con sus clases, herencias, polimorfis-
mos, sobrecargas y tantas cosas maravillosas que me
permiten ese grado de abstraccin que incluso a veces
me quedo absorto durante horas mirando al techo,
quien My viene a perturbar My paz...? MY!
Vea un tupido ejemplo en el fuente 2 (lo he exa-
gerado, para hacerlo mas divertido).
Ahora probemos con My:
Para no engaar a nadie tengo que confesar que
.Play tiene 3 sobrecargas.
Comprenderis My necesidad de escribir tanto
para desarrollar todo esto, pues si a nuestro amigo
Daniel A. Seara le vuelvo a mandar un ejemplo que
describe cmo reproducir un sonido usando Visual
Studio 2005 y le adjunto el cdigo: My.Computer.
Audio.Play("Sonido.Wav"), me hubiera tumbado de
nuevo, adems de decirme que no lo moleste ms con
estas sandeces.
Creo entender que My, es la respuesta de
Microsoft al crecimiento de la versin 2 del fra-
mework, apostando por una metodologa que
intenta facilitar y poner orden al acceso de las fun-
ciones con el nuevo namespace, y de paso crear adic-
cin a un tipo de programacin ms conceptual,
donde el lenguaje pierde la excesiva abstraccin de
la sobrecarga del objeto heredado, pasando a con-
cretar directamente al objeto, qu funcin quiere
realizar con l.
Ya no va a ser necesario crear una instancia
manualmente para llamar a un servicio; podremos
de esta manera referenciar directamente al obje-
to:
Antes de continuar hablando de My, valoro en
tmida la puesta en escena de Microsoft, pues en la
versin pre-relase de Visual Basic 2005, han inclui-
do muchos objetos, pero a mi entender no todos, por
lo que inicialmente puede ser un juego para ver qu
retroalimentacin reciben en Redmond y posterior-
mente evolucionar en funcin a los resultados. A pesar
Public Class SoundTestForm
Inherits System.Windows.Forms.Form
This function plays a WAV file.
Private Declare Function PlaySound Lib WINMM.DLL _
Alias sndPlaySoundA (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
This enumeration holds related constants.
Private Enum PlaySoundFlags
Sync = &H0
Async = &H1
[Loop] = &H8
NoStop = &H10
NoDefault = &H2
End Enum
Private Sub cmdPlaySync_Click(ByVal sender As _
ystem.Object, ByVal e As System.EventArgs) _
Handles cmdPlaySync.Click
Me.Cursor = Cursors.WaitCursor
PlaySound(testsound.wav, PlaySoundFlags.Sync)
Me.Cursor = Cursors.Default
End Sub
Private Sub cmdPlayAsync_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)_
Handles cmdPlayAsync.Click
Me.Cursor = Cursors.WaitCursor
PlaySound(testsound.wav, PlaySoundFlags.Async)
Me.Cursor = Cursors.Default
End Sub
Private Sub cmdPlayLoop_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)_
Handles cmdPlayLoop.Click
PlaySound(testsound.wav, PlaySoundFlags.Async_
Or PlaySoundFlags.Loop)
End Sub
Private Sub cmdEndLoop_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)_
Handles cmdEndLoop.Click
PlaySound(Nothing, PlaySoundFlags.Async)
End Sub
End Class
Fuente 2. Sin My
Public Class Sonidos
Reproducir un sonido
Private Sub SingSong()
My.Computer.Audio.Play(Sonido.Wav)
End Sub
End Class
Fuente 3. Con My
Dim Servicio As new www.srv.com.ServiciosWeb()
MessageBox.Show( Servicio.CalculaAmortizacion(2,3))
Fuente 4. Sin My
MessageBox.Show( My.WebServices.ServiciosWeb.CalculaAmortizacion(2,3) )
Fuente 5. Con My
d
o
t
N
e
t
M
a
n

a
<
<
33
dnm.lenguajes.vb.net
<<
de todo si no me equivoco vamos a comer My hasta
en la sopa.
Tambin veo en My un nuevo paradigma de pro-
gramacin ms conceptual, que nos facilitar nave-
gar dentro de los sistemas de nombres del .NET
Framework; ello nos simplificar encontrar la cla-
se adecuada y nos despejar la tendencia a usar las
llamadas a las API's por desconocimiento de que ya
existe una funcin equivalente en .NET Framework
y evidentemente mucho ms facil de utilizar, sien-
do muy intuitiva al usar una navegacin jerrquica
de los objetos expuestos a partir de una raz.
En su base, My nos ofrece la posibilidad de explo-
rar distintas funciones de clases organizadas en
My.Application, My.Computer, My.Forms, My.Resources,
My.User y My.WebServices.
Mientras Forms, Resources y WebServices se centran
en la funcionalidad del proyecto, el resto est total-
mente focalizado en el nuevo framework.
El aspecto intuitivo de My, es formidable; fijaros
en cmo leer un archivo de texto :
O cmo descargar un archivo desde donde sea y
ponerlo donde quiera:
Tambin con alguna que otra sobrecarga pode-
mos copiar:
Antes de copiar podramos averiguar si el usua-
rio es un administrador!:
Creo que dejo abierto el inters por conocer ms
sobre My. En todo caso y si la audiencia lo requie-
re, podemos continuar en un segundo artculo
hablando ms sobre cada una de las reas, con ricos
ejemplos y comentarios ms tcnicos. Con esta
introduccin slo he pretendido despertar vuestro
inters.
Finalmente pediros vuestra benevolencia por
permitirme un artculo que intenta tratar un tema
interesante dndole un toque de humor. Por cier-
to, otro da podramos hablar de los Snippets, que
como ya sabis son conjuntos funcionales de ins-
trucciones, que nos evitan tener que codificar
secuencias repetitivas de cdigo; hablan de un mon-
tn de secuencias preescritas.
Mientras termino de editar estas lneas, al fon-
do veo a mi suegra frotndose las manos; lleva tiem-
po intentando encontrar trabajo e intuyo que con
lo de los Snippets va a ser capaz de quitarme My
empleo.
Dim MisLinias As TextBox = New TextBox
MisLinias.Text = My.Computer.FileSystem._
ReadAllText(C:\MidocText.txt)
Fuente 6
Dim MiUrl As String = "www.srv.com/demo.txt"
Dim MiDir as String = "c:\Temp"
My.Computer.Network.DownLoadFile(MiUrl, MiDir)
Fuente 7
Dim MiCarpeta As String = C:\Temp\Mia
Dim TuCarpeta As String = C:\Temp\Tuya
My.Computer.FileSystem.CopyDirectory(MiCarpeta, TuCarpeta)
Fuente 8
If My.User.IsInRole(BUILTIN\Administradores) Then
My.Computer.FileSystem.CopyDirectory(MiCarpeta, TuCarpeta)
Else
MessageBox.Show(Usted no puede hacer Esto!)
End If
Fuente 9
Ya no va a ser necesario crear una
instancia manualmente
para llamar a un servicio; podremos
de esta manera referenciar
directamente al objeto.
Tambin veo en My un nuevo
paradigma de programacin ms
conceptual, que nos facilitar
navegar dentro de los sistemas de
nombres del .NET Framework
se presentaba como una de esas
herramientas junto a la disponibilidad inmediata de Web
Services Enhacements 2.0 y el lanzamiento de la beta
de Microsoft Office Information Bridge Framework.
La necesidad de Visual Studio Team System
en el ciclo de vida de un desarrollo
Visual Studio 2005 Team System, nombre en cla-
ve Burton, aporta un conjunto de herramientas diri-
gidas a desarrolladores, arquitectos, jefes de proyectos,
testers, en definitiva, al equipo de desarrollo de una
aplicacin. Para los que conocen bien el desarrollo con
Borland, Visual Studio Team System viene a ser algo
as como Application Lifecycle Management (ALM),
iniciativa de Borland para facilitar dicho proceso de
desarrollo.
Con la aparicin de Visual Studio .NET y la pla-
taforma .NET Framework, Microsoft empezaba una
nueva era, apoyando y facilitando la migracin y la
interoperabilidad con COM, sabiendo que .NET iba
a recalar, poco a poco, en muchas empresas y depar-
tamentos TI. Su rpida expansin y el desarrollo de
aplicaciones distribuidas as como arquitecturas basa-
das en servicios (SOA) hacan que grandes proyectos
resultaran excesivamente caros a la hora de sacar la
mxima productividad durante su ciclo de vida
(Software Development Life Cycle).
Con la prxima aparicin de Visual Studio .NET
2005, Microsoft ofrecer Visual Studio Team System
que subsanar todas estas deficiencias permitiendo
que el alto crecimiento de la complejidad de las apli-
caciones y el ciclo de vida de dicha aplicacin, sea cual
sea su fase, estn respaldados por una serie de herra-
mientas y guas necesarias que permitan resultados
fiables, sin poner en riesgo ni la productividad ni la
escalabilidad de la aplicacin.
Visual Studio Team System contendr una serie de
herramientas segn la edicin (ver figura 1); as,en fun-
cin de las necesidades del proyecto tendremos a nues-
tra disposicin unas herramientas u otras. En la tabla 1
se definen para cada edicin, sus caractersticas. Adems
tambin se ofrece una gua de procesos probada, una
gua de arquitectura preceptiva y aceleradores de solu-
ciones que asisten a organizaciones en mejorar la previ-
sibilidad y confiabilidad de entregas de las soluciones.
Destacar que Visual Studio Team System no ha sido
desarrollado para aplicaciones 64 bits aunque s puede
ser utilizado sobre stas y que Visual Studio Team System
es complementario a Microsoft Project Server.
Qu aporta Visual Studio Team System?
Visual Studio Team System no slo aporta herra-
mientas que solucionan de manera vertical algunas
deficiencias sino que adems reduce la complejidad
que supone la distribucin de arquitecturas basadas
en servicios, facilita la colaboracin y comunicacin
entre todos los componentes de un equipo, incluso si
stos estn geogrficamente separados, desde el direc-
tor ejecutivo hasta los programadores (pueden llegar
a trabajar de manera simultanea con hasta 500 perso-
nas), de una manera parametrizable segn requisitos
particulares, y es extensible no slo en cuanto a sus
d
o
t
N
e
t
M
a
n

a
<
<
34
Visual Studio Team System, a escena!
Por Jos Miguel Torres
Tcnico Superior en Desarrollo
de Aplicaciones Informticas (MRW)
< <Visual Studio Team System
En la 12 conferencia anual del TechEd, el director ejecutivo de Microsoft, Steve Balmer, presen-
t un conjunto de herramientas y tecnologas orientadas para satisfacer las deficiencias evidentes
que hasta ahora presentaba su compaa en el desarrollo de los ciclos de vida de los proyectos de
software, tanto para el desarrollador, el arquitecto, el ingeniero de sistemas o el profesional.
propias herramientas internas sino que
adems se extiende con cerca de 450
productos de 190 partners distintos. Un
amplio y parametrizable conjunto de
herramientas.
Integracin
Visual Studio Team System incre-
menta la productividad y consistencia
de las aplicaciones o proyectos inte-
grndose junto la interfaz de usuario
(UI), con los datos y con los procesos.
En la integracin de la interfaz de
usuario, todo el conjunto de herra-
mientas de Visual Studio Team System
estn totalmente dentro de los parme-
tros de integracin que facilita al usua-
rio, sea desarrollador, arquitecto, etc-
tera, la utilizacin de los mismos.
La integracin de datos en Visual
Studio Team System revolucionar la
manera de administrar la mtrica del
software. Visual Studio obtendr datos
exactos, diferencindose as de la gran
cantidad de datos que ofrecen otras solu-
ciones de SDLC. Estos datos se pre-
sentan en distintos tipos de representa-
cin de informes, incluyendo informes
estndares establecidos por la experien-
cia de clientes y el equipo interno de
desarrollo de Microsoft, que pueden ser
utilizados y compartidos por distintas
personas dentro de un mismo proyec-
to, as como crear nuestros propios
informes parametrizados.
En la integracin de procesos, el
comportamiento de la herramienta de
Team System es dictado por el propio
proceso del proyecto. De esta manera
se asegura que ningn tipo de informa-
cin se pierda entre las distintas fases
del proyecto o entre varios grupos de
equipos.
Extensibilidad
Visual Studio Team System fue dise-
ado dentro del modelo de la extensi-
bilidad. Cuando se integran las herra-
mientas que apoyan el SDLC, los equi-
pos ven las ventajas en la eficacia ascen-
dente del equipo y la reduccin de la
complejidad, gracias a la extensibilidad
con otras herramientas. La extensibili-
dad ocurre en los tres niveles de la inte-
gracin: UI, datos, y proceso.
La extensibilidad en la interfaz de
usuario ya que Visual Studio Team
System utiliza el actual programa Visual
Studio Industry Partner, para com-
partir distintos productos y servicios
totalmente integrados en la IDE de
Visual Studio .NET.
Asimismo, Visual Studio Team System
utiliza Visual Studio Team Foundation
Core (TFCS) para integrar dichas herra-
d
o
t
N
e
t
M
a
n

a
<
<
35
dnm.plataforma
<<
Tabla1. Caractersticas de las diferentes ediciones de Visual Studio Team System.
Edicin Caractersticas
Visual Studio Team Architect Edition Diseadores que permiten al arquitecto
disear soluciones orientadas a servicios
que pueden ser validados contra contex-
tos de produccin.
Visual Studio Team Developer Edition Herramientas de desarrollo avanzado
que permite al equipo disear el ciclo de
vida de una manera rpida, frecuente y
eficaz.
Visual Studio Team Test Edition Herramientas de testeo avanzadas que
permite verificar y estudiar su funciona-
miento antes de ser llevado a un entorno
de produccin.
Visual Studio Team Foundation Edition Herramientas de colaboracin de equi-
pos basadas en servidor que posibilita a
organizaciones seguir el estado y evolu-
cin de un proyecto.
Figura 1. Las distintas ediciones de Visual Studio Team System.
mientas con otras. TFCS provee una serie de servicios
que habilitan la integracin de terceras herramientas con
las herramientas Team System.
En la extensibilidad de procesos, Visual Studio
Team System utiliza patrones metodolgicos para defi-
nir procesos que seguirn los proyectos.
Por otra parte, Microsoft Visual SourceSafe
seguir existiendo como tal, como herramienta para
soluciones individuales o de pequea envergadura.
Team System incluye un servidor que puede integrarse
con un mayor nmero de equipos y proyectos de una
manera ms escalable. Asimismo, Microsoft ha anun-
ciado una herramienta de migracin de Visual
SourceSafe 6.0 a Team System para todos aquellos
que quieran migrar al nuevo conjunto de herramien-
tas de administracin.
Diseadores de sistemas distribuidos; un
pequeo vistazo
De las muchas herramientas disponibles, comen-
taremos los diseadores de sistemas distribuidos. Hasta
ahora en el desarrollo de este tipo de arquitecturas las
herramientas para agilizar el engranaje de la infor-
macin compartida eran escasas y es por ello que en
la edicin Architect encontraremos una solucin que
sorprender a muchos.
Los diseadores de sistemas distribuidos son un con-
junto de herramientas que ayudan a reducir la comple-
jidad y desarrollo de las aplicaciones orientadas a servi-
cios. En este conjunto de herramientas tenemos un dise-
ador de conectividad entre aplicaciones (Application
Connection Designer), que permite a arquitectos y
desarrolladores definir tanto el alcance tcnico de la
aplicacin como la configuracin de la misma dentro
de un sistema. Tambin encontramos un diseador de
datacenter (Logical Datacenter Designer), el cual crea
diagramas de interconectabilidad, un diseador para la
integracin de las aplicaciones dentro de un sistema y
un diseador de desarrollo.
Los diseadores de sistemas distribuidos pueden
ayudar al arquitecto de software a validar la seguridad
del diseo contra el Web Service Enhacements
(WSE), IIS o SQL Server e incluso de ASP .NET,
integrndose con autenticacin de Windows o Web
perfectamente. Tambin tendrn plena integracin y
soportarn Dynamic System Initiative (DSI) y
System Definition Model (SDM).
DSI es una iniciativa comercial en cuanto a hard-
ware y software entorno a un nuevo software basado
en SDM. Esta nueva arquitectura viene siendo el pun-
to inicial de cmo podemos simplificar y automatizar
de la manera ms eficientemente posible el desarro-
llo por/para nuestros clientes. Por otra parte, SDM
unifica los requisitos y polticas operacionales como
parte del DSI y est basado en XML.
En la figura.2 podemos observar el diseador de
sistemas distribuidos de la Beta 1 de Visual Studio
.NET 2005, el cual nos da una idea de por dnde van
a ir este tipo de herramientas, la integracin con el
IDE y la facilidad de uso.
Por ltimo, detallar que los diseadores de siste-
mas distribuidos podrn interoperar con servicios basa-
dos en J2EE mediante la utilizacin de WSDL. De
la misma manera soportarn BizTalk como servicio
en el diagrama de interconexin de aplicaciones y
otros servidores .NET.
Conclusin
Las perspectivas antes del lanzamiento de Visual
Studio Team System son muy buenas, Microsoft ha
sabido identificar los problemas y ha apostado por un
conjunto de herramientas segn el marco operativo
que marca el mercado de desarrollo de software en
estos momentos, en la era .NET. As, Microsoft
Solution Framework contar con el respaldo de una
serie de herramientas que hasta ahora no estaban, y
con la extensin de documentos y experiencias que el
equipo de desarrollo de Microsoft compartir con y
entre otras empresas.
d
o
t
N
e
t
M
a
n

a
<
<
36
dnm.plataforma
<<
Figura 2. Diseador de sitemas distribuidos del
<<Visual Studio .NET 2005 Beta 1.
...aporta un conjunto de herramientas
dirigidas a desarrolladores, arquitectos,
jefes de proyectos, testers...
d
o
t
N
e
t
M
a
n

a
<
<
38
<<
que llama la atencin sobre
Visual Studio 2005, la encontramos sin siquiera
abrir o crear un proyecto nuevo. La Ventana del
Explorador de Servidores, como puede apreciar-
se en la figura 1, ha ampliado considerablemente
su radio de accin, y ahora disponemos de un con-
junto completo de recursos de acceso a la informa-
cin del sistema: desde informacin del hardware,
hasta el software instalado en el equipo, incluyen-
do accesos a recursos de bajo nivel, como los pro-
cesos en ejecucin, los elementos compartidos o los
subprocesos en ejecucin (threads).
Adems, podemos arrastrar y soltar uno de estos
componentes, y Visual Studio hace el seguimiento,
incluyndolo en nuestro proyecto y ofrecindonos
informacin relacionada sobre el proceso, lista de la
jerarqua de clases a la que se asocia y un montn de
caractersticas de ejecucin dentro de la Ventana de
Propiedades. Para ello utiliza CIMV2 la nueva versin
de la base de datos de informacin del sistema, pro-
gramable desde versiones anteriores, e inmersa en el
sistema de control llamado Windows Management
Instrumentation (WMI).
Como elemento independiente de cualquier pro-
yecto, cabe destacar igualmente una nueva herra-
mienta, llamada Code Snippet Manager, que permite
organizar nuestros fragmentos de cdigo por cate-
goras, para insertarlos posteriormente, desde el edi-
tor de cdigo fuente, en cualquier parte. Como vere-
mos, la presencia adicional de las Smart Tags, (eti-
quetas inteligentes) al estilo Office XP/2003, junto
a las llamadas Expansiones de Cdigo y la Refactorizacin
son valiosas ayudas para la edicin que permiten
corregir globalmente, aadir estructuras y persona-
lizar nuestra edicin hasta extremos insospechados
anteriormente.
Un vistazo a Visual Studio 2005 Beta 1
Por Marino Posadas
MVP Visual Developer C#
Alhambra-Eidos/ElAveFenix.com
< <
El pasado mes de julio hemos recibido ya la primera beta de la herramienta de desarro-
llo de Microsoft. Vamos a centrarnos aqu en este entorno de produccin y sus nuevas
caractersticas. Como el lector podr comprobar, este nmero especial incluye informa-
cin de primera mano sobre otros aspectos de .NET Framework, como ASP.NET 2.0,
ADO.NET 2.0, Visual Studio Team System (el nuevo sistema de modelado y control del
ciclo de vida de las aplicaciones), Generics, y algunas cosas ms.
Una de las primeras cosas
Figura 1
d
o
t
N
e
t
M
a
n

a
<
<
39
dnm.plataforma
<<
Tipos de proyecto
Una vez que seleccionamos un nue-
vo proyecto, recibimos la segunda sor-
presa del IDE, ya que el nmero de pro-
yectos disponibles ahora se ha multipli-
cado, destacando las abundantes nove-
dades en el campo de la programacin
de dispositivos mviles, como se apre-
cia en la figura 2.
Podemos distribuir una de estas
aplicaciones a un dispositivo real, o tam-
bin seleccionar cualquiera de los simu-
ladores disponibles, completados aho-
ra con nuevas posibilidades de presen-
tacin a travs del selector Form Factor.
La visualizacin del programa en
depuracin o ejecucin tiene lugar en
cualquiera de los simuladores (lo que ya
estaba disponible en la versin anterior),
pero esta posibilidad de ajuste fino de
la presentacin de los formularios, per-
mite adaptar nuestro diseo al de los
mltiples dispositivos de este tipo exis-
tentes en el mercado. Por lo dems, dis-
pondremos de las mejores capacidades
de control de cdigo, depuracin y dis-
tribucin, e incluso, de diseo, gracias
a la presencia de multitud de nuevos
controles, y a la posibilidad (muy soli-
citada por los desarrolladores) de crear
nuestros propios controles, sin necesi-
dad de utilizar un lenguaje como C++.
Todo un nuevo sistema de creacin
Web
Aunque el lector encontrar ms
detalles de la nueva versin de ASP.NET
en el artculo de Jorge Serrano
("ASP.NET 2.0") de este mismo nme-
ro, hay cuestiones que tienen que ver ms
con la estructura de creacin de sitios que
con el lenguaje. Lo que primero sorprende
es que ya no existen Proyectos ASP.NET,
sino una nueva herramienta integrada en
el IDE, llamada Visual Web Developer que
nos da a escoger entre crear proyectos y
crear un sitio Web, pudiendo seleccionar,
en este ltimo caso, la cre-
acin de un sitio desde
cero, un sitio personal a
partir de una plantilla, un
sitio ASP. NET prepara-
do para el manejo de
Crystal Reports o un
Servicio Web.
Lo ms interesante
es que se puede selec-
cionar desde el comien-
zo una ubicacin URL
real, y el IDE descarga-
r toda la informacin
necesaria para su ges-
tin, aprovechndose en las
actualizaciones de una nueva
caracterstica, consistente en
la inclusin de una utilidad FTP
embebida en l, mediante la cual
podemos actualizar nuestra aplicacin
de forma remota, o simplemente uti-
lizarlo para navegar por sitios FTP,
como muestra la figura 3.
De hecho, el nuevo IDE
gestiona los sitios Web de for-
ma independiente, sin reque-
rir siquiera de las extensiones
de FrontPage y permite -si as
se desea- realizar una gestin
autnoma, gracias a una nue-
va herramienta, llamada Web
Site Administration Tool. Hay
que notar, igualmente, la posi-
bilidad de creacin de nuevos
elementos integrantes de
nuestros sitios Web: a cual-
quiera de los ya existentes,
podemos aadir ahora otros,
como los HTTPHandlers
(Manejadores HTTP), las
MasterPages (Pginas Maestras), los
Componentes de Datos, o los Generadores
de Imgenes (Image Generators). Me gus-
tara destacar especialmente el elemen-
to DataComponent, que dispone de una
completa interfaz visual para realizar las
conexiones con el ori-
gen de datos, selec-
cionar las bases de
datos y tablas de tra-
bajo y generar a par-
tir de ah el cdigo
necesario para un
mantenimiento com-
pleto. En el visor de
clases, aparece como
una nueva clase que
hereda de DataSet.
Por su parte, los nue-
vos manejadores son
clases predeterminadas que implemen-
tan la interfaz IHttpHandler, permitien-
do realizar cualquier ajuste necesario al
modo de procesar las pginas por el ser-
vidor.
Adems, el usuario podr compro-
bar la existencia de una docena de nue-
vos controles de servidor, as como el
soporte de los estndares asociados a
Internet que no tiene precedentes: por
un lado, los temas de accesibilidad han
sido cuidados ms que antes, y por otro,
la herramienta produce XHTML 1.0
por defecto. Cuando seleccionamos un
esquema activo, cualquier fallo en el
cdigo de marcado, es activado visual-
mente para su correccin. Y un peque-
o, pero importante, detalle: el cdigo
HTML se preserva con sus espacios de
tabulacin por primera vez en la histo-
ria de las herramientas de desarrollo en
Microsoft. Algo a agradecer especial-
Figura 2.Ventana de seleccin de proyectos, con las
opciones de programacin de Dispositivos Inteligentes
Figura 3
Figura 4
d
o
t
N
e
t
M
a
n

a
<
<
40
dnm.plataforma
<<
mente por todos los desarrolladores Web. Tambin
ha habido sustanciales mejoras en los enlaces de datos
(databinding), la programacin del cdigo Code-Behind,
y nuevos navegadores de etiquetas, que muestran en
todo momento la marca en la que nos encontramos
(pudiendo cambiar rpidamente de una a otra).
Editores y cdigo fuente
Pero, no terminan aqu las novedades de este nue-
vo IDE, ya que algunas de las ms importantes, tie-
nen que ver con la propia edicin del cdigo fuente:
el nuevo soporte de Intellisense, se ha extendido a cual-
quier fragmento editable, consiguiendo un respaldo
completo de las ltimas tecnologas, y muy especial-
mente, con el cdigo de marcado.
As, es importante la definicin del DTD
(Document Type Definition) que precede a los docu-
mentos HTML, para establecer la especificacin acti-
va, y por tanto el soporte asociado de Intellisense. Esta
misma opcin se extiende, de hecho a cualquiera de
los nuevos ficheros que ahora pueden formar parte de
un sitio, y que hemos mencionado antes.
A este respecto, el nuevo editor XML, permite
ahora el chequeo sintctico del cdigo de acuerdo a
la especificacin XML 1.0, soporte de Document Type
Definitions (DTD) y XML-Schemas, posibilidad de
transformar cualquiera de estas definiciones o las anti-
guas XDR en un XML-Schema estndar, validacin
de datos asociada, y chequeo sintctico de hojas de
estilo extendidas (XSLT 1.0).
Refactoring e Intellisense
Pero quiz una de las herramientas ms potentes
presentes en los editores de Visual Studio 2005 es la
ya citada Refactoring: en concreto, la ventana actual de
edicin suministra una serie de nuevos mens con-
textuales, que disponen de la capacidad de adornar
nuestro cdigo existente (o generado) con nuevas
estructuras, cambios de nombre de variables u obje-
tos, comprobaciones sintcticas, inclusin de bloques
de cdigo en bucles o estructuras condicionales y un
largsimo etctera que apreciaremos en lo que vale.
Para darnos una idea de la potencia de estas noveda-
des veamos un ejemplo con el cdigo fuente de un
objeto HTTPHandler, generado automticamente por
el editor mediante la opcin Aadir elemento nue-
vo/HTTPHandler:
Bien, si deseramos que el cdigo incluido en el
mtodo ProcessRequest, se convirtiese en un mtodo
genrico para poder llamarlo varias veces desde nues-
tra aplicacin, todo lo que tenemos que hacer, es mar-
car las lneas del cuerpo del cdigo y seleccionar la
opcin Extraer Mtodo, para obtener el siguiente
resultado:
De la misma forma, ahora no es necesario gene-
rar las propiedades de acceso a los campos de una cla-
se. Basta con marcar el campo o campos deseado(s),
y seleccionar Encapsular Campo, para que el siste-
ma lo genere automticamente. Tambin es posible
promover variables locales a
parmetros, borrar o reorgani-
zar stos dentro de los mtodos.
Y en el tem de men contextual
Intellisense, disponemos de dos
potentes mecanismos: Surround-
With (Envolver con), e Insert
Expansion (Insertar Expansin),
que partiendo del cdigo selec-
cionado nos permiten realizar
una larga lista de operaciones de
codificacin de forma autom-
tica y teniendo presente todo el
significado del cdigo que se est
editando.
Pero, como hemos comentado antes, sta no es
la nica novedad respecto al cdigo. En las opciones
de formato, podemos seleccionar cada lenguaje de
marcas y en la ventana Opciones Avanzadas de
Figura 5
Figura 6
<%@ WebHandler Language=C# Class=Handler %>
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = text/plain;
context.Response.Write(Hola Mundo);
}
}
public void ProcessRequest (HttpContext context) {
MetodoGenerico(context);
}
private static void
MetodoGenerico(HttpContext context)
{
context.Response.ContentType = text/plain;
context.Response.Write(Hola Mundo);
}
d
o
t
N
e
t
M
a
n

a
<
<
41
dnm.plataforma
<<
Marcado, establecer individualmente, como quere-
mos que se haga el tratamiento de cada una.
El soporte incluido hasta la versin actual, slo
presentaba la posibilidad de establecer el tipo de letra,
y gestionar las tabulaciones, forma de tratar las eti-
quetas de cierre, o los atributos y algunas cuestiones
generales. Esta es la primera vez que el grado de per-
sonalizacin llega hasta cada una de las instrucciones
individuales. Otros aspectos de inters en los edito-
res, son las marcas de edicin (toda lnea modificada
aparece con una fina banda amarilla a su izquierda,
que puede ser configurada o eliminada), una nueva
ventana Bookmark para la gestin de marcadores, ata-
jos para copiar o insertar en el cdigo las etiquetas flo-
tantes de informacin del propio Intellisense, Etiquetas
Inteligentes (Smart Tags), ya presentes en Office desde
la versin XP, y una opcin de autorecuperacin que
guarda automticamente los ficheros en edicin cada
cinco minutos.
Adems, las configuraciones generales del IDE,
pueden ahora exportarse e importarse, y la nueva Lista
de Tareas incluye nuevas opciones.
Proyectos y Soluciones
Un nuevo Asistente para la Conversin de Proyectos,
permite leer proyectos antiguos (2002 y 2003) y con-
vertirlos a la nueva versin, pudindose hacer una
copia de seguridad en el proceso (los nuevos no son
compatibles con versiones anteriores). En general,
realiza una excelente
labor, no necesitndose
cambios en la mayor par-
te de los casos. Tambin
disponemos de la posibi-
lidad de crear proyectos a
partir de ficheros existen-
tes, (generando y envol-
viendo lo existente dentro
de una nueva solucin).
Otras posibilidades de
inters en este apartado
son:
Seleccin de la plataforma de destino (pudiendo
crear plataformas nuevas).
Creacin de plantillas de proyecto personaliza-
das.
Posibilidad de uso de los nuevos "Starter kits",
soluciones predefinidas que sirven de armazn a
proyectos tipo.
Posibilidad de crear proyectos temporales -que
no se almacenan en disco- (para pruebas, funda-
mentalmente).
Creacin de proyectos individuales (que no per-
tenecen a ninguna solucin).
Posibilidad de referenciar ejecutables (y no slo
DLL's).
Posibilidad de realizar ajustes ms finos en las
propiedades y configuracin mediante el nuevo
Project Designer, que permite gestionar directa-
mente ficheros de recursos y ensamblados firma-
dos.
Generacin, depuracin y distribucin de
proyectos
La nueva herramienta de compilacin y cons-
truccin, MSBuild, introduce un nuevo fichero, de for-
mato XML, fcil de manipular, que permite al desa-
rrollador describir exactamente qu elementos desea
incluir en la solucin, as como la forma en que tie-
nen que ser construidos en funcin de la plataforma
de destino u otros requerimientos.
Depuracin y ejecucin
Comenzamos por un detalle que haba sido lar-
gamente solicitado por los desarrolladores de Visual
Basic: la posibilidad de detener un proceso, modificar
el cdigo y volver atrs, sin cortar la ejecucin. A esto
se le ha aadido ms seguridad en la depuracin remo-
ta de procedimientos, y la que personalmente, creo que
es una de las herramientas estrella de este apartado: los
visualizadores (visualizers). Son elementos que permi-
ten visualizar el estado de los objetos en tiempo de eje-
cucin desde la misma lnea de cdigo, incluyendo el
contenido de ficheros externos que pudieran haber sido
ledos por estos, como es el caso de la figura 8.
Se pueden ver archivos en formato texto, XML o
HTML, e incluso crearnos nuestros propios visuali-
zadores, posibilidad que ltimamente ha levantado bas-
tante revuelo en los foros de seguidores antes las posi-
bilidades que conlleva. Un buen ejemplo de ello son
los apuntes que ya ha publicado uno de los evangelis-
tas de tecnologa ms populares, Scott Nonnenberg,
sobre el tema en http://blogs.msdn.com/scottno.
Figura 7
Destaca especialmente el elemento
DataComponent, que dispone de una completa
interfaz visual para realizar las conexiones con el
origen de datos, seleccionar las bases de datos y
tablas de trabajo y generar a partir de ah el cdi-
go necesario para un mantenimiento completo.
d
o
t
N
e
t
M
a
n

a
<
<
42
dnm.plataforma
<<
Otras mejoras significativas en la depuracin son:
Debugger's Data Tips (sugerencias de datos en
depuracin), que presentan ventanas con las jerar-
quas de objetos en uso desde el mismo cdigo
fuente.
Depuracin de mi cdigo: permite excluir el
cdigo hecho por terceros de la depuracin.
Los nuevos puntos de seguimiento y puntos de
ruptura, permiten ejecutar acciones personali-
zadas al hacer el seguimiento del cdigo, tales
como lanzar la ejecucin de macros, o abrir ven-
tanas especiales.
Nueva Ventana de Procesos, que mejora el segui-
miento de la ejecucin de aplicaciones vincula-
das a la nuestra, o el control de hebras de ejecu-
cin.
Nuevo asistente para el tratamiento de
Excepciones, y soporte mejorado de la informa-
cin de depuracin.
Depuracin de cdigo en tiempo de diseo: aho-
ra es posible comprobar el funcionamiento de
una funcin sin ejecutar la aplicacin, mediante
el uso de la ventana Inmediato.
Soporte para depuracin de ficheros XSLT,
pudiendo establecer puntos de ruptura en las
hojas de estilo, etc.
Instalacin
El nuevo sistema de distribucin ClickOnce,
permite la distribucin de aplicaciones Windows
que se instalan y actualizan instantneamente, igual
que las aplicaciones Web. Se basa en la presencia
de dos ficheros XML de tipo manifest, que descri-
ben tanto la aplicacin, como el proceso de insta-
lacin y mantenimiento.
Adems, ahora es posible establecer las condi-
ciones iniciales de la aplicacin en la mquina de des-
tino, incluyendo la presencia de cualquier versin del
.NET Framework, as como crear proyectos de ins-
talacin que permiten seleccionar entre instalacio-
nes por usuario o por mquina, instalaciones de 64
bits, y distribucin a servidores Web multihosting.
Otras novedades
Con ser importantes, las citadas son slo un
pequeo conjunto de las novedades presentes en esta
versin de Visual Studio 2005, cuyo anlisis exhaus-
tivo sobrepasara la longitud normal de un artculo.
No obstante, quiero concluir este repaso, citando, al
menos, las numerosas mejoras en los entornos de
automatizacin (tanto del IDE, como de nuevas posi-
bilidades asociadas a las ventanas de control de las
aplicaciones, incluyendo la programacin o perso-
nalizacin de cada una de ellas), las novedades en las
ayudas, con un nuevo visor (por defecto, separado
del entorno de desarrollo), las numerosas ayudas
visuales en los procesos de diseo de aplicaciones
(como el nuevo mecanismo de ajuste de ventanas o
docking), y el nuevo sistema de plantillas empresa-
riales y de gestin de polticas de grupo y acceso.
Concluimos ya? S, pero no por falta de mate-
riales, por que, cuando el lector tenga acceso a la beta
2 se encontrar con una de las novedades ms impor-
tantes de esta versin, de la que no hemos comenta-
do nada, debido a su incipiente implementacin en
esta versin: el -as llamado- Visual Studio Team System,
un sistema de gestin y control del ciclo de vida de
las aplicaciones, sin precedentes en las herramientas
de Microsoft: diseo de aplicaciones estndar, SOA,
multicapa, Web y Windows con la capacidad de gene-
rar cdigo fuente e incluso de detectar potenciales
fallas en la seguridad. Puede leerse un anticipo de lo
que esto va a suponer en el artculo de Jos Miguel
Torres, en ste mismo nmero de la revista.
Conclusin
En suma, una revolucin adaptada. Todo nos
suena como desarrolladores, pero todo ha sido
mejorado. Ninguna novedad sobra, pero todas se
echaban de menos. Ningn tipo de proyecto ha sido
olvidado. Ningn formato de fichero carece de
soporte. Y si no existe, podemos hacerlo. Hay
quien d ms?
Figura 8
El nuevo sistema de distribucin
ClickOnce, permite la distribucin
de aplicaciones Windows que
se instalan y actualizan
instantneamente, igual que las
aplicaciones Web.
las caractersticas propias de IIS y
Windows 2000/2003 Server son adecuadas para
mantener un nivel de seguridad razonable si se
emplean con criterio. Tambin es necesario com-
prender las implicaciones que estos ajustes de segu-
ridad (y de configuracin) tienen sobre el cdigo
que escribimos. De nada vale tener un IIS fortifi-
cado si nuestro cdigo est escrito de manera des-
cuidada y existen agujeros que se pueden explotar
a travs de peticiones lcitas a la aplicacin.
Por otra parte, aunque la seguridad bsica est
bien gestionada y el cdigo bien escrito continua-
mente se descubren nuevas vulnerabilidades, agu-
jeros de seguridad y mtodos de ataque ante los que
estamos casi indefensos mientras no se libera un
parche o se descubre una contramedida.
Huelga decir que es fundamental mantener los
sistemas correctamente actualizados, con los ltimos
parches y Service Packs. Sin embargo siempre ha de
pasar cierto tiempo entre que se descubre un proble-
ma de seguridad, ste se hace pblico y el momento
en que Microsoft publica la solucin. En el nterin
nuestros sistemas se encuentran inermes y debemos
intentar de que su exposicin sea mnima.
Parece obvio que cuantos menos frentes tenga-
mos que defender ms sencilla ser la tarea. Es lo
que se denomina comnmente "disminuir la super-
ficie de ataque". En este artculo vamos a conocer
qu herramientas tenemos a nuestra disposicin
para disminuir los factores de riesgo de ataque exi-
toso y cmo impedir, incluso, ataques que intentan
aprovechar agujeros desconocidos o sin solucionar.
Las plantillas de seguridad
Cualquiera que haya seguido un poco las dife-
rentes vulnerabilidades de IIS y otros productos en
los ltimos aos habr observado que, en muchos
casos, stas se han debido a problemas en caracte-
rsticas y servicios accesorios que raramente se uti-
lizan. Desde el momento en que tenemos en mar-
cha un servicio innecesario o una caracterstica que
no utilizamos, se aumentan artificialmente las pro-
babilidades de sufrir un ataque exitoso a travs de
ste. Hay que encontrar el equilibro entre funcio-
nalidades y seguridad para estar razonablemente
protegidos. Cuando me toca hablar de estos temas
siempre me acuerdo de una mxima que nos repe-
tan en la escuela de ingeniera: "Lo difcil no es
disear una edificacin que no se caiga, lo verdade-
ramente complicado es calcular una que casi no se
caiga". Y es que cuando nos referimos a la seguri-
dad informtica nos encontramos en la misma situa-
cin: los mtodos drsticos de proteccin no nos
sirven de mucho pues no obtendramos la funcio-
nalidad requerida o un coste razonable, y los dema-
Seguridad de Internet Information
Server (III)
Por Jos Manuel Alarcn Agun
ASP y ASP.NET MVP
krasis.com
En las dos anteriores entregas de esta serie hemos aprendido a fortalecer la seguridad de IIS apro-
vechando las caractersticas propias del sistema operativo.Adems de esto Microsoft pone a nues-
tra disposicin algunas herramientas gratuitas pensadas para proteger a IIS y que conviene conocer.
d
o
t
N
e
t
M
a
n

a
<
<
43
Como hemos visto,
< <
siado despreocupados tampoco porque estaramos en
peligro. Lo ideal es encontrar el punto justo de equi-
librio en cada situacin particular que nos mantenga
protegidos sin escatimar funcionalidad. He ah la difi-
cultad.
Para aprovechar la experiencia propia y la de los
dems, Microsoft nos facilita una herramienta en
el Kit de recursos de Windows 2000/2003 que va a
ser de gran utilidad para conseguir este proverbial
equilibrio.
Su uso se basa en plantillas de configuracin con
instrucciones detalladas de cmo ajustar muchos de
los parmetros que se refieren a la seguridad (des-
de ajustes en el registro o en el sistema hasta pol-
ticas de grupo). De este modo una vez que haya-
mos encontrado el punto justo que necesitamos
podremos guardar los ajustes para reutilizarlos en
el mismo servidor o en otros. Tambin tenemos la
oportunidad de reutilizar la experiencia de otros
administradores en nuestro provecho. Podemos ver
y modificar estas plantillas utilizando la herramien-
ta "Visor de plantillas de seguridad" (que est dis-
ponible slo en ingls con el nombre "Security
Configuration and Analisys Tool IIS Templates"),
he incluida, tras la instalacin del Resource Kit,
dentro de la carpeta C:\Windows\ResourceKit
\Internet Information Services o equivalente.
Tambin podemos invocarla escribiendo "sectem-
plates.msc" desde la lnea de comandos. Como se
aprecia en la figura 1 existen diversidad de planti-
llas en las que se contemplan muchos parmetros
de configuracin (en la captura vemos algunos refe-
rentes al registro, pero hay bastantes ms). Podemos
partir de dos plantillas especialmente pensadas para
IIS que se encuentran dentro del directorio
c:\Archivos de programa\Resource kit llamadas
secureinternetwebserver.inf y secureintranetweb-
server.inf. Hay que tener en cuenta que, para
poder acceder a ellas con la herramienta de la figu-
ra antes hay que copiarlas al directorio
C:\Windows\security\templates y volver a ejecutar
el visor.
Una vez que hayamos decidido cul es la confi-
guracin que ms nos conviene podemos forzar su
cumplimiento y auditarla gracias la utilidad SCAT.
El SCAT (Security Configuration and Analysis Tool)
no est accesible directamente desde la consola de
gestin sino que hay que aadirlo a mano. Abra para
ello una nueva consola de administracin (escriba
MMC desde la lnea de comandos) y desde el men
ConsolaAgregar o Quitar complemento bus-
que y aada el complemento Configuracin y an-
lisis de seguridad. De entrada aparecer solamente
un nodo vaco con el mismo nombre que el com-
plemento. Para poder auditar una poltica de segu-
ridad debemos crear previamente una base de datos
en el complemento. Pulse con el botn secundario
del ratn sobre el nodo y escoja la opcin Abrir
base de datos. En el dilogo que aparece otor-
gue un nombre cualquiera a la nueva base de datos
y en el siguiente paso elija la plantilla de seguridad
que tenga preparada del punto anterior. Una vez
hecho esto, y en apariencia, no habr pasado nada.
Sin embargo en el men contextual del nodo apa-
recen algunas opciones que no estaban disponibles
antes.
Si escogemos Analizar el equipo ahora obten-
dremos un informe detallado que compara la confi-
guracin real de nuestro servidor con la deseada (la
que hayamos escogido en el paso anterior). En la figu-
d
o
t
N
e
t
M
a
n

a
<
<
44
dnm.servidores.iis
<<
Figura 1. Con el visor de plantillas de seguridad incluido en el Kit de
recursos de Windows podremos estudiar patrones
de proteccin predefinidos a nuestras mquinas.
Figura 2. La herramienta SCAT auditar nuestro sistema para
contrastarlo con la plantilla de seguridad deseada,
forzando su cumplimiento en caso necesario.
ra 2 observamos un ejemplo en el que
algunas directivas aparecen con un aspa
denotando su incumplimiento. Se pue-
de obtener un informe en un archivo de
texto con todos estos resultados.
Si estamos seguros de que todo lo
especificado en la plantilla de seguri-
dad es lo que nos conviene solamen-
te hay que escoger la opcin
Configurar el equipo ahora para
que SCAT fuerce automticamente al
cumplimiento de todas las directivas
de seguridad. Tenga cuidado con lo
que hace puesto que determinados
ajustes de seguridad podran influir en
el funcionamiento normal de sus apli-
caciones Web si no tiene cuidado.
Como norma general no utilice plan-
tillas en servidores de produccin sin
haberlas probado concienzudamente
en equipos de prueba en los que los
posibles fallos sean tolerables.
Esta pareja de herramientas es
extremadamente til y no slo para
configurar la seguridad de IIS, sino la
del sistema en general. Adalas a su
caja de herramientas si le toca hacer
este tipo de trabajos de vez en cuan-
do.
IIS Lockdown Tool
Hace ya cierto tiempo Microsoft
present una herramienta destinada a
aumentar de manera automatizada la
seguridad de IIS mediante el uso de un
asistente. IIS Lockdown Tool, que as
se llama dicha utilidad, ayuda a conse-
guir que en nuestro servidor slo estn
activadas las caractersticas de IIS que
realmente necesitamos para trabajar,
cerrando el acceso a todas las dems y
por lo tanto disminuyendo las posibili-
dades de ataque. Esta utilidad viene inte-
grada en las propias caractersticas de
IIS 6.0 con Windows 2003 Server, por
lo que no ser necesario instalarla en
este servidor; por esto sern las aplica-
ciones que se ejecutan sobre Windows
2000 Server las que realmente se bene-
ficien de su uso.
La ltima versin disponible de la
herramienta es la 2.1 (aunque ya tiene
ms de dos aos), y se puede descargar
gratuitamente desde http://www.micro-
soft.com/downloads/release.asp?Releas
eID=43955. Ocupa algo menos de 300
Kb y, eso s, slo existe en el idioma
ingls.
El programa no necesita instalacin
alguna, y al ejecutarlo muestra un asis-
tente que se describe con detalle a con-
tinuacin.
En primer lugar (figura 3) se nos
pregunta de manera genrica qu tipo
de servidor queremos configurar, para
as ofrecernos diferentes opciones de
bloqueo en cada caso. Hay opciones
para casi todos los gustos, cubriendo
gran cantidad de productos de
Microsoft que pueden trabajar conjun-
tamente con IIS. Para nuestro ejemplo
hemos escogido un servidor Web con
ASP habilitado, que es un caso muy
comn. Conviene marcar la casilla de la
parte inferior "View template settings"
si queremos obtener mayor detalle sobre
el proceso que se va a realizar.
En el siguiente paso del asistente
(figura 4) se escogen los servicios que
deseamos mantener activados. En nues-
tro caso vamos a dejar activado solamen-
te el servicio Web, pues lo dems no lo
necesitamos.
A continuacin (figura 5) se ha de
decidir qu tipos de archivo queremos
dejar activos en el servidor para que
se interpreten. En el ejemplo hemos
mantenido nicamente la extensin
.ASP, y en general ser la opcin ms
adecuada pues todos los dems tipos
son conocidos por su peligrosidad
potencial y adems se utilizan en muy
raras ocasiones. Es curioso que no
hayan actualizado esta herramienta
para limitar la ejecucin de archivos
ASPX, aunque para el caso que nos
ocupa (proteccin de aplicaciones
ASP.NET) tampoco tendra mucha
utilidad impedirlas verdad?.
En el siguiente punto (figura 6) se
eliminan todos los directorios virtua-
les y aplicaciones que IIS instala por
defecto (como los ejemplos, el manual,
la administracin) que deberamos
eliminar siempre en mquinas accesi-
bles como ya comentamos en la ante-
rior entrega de esta serie. Tambin se
sugiere la desactivacin de WebDAV,
que no se suele usar en aplicaciones
Web salvo que deseemos permitir la
gestin remota con carpetas (poco
recomendable en Internet, no tan peli-
groso en Intranets). Las otras dos
d
o
t
N
e
t
M
a
n

a
<
<
45
dnm.servidores.iis
<<
Figura 4. El segundo paso nos ayuda
a desactivar algunos servicios
bsicos que no necesitemos.
Figura 3. En el primer paso del asistente
hay que elegir el tipo de servidor que
ms se aproxime a nuestra situacin
real de trabajo para obtener algunos
ajustes por defecto apropiados.
Figura 5. Las extensiones de archivo
que no sea necesario procesar hay que
marcarlas en esta ventana de forma
que no supongan un problema de
seguridad a mayores.
opciones de esta ventana
ajustan los permisos
NTFS de forma similar a
la que ya hemos visto los
dos anteriores artculos,
impidiendo el uso de cier-
tos ejecutables y anulando
los permisos de escritura
en los directorios de la
aplicacin.
Del ltimo paso se
hablar en profundidad
enseguida, pero le recomen-
damos que mantenga el
ajuste por defecto.
Cuando llegue al final,
el asistente aplicar todos los ajustes seleccionados
(tarda un poco) y dejar al servidor en un estado
mucho ms seguro. Asegrese de probar a fondo
sus aplicaciones tras haber utilizado IIS Lockdown
Tool ya que puede haber hecho inadvertidamente
algn ajuste que las afecte y a lo mejor no funcio-
nan como es debido.
No se preocupe si necesita dejarlo todo como esta-
ba. La prxima vez que ejecute IIS Lockdown Tool
detectar su anterior ejecucin y le dar la oportuni-
dad de dejarlo todo exactamente igual, para posterior-
mente volver a probar con una configuracin diferen-
te si as lo desea.
Si fuese necesario existe la posibilidad de ejecutar
IISlockd.exe en modo automtico, en el que los ajus-
tes deseados se aplican en segundo plano, sin mostrar
la interfaz de usuario. Si desea informacin sobre cmo
hacerlo deber leer el archivo RunLockdUnattended.doc
incluido en el ejecutable.
Proteccin ante ataques desconocidos
con URLScan
Hasta ahora hemos visto dos tiles herramientas
que ayudan a proteger el servidor Web mediante con-
figuraciones restrictivas de seguridad. stas, combi-
nadas con unos permisos bien establecidos a partir de
los conocimientos que hemos adquirido en anterio-
res entregas, harn que nuestras mquinas con IIS
estn razonablemente a salvo.
Existen ataques que tienen xito a pesar de todas
estas precauciones ya que aprovechan debilidades y
errores de programacin que todava no han sido des-
cubiertos o que no se han solucionado con el corres-
pondiente parche. Ante este tipo de ataques convie-
ne ser proactivos y no reactivos, es decir, lo ideal sera
adelantarse a su existencia de algn modo para evitar
que tengan xito aun siendo desconocidos.
Microsoft public dos semanas despus de la pri-
mera versin de IIS Lockdown Tool una nueva utili-
dad que sirve precisamente para esto: URLScan. En
un principio se trataba de una herramienta indepen-
diente, pero ahora est incluida en la instalacin de
IIS Lockdown Tool, concretamente en el ltimo paso
del asistente que antes he mencionado (figura 7).
La gran mayora de los ataques sufridos por ser-
vidores Web implican la utilizacin de alguna URL
"extraa" o construida de alguna forma fuera de lo
normal. URLScan es un filtro ISAPI que analiza todas
las peticiones entrantes en el servidor Web y las dis-
crimina en funcin de una serie de reglas que contro-
la un archivo de configuracin. Dado que la mayora
de los ataques necesitan utilizar tcnicas similares para
construir las peticiones de ataque (usan caracteres
extraos, codifican las URLs con juegos de caracte-
res fuera de lo comn, usan peticiones de un tamao
muy grande para aprovechar desbordamientos de buf-
fer), URLScan es muy efectivo a la hora de detec-
tarlos. Cuando descubre algo "extrao" anula la peti-
cin, la cual nunca llega a IIS y por lo tanto se evita
el ataque.
Los parmetros que se pueden controlar sobre el
funcionamiento de URLScan son muchos y estn
englobados dentro de las siguientes categoras:
d
o
t
N
e
t
M
a
n

a
<
<
46
dnm.servidores.iis
<<
Figura 6. Existen algunos ajustes
adicionales que otorgan mayor control
sobre lo que se va a eliminar.
NOTA
IISLockd.exe es el ejecutable de la utilidad. En realidad se
trata de un archivo comprimido ejecutable que cuando lo usa-
mos descomprime sus contenidos en el directorio temporal
del usuario y desde ah ejecuta el asistente. Si consultamos los
contenidos de este archivo comprimido en el directorio tem-
poral creado (o usando una herramienta que lo reconozca
como comprimido, como Winzip o WinRAR), encontraremos
un par de documentos de Word. Uno de ellos es el que se
acaba de mencionar, y el otro tiene que ver con la herramien-
ta que se analiza en el siguiente apartado.
] [
...es fundamental mantener los
sistemas correctamente actualizados,
con los ltimos parches y Service
Packs. Sin embargo siempre ha de
pasar cierto tiempo entre que se
descubre un problema de seguridad,
ste se hace pblico y el momento
en que Microsoft publica la solucin.
Mtodos de solicitud de pginas y recursos.
Codificacin sospechosa de URL.
Presencia de determinados encabezados en las peti-
ciones.
Presencia de caracteres no ASCII en la URL.
Presencia de caracteres concretos en la URL.
La extensin de los archivos solicitados.
El asistente IIS Lockdown configura URLScan
a travs de las indicaciones que le vamos dando en
los sucesivos pasos, y a partir de las plantillas ele-
gidas en primera instancia. Sin embargo no se faci-
lita interfaz de usuario alguna para controlar al
detalle el modo de trabajo de este til complemen-
to, por lo que es necesario hacerlo de forma
manual. Su comportamiento se indica a travs de
los parmetros contenidos en el archivo
URLScan.ini, ubicado en C:\Windows\system32\
inetsrv\UrlScan o en la ruta equivalente. En la
figura 8 se observa el aspecto ste.
Existen en el archivo multitud de entradas para
configurar y afortunadamente todas incluyen un
comentario adjunto, con una breve explicacin sobre
su utilidad. Al igual que en el caso de la herramien-
ta anterior la forma de acceder a la documentacin
detallada de URLScan es un tanto retorcida. Dentro
de IISLockd.exe (ver nota en el epgrafe anterior) est
el archivo URLScan.doc, en el que encontraremos expli-
caciones detalladas de cada posible parmetro. Le
remitimos a esta documentacin para ajustarlo a sus
necesidades.
Advertencias sobre URLScan
En este punto es necesario hacer algunas adver-
tencias, ya que la activacin de URLScan produce
algunos efectos secundarios que podran afectar al
correcto funcionamiento de nuestras aplicaciones a
menos que afinemos su modo de trabajo a travs del
mencionado archivo.
Primeramente he de advertir de que, por defec-
to, todas las URL con caracteres no anglosajones
como tildes, ees, diresis, etc dejarn automti-
camente de funcionar. Y esto es vlido no slo para
pginas .HTML, .ASP o .ASPX, sino que se aplica
de igual manera a grficos y otros recursos sobre cuyo
nombre, en muchas ocasiones, no tenemos control
alguno (por ejemplo si permitimos "subir" grficos
al servidor). Podemos evitar esto cambiando el par-
metro AllowHighBitCharacters para que tome el valor
1, pero esto deja abierta la puerta a posibles ataques
basados en UNICODE o UTF-8. Tampoco se per-
miten los puntos o los caracteres codificados con %
en las rutas solicitadas, lo cual es un problema en
archivos con espacios en su nombre, por ejemplo.
Por otra parte, tras su instalacin, URLScan se
coloca como el filtro de mayor prioridad en IIS, tal y
como muestra la figura 9. Esto puede interferir con
otros filtros o extensiones ISAPI que deban transfor-
mar de algn modo las peticiones antes de que lleguen
al servidor. ste es concretamente el caso de las exten-
siones de FrontPage 2000, que de hecho se deshabi-
litan al instalar la herramienta. Si no colocamos
URLScan por debajo de este tipo de extensiones en la
lista de prioridades de la figura 9 dejarn de funcionar
bien, as que no queda ms remedio que probar a
moverlo dentro de esta lista si se experimentan pro-
blemas. Adems en este caso es necesario modificar el
parmetro AllowLateScanning en URLScan.ini.
Otra cuestin a tener en cuenta es que cuando se
rechaza una peticin inadecuada, sta jams llega a
ser recibida por IIS, por lo que no aparece reflejada
d
o
t
N
e
t
M
a
n

a
<
<
47
dnm.servidores.iis
<<
Figura 8. El archivo INI contiene la configuracin de URLScan, y hay que
editarlo manualmente para poder cambiarla.
Figura 7. URLScan se debe instalar desde el asistente de
la herramienta de bloqueo de servidores ya que no
dispone de una instalacin independiente.
en los archivos de registro (log) del servidor. URLScan
permite almacenar la informacin de todas las peti-
ciones rechazadas en un archivo de registro propio
que es muy til para analizar su funcionamiento y
detectar intentos de ataque. Tambin se puede espe-
cificar un mensaje a mostrar o una URL a la que redi-
rigir al usuario cuando se anule una peticin. Esto
ltimo debemos hacerlo con cuidado puesto que no
es recomendable dar demasiadas pistas de que el ser-
vidor est especialmente protegido y mucho menos
de cmo lo estamos protegiendo.
URLScan 2.5
La versin de URLScan incluida en IISLockdown
Tool es la 2.0. Sin embargo Microsoft lanz ms ade-
lante una nueva versin, la 2.5, que aade algunas nue-
vas mejoras y es recomendable que hagamos la actua-
lizacin. Hasta hace poco no era posible instalar esta
versin de forma independiente por lo que no que-
daba ms remedio que instalar previamente IIS
Lockdown Tool con URLScan 2.0 y luego actualizar.
Sin embargo hace un ao Microsoft cambio la mane-
ra de empaquetar la instalacin de la herramienta de
forma que se pudiera instalar sola.
En la direccin http://www.microsoft.com/tech-
net/security/tools/urlscan.mspx encontrar infor-
macin sobre este herramienta y un enlace a su des-
carga.
Esta versin permite especificar el directorio en
el que se quiere colocar el registro de actividad,
habilita la posibilidad de registrar los ataques
mediante peticiones de gran longitud as como limi-
tar el tamao de dichas peticiones. Aunque la uti-
lidad de URLScan se ve algo disminuida en IIS 6
debido a que ste trae de serie muchas de las carac-
tersticas de aquel, sigue siendo conveniente insta-
larlo y configurarlo con cuidado en Windows 2003
Server. En la pgina mencionada se explican todos
los detalles al respecto.
Antes de que Microsoft sacara esta nueva versin
del instalador de URLScan, existan dos descargas
diferentes del producto. Una de ellas se denominaba
Baseline URLScan y la otra URLScan-SRP. La diferen-
cia entre ellas estribaba en que la variante SRP impe-
da las transferencias "troceadas" de informacin al
servidor, mientras que la otra no. Esta distincin hace
que SRP nos protegiese ante 10 vulnerabilidades de
IIS descubiertas en 2002 que tienen que ver con ello
aunque no dispongamos del parche correspondiente
(y por lo tanto tambin lo har con vulnerabilidades
desconocidas que aparezcan usando dichas tcnicas),
pero como contrapartida impedir el funcionamien-
to de aquellas aplicaciones que deban enviar informa-
cin al servidor usando truncado. Por otra parte SRP
limita el tamao mximo de los archivos enviados a
30 Mb. Por lo dems eran idnticos. Bien, la nica
variante que se puede descargar ahora con el nuevo
instalador es la SRP, por lo que debemos tenerlo en
cuenta.
En resumen
Las herramientas que hemos analizado en este art-
culo permiten una proteccin para IIS eficiente y sin
necesidad de muchos conocimientos. Incluso en algu-
nos casos impedirn ataques desconocidos o sin par-
chear. Debemos aprender a usarlas con correccin
pero es indispensable seguir actualizando los sistemas
y estar atentos a las novedades de seguridad que apa-
recen continuamente.
En la prxima y definitiva entrega de esta serie
vamos a ver algunos consejos de seguridad sueltos a
mayores, y aprenderemos a usar herramientas para
atacar a nuestros propios sistemas y as evaluar las
medidas que hemos adoptado.
d
o
t
N
e
t
M
a
n

a
<
<
48
dnm.servidores.iis
<<
Cuando me toca hablar de estos temas
siempre me acuerdo de una mxima que nos
repetan en la escuela de ingeniera:
"Lo difcil no es disear una edificacin que no
se caiga, lo verdaderamente complicado es
calcular una que casi no se caiga"
Figura 9. El filtro URLScan se instala, por omisin, con
la mxima prioridad por lo que podra interferir el
trabajo de otros filtros o extensiones ISAPI.
d
o
t
N
e
t
M
a
n

a
<
<
49
La llegada del SP2 de Windows XP ha incluido
novedades en los siguientes grupos de categoras:
Proteccin de la red.
Proteccin de la memoria.
Manipulacin segura del correo electrnico.
Mejora de la seguridad en la navegacin.
Mantenimiento mejorado de los ordenadores.
Se puede obtener informacin completa del SP2
de la web de Microsoft http://www.microsoft.com/spain/
technet/recursos/wxpsp2; adems, si se quiere conocer
en ms profundidad cada uno de los cambios y nove-
dades se puede descargar un documento de 175 pgi-
nas muy detallado en http://www.microsoft.com/spain
/technet/recursos/wxpsp2/mejoras.
En ste artculo se van a analizar las novedades
que afectan al funcionamiento de SQL Server enu-
merando los cambios que afectan a nivel de protec-
cin de red que tienen relacin con SQL Server.
Servicios Alerter y Messenger
Alerter y Messenger son servicios que sirven
para generar alertas administrativas y enviar mensa-
jes entre ordenadores de una red; en versiones ante-
riores a SP2, el servicio Messenger estaba configu-
rado para iniciarse automticamente y el servicio
Alerter de modo manual; cuando alguno de estos ser-
vicios se encontraba activado, el sistema operativo
permita conexiones entrantes a la red que supona
un riesgo de seguridad. Despus de instalar el SP2
estos dos servicios estn deshabilitados por defecto.
Si se necesita hacer uso de ellos debern arrancarse
de manera explcita.
Windows Firewall
Windows Firewall (WF) gestiona las peticiones
de red que se reciben. En el SP2 se ha mejorado y
sufrido modificaciones, por defecto est habilitado,
y no permite conexiones entrantes no solicitadas
mediante TCP/IP; qu quiere decir esto? que todas
las peticiones TCP/IP que se reciban, WF las obser-
va y decide qu hacer con ellas:
Aceptarlas en funcin de ciertas excepciones
definidas (veremos cmo configurarlas).
Rechazarlas en funcin de las mismas excep-
ciones.
Para entender cmo acta WF vamos a suponer
que es una entidad externa que se encuentra a medio
camino entre la red y el PC; cuando decide aceptar
la peticin TCP/IP se la pasa al PC y cuando deci-
de rechazarla, la elimina; as de simple: WF se encar-
ga de permitir que una peticin TCP/IP llegue al
PC o no. Y de qu forma WF gestiona los permi-
sos para las peticiones TCP/IP? Para ello WF ges-
tionar una lista de excepciones que ser del siguien-
te tipo:
Excepciones de programa: cuando WF recibe una
peticin TCP/IP, comprueba cul es la aplicacin
destinataria de la peticin; si la aplicacin desti-
nataria est en la lista de excepciones de progra-
ma, WF acepta que la peticin llegue al PC.
SQL Server y el Service Pack 2
de Windows XP
Por Eladio Rincn
SQL Server MVP
Solid Quality Learning
En ste artculo vamos a ver los cambios y novedades del Service Pack 2 para Windows
XP (SP2) que afectan a SQL Server; primero se hablar de los cambios/novedades y
despus se analizar qu debemos hacer para que SQL Server pueda seguir recibien-
do y atendiendo a las peticiones que recibe a travs de la red.
Novedades del Service Pack 2
< <
d
o
t
N
e
t
M
a
n

a
<
<
50
dnm.servidores.sql
<<
Excepciones de puertos: cuando WF
recibe una peticin TCP/IP com-
prueba cul es el puerto TCP o
UDP al que va dirigida la peticin
y en funcin de la lista de excep-
ciones de puertos acepta o recha-
za la peticin.
A su vez, dependiendo de la proce-
dencia de la peticin, las excepciones se
pueden configurar en funcin de:
Cualquier origen (Acceso global).
Peticin recibida desde cualquier
origen (Internet o Intranet);
Subred local.
Lista personalizada. Lista de direc-
ciones IP.
La configuracin por defecto de WF
es la siguiente:
Deshabilita (rechaza) todas las
peticiones recibidas por TCP y
UDP.
Habilita (acepta) File and Printer
Sharing (comparticin de fiche-
ros e impresoras).
Habilita Message Queuing
(MSMQ).
Habilita Remote Asistance (asis-
tencia remota).
Para acceder a la configuracin de
WF se accede de la misma forma que
en versiones anteriores (figura 1).
La pestaa general de WF nos per-
mitir configurarlo para dos estados dis-
tintos (figura 2):
Habilitado (On). Dentro de la
opcin habilitado podemos confi-
gurarlo para que WF no nos infor-
me de cuando bloquea peticiones
recibidas no permitidas.
Deshabilitado (Off).
Para programar la excepciones usa-
remos la pestaa Exceptions (figura
3) donde en las excepciones de aplica-
cin pulsaremos en el botn Add
Program seleccionando la aplicacin
que queremos aadir a la lista de las
excepciones (figura 4) y desde el botn
Change Scope estableceremos la pro-
cedencia de la peticin (figura 5) para
programar la excepcin usaremos la pes-
taa Exceptions (figura 3).
Por otra parte, para las excepciones
de puertos pulsaremos en el botn Add
Ports donde pondremos nombre a la
excepcin que vamos a crear, definire-
mos el nmero de puerto y protocolo
(figura 6) y desde el botn Change
Scope estableceremos la procedencia
de la peticin (figura 5) donde en las
excepciones de aplicacin seleccionare-
mos Add Program (aadir programa)
seleccionando la aplicacin que quere-
mos aadir a la lista de las excepciones
(figura 4) y desde el botn Change
Scope estableceremos la procedencia
de la peticin (figura 5).
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
d
o
t
N
e
t
M
a
n

a
<
<
51
dnm.servidores.sql
<<
En qu afecta a SQL Server
Para poder atender peticiones (sentencia TSQL
desde el analizador de consultas, operaciones desde
el administrador corporativo, aplicaciones que usan
como origen de datos SQL Server, consultas desde
otros servidores: servidores vinculados, operaciones
de replicacin, etc.) SQL Server necesita hacer uso
de protocolos de red como TCP/IP, multi-protoco-
lo (RPC), Named Pipes (canalizacin por nombres),
Shared Memory (memoria compartida), etc. Hemos
visto que WF se encarga de permitir o denegar las
peticiones a travs de alguno de estos protocolos, por
lo que deberemos tener claro cuales son los protoco-
los de conexin que usa SQL Server para poder habi-
litarlos en WF. De los protocolos que usa SQL Server,
se vern afectados TCP/IP, multi-protocolo (RPC) y
Named Pipes. Vamos a ver cual es la configuracin
por defecto de las instalaciones de:
SQL Server 7.0 (y MSDE 1.0)
SQL Server 2000 (y MSDE 2000)
- SQL Server Analysis Services 2000
- SQL Server Reporting Services
SQL Server 7.0, MSDE 1.0 y SQL Server 2000
Instancia por defecto
SQL Server escucha por defecto por el puerto
TCP 1433; durante el proceso de instalacin se pue-
de cambiar la configuracin del puerto por el que escu-
cha, o una vez instalado se puede cambiar desde
Server Networking Utility (en MSDE no se insta-
la la entrada en el men de SQL Server; en su lugar
la tendremos en Windows\system32\srvnetcn.exe); si
cambiamos el puerto por el que escucha SQL Server
con Server Networking Utility, para que el cambio
tenga efecto, deberemos reiniciar el servicio de SQL
Server.
Durante la instalacin tambin se habilitan las
conexiones Named Pipes, multi-protocolo (RPC) y
Shared Memory.
Cmo habilitar las peticiones de red en SQL
Server?
Si las conexiones a SQL Server se realizan des-
de la misma mquina, no debemos hacer nin-
guna modificacin porque las conexiones se rea-
lizan a travs de protocolo Shared Memory que
no hace uso de protocolos de red.
Si las conexiones a SQL Server se hacen desde
otra mquina:
- Si se conecta a travs de TCP, deberemos habi-
litar el puerto TCP que tenemos configura-
do para SQL Server (por defecto TCP 1433).
- Si se conecta a travs Named Pipes o multi-
protocolo a travs de Named Pipes, debere-
Netsh es una utilidad de lnea de comando que se puede utilizar
para configurar WF; lo bueno de la utilidad es que con ella podemos
programar la configuracin de WF de la mquina local como de
mquinas remotas. Como en el GUI de WF que hemos visto ante-
riormente, se pueden configurar excepciones de aplicacin:
Por ejemplo, si queremos habilitar todas las peticiones recibidas
por la instancia por defecto de SQL Server:
Y excepciones de puertos:
Algunos ejemplos de cmo configurar WF con Netsh:
Habilitar el puerto 1433 del protocolo TCP; le asignamos el
nombre TCP1433:
Deshabilitar el puerto 1435 del protocolo TCP; le asignamos
el nombre TCP1435:
Se puede encontrar documentacin completa sobre el comando
netsh en: How to use a script to programmatically open ports for
SQL Server to use on systems that are running Windows XP Service
Pack 2 en la direccin http://support.microsoft.com/?kbid=839980.
Netsh Helper
add allowedprogram
[ program = ] path
[ name = ] name
[ [ mode = ] ENABLE|DISABLE
[ scope = ] ALL|SUBNET|CUSTOM
[ addresses = ] addresses
[ profile = ] CURRENT|DOMAIN|STANDARD|ALL
netsh allowedprogram C:\Program Files\Microsoft SQL Server\MSSQL\
Binn\ sqlservr.exe enable
add portopening
[ protocol = ] TCP|UDP|ALL
[ port = ] 1-65535
[ name = ] name
[ [ mode = ] ENABLE|DISABLE
[ scope = ] ALL|SUBNET|CUSTOM
[ addresses = ] addresses
[ profile = ] CURRENT|DOMAIN|STANDARD|ALL
[ interface = ] name ]
netsh firewall set portopening tcp 1433 TCP1433 enable
netsh firewall set portopening tcp 1433 TCP1435 disable
mos habilitar la excepcin File and Printer
Sharing (comparticin de ficheros e impre-
soras); tambin se puede habilitar a travs del
puerto TCP 445.
El mtodo ms aconsejable es habilitar los puer-
tos por los que sabemos que se realizarn las peticio-
nes a SQL Server; tambin podemos habilitar en la
lista de excepciones la aplicacin (servicio) de SQL
Server, pero hacindolo de esta forma, habilitamos las
peticiones TCP o UDP a cualquier puerto.
SQL Server 2000 Instancia con nombre
En una instalacin por defecto, el puerto por el que
escucha SQL Server es dinmico; de esta forma la ni-
ca forma de habilitar peticiones de red a las instancias
de SQL Server ser aadir la aplicacin a la lista de
excepciones; como recomendacin general debera-
mos establecer que cada instancia escuche por un puer-
to especfico y aadiendo el puerto a la lista de excep-
ciones (como hemos visto anteriormente, la configu-
racin del puerto por el que escucha SQL Server se
puede cambiar con Server Networking Utility).
SQL Server 2000 y SQLDTC
El coordinador de transacciones distribuidas, ges-
tiona las transacciones a travs del puerto TCP 135;
para habilitarlas, deberemos aadir la aplicacin que
gestiona las transacciones distribuidas (generalmente
c:\Windows\System32\msdtc.exe) a la lista de excep-
ciones de aplicaciones y el puerto TCP 135 a la lista
de excepciones de puertos; la necesidad del puerto
TCP 135 se debe a que SQLDTC utiliza RPC (lla-
madas a procedimientos remotos).
SQLXML (en SQL Server 2000)
SQLXMLrealiza las peticiones a travs de IIS por
lo que deberamos habilitar los puertos TCP 80 para
HTTP y TCP 443 para HTTPS (SSL).
SQL Server Analysis Services 2000
SQL Analysis Services 2000 escucha por el puer-
to TCP 2725; si se usan aplicaciones cliente con versio-
nes de MDAC anteriores a la 2.6, los puertos usados son:
TCP 2393 y TCP 2394. Si se permite el acceso a travs
de HTTP o HTTPS habr que habilitar los puertos
TCP 80 (para HTTP) y/o 443 (para HTTPS).
SQL Server Reporting Services (en SQL Server
2000)
SQL Reporting Services es una aplicacin que
usa IIS; por defecto escucha por el puerto TCP 443 (
HTTPS); tambin se puede configurar para que escu-
che a travs de HTTP (puerto TCP 80); si usamos el
proveedor WMI para administracin remota (rscon-
fig) tambin deberemos habilitar el puerto TCP 135.
SQL Server Agent
Es frecuente que al programar tareas de SQL
Server, el estado de finalizacin de la tarea se enve a
travs de Net Send; como hemos visto antes, el servi-
cio Messenger (que es el que se encarga de enviar los
mensajes) est deshabilitado; tenemos dos soluciones
posibles:
Habilitar el uso de Net Send iniciando el servi-
cio messenger tanto en el servidor como en el
cliente.
Reprogramar las tareas para que utilicen otro
mecanismo de notificacin (por ejemplo:
xp_sendmail).
Artculos de la base de conocimiento
How to configure Windows XP Service Pack 2 (SP2) for use with
SQL Server (http://support.microsoft.com/?kbid=841249)
Esta es una lista de artculos de la base de conocimiento de Microsoft que
sern de utilidad para poder profundizar ms en las cuestiones que hemos
tratado en este artculo.
How to enable SQL Server 2000 Reporting Services on Windows
XP Service Pack 2 (http://support.microsoft.com/?kbid=841253)
How to enable SQL Server 2000 Analysis Services and OLAP
Services on computers that are running Windows XP SP2 (http://sup-
port.microsoft.com/?kbid=841256)
How to enable ports on Windows XP SP2 for Analysis Services
and SQL Server 7.0 OLAP Services (http://support.microsoft.com/?
kbid=841549)
How to manually enable TCP/IP on Windows XP Service Pack
2 for SQL Server 2000 (http://support.microsoft.com/?kbid=841252)
How to use a script to programmatically open ports for SQL
Server to use on systems that are running Windows XP Service Pack
2 (http://support.microsoft.com/?kbid=839980)
You may not be able to connect to an instance of SQL Server that
is configured to use the Named Pipes server network library on a
computer that is running Windows XP Service Pack 2 (http://sup-
port.microsoft.com/?kbid=839269)
The NET SEND command may not work correctly on a com-
puter that is running Windows XP Service Pack 2 (http://sup-
port.microsoft.com/?kbid=839018)
<<
dnm.servidores.sql
52
<
<
d
o
t
N
e
t
M
a
n

a
d
o
t
N
e
t
M
a
n

a
<
<
53
MVP. La unin hace la fuerza
Cuando en la editorial Paco Marn, responsable de esta publicacin, me propuso que lle-
vara una nueva seccin para la revista que se dedicara a la comunicacin de los MVPs, no
dud ni lo ms mnimo en aceptarla. Era una idea que habamos hablado durante mucho
tiempo y que requera prepararla concienzudamente.
< <
Por Jorge Serrano
Visual Basic y .NET MVP
www.PortalVB.com
a u n q u e
hay muchas personas que saben lo que
es, lo que hace y lo que significa un MVP,
hay muchas ms personas que an les
suena a chino o bien no lo saben o tie-
nen una idea confusa de lo que hay detrs
del Microsoft MVP Program.
En esta seccin, hablaremos a partir
de ahora, de aquellas cosas que los MVPs
realizan, relacionadas obviamente con
los productos Microsoft y especialmen-
te con los paquetes y tecnologas soft-
ware que se tratan en dotNetMana.
Pero al igual que ocurre en todo
comienzo con un nuevo lenguaje de pro-
gramacin en el que la primera toma de
contacto obliga a desarrollar nuestros tpicos pro-
gramas Hola Mundo, aqu no seremos menos y
dividiremos este primer artculo inicial en dos par-
tes separadas y relacionadas entre s. La primera par-
te tratar de explicar globalmente las preguntas gen-
ricas que surgen cuando se habla de un MVP y la
segunda abordar una entrevista a Sean O'Driscoll,
responsable del programa Microsoft MVP a nivel
mundial, el pasado mes de mayo.
Por todo ello, esta primera toma de contacto con
el programa MVP, ser ligeramente ms extensa que
las que se publiquen en el futuro. Sin embargo, el
objetivo principal es que encuentre esta seccin til
e interesante, algo que me he marcado como obje-
tivo primordial.
El Hola Mundo del MVP
Si usted es asiduo a los foros de discusin tcnica o
news en Internet, a conferencias tcnicas de Microsoft
o a sitios web que traten de tecnologas Microsoft, habr
visto casi con toda seguridad y en ms de una ocasin,
el trmino MVP detrs del nombre de una persona o
como parte de un sitio web, pero, sabe realmente lo
que es un Microsoft MVP y lo que hace un Microsoft
MVP y el porqu de ese nombramiento?.
Muchas son las preguntas que hay acerca de un
MVP y aqu vamos a tratar de explicarle y clarificarle
algunas de estas preguntas para que comprenda de
una forma clara y concisa cul es el cometido de un
Sin embargo, entiendo que
Sean O'Driscoll, Director del Microsoft MVP Program
MVP y si alguna vez se lo ha pregunta-
do, cmo se puede llegar a ser un MVP.
Qu es un Microsoft MVP?
Microsoft MVP son las siglas que
representan a Microsoft Most Valuable
Professional, o lo que es lo mismo y si
me permite la traduccin, el Profesional
de Ms Valor de Microsoft, es decir, es
un reconocimiento que Microsoft rea-
liza a diferentes personas por sus cono-
cimientos y aportaciones a la comuni-
dad informtica, premiando al galardo-
nado por sus compromisos y esfuerzos
sobre un producto o tecnologa
Microsoft en particular.
Es decir, pueden existir tantos MVPs
como tecnologas posee Microsoft y tan-
tos MVPs de una tecnologa como lo crea
conveniente Microsoft. Por lo general, un
usuario es MVP de un solo producto sal-
vo rarsimas excepciones en las que lo pue-
de ser de ms de un producto, aunque este
usuario posea conocimientos como para
ser MVP en ms de un producto.
Breve historia de los MVPs
Antes de adentrarnos un poco ms
en la vida de un MVP, realizaremos un
pequeo recorrido por su historia.
Microsoft inici el reconocimiento de
los MVP a mediados de la dcada de los
90, tratando as, de valorar a las personas
que contribuan en los grupos de noticias
de Internet aportando ayudas a otros usua-
rios, utilizando su tiempo libre compar-
tiendo sus conocimientos y experiencias.
Hoy da, un MVP est comprometi-
do a mucho ms que dar soporte con sus
conocimientos a los usuarios en los gru-
pos de noticias. Un MVP est compro-
metido con la comunidad de forma com-
pleta. Los grupos de noticias es un canal
de comunicacin, pero hay muchos ms
canales de comunicacin entre usuarios
de productos Microsoft.
Cmo se selecciona un MVP?
De forma genrica sin que lo que
comente sirva como patrn o molde
exacto en la forma en la que se selec-
ciona un nuevo MVP, la eleccin de
stos requiere su tiempo y no basta con
el conocimiento profundo de un pro-
ducto Microsoft, ni tampoco por sus
correctas y eficientes contribuciones a
favor de la comunidad, debe adems
pasar un filtro entre los que se citan
como parte de l, otros MVPs, inge-
nieros de soporte de Microsoft y res-
ponsables de producto de Microsoft.
Sin embargo, la eleccin de un MVP
pasa filtros muy exhaustivos por parte de
Microsoft. Sirva una sugerencia personal
si desea llegar a ser un MVP: adems de
ser siempre correcto, use siempre un mis-
mo perfil de conexin para que sea fcil-
mente identificado. Un MVP no es an-
nimo, tiene nombres y apellidos o pseu-
dnimo que le permiten relacionarse con
otros usuarios y ser conocido en las comu-
nidades. Por otro lado, repetir en foros y
lugares de discusin los comentarios o
soluciones que otros usuarios han reali-
zado no le dar ms derecho que otros
usuarios. El programa MVP no es una
competicin entre usuarios. La filosofa
del MVP es siempre contribuir, colabo-
rar, compartir y ayudar.
Qu perfil posee un MVP?
sta es una de las preguntas que tie-
nen la respuesta ms interesante. Un MVP
puede ser cualquier persona. El progra-
ma MVP no entiende de sexo, religin o
condicin. De hecho, hay desde MVPs
que todava no poseen la edad para estu-
diar en la Universidad hasta MVPs que
en su posicin de jubilados, disfrutan de
la informtica de forma altruista.
El espritu del MVP es un espritu
inquieto, libre, voluntarioso, que le gusta
aprender y compartir sus conocimientos
y experiencias sin recibir nada a cambio.
Es un espritu de colaboracin y de apor-
tacin total a la comunidad, ofreciendo
abiertamente sus conocimientos y com-
partindolos para crecer como personas,
y tecnolgcamente hablando.
Un MVP no es un experto en cual-
quier producto o tecnologa Microsoft.
Un MVP puede poseer extensos cono-
cimientos sobre un determinado pro-
ducto o tecnologa Microsoft, sin
embargo, esto no le obliga a que posea
extensos conocimientos sobre todas las
tecnologas o productos Microsoft.
Puede as ser un experto en Microsoft
SQL Server, por ejemplo, y un autn-
tico principiante en VB.NET.
Qu es un MVP Lead?
Por si alguna vez lo escucha, un MVP
Lead o lder de MVPs, es una persona
fsica de Microsoft que est a cargo de un
grupo de MVPs y que es la unin entre el
equipo de MVPs y los MVPs.
Existe un MVP Lead por pas o
regin. En el caso de Latino Amrica,
el MVP Lead es Nstor Portillo y en
Espaa, el MVP Lead es Alberto
Amescua. La relacin entre MVP Lead
y MVP es total y sirve a un MVP para
ayudarle en todo lo que necesite.
Sin embargo, el MVP Lead no es el
nico que trabaja en pos del MVP; hay
ms personas dependientes de este pues-
to que trabajan codo con codo junto al
MVP Lead para ofrecer al MVP toda la
ayuda necesaria.
Pertenece un MVP a Microsoft?
Un MVP no forma parte del perso-
nal de Microsoft. Un MVP es un nom-
bramiento de Microsoft a una persona
fsica, pero no otorga ninguna otra ven-
taja ni forma parte de la plantilla labo-
ral de Microsoft.
Cunto paga Microsoft a un MVP?
Un MVP no recibe de Microsoft
ninguna contribucin econmica. Lo
nico que recibe un MVP de Microsoft
es una acreditacin como MVP y un
regalo que consiste en un paquete de
Software. Adicionalmente puede haber
alguna otra ventaja, regalo o compen-
sacin tcnica, pero nunca dinero ni
compensacin econmica equivalente o
similar. Ser MVP no es un negocio.
d
o
t
N
e
t
M
a
n

a
<
<
54
dnm.MVP
<<
Cunto dura el nombramiento de un
Microsoft MVP?
El nombramiento es realizado por
un periodo de 1 ao. Pasado ese tiem-
po se pasa un filtro de renovacin con
las mismas exigencias que los filtros
pasados por los nuevos aspirantes a
MVPs. Por lo tanto, el hecho de que
una persona haya sido nominada MVP
durante un ao, no implica que duran-
te el siguiente ao se le renueve. Llegar
a ser MVP es muy difcil, pero mante-
nerse como MVP lo es ms an.
Los encuentros de los MVPs
Quiero sin embargo, comentar un
aspecto destacable respecto a los MVPs.
Sus encuentros y su evolucin.
Los MVPs de un pas o regin, sue-
len reunirse una o ms veces a lo largo de
un ao. Es un momento que permite
conocer a mucha gente y descubrir ms
que nunca que detrs de un pseudnimo
o nombre y apellidos, hay una persona de
carne y hueso que en muchas ocasiones
no deja de sorprendernos gratamente.
A parte de todo esto, anualmente por
el mes de abril, los MVPs que lo pueden
hacer, se reunen en Seattle (USA) en un
encuentro MVP mundial que Microsoft
organiza en la ciudad en dnde est alo-
jado el headquarters de Microsoft. Esta reu-
nin recibe el nombre de MVPSummit.
Independientemente de todo esto,
es destacable la unin que existe entre
los MVPs pertenecientes a diferentes
pases. En el caso de los hispano-hablan-
tes esta unin es ms especial si cabe.
Los MVPs de Latinoamrica y Espaa
tenemos una unin muy destacable dn-
de prima de forma especial la colabora-
cin aunque estemos separados miles de
kilmetros. De hecho, ste es un aspec-
to destacable por Microsoft en muchas
ocasiones para mostrar el verdadero
espritu de un MVP. Buena culpa de esto
la tienen los MVPs, pero sobre todo los
MVP Lead de Latino Amrica y Espaa,
Nstor Portillo y Alberto Amescua.
Entrevista a Sean O'Driscoll
Mal asunto que hable yo de Sean
O'Driscoll, director del programa
MVP en todo el mundo, ms que nada
porque apartando a un lado el progra-
ma Microsoft MVP, me une con l una
buena amistad. Tuve la suerte de cono-
cerle personalmente en el TechEd 2003
celebrado en Barcelona y aunque nos
veamos de media casi una vez al ao,
siempre que nos vemos hay un buen fee-
ling. Sin embargo, esta impresin per-
sonal subjetiva es compartida con la
mayora de MVPs de todo el mundo que
lo conocen o han tenido la suerte de
hablar y compartir momentos con l. Es
una persona abierta, accesible y comu-
nicativa, y aporta a la direccin del pro-
grama MVP la misma filosofa y espri-
tu que comparte un MVP.
La entrevista como es lgico, trans-
curri en un ambiente cordial y disten-
dido y sirvi para aseverar estas impre-
siones sobre Sean O'Driscoll.
Hola Sean. Gracias por ofrecernos
parte de tu tiempo en Espaa para con-
cedernos esta entrevista.
Hola. Muchas gracias a dotNetMana
por brindarme la oportunidad de comu-
nicar a vuestros lectores el trabajo que hay
relacionado con los MVPs.
Podras hacer una breve introduc-
cin sobre quin es Sean O'Driscoll?
Mi nombre es Sean O'Driscoll y
soy el responsable del programa MVP,
programa que trata de valorar y reco-
nocer a las personas ms valiosas que
en su tiempo libre, colaboran en las
comunidades ayudando con sus impre-
siones y feedbacks a los clientes de
Microsoft, a la gente que trabaja con
productos Microsoft y a la propia
Microsoft.
Cuntos MVPs hay en la actuali-
dad?.
Hoy da hay 2.800 MVPS en todo
el mundo.
No piensas que son quizs dema-
siados?.
No, para nada, ni mucho menos hay
un lmite en el crecimiento de MVPs.
Aunque el programa MVP ha crecido
enormemente en integrantes en los lti-
mos aos, este crecimiento representa ni-
camente que la industria y los usuarios uti-
lizan en todo el mundo productos
Microsoft. El soporte y ayuda que dan
estos MVPs a otros usuarios est por lo
tanto justificado con el nmero que lo for-
man. El nmero de MVPs representa el
nmero de expertos tcnicos que existen
en el mundo sobre productos Microsoft,
los cuales colaboran activamente en las
comunidades. Esto muestra la proactivi-
dad existente en compartir informacin y
conocimientos en las comunidades. La
parte ms importante de todo esto es que
Microsoft reconoce el trabajo que desem-
pean estas personas en las comunidades,
y que los clientes encuentren solucin a
sus dudas en estas comunidades. Algunas
veces esta ayuda se realiza a travs de gru-
pos o foros de noticias pblicos o locales,
otras veces en conferencias tcnicas dn-
de hay muchos MVPs que van como ora-
dores, a travs de artculos en publicacio-
nes tcnicas como vuestra revista, cursos,
libros, etc.
Existe algn lmite en el crecimien-
to de los MVPs?
No hay lmite. El nico lmite est
representado por la calidad de los exper-
d
o
t
N
e
t
M
a
n

a
<
<
55
dnm.MVP
<<
LLus Franco, Sean O'Driscoll y Jorge Serrano en la aburrida reunin de los MVPs espaoles
tos tcnicos en las comunidades. El reconocimiento
de los MVPs, queda exigido por sus contribuciones,
colaboraciones y conocimientos.
Cuntas personas de Microsoft hay detrs tra-
bajando en pos del programa MVP?
80.000 (risas). Directamente, 60 personas en
todo el mundo, pero indirectamente muchsimas
ms personas trabajan detrs de los MVPs cada da;
desarrolladores, responsables de producto, perso-
nas encargadas de recoger y valorar feedbacks, de
mantener informados a los MVPs con informacin
actualizada,... mucha, mucha gente. De hecho, toda
la compaa tiene directrices claras respecto a los
MVPs y desde Steve Ballmer hasta la ltima per-
sona de la compaa, est implicada de alguna
manera en el programa MVP. Los MVPs son una
parte muy importante de Microsoft, y Microsoft
lo valora as.
Est Microsoft satisfecha con el trabajo desem-
peado y con la respuesta de los MVPs de todo el
mundo?
Absolutamente con todos los MVPs. Hacen un
importante trabajo con las comunidades cada da.
Microsoft no obstante, no est expectante sobre el tra-
bajo que desempea un MVP en las comunidades, sino
que Microsoft reconoce el trabajo que desempea un
MVP actualmente y durante el pasado. Respecto a sus
contribuciones, la constancia en este sentido, hace que
un MVP pueda ser reconocido cada ao.
Cmo de importante es un MVP para las comu-
nidades tecnolgicas y para Microsoft?
Los MVPs son el enlace de Microsoft con los
usuarios y clientes. Para una empresa como Microsoft
los clientes son lo ms importante, y evidentemente,
los MVPs son un punto de unin entre los clientes y
Microsoft. Los feedbacks que se obtienen de los
MVPs son muy valiosos y en muchas ocasiones se
obtienen recomendaciones que vienen directa o indi-
rectamente de ellos y en otras ocasiones de los clien-
tes, pero los MVPs nos ayudan indudablemente
mucho a mejorar nuestros productos y tratar de dar
gracias a sus feedbacks el mejor servicio y calidad de
producto a nuestros clientes.
Algunas personas creen que un MVP est al ser-
vicio de Microsoft y que no tiene autonoma propia.
Qu opina al respecto?
Uno de los puntos ms interesantes del progra-
ma MVP, es que los MVPs no dependen para nada
de Microsoft y son completamente independientes.
Todos los MVPs son personas reconocidas por
Microsoft, pero los MVPs son libres de dar sus opi-
niones respecto a nuestros productos y criticarlos si
es preciso, lo cul otorga un gran valor a Microsoft,
los propios MVPs y nuestros clientes.
Los MVPs hispanos estn demostrando en los
ltimos aos un gran movimiento en las comunida-
des sobre tecnologas Microsoft, cul es su consi-
deracin respecto a los MVPs hispanos y tiene algu-
na recomendacin que hacerles?
Mi mejor experiencia con los MVPs y con el pro-
grama MVP ha sido curiosamente con los MVPs his-
panos de todo el mundo. Hace 2 meses en un encuen-
tro con un grupo de MVPs hispanos en el TechEd de
Dallas en USA, en el TechEd de Barcelona de 2003, en
Argentina hace dos meses con 60 MVPs del Sur de
Amrica o en abril de 2004 en la reunin anual mun-
dial de los MVPs (Summit) celebrada en Seattle (USA).
Los MVPs hispanos representan con gran pasin no
slo a nivel tecnolgico y a nivel del programa MVP,
sino a nivel personal, el sentir propio del programa MVP,
las ganas e ilusin por ayudar a los profesionales, a los
dems, a la gente, sobre las tecnologas Microsoft. Me
quedo con esa pasin para que la mantengan.
Las empresas, en Espaa al menos, no valoran el
programa MVP como deberan. Segn me comen-
tan, en otros pases tienen la misma percepcin.
Muchos MVPs se quejan de esto. Considera que
Microsoft debe hacer ms esfuerzo para divulgar en
las empresas el programa MVP?
S, sin duda. Debemos hacer un mayor esfuerzo para
informar a las empresas el porqu del programa MVP
y de las oportunidades que ofrece tener un MVP en su
plantilla. Los clientes deben conocer el canal de ayuda
que tienen a su disposicin, en su propia casa.
Ser MVP es un privilegio con el que pocos pue-
den contar. Ser MVP es muy difcil, pero casi ms man-
tenerse como tal ao tras ao. Qu les dira a esas
personas que aspiran ser MVPs y que por unas u otras
razones no han logrado serlo o desean serlo algn da?
Hay muchos aspectos a tener en cuenta y los cu-
les afectan en la eleccin de un MVP; situaciones per-
sonales, profesionales, familiares, el tiempo que uno
le quiera o le pueda dedicar contribuyendo a las
comunidades, etc. Todo esto, permite lograr el reco-
nocimiento de un MVP, esto y contribuir con pasin
y dedicacin a las comunidades con el tiempo que
uno le pueda dar.
No me gustara que esto fuera una entrevista de
pregunta y respuesta, por eso y para finalizar, te pedi-
ra si lo deseas, que dijeras algo sobre el programa
MVP que no te hayamos preguntado o que quisieras
destacar por algna razn.
Me gustara destacar una de las cosas ms impor-
tantes que tienen que ver con los MVPs, y es cmo
Microsoft est llegando a los clientes y a las necesida-
des de los clientes gracias a las contribuciones y apor-
tes de los MVPs. Los clientes son para Microsoft la par-
te crtica y ms importante y para Microsoft es funda-
mental prestar y ofrecer lo que los clientes y la indus-
tria necesita y demanda. Esto lo consigue gracias en
buena parte, a la ayuda y aportacin que los MVPs dan.
Muchas gracias por todo.
Ha sido un placer, gracias a vosotros y un saludo
a los lectores de dotNetMana.
<<
dnm.MVP
56
<
<
d
o
t
N
e
t
M
a
n

a
En Microsoft Ibrica estrenamos este ao el programa Desarrolla con MSDN, que permitir a
los desarrolladores espaoles aprender de forma gratuita las ltimas tendencias de la tecnologa
.NET y participar en el desarrollo de una aplicacin real con la ayuda de los mejores expertos
d
o
t
N
e
t
M
a
n

a
<
<
57
dnm.comunidad.net
<<
dnm.comunidad.net
Desarrolla con MSDN
naci hace seis aos con una clara
vocacin de ayuda al desarrollador. Desde entonces
hemos crecido junto a la comunidad de desarrollado-
res existente en Espaa, una de las ms activas del
mundo. En tres aos hemos pasado de 15.000 visitas
mensuales en nuestra web MSDN a ms de un milln,
y cada ao slo en talleres impartidos en ciudades
espaolas llegamos a 6.000 desarrolladores, sin con-
tar los eventos online que realizamos como webcasts,
chats, cursos, seminarios, etc.
En nuestra corta experiencia hemos aprendido
mucho sobre la ayuda demandada por los desarrolla-
dores. La principal necesidad que nos han hecho lle-
gar es la formacin. Estar al da en las tecnologas que
rodean al desarrollo es realmente complicado, ms
an si se est inmerso en el da del da del trabajo. En
esta lnea lanzamos el pasado ao el programa
Desarrollador Cinco Estrellas que ofrece forma-
cin online a los asistentes en el momento que ellos
quieran, con el reconocimiento de las habilidades
adquiridas en forma de estrellas.
La otra demanda recurrente en los desarrolladores
es la aplicacin de la plataforma a escenarios reales.
Aprender la tecnologa es una cosa y aplicarla en la vida
real otra muy distinta, por eso nuestros talleres y even-
tos tratan de tener un carcter prctico, con muy poco
contenido terico y mucha demostracin en vivo.
El programa Desarrolla con MSDN que inaugura-
mos este ao est pensado para atender mejor estas nece-
sidades, por un lado ofreciendo al desarrollador formacin
en las ltimas tecnologas y por otro mostrando el lado
prctico de la tecnologa aplicada a un proyecto real.
Para cubrir la formacin hemos identificado cuatro
mdulos principales que iremos cubriendo durante todo
el ao: .NET y Servicios Web, Aplicaciones Web, Smart
Client y Visual Studio 2005. El contenido ser presen-
tado ofreciendo una curva de aprendizaje a los asisten-
tes y estar siempre enfocado a las ltimas tendencias en
el desarrollo de aplicaciones.
Seguir estos mdulos es ms fcil que nunca, por-
que los repetiremos en diferentes ciudades por toda
Espaa y ofreceremos contenido relacionado en la web
para el visionado en cualquier momento en forma de
webcasts, tutoriales, chats, seminarios y mucho ms.
Una vez hayamos proporcionado el conocimiento
necesario en cada mdulo, mostraremos cmo aplicar la
tecnologa a una aplicacin real. Para ello utilizaremos
una aplicacin de ejemplo llamada MSDN Video. MSDN
Video gestiona una franquicia de tiendas de venta y alqui-
ler de pelculas en DVD y est pensada para incluir todas
las ltimas tecnologas de .NET. La funcionalidad es acce-
dida por servicios web y sobre ellos desarrollaremos ml-
tiples clientes para distintos dispositivos y escenarios: web,
telfono mvil, smart client para PC y PDA, dispensador
automtico y varios ms.
En cada mdulo realizaremos un webcast totalmente
prctico que muestre paso a paso cmo implementar el
componente de la aplicacin asociado, sin transparencias
ni discursos, slo Visual Studio .NET. Adems pondremos
disponible el cdigo fuente en la web y documentacin
explicativa de las tcnicas de desarrollo empleadas.
Y despus es el turno del desarrollador. Una vez haya-
mos explicado la tecnologa y su aplicacin en un escena-
rio real, propondremos a quien lo desee que desarrolle su
propio mdulo de MSDN Video. Ah es donde se enfren-
tar con las dudas que slo surgen al comenzar a progra-
mar. Conscientes de esto, proporcionaremos ayuda a tra-
vs de distintos canales como el chat online, foros o email;
todos atendidos por los mejores expertos en tecnologas
Microsoft.
Si esto no supone un reto, tambin hemos pensado en
un aliciente ms. Los desarrolladores que programen un
mdulo para MSDN Video, bien mejorando uno existen-
te o haciendo uno nuevo, tendrn la opcin de publicar su
cdigo en nuestra web para que otros puedan aprender de
l y formar parte de la aplicacin de ejemplo en MSDN. Y
de entre todas las aportaciones elegiremos la ms intere-
sante y premiaremos a su autor con un viaje con todos los
gastos pagados a la conferencia mundial ms importante
de Microsoft, el PDC de Estados Unidos. All podr cono-
cer en persona a los grandes gurs de la tecnologa .NET
y porqu no, ensearles las tcnicas que utiliz para desa-
rrollar el mdulo de MSDN Video.
Para ms informacin sobre Desarrolla con MSDN
puedes acceder al sitio web www.DesarrollaConMSDN.com.
Contamos contigo!
< <
MSDN Comunidades
David Carmona, Consultor de Desarrollo
Grupo desarrolladores y Plataforma
Microsoft Ibrica
d
o
t
N
e
t
M
a
n

a
<
<
58
ConferenceXP, la nueva iniciativa de MS-Research
Learning Sciences, introduce interactividad real
en los campus universitarios
Los esfuerzos en investiga-
cin sobre tecnologas de la
enseanza llevados a cabo por Microsoft Research,
comienzan a ver sus frutos en implantaciones reales en algu-
nos campus universitarios. Los alumnos pueden seguir las
clases por videoconferencia, hacer preguntas en directo,
que son recibidas por el profesor y los otros asistentes, se
pueden compartir ejemplos, acceder a material bibliogr-
fico digitalizado, intercambiar mensajes y ms. En la pgi-
na de comunidades de ConferenceXPdisponemos de algu-
nos vdeos demostrativos: http://www.conferencexp.net/com-
munity. Tambin se encuentra disponible en la misma pgi-
na el software de pruebas: ConferenceXP Client.
Nueva versin de los compiladores de Perl y
Python para .NET
Como resultado de dos proyectos de investigacin lle-
vados a cabo por la empresa ActiveState, los dos nue-
vos compiladores vern su primera ver-
sin definitiva muy pronto. De momen-
to, podemos descargar las versiones
beta de su pgina dedicada:
http://www.activestate.com/Corporate/Initiatives/NET/
Research.html.
Intel anuncia el soporte de Longhorn para sus ltimas
tecnologas de virtualizacin (Vanderpool) y seguridad
(LaGrande)
Poco despus del anuncio oficial de la aparicin defi-
nitiva de Longhorn para el ao 2006, Intel
Corporation anunciaba el soporte, no ya de una (se
saba que LaGrande estara soportado) sino de las dos
tecnologas. Se trata de mecanismos que aaden nive-
les de seguridad en la ejecucin, permitiendo al siste-
ma operativo reforzar la seguridad estricta y la sepa-
racin de tareas. De cualquier forma, los analistas no
creen que estas tecnologas estn disponibles para la
primera versin de Longhorn, sino para la segunda,
alrededor de mediados de 2008.
n
o
t
i
c
i
a
s
.
n
o
t
i
c
i
a
s
Mejorando la escalabilidad y el rendimiento de las apli-
caciones .NET: Uno de los ms impresionantes docu-
mentos gratuitos sobre el tema que hemos visto, tanto por
su extensin (1150 pginas), como por la profundidad de
los contenidos. Publicado en formato PDF por Microsoft,
incluye todo tipo de cdigo fuente, explicaciones sobre
arquitectura, resolucin de problemas, implantacin de
seguridad, y un largo etctera. De obligado cumplimien-
to. Disponible en http://download.microsoft.com/download/
a/7/e/a7ea6fd9-2f56-439e-a8de-024c968f26d1/
ScaleNet.pdf (pinche el enlace en dotnetmania.com)
"What's new in System.Reflection (and friends)", es
un breve pero interesante documento de Joel Pobar
sobre las nuevas caractersticas de Reflection incluidas en
.NET Framework 2.0 (http://blogs.msdn.com/joelpob/archi-
ve/2004/06/22/163206.aspx).
Sitios Web del mes
DotNet2TheMax, (http://www.dotnet2themax.com) Uno de los
sitios de referencia europeos. Muchsima informacin
sobre .NET, en todas las versiones, con artculos, tru-
cos, pistas, e incluso un novedoso navegador de clases
para Whidbey (http://www.dotnet2themax.com/
DotNetBrowser/ShowAssemblies.aspx?ref=adwords&code=1)
Blog de Dino Esposito (http://weblogs.asp.net/despos). Despus de
estrenarse como colaborador de dotNetMana, no podemos
por menos que recomendar el blog de Dino Esposito: noti-
cias de primersima mano sobre lo que se cuece en el mundo
del desarrollo.
Sitio Web del Guille (http://www.elguille.info/indice.asp) Un clsi-
co para los desarrolladores de VB, en el que tam-
bin encontraris buena informacin sobre C# y
otros lenguajes. Abundantes tutoriales, trucos, cdigo fuente,
controles, recursos, utilidades, etc. Guillermo Som es el
WebMaster, MVP en Visual Basic desde hace muchos aos.
PortalVB, el sitio de Jorge Serrano (www.portalvb.com) Otro
sitio clsico del mundo de VB, donde
encontraris un noticiario, recursos,
muchas utilidades y artculos, as como
anuncios de las ltimas tecnologas.
dnm.desvan
<<
documentos en l a red
Marino Posadas
uti l i dades del mes
Nir Sofer: Sitio de utilidades de Nir Sofer. Merece una visi-
ta este interesante sitio con todo tipo de utilidades free-
ware para Windows. Citar una sola no sera de justicia:
http://www.nirsoft.net/utils.
Emulador tipo VirtualPC o VMWare, pero gratis: En
el sitio Free OS Zoo (http://www.freeoszoo.org) exponen
una utilidad de este tipo totalmente gratuita. Pueden
verse algunas pantallas en la pgina: (http://www.freeos-
zoo.org/screenshots.php)
IMPORTES VLIDOS HASTA NUEVA OFERTA
DATOS DE FACTURACIN
CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Direccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Poblacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Cdigo Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .
Telfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DATOS DE ENVO (slo si son distintos de los datos de facturacin)
CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Direccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Poblacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Cdigo Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .
Telfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FORMA DE PAGO
Taln nominativo a nombre NETALIA, S.L.
Giro postal a nombre NETALIA, S.L.
Transferencia bancaria a nombre de NETALIA, S.L. a:
La Caixa
Nmero de cuenta 2100 4315 48 2200014696
(Indique su nombre en la transferencia)
Domiciliacin Bancaria
Indique su nmero de cuenta:
Tarjeta de crdito
VISA MASTERCARD AMERICAN EXPRESS
Nmero de su tarjeta:
Fecha de caducidad: / (Imprescindible)
Firma y sello (imprescindible)
a de de 20
Suscripcin a dotNetMana
Usted autoriza a la mecaniza-
cin de estos datos. El res-
ponsable y destinatario de
stos es Netalia, S.L. Usted
tiene derecho a acceder a sus
datos, modificarlos y cance-
larlos cuando lo desee. Sus
datos no sern cedidos en nin-
guna de las formas posibles a
terceras partes y no se utiliza-
rn ms que para el buen fun-
cionamiento de su suscripcin
a la revista dotNetMania y
para informarle de las activi-
dades comerciales que realice
la editorial Netalia, S.L. Si no
desea recibir informacin
comercial de esta empresa
marque la casilla siguiente
N1 N2 N3 N4 N5
Enve este formulario por email a la direccin
suscriptores@dotnetmania.com, o al fax (34) 91 499 13 64
Tambin puede enviarlo por correo postal
a la siguiente direccin:
C/ Robledal, 135
28529- Rivas Vaciamadrid
Madrid (Espaa)
Deseo suscribirme a dotNetMana por un ao (11 ejemplares) y beneficiarme de la oferta del 10% de descuento por un
importe total de 60 para Espaa; o por 75 para el resto de Europa; o por 90 para el resto del mundo (IVA incluido).
Deseo suscribirme a dotNetMana por un ao (11 nmeros ) por un importe de 45 por ser estudiante (IVA incluido).
Aporto fotocopia del carn de estudiante o sello del centro acadmico (IMPRESCINDIBLE). OFERTA VLIDA SLO
PARA ESTUDIANTES RESIDENTES EN ESPAA.
N6 N7

Vous aimerez peut-être aussi