BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...
BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...
BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Visual Basic.NET • C# • Delphi • ASP.NET • ADO.NET • .NET Framework • Windows <strong>Server</strong> System<br />
dotNetManía<br />
www.dotnetmania.com Dedicada a los profesionales de la plataforma .NET<br />
nº6 julio/agosto <strong>2004</strong> • Precio: 6,00 € (España)<br />
<strong>BizTalk</strong> <strong>2004</strong> <strong>Server</strong><br />
El futuro de la integración empresarial<br />
Entrevista a Rafal Luckawiecki<br />
Tech•Ed Europe <strong>2004</strong>: Crónica de un tiempo de espera<br />
opinión<br />
Adversus Linux<br />
Enviando emails con .Net •<br />
Configurando la apariencia del<br />
control DataGrid • Serialización<br />
de XML • Seguridad de<br />
Internet Information <strong>Server</strong> (I)<br />
Universidad<br />
II Jornadas Académicas Microsoft Research<br />
Arquitectura<br />
Arquitecturas: Algunos fundamentos
dnm.sumario<br />
6 dnm.sumario<br />
II Jornadas Académicas Microsoft Research 9-10<br />
Docencia e investigación en un mundo de aplicaciones orientadas a servicio<br />
Barcelona 24 al 26 de mayo de <strong>2004</strong><br />
Adversus Linux 11-13<br />
Llevamos buscando la verdad desde hace siglos. Los hitos en este largo camino son infinitos<br />
y a cada paso dado parece que, como a Aquiles con su tortuga, nos quede un mundo<br />
inalcanzable <strong>por</strong> conseguir. Así somos las personas; caemos de continuo en el engaño…<br />
Entrevista a Rafal Luckawiecki 14-16<br />
Luckawiecki, es ponente habitual en los Tech-Ed, PDC y demás congresos a nivel mundial<br />
y fue nombrado como mejor conferenciante del pasado Tech-Ed 2003 de Barcelona.<br />
Enviando emails con .Net 17-20<br />
Un repaso sencillo y práctico de lo que nos ofrece .Net Framework para enviar<br />
emails haciendo uso del namespace System.Web.Mail.<br />
<strong>BizTalk</strong> <strong>2004</strong> <strong>Server</strong>: El futuro de la integración empresarial 21-33<br />
En el artículo principal de este número, contamos las bondades de <strong>BizTalk</strong>, que en<br />
su versión <strong>2004</strong> demuestra no sólo su madurez, sino su cambio de filosofía, tanto<br />
como el cambio de COM a .Net.<br />
Configurando la apariencia del control DataGrid 34-39<br />
Un repaso básico de aquellos elementos del control DataGrid que están<br />
involucrados en la personalización de la presentación tabular de los datos.<br />
Serialización de XML 40-43<br />
En este artículo, explicamos en qué consiste básicamente la serialización de XML y<br />
cómo aplicarla para tratar con XML, ahorrándonos escribir código y<br />
simplificándonos la lectura y escritura del mismo.<br />
Seguridad de Internet Information <strong>Server</strong> (I) 44-48<br />
Primera entrega de esta serie de artículos sobre seguridad. En ésta vemos los<br />
distintos metidos de autenticación que nos ofrece IIS y cómo su uso afecta a la<br />
seguridad de nuestras aplicaciones ASP y ASP.NET.<br />
Tech•Ed Europe <strong>2004</strong>: Crónica de un tiempo de espera 49-51<br />
Ámsterdam 29 de junio al 2 de julio de <strong>2004</strong><br />
Arquitecturas:Algunos fundamentos 52-55<br />
El concepto de Arquitectura, en el ámbito de desarrollo de software, ha ido<br />
evolucionando y se ha convertido en un concepto bastante complejo, es decir que<br />
abarca una gran diversidad de aspectos del desarrollo<br />
dnm.biblioteca.net 56<br />
Code Generation in Microsoft .NET<br />
Begining .Net Game Programming in C#<br />
dnm.desvan 58
dotNetManía<br />
Compuware presenta<br />
soluciones para la<br />
automatización del<br />
ciclo de vida de las<br />
aplicaciones basadas<br />
en .NET Framework<br />
Compuware presenta la integración<br />
de la automatización de pruebas<br />
con Microsoft Visual Studio<br />
2005 Team System; la version de<br />
Compuware DevPartner Studio 7.2<br />
Professional Edition<br />
Compuware Cor<strong>por</strong>ation realizó desmostraciones<br />
en el Microsoft Tech-Ed<br />
<strong>2004</strong> Europa de sus soluciones de automatización<br />
de ciclo de vida de sus productos<br />
DevPartner, QACenter y Vantage.<br />
Las soluciones automatizadas de<br />
ciclo de vida de Compuware permiten a<br />
los desarrolladores comprobar como trabajar<br />
perfectamente para acelerar y mejorar<br />
la entrega y el uso de las aplicaciones<br />
de alta calidad.<br />
“Nosotros estamos encantados de<br />
que Compuware haya demostrado su<br />
so<strong>por</strong>te de Visual Studio 2005 Team<br />
System”, dijo Prashant Sridharan, jefe<br />
de producto en el .NET Developer<br />
Producto Management en Microsoft<br />
Cor<strong>por</strong>ation. “Las soluciones para el ciclo<br />
de vida de aplicaciones de Compuware<br />
son im<strong>por</strong>tanptes para una correcta estratégia<br />
de negocios basada en tecnologías<br />
Microsoft, y nosotros anticipamos la con-<br />
tinuidad para trabajar estrechamente con ellos para ofrecer un alto valor a los usuarios”,<br />
añadió.<br />
Compuware a<strong>por</strong>ta una demostración de la integración de la tecnología de<br />
automatización de pruebas de Compuware TestPartner con Microsoft Visual Studio<br />
2005 Team System. La integración con Microsoft Visual Studio 2005 Team System<br />
permitirá a los desarrolladores probar funcionalmente sus aplicaciones usando<br />
Compuware TestPartner directamente desde dentro de sus entornos de desarrollo<br />
y aprovechar las nuevas capacidades de Visual Studio 2005.<br />
También en el Tech-Ed Europe, Compuware demostró la más reciente version<br />
de Compuware DevPartner Studio Professional Edition 7.2. Compuware DevPartner<br />
Studio Professional Edition 7.2, que apareció el mes pasado, continuará so<strong>por</strong>tando<br />
Visual Studio .NET 2003 y 2002, incluyendo so<strong>por</strong>te para operaciones side-byside<br />
de ambos entornos de desarrollo. Entre sus características están código fuente<br />
estático que implementa la capacidad de que grupos de desarrollo puedan aplicar<br />
convenciones de nombres propuestas en el documento Microsoft .NET<br />
Framework General Reference Naming Guidelines, junto con la capacidad de detector<br />
código que no se ejecutado. Estas características mejoran el rendimiento y la<br />
mantenibilidad de una aplicación a lo largo de su ciclo de vida. Además, los desarrollaodres<br />
pueden ahora usar Compuware DevPartner Studio en conjunto con<br />
Microsoft Terminal Services, a<strong>por</strong>tando flexibilidad para que los desarrolladores<br />
analicen y detecten errors y cuestiones de rendimiento en aplicaciones mientras<br />
trabajan remotamente.<br />
Compuware también hizo una demostración de Compuware Vantage, un servicio<br />
para la gestión de aplicaciones que ayuda a las organizaciones TI a gestionar<br />
el rendimiento de las aplicaciones desde la perspectiva de lo que más im<strong>por</strong>ta: el<br />
usuario final.<br />
Windows XP SP2 RC2<br />
disponible<br />
Windows XP SP2<br />
es una actualización<br />
de Windows<br />
XP que incluye<br />
mejoras de seguridad<br />
como el nuevo<br />
Windows Security<br />
Center que<br />
centralizará la<br />
configuración de<br />
seguridad y que<br />
incluye incluso protección antivirus; un nuevo firewall<br />
que reemplaza al actual ICF (Internet Connection<br />
Firewall) con políticas de grupo integradas en el Active<br />
Directory; una nueva versión de RPC para protección<br />
contra ataques en la red;un bloqueador de popups y un<br />
gestor de descargas en el también nuevo Internet Explorer<br />
junto con mejoras de seguridad en el Outlook Express y<br />
en el Windows Messenger; un nuevo Windows Update;<br />
una remodelada protección de memoria para evitar los<br />
comunes “overruns”; mejoras de seguridad en el Windows<br />
Media Placer; y otros cambios.<br />
La RC2 (Release Candidate 2) de Windows XP<br />
SP2 ya está disponible y puede descargarse desde<br />
http://www.microsoft.com/technet/prodtechnol/winxp<br />
pro/sp2preview.mspx<br />
Service Pack 1 para<br />
SQL <strong>Server</strong> Re<strong>por</strong>ting<br />
Services<br />
Microsoft acaba de liberar el primer service pack para<br />
SQL <strong>Server</strong> 2000 Re<strong>por</strong>ting Services, que estará disponible<br />
para los clientes de SQL <strong>Server</strong> 2000 libremente<br />
en la zona de descargas de la web, en<br />
http://www.microsoft.com/downloads/.<br />
Esta versión del Service Pack 1 de Microsoft SQL<br />
<strong>Server</strong> 2000 Re<strong>por</strong>ting Services incluye correcciones<br />
de errores, mejoras en el rendimiento y otras mejoras<br />
en el funcionamiento. La lista de correcciones de este<br />
service pack puede encontrarla en:<br />
http://sup<strong>por</strong>t.microsoft.com/?kbid=839796<br />
Microsoft Virtual <strong>Server</strong> 2005 Release Candidate<br />
Microsoft Virtual <strong>Server</strong> 2005, ya está en la fase Release Candidate<br />
(sólo para la versión inglesa) y estará disponible a lo largo de este año <strong>2004</strong>.<br />
Habrá dos versiones de Virtual <strong>Server</strong>, la edición Standard y la<br />
Enterprise, con similares características. La edición Standard so<strong>por</strong>tará<br />
hasta cuatro procesadores mientras que la edición Enterprise so<strong>por</strong>ta<br />
hasta 32 procesadores.<br />
Este software está diseñado para permitir a los clientes ejecutar<br />
múltiples sistemas operativos en un sólo equipo, <strong>por</strong> lo que es muy apreciado<br />
tanto <strong>por</strong> técnicos de sistemas como <strong>por</strong> desarrolladores <strong>por</strong> el<br />
ahorro de costes que supone para emular distintos entornos de pruebas.<br />
Más información: http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/rceval.mspx<br />
dnm.noticias<br />
dotNetManía<br />
II Jornadas Académicas Microsoft Research<br />
Docencia e investigación en un mundo de aplicaciones orientadas a servicios<br />
Barcelona 24 al 26 de mayo de <strong>2004</strong><br />
Microsoft Ibérica y Microsoft Research<br />
Cambridge celebraron conjuntamente<br />
en Barcelona la segunda edición de las<br />
Jornadas Académicas Microsoft Research,<br />
con la participación de más de 190 profesores<br />
e investigadores de más de 39<br />
universidades y centros de investigación<br />
de España y Latinoamérica.<br />
Según Microsoft Ibérica, “la organización<br />
de estas jornadas en España se<br />
enmarca en el contexto de la apuesta que<br />
la compañía mantiene <strong>por</strong> la modernización<br />
del país y <strong>por</strong> un drástico aumento<br />
de la productividad, que tiene que ver<br />
con un verdadero impulso innovador.<br />
Actualmente, España invierte en I+D+i<br />
la mitad de la media europea, lo que<br />
redunda en un desfase de la competitividad<br />
de nuestro país con respecto a las<br />
de otros países.”<br />
“España necesita una ‘explosión’ en<br />
su capacidad de innovación si quiere ser<br />
realmente un país competitivo y moderno”,<br />
ha declarado Rosa García, consejera<br />
delegada de Microsoft Ibérica,<br />
quien hizo la introducción a las jornadas.<br />
Y añade que “el hecho de que <strong>por</strong><br />
segunda vez celebremos en España estas<br />
jornadas con Microsoft Research demuestra<br />
nuestro apoyo al esfuerzo innovador,<br />
divulgador y formativo que este<br />
país tiene que realizar para poder des-<br />
plegar todo su potencial y ocupar el<br />
espacio que realmente le corresponde<br />
en el ámbito europeo”.<br />
Ya en su introducción al evento,<br />
Rosa hizo hincapié en la investigación<br />
como rasgo diferenciador de calidad y<br />
prestigio entre universidades, así como<br />
el círculo “virtuoso” que estos años se<br />
está creando entre Microsoft/Microsoft<br />
Research y las universidades, donde<br />
ambas entidades comparten ideas, y<br />
donde las universidades a<strong>por</strong>tan el talento<br />
de los estudiantes y Microsoft a<strong>por</strong>ta<br />
los programas y los recursos necesarios<br />
para la docencia y la investigación.<br />
La conferencia tuvo lugar en el<br />
Hotel Catalonia Barcelona Plaza y en<br />
el Convent des Angels y se trataron tanto<br />
los aspectos de actualidad relacionados<br />
con la docencia y la investigación<br />
como la infraestructura, los sistemas y<br />
las herramientas para el desarrollo e<br />
implantación de aplicaciones distribuidas<br />
y orientadas a servicios.<br />
Las Jornadas Académicas Microsoft<br />
Research <strong>2004</strong> constituyeron una ocasión<br />
única de compartir puntos de vis-<br />
ta, cuestiones e inquietudes con los<br />
investigadores de Microsoft Research y<br />
los ingenieros de Microsoft Ibérica y<br />
Microsoft Cor<strong>por</strong>ation, aparte de descubrir<br />
en detalle algunos conceptos y su<br />
implementación más concreta en la<br />
oferta tecnológica de Microsoft actual<br />
y de los próximos años.<br />
Las herramientas de desarrollo de<br />
Microsoft hasta no hace mucho no han<br />
tenido un lugar preferente entre los<br />
investigadores, ni tampoco entre los<br />
docentes de las universidades; pero el<br />
trabajo realizado desde Microsoft<br />
Ibérica liderado <strong>por</strong> Xavi Pey y <strong>por</strong><br />
Beatriz Ordóñez, posiblemente desde<br />
la aparición de la plataforma .NET,<br />
está dando unos resultados verdaderamente<br />
espectaculares, cambiando esta<br />
situación de forma drástica. Existen<br />
muchos e interesantísimos proyectos<br />
de investigación usando la plataforma<br />
.NET en marcha en varias universidades<br />
españolas. Por ello, en el número<br />
anterior de dotNetManía creamos<br />
la sección dnm.universidad.net en la que<br />
esperamos poder presentar de la mano<br />
de sus autores a algunos de ellos más<br />
adelante.<br />
Según la compañía, “estas jornadas<br />
suponen una pieza im<strong>por</strong>tante dentro de<br />
la inversión en programas académicos<br />
que Microsoft Ibérica viene realizando<br />
desde hace más de cuatro años, que se<br />
traducen en más de 150 departamentos<br />
suscritos durante este curso al programa<br />
de MSDN Academia Alliance para el<br />
uso de software de Microsoft; la forma-<br />
dotNetManía<br />
ware que regulará toda nuestra actividad,<br />
me deja bastante preocupado. El<br />
desarrollo económico y tecnológico lo<br />
llevan a cabo las empresas, me siento<br />
intranquilo al pensar que los complicados<br />
procesos públicos y privados que<br />
garantizan mi salud, mi enseñanza, la<br />
protección de mis derechos como ciudadano,<br />
etc. se encuentran en manos de<br />
personas privadas sin la organización y<br />
el rigor adecuado.<br />
Administración pública<br />
y software libre<br />
Uno de los entornos donde más ha<br />
calado la apuesta <strong>por</strong> Linux es la administración<br />
pública, tanto en España,<br />
donde tenemos sonadas experiencias<br />
como la del Linex en Extremadura<br />
como en otros países de la Unión<br />
Europea, como <strong>por</strong> ejemplo, Francia.<br />
Por debajo del análisis que los gobiernos<br />
hacen para apoyar estas iniciativas<br />
se encuentra la lucha antimonopolio<br />
que se sigue contra Microsoft<br />
desde hace tiempo. Particularmente<br />
pienso que si no se hubiera dado la<br />
actual situación de mercado en la cual<br />
sólo una compañía detenta a nivel<br />
mundial el monopolio de los sistemas<br />
operativos, el apoyo al software libre<br />
<strong>por</strong> parte de los gobiernos no tendría<br />
tanto ímpetu. Lo que sucede, desde<br />
mi punto de vista, es que existen algunos<br />
errores conceptuales notorios a la<br />
hora de seguir esta política.<br />
Personalmente mantengo la hipótesis<br />
de que Linux sólo tiene futuro desde<br />
la apuesta que las grandes compañías<br />
hagan <strong>por</strong> el mismo. Es decir que un<br />
sistema operativo mantenido sin<br />
demasiado orden ni concierto <strong>por</strong> el<br />
colectivo de los usuarios del mismo no<br />
puede ser el software en que los estados<br />
confíen el sustento de sus sistemas<br />
de información, su seguridad, etc.<br />
Hacer que sea el propio estado el que<br />
lo mantenga, tal como se hace con<br />
Linex, me parece volver a tiempos y<br />
sistemas ya superados en la gestión de<br />
lo público. Sólo las empresas poseen<br />
la necesaria organización de procesos,<br />
capacidad inversora y tensión a la rentabilidad<br />
como para hacer de este proceso<br />
tecnológico el correspondiente<br />
proceso de mercado.<br />
Por todo ello creo que con Linux<br />
volveremos a tener un ejemplo sobre la<br />
mesa del conocido mito del eterno<br />
retorno. Es decir, primero surgen cosas<br />
como el confuso ideario del software<br />
libre, de ahí pasamos a cosas algo menos<br />
revolucionarias como la actual concepción<br />
de Linux sustentada como código<br />
abierto y, a dos pasos, está que IBM,<br />
Novell, etc. es decir las compañías que<br />
pueden obtener beneficio del proceso<br />
apuesten claramente <strong>por</strong> él, poniendo a<br />
su gente a investigar y trabajar. De tal<br />
modo, en un momento habremos asistido<br />
al crecimiento de una nueva estrategia<br />
y estructura empresarial con el<br />
apoyo de determinados estados e instituciones<br />
que tiene como finalidad arrebatar<br />
cuota de mercado al actual operador<br />
mayoritario que es Microsoft. Por<br />
tanto, algo que nace como una apuesta<br />
revolucionaria en el mundo del software<br />
terminará convirtiéndose en la o<strong>por</strong>tunidad<br />
de negocio de algunos que lo<br />
usarán para sobreponerse a otros en el<br />
mercado, pero eso sí esta vez se hará con<br />
el aval de ciertos organismos públicos<br />
que, lo quieran o no, están ayudando a<br />
esa situación en aras de defender una<br />
idea progresista de libertad que, desde<br />
mi punto de vista, no es factible de instrumentarse<br />
más que con un fuerte apoyo<br />
empresarial <strong>por</strong> detrás.<br />
Algo de sensatez en la locura<br />
Por otro lado, no todas las voces tecnológicas<br />
autorizadas están a favor del<br />
Open Source, así, <strong>por</strong> ejemplo, Vinton<br />
G. Cerf, uno de los padres de Internet<br />
y Premio Príncipe de Asturias 2002, en<br />
una entrevista a la sección El Navegante<br />
del diario El Mundo del 14 de mayo, ante<br />
la pregunta de lo que opina sobre el software<br />
libre, responde: Tengo sentimientos<br />
encontrados. Es muy útil en la medida que<br />
puedes acceder al código fuente, eres capaz<br />
de comprenderlo y puedes encontrar vulnerabilidades<br />
(‘bugs’). La pregunta es ¿quién<br />
tiene tiempo para hacer eso? La mayor parte<br />
de los usuarios no. Además, el software<br />
de código abierto no garantiza al 100% la<br />
mejor calidad. Si yo pago <strong>por</strong> algo, al menos<br />
sé a quién rendir cuentas si el programa<br />
falla (...). Si yo pago, puedo siempre pedir<br />
más, y si tengo un problema, sé contra quién<br />
acudir. Creo que el software libre está bien<br />
para algunos campos, como el mundo académico.<br />
En el mundo de los negocios, sólo en<br />
algunas ocasiones es una buena idea.<br />
En resumen…<br />
dotNetManía<br />
el Analisis y Diseño de Aplicaciones,<br />
antes de pasar al desarrollo?<br />
Exacto. Si planeas lo suficientemente<br />
bien, es perfecto para propósitos prácticos.<br />
Es ideal para este año o quizá parte<br />
del siguiente. Pero la planificación a<br />
medio plazo, requiere posiciones más<br />
flexibles, más estratégicas y menos ligadas<br />
a ideas concretas. Flexibilidad, sería<br />
la palabra. Podríamos recordar aquí la<br />
tríada fundamental: Alcance, Visión y<br />
Misión. El alcance se refiere a un proyecto<br />
individual; la Visión, a series de<br />
proyectos que pueden ser abordados de<br />
forma similar, con tecnologías afines, y<br />
medios parecidos dentro del marco<br />
empresarial; y la Misión es una plataforma<br />
que aglutina todas las visiones<br />
teniendo en cuenta lo que tienen en<br />
común. De la misma forma, visión es<br />
una forma de planificar la estrategia. Por<br />
tanto, mi consejo a cualquier organización<br />
que quiera sobrevivir y establecer<br />
una planificación a 6 ó 7 años vista, es<br />
que expresen su estrategia en términos<br />
comprensibles.<br />
Una vez que eso se ha conseguido,<br />
hay que pensar en la capacidad de adaptación.<br />
Esto se ve en muchas compañías,<br />
<strong>por</strong> ejemplo las compañías aéreas.<br />
British Airways está haciendo un trabajo<br />
de adaptación espléndido y sus resultados<br />
mejoran, mientras que existen<br />
compañías en USA que están teniendo<br />
tremendas dificultades a este respecto.<br />
Creo que la diferencia entre las dos fue<br />
la comprensión de la visión y ser capaces<br />
de adaptarse. Ya lo dijo Darwin, “no<br />
sobrevive el más fuerte sino aquel que<br />
tiene la mayor facilidad para adaptarse<br />
al cambio”.<br />
Otra de tus áreas de interés es la<br />
criptografía, y recuerdo una charla tuya<br />
al respecto, a la que asistí el pasado<br />
Tech-Ed en Barcelona. ¿Crees que la<br />
única forma de liberarse de todos esos<br />
efectos colaterales indeseables de<br />
Internet (virus, spam, spyware, etc…)<br />
es mediante la criptografía?<br />
Estrategia. ¿Qué significa exactamente? Significa comprender<br />
cómo las innovaciones y estas pequeñas visiones<br />
o anticipaciones del futuro inmediato, pueden alterar<br />
tus operaciones del día a día. Una compañía que sobrevive,<br />
es una compañía que tiene estrategias de algún tipo.<br />
Creo que sí, siempre que se haga<br />
combinándolo con otras tecnologías que<br />
a<strong>por</strong>ten aquello que la criptografía solamente<br />
no puede dar. Pero la criptografía<br />
<strong>por</strong> sí misma no resuelve el problema,<br />
ya que se trata principalmente de<br />
una teoría. Por ejemplo podríamos<br />
requerir que cada mensaje estuviera firmado<br />
digitalmente y con eso se terminarían<br />
el 99% de los problemas con el<br />
“spam”. Pero esto no es todavía la solución<br />
en el momento en que nos encontramos,<br />
<strong>por</strong> tanto la criptografía puede<br />
ayudar, pero se requieren funcionalidades<br />
en el sistema de correo que no están<br />
presentes en su totalidad al día de hoy.<br />
Es una cuestión de balance entre acce-<br />
static bool SendPlainTextEMail( string strFrom,<br />
string strTo,<br />
string strSubject,<br />
string strBody,<br />
string SMTP<strong>Server</strong>,<br />
string UserID,<br />
string Password<br />
)<br />
{<br />
bool bRet = true;<br />
MailMessage msg = new MailMessage();<br />
try<br />
{<br />
msg.From = strFrom;<br />
msg.To = strTo;<br />
msg.Subject = strSubject;<br />
msg.Body = strBody;<br />
// Autentificación básica, pon aquí tu User y Password<br />
// MiEMail@direccion.com<br />
msg.Fields.Add(<br />
“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate”, “1”);<br />
msg.Fields.Add(<br />
“http://schemas.microsoft.com/cdo/configuration/sendusername”, UserID);<br />
msg.Fields.Add(<br />
“http://schemas.microsoft.com/cdo/configuration/sendpassword”, Password);<br />
// “smtp.midominio.com”;<br />
SmtpMail.Smtp<strong>Server</strong> = SMTP<strong>Server</strong>;<br />
SmtpMail.Send(msg);<br />
}<br />
catch(Exception)<br />
{<br />
bRet = false;<br />
}<br />
return bRet;<br />
}<br />
<br />
Así cuando nuestro cliente recibe el email éste se<br />
va cargando como si de una página web se tratara, sin<br />
tener que preocuparnos <strong>por</strong> adjuntar otros tipos de<br />
ficheros al correo. No hay que abusar de las imágenes<br />
ya que si no estamos conectados a Internet éstas<br />
no se ven.<br />
El único cambio que tenemos que hacer en el código<br />
para enviar contenido con HMTL es el siguiente:<br />
msg.BodyFormat = MailFormat.Html;<br />
En el string donde pasábamos el contenido ahora<br />
le pasamos un string con el HTML (en la página web<br />
te puedes bajar un ejemplo completo, se llama<br />
Fuente 2. Enviando email autentificándose.<br />
EMailHTML, que lee del disco un fichero HMTL y<br />
lo envía.<br />
Attachments (ficheros adjuntos)<br />
Añadir ficheros a un email nos permite hacer<br />
cosas como adjuntar una factura, o unas instrucciones<br />
de instalación (jeje, respuesta automática del servicio<br />
de so<strong>por</strong>te: “Estimado Pedro, te envío la guía<br />
de instalación de la aplicación adjunta a este correo<br />
en formato PDF, <strong>por</strong> favor si tienes algún problema<br />
no dudes en escribirme de nuevo…”).<br />
Esto parece algo muy ventajoso, pero te aconsejo<br />
que no lo uses a no ser que sea imprescindible, ¿Por<br />
qué? Imagínate que cuando notificas un pedido a un<br />
cliente aprovechas para adjuntarle la factura en formato<br />
PDF. El cliente se acostumbra a recibir correos<br />
incor<strong>por</strong>a un lenguaje visual basado en reglas similares<br />
a un pseudocódigo que -modelado con Microsoft<br />
Visio-, establece, de modo claro, las reglas del juego.<br />
Todo este motor (engine) está basado en unas especificaciones<br />
denominadas XLANG. Y permiten integrar<br />
el idioma del negocio con los componentes de<br />
lógica de negocio que resuelven los problemas en el<br />
momento justo. Además, puesto que la herramienta<br />
usada es Visio, cualquier analista que conozca los diagramas<br />
XLANG, podrá modelar su propio negocio.<br />
[[<br />
Nota<br />
<strong>BizTalk</strong> debe lidiar con distintos tipos<br />
de estructuras de datos, que son en<br />
realidad, documentos XML.<br />
Por último, <strong>BizTalk</strong> debe lidiar con distintos tipos<br />
de estructuras de datos origen y destino. Dichas estructuras<br />
de datos son, en realidad, los documentos que<br />
procesan los aplicativos de las empresas: unas los generan<br />
y otras los consumen. El problema: que <strong>BizTalk</strong><br />
debe encontrar una manera de poder unificar dichas<br />
estructuras, ya que si no sería imposible hablar de un<br />
servidor viable debido a la falta de la adaptación continua<br />
de los módulos que posibilitarían dicha funcionalidad.<br />
Por ello, <strong>BizTalk</strong> pro<strong>por</strong>ciona unos adaptadores<br />
que convierten los documentos origen en un<br />
formato intermedio, flexible, adaptable, versátil, universal<br />
y estándar con el que poder realizar sus tareas.<br />
Aquí es donde XML y sus tecnologías relacionadas<br />
entran de lleno. Este tipo de formato, permite que<br />
<strong>BizTalk</strong> trabaje con una estructura intermedia que los<br />
implementadotes del negocio pueden emplear para<br />
aplicar todas sus reglas de transformación, adaptación,<br />
proceso…etc., de un modo único. Con el fin de obtener<br />
una transformación de dicho documento en un<br />
producto final que es el que requiere la aplicación destino.<br />
Así se encapsula el trabajo del <strong>BizTalk</strong> de las<br />
implementaciones de los documentos origen-destino.<br />
Para ello, <strong>BizTalk</strong> emplea las gramáticas XSD que<br />
determinan el cómo analizar los documentos, y las<br />
tecnologías de XSLT para transformar un documento<br />
origen en uno destino, empleando herramientas<br />
que automatizan todo este proceso. El proceso <strong>por</strong> el<br />
cual un documento origen es adaptado a XML o un<br />
documento XML es adaptado a un destino, empleando<br />
una gramática es llevado a cabo <strong>por</strong> los Pipelines,<br />
Estos pipes abstraen a los procesos de <strong>BizTalk</strong> de las<br />
estructuras propietarias de los documentos, dejando<br />
estas tareas para el primer y último eslabón del proceso<br />
de integración. Además, ni que decir tiene, que<br />
ya puestos, Microsoft incor<strong>por</strong>a de serie una colección<br />
de pipelines que entienden los formatos están-<br />
dares del mercado, tales como EDIFACT y ANSI X12<br />
que permiten integrar el software cor<strong>por</strong>ativo con los<br />
estándares de facturación de mercado y el intercambio<br />
de datos con las más grandes cor<strong>por</strong>aciones: las<br />
administraciones (aunque en este caso sean las americanas…).<br />
Simplificando enormemente la implantación<br />
de estas soluciones y ahorrando muchos costes.<br />
Lo más interesante del tema, es que todo este trabajo<br />
se realiza en n-veces menos tiempo que su equivalente<br />
en desarrollo específico informático. Es más<br />
mantenible, escalable, adaptable… y todos los “xxxable”<br />
que se os puedan pasar <strong>por</strong> la cabeza. Y además,<br />
como buen framework que es, con todo el conjunto<br />
de herramientas de administración, gestión, enrutamiento,<br />
seguridad y rendimiento que la empresa necesita.<br />
Y <strong>por</strong> si fuera poco, con los vocabularios que la<br />
gente del negocio entiende (pues los diagramas<br />
XLANG tienen que ser revisados <strong>por</strong> personas del<br />
negocio). De ahí que las siglas de <strong>BizTalk</strong> sean estas:<br />
Business (Biz, cariñosamente el inglés) Talk, hablemos<br />
de negocios.<br />
Y todo desde dos perspectivas: la de la empresa<br />
que quiere minimizar el impacto del desarrollo de<br />
soluciones software (empleando los mecanismos integrados<br />
de <strong>BizTalk</strong>) y la que necesita implementar procesos<br />
basados en componentes de lógica de negocio<br />
(integrando en las reglas de <strong>BizTalk</strong> componentes de<br />
negocio desarrollados específicamente para resolver<br />
el problema: COM+, Acceso a datos, Servicios<br />
Web…etc.). Con lo cual, el límite: ninguno.<br />
<strong>BizTalk</strong> <strong>2004</strong>. Un auténtico .NET<br />
Enterprise <strong>Server</strong><br />
Todo lo anterior ha resuelto muchísimos problemas<br />
y a<strong>por</strong>tado infinidad de soluciones que han ahorrado<br />
muchísimos costes y simplificado procesos<br />
empresariales. Incluso puedo afirmar que una vez que<br />
se le coge el truco a <strong>BizTalk</strong> es jod… perdón, difícil<br />
volver a las viejas costumbres. Pero, su tecnología se<br />
mayor: BPEL con su sistema de reglas y vocabulario<br />
de negocio… pero <strong>por</strong> partes, como las integrales…<br />
• Integración completa con .NET Framework y<br />
con Visual Studio .NET. Lo cual implica que<br />
se goza de todas las ventajas del CLR –como ya<br />
hemos comentado-, a la par que se disfruta de<br />
una integración nativa con el nuevo modelo de<br />
distribución de capas del mercado: los servicios<br />
Web.<br />
• Visual Studio.NET como herramienta cuenta con:<br />
–Plantillas de proyecto para todas y cada una<br />
de las áreas de diseño y arquitectura de un<br />
componente empresarial.<br />
–Multitud de vínculos, enlaces de “qué es lo<br />
siguiente…”, consejos en línea…<br />
–Generadores de especificaciones XML (XSD)<br />
y sus herramientas de control de calidad. Así<br />
como la capacidad de incor<strong>por</strong>ar en la gramática<br />
la adaptación de un documento propietario<br />
en un formato XML intermedio<br />
empleando los componentes PipeLine.<br />
–Mapeadores gráficos de documentos empleando<br />
los poderosos “Functoids” –funciones<br />
transformadoras de datos- para poder reforzar<br />
las transformaciones con todo tipo de proceso<br />
intermedio (procesos de cadenas de caracteres,<br />
fechas, comprobaciones de datos, cálculos<br />
matemáticos, y un larguísimo etc.). No<br />
sólo se han mejorado los functoids de versiones<br />
anteriores, sino que se ha añadido la<br />
posibilidad de crear nuevos Functoids desarrollados<br />
a partir de ensamblados .NET.<br />
Figura 2. El entorno de desarrollo<br />
• Gracias a la potencia de Visual Studio .NET, se<br />
ofrece como novedad un nuevo sistema de<br />
representación de las reglas XLANG, el<br />
Orchestration Designer, que mejora los símbolos<br />
de representación visual a la par que integra<br />
todas sus propiedades de personalización en<br />
un panel de propiedades -al más puro estilo de<br />
Visual Basic- junto con las SmartTags o marcas<br />
inteligentes que nos asistirán en todo momento<br />
para configurar correctamente las reglas de<br />
negocio. Un potente editor de reglas integrado<br />
con .NET, pero existe la posibilidad de crear<br />
diagramas XLANG desde Microsoft Visio, que<br />
después de podrán im<strong>por</strong>tar al Visual Studio<br />
para el posterior proceso <strong>por</strong> parte del equipo<br />
de desarrollo.<br />
Figura 3. El Orchestration Manager en acción<br />
• Nuevo sistema de enrutado de mensajes basado<br />
en el contenido, que permite filtrar mensajes<br />
y enrutarlos, no sólo en base al sobre, sino a<br />
los contenidos del mensaje.<br />
• Integración de <strong>BizTalk</strong> Services Explorer en el<br />
panel de Explorador de Servidores. Esta herramienta<br />
asiste al desarrollador en el proceso de<br />
implantación y distribución de todos los componentes<br />
en la base de datos de configuración<br />
de <strong>BizTalk</strong> <strong>Server</strong>. Sin contar que tiene todos<br />
los asistentes o<strong>por</strong>tunos para orquestar y poner<br />
en unión todos los elementos arquitecturales<br />
que pondrán en marcha el proceso de negocio<br />
–ahora hablaremos de cómo va el temita-.<br />
• Nuevo modelo de representación de los procesos<br />
de negocio: BPEL (Business Process Execution<br />
Language). Un potentísimo motor de reglas<br />
basado en XML y en un rico conjunto de herramientas<br />
accesible a los analistas de negocio y<br />
demás personal de proyecto, que permite poder<br />
crear reglas de negocio y vocabulario de negocio<br />
–acciones- que representan la activación de<br />
componentes –disponibles en multitud de tecnologías-<br />
de negocio. De tal manera, que sin<br />
necesidad de desarrollar se pueden alterar las<br />
reglas de negocio, o crear nuevas reglas.<br />
• Mejores herramientas de análisis de procesos.<br />
Herramientas orientadas a IW (Information<br />
Workers, “Trabajadores de la información”).<br />
Herramientas de actividad de negocio (BAS,<br />
Business Activity Services); configuración, aprovi-<br />
[[<br />
Nota<br />
Todo forma parte de un<br />
proyecto empresarial, y<br />
<strong>por</strong> lo tanto sus componentes,<br />
son las plantillas<br />
de Visual Studio para cada<br />
componente estructural<br />
de la aplicación.<br />
Desde este momento ya podremos<br />
crear los elementos de una aplicación<br />
BT, que serán definiciones de esquemas<br />
de documentos de E/S, los pipelines que<br />
los interpretan, los mapeos entre documentos,<br />
las reglas XLANG/BPEL que<br />
los procesan si es necesario, etc. Y las<br />
propias herramientas de Visual Studio,<br />
nos irán echando un cable a través de<br />
ventanas de propiedades, SmartTags y la<br />
más que im<strong>por</strong>tante ayuda.<br />
Pero la herramienta que más ahorrará<br />
tiempo, será el <strong>BizTalk</strong> Explorer.<br />
Un nuevo vínculo en el explorador de<br />
servidores de Visual Studio con el que<br />
podremos recorrer los diversos recursos<br />
que nos pro<strong>por</strong>ciona el contenedor<br />
de aplicaciones de <strong>BizTalk</strong>. Dos de sus<br />
misiones más im<strong>por</strong>tantes serán las de<br />
registrar/desregistrar los ensamblados<br />
frutos de una compilación de proyecto,<br />
así como la de vincular los puertos de<br />
E/S a las diferentes reglas de negocio.<br />
Figura 7. <strong>BizTalk</strong> Explorer,<br />
el administrador de recursos<br />
Por casi terminar con esta descripción<br />
de las nuevas herramientas de<br />
<strong>BizTalk</strong>, no puedo evitar hablar del nuevo<br />
Compositor de Reglas de negocio. Una<br />
herramienta que permitirá a los analistas<br />
de negocio orquestar sus propias<br />
reglas empleando un casi lenguaje natural.<br />
Es muy parecido a lo que Microsoft<br />
intentó con SQL y su English Query<br />
Manager, pero con la filosofía de negocio.<br />
Esto permitirá que hablemos de<br />
negocios con todas las de la ley. Basada<br />
en un conjunto de vocabularios que<br />
representan los procesos del negocio, el<br />
analista podrá definir sus propias reglas<br />
de activación y podrá generar nuevas<br />
versiones de éstas en función de los cambios<br />
que plantee el propio negocio, evitando<br />
todo tipo de conflicto con reglas<br />
anteriores.<br />
Y aunque se me quedan en el tintero,<br />
describir muchas más herramientas,<br />
voy a acabar con esta descripción, hablando<br />
de dos de las múltiples herramientas<br />
de análisis. Las que pueden interesar a un<br />
Figura 8. El Compositor de reglas de negocio<br />
administrador del sistema o un desarrollador.<br />
Al margen de que luego podamos<br />
de datos tan chulas como el recoger un ID de una tabla<br />
y recoger el valor de la misma para asociarlo al destino.<br />
Por último, como he comentado, los formatos de<br />
los mensajes no tienen <strong>por</strong> qué ser XML. Pueden ser<br />
diversos formatos como CSV, propietarios, etc. <strong>BizTalk</strong><br />
gracias a la especificación del documento, será capaz<br />
a través de las PipeLines de adaptar el formato del<br />
mensaje a una estructura interna XML que coincide<br />
con la especificación, haciendo que para el desarrollador<br />
de las reglas, todo sea XML. Lo cual hace que<br />
el desarrollo sea independiente de los documentos<br />
enviados/recibidos. Impresionante. En este punto, es<br />
donde decía que los conectores <strong>BizTalk</strong> juegan un<br />
im<strong>por</strong>tante papel: Rosetta, EDITRANS, SAP…etc.<br />
Figura 12. Fase de especificación<br />
Un ejemplo de cómo queda nuestra transformación<br />
de pedido a factura lo podemos ver la figura 13.<br />
Figura 13. Fase de especificación<br />
Si los documentos de entrada son XML, los<br />
Pipelines disponibles en el SDK de <strong>BizTalk</strong> serán<br />
suficientes. Si <strong>por</strong> el contrario, alguno de los<br />
documentos no fuera XML puro y duro, podríamos<br />
crear nuestro propio Pipeline de adaptación.<br />
Con esto se terminaría esta fase.<br />
En la Fase de Reglas de negocio es donde ya<br />
entrarían en juego los motores de reglas de <strong>BizTalk</strong>.<br />
Mi consejo es agregar a la solución un nuevo proyecto<br />
de tipo <strong>BizTalk</strong>, y creando en el mismo elementos<br />
de tipo Orquestación. Y -muy interesante el tema-, puesto<br />
que hablamos de varios proyectos, cada uno se com<strong>por</strong>ta<br />
como un ensamblado de clases .NET. Esto implica<br />
que debemos establecer las referencias entre los<br />
ensamblados para poder reutilizar las clases que contienen.<br />
Nada que no sepamos hacer ya…<br />
Y es donde ya nos podemos encontrar con dos<br />
grandes opciones: una que sería <strong>por</strong> emplear el<br />
Orchestration Designer con el que editar “pseudocódigo”<br />
que genera el XLANG, o bien emplear BPEL<br />
con el Compositor de Reglas de negocio. Ni que decir<br />
tiene, que este compositor genera reglas BPEL que<br />
tendrán que ser orquestadas dentro de un documento<br />
XLANG, que es que a fin de cuentas, indica la integración<br />
de la E/S con las reglas de negocio que se<br />
deben disparar. Lo cual ya amplía las posibilidades al<br />
rango de “infinito”. En estos diagramas se nos da la<br />
opción de poder combinar un conjunto de símbolos<br />
de negocio que activarán un conjunto de mecanismos<br />
de la arquitectura de <strong>BizTalk</strong>. Nuestra misión, a<strong>por</strong>tar<br />
el modelo de componentes que requieran dichos<br />
mecanismos: especificaciones, reglas de negocio<br />
BPEL, canales de entrada/salida, etc. Un procedimiento<br />
a seguir muy típico en un proceso EAI sencillo,<br />
es <strong>por</strong> ejemplo el diseñar los pasos que sufre la<br />
adaptación de un documento desde que entra hasta<br />
que sale, independizando los canales de E/S, que serán<br />
especificados más tarde –esta es la alternativa <strong>por</strong> lo<br />
que antes comentaba que hay otro paso más sencillo,<br />
pero menos mantenible-. Un ejemplo, en nuestro artículo,<br />
es la regla XLANG que especifica lo que debe<br />
hacer <strong>BizTalk</strong> con el Pedido para convertirlo en Factura,<br />
y es: recoger el Pedido, convertirlo en Factura y enviar<br />
la Factura. Vea la figura 14.<br />
Figura 14.<br />
Orquestar los elementos de un símbolo XLANG<br />
Figura 18. Instalación de los ensamblados<br />
de negocio<br />
En este punto comentar que <strong>BizTalk</strong> nos da la<br />
posibilidad de poder utilizar diversos conectores de<br />
entrada/salida. Dichos conectores nos permitirán abstraer<br />
en nuestras reglas de negocio de donde proceden<br />
los documentos y las tecnologías que los generan.<br />
Integrados de serie con el entorno, vienen los conectores<br />
de:<br />
• “espionaje de directorios” –<strong>BizTalk</strong> escanea el<br />
estado de un directorio, de tal manera que cuando<br />
un fichero es ubicado en él, activa la regla de<br />
negocio-<br />
• EDIFACT. So<strong>por</strong>te nativo del protocolo de<br />
Intercambio Electrónico de Datos. Muy útil para,<br />
<strong>por</strong> ejemplo, conectar empleando el estándar<br />
bancario.<br />
Figura 19. Creación de los puertos de E/S<br />
• Colas de mensajes MSMQ.<br />
• Conector HTTP. Empleando un conector en<br />
el puerto 80 de forma predeterminada, una petición<br />
POST de un documento XML dispara la<br />
regla asociada.<br />
• Conector de Web Services y SOAP. Ni que decir<br />
qué misión tiene.<br />
• FTP, SMTP y SQL en el caso de ser dispositivos<br />
de salida. Lo cual tiene muchas aplicaciones.<br />
Pero esto no queda sólo aquí, pues dada la envergadura<br />
de este producto, muchos fabricantes están<br />
desarrollando nuevos conectores para hacer sus sistemas<br />
compatibles con este integrador de recursos. A<br />
estos conectores los conoceremos como Aceleradores,<br />
y en la página web de Microsoft y de los fabricantes,<br />
encontrareis más información. Conectores <strong>por</strong> ejemplo<br />
para SAP, Rosetta.NET, SWIFT, etc.<br />
Es en este punto, donde comentar que los mismos<br />
conectores de entrada/salida ya ofrecen mecanismos<br />
de selección de especificaciones de documentos<br />
de entrada/salida y las pipelines que se van<br />
a emplear para su interpretación, así como las reglas<br />
de transformación. Típico en un EAI. Estas casillas<br />
no habrá que rellenarlas pues están especificadas en<br />
las reglas XLANG que ya habremos diseñado.<br />
Además, los puertos permiten establecer también las<br />
reglas de filtrado y selección de mensajes así como el<br />
enrutado de los mismos <strong>por</strong> motivos de análisis de<br />
negocio, depuración de los procesos, mecanismos de<br />
tolerancia a fallos y redundancia. En la figura 19 se<br />
podrá ver que esos apartados aparecen como detalle<br />
de la configuración.<br />
Figura 23. InfoPath y Biztalk en accion,<br />
la caña de España<br />
Para terminar… la seguridad<br />
Para lo último, que no menos im<strong>por</strong>tante, qué<br />
menos que hablar de la seguridad. Un tema que ha hecho<br />
replantearse a Microsoft todos sus diseños de sistemas<br />
operativos. <strong>BizTalk</strong> está integrado con los mecanismos<br />
de seguridad de Windows 2003 en cuanto a temas de<br />
autenticación. La autorización es llevada a cabo <strong>por</strong> dos<br />
abstracciones del sistema: el HOST y el HOST AIS-<br />
LADO. El primero servirá para crear aplicaciones ejecutadas<br />
dentro del marco interno de la empresa. El<br />
segundo, el aislado, es el que se empleará cuando las<br />
conexiones de lectura o escritura, requieren de puertos<br />
que están disponibles en el exterior del sistema (conexión<br />
con partners, sucursales…etc.). El HOST aislado<br />
a su vez, está integrado con los mecanismos de IPSEC<br />
y HTTPS, permitiendo su encriptación a través de certificación<br />
digital y VPN. Todo esto, transparente a la<br />
aplicación. Para la gestión de estas configuraciones, gozaremos<br />
de la herramienta Consola de Administración de<br />
<strong>BizTalk</strong>, que podéis ver en la figura 24.<br />
Incluso el propio servicio de <strong>BizTalk</strong> requiere de<br />
cuentas especiales que hacen que ni siquiera los administradores<br />
de <strong>BizTalk</strong> sean capaces de acceder a más<br />
de lo que el administrador del dominio o de la máquina<br />
les deje ver. Os aconsejo que instaléis el producto<br />
para ver <strong>por</strong> qué digo todo esto.<br />
Para finalizar, comentar que dentro de lo que<br />
incluiríamos en el marco de seguridad, podríamos<br />
meter todo el conjunto de herramientas de análisis y<br />
control de los servicios de <strong>BizTalk</strong>, que no dejarán a<br />
nadie descontento en cuanto a los valores que ofrecen<br />
sus querys al sistema: errores de ejecución, warnings<br />
de ejecución, etc. Sin contar con su integración con el<br />
servicio de eventos y rendimiento de Windows 2003.<br />
Conclusión<br />
Microsoft Biztalk <strong>Server</strong> <strong>2004</strong>: Developer’s Guide<br />
Scott Woodgate, Stephen Mohr, Brian Loesgen<br />
Pues con esto hemos podido ver sólo un poco de<br />
todo lo que nos ofrece Microsoft con esta más que<br />
novedosa versión de un producto que seguro hace las<br />
delicias de los departamentos de informática, <strong>por</strong> su<br />
im<strong>por</strong>tancia en la integración de los sistemas de la<br />
empresa, así como la unificación en un entorno de las<br />
reglas de negocio, basado en un sistema tan modular<br />
como la tecnología .NET lo permite –que no es pocoy<br />
la robustez de un sistema operativo productivo incluso<br />
en las situaciones más difíciles. Un 10 para Microsoft<br />
<strong>BizTalk</strong> <strong>Server</strong> <strong>2004</strong>.<br />
Si queréis más información acerca del tema, y a<br />
riesgo de que el editor me pegue “un toque”… (qué<br />
mejor que integrar bases de conocimiento), en<br />
Algoritmo digital (www.algoritmodigital.com), he tenido<br />
la suerte de publicar artículos de cómo hacer… con<br />
<strong>BizTalk</strong> <strong>2004</strong>, así como en mi web personal www.heviatec.net.<br />
Os animo a echarle un vistazo como complemento<br />
a este artículo. Y cómo no, a la enorme base de<br />
documentación disponible de <strong>BizTalk</strong> en la página<br />
Web de Microsoft y su MSDN. No tienen desperdicio.<br />
Pero aviso, hay tanta documentación que podemos<br />
acabar saturaditos. Hasta la próxima.<br />
Editorial: SAMS<br />
Páginas: 768<br />
ISBN: 0672325985<br />
Publicado: Previsto para agosto, <strong>2004</strong><br />
Figura 24. Consola de administración de <strong>BizTalk</strong><br />
bibliografía<br />
dotNetManía<br />
Utilizando el formato automático<br />
Si nuestro control DataGrid<br />
no va a requerir unas características<br />
muy específicas<br />
de colores, y si además<br />
vamos un poco justos de<br />
tiempo, algo que habitualmente<br />
suele ocurrir, siempre<br />
podemos optar <strong>por</strong><br />
hacer clic en el enlace<br />
Formato automático,situado<br />
en la parte inferior de<br />
la ventana de propiedades<br />
del control. Esto provocará la apertura de un cuadro de diálogo, que nos<br />
ofrecerá una lista de configuraciones de formato predefinidas para el<br />
DataGrid, con diversas combinaciones diferentes de la estándar, de manera<br />
que rápidamente podremos modificar el aspecto del control.<br />
nuevo asistente nos permitirá crear un<br />
DataSet al que llamaremos dsNorthwind,<br />
que contendrá la tabla Suppliers.<br />
Figura 3<br />
Como resultado, el componente<br />
SQLDataAdapter generará en el proyecto<br />
un esquema de DataSet, y a partir<br />
del mismo, se creará un DataSet con<br />
el nombre DsNorthwind1, que aparecerá<br />
en el panel de componentes del diseñador<br />
del formulario.<br />
Figura 4<br />
Configuración de un DataGrid<br />
desde el diseñador<br />
del formulario<br />
Seguidamente arrastraremos sobre<br />
el formulario un control DataGrid, al<br />
que daremos el nombre grdDatos. Para<br />
indicar a este control de dónde debe<br />
obtener los datos, usaremos las siguientes<br />
propiedades.<br />
• DataSource. En esta propiedad estableceremos<br />
el DataSet que contiene<br />
toda nuestra estructura de datos:<br />
DsNorthwind1.<br />
• DataMember. Aquí asignaremos la<br />
tabla del DataSet establecida en<br />
DataSource que queremos visualizar<br />
en el DataGrid: Suppliers.<br />
Llegados a este punto, debemos<br />
tener en cuenta un aspecto im<strong>por</strong>tante<br />
que muchas veces pasa desapercibido. Si<br />
ejecutamos en este momento el proyecto,<br />
el control DataGrid estará vacío. Esto<br />
es debido a que el DataSet con el que<br />
está enlazado se encuentra también<br />
vacío, puesto que el llenado del mismo<br />
no se produce automáticamente, siendo<br />
el programador quien debe realizarlo,<br />
ejecutando el método Fill del objeto<br />
DataAdapter. Podemos hacer esta operación<br />
en múltiples lugares, <strong>por</strong> ejemplo,<br />
en el evento Load del formulario,<br />
como vemos en el siguiente fuente.<br />
leceremos en el panel derecho. La siguiente tabla<br />
describe algunas de las propiedades de este tipo de<br />
objeto.<br />
Propiedad Descripción<br />
MappingName Nombre de la tabla del<br />
DataSet enlazado al<br />
DataGrid que se muestra<br />
cuando el estilo de tabla es<br />
seleccionado<br />
GridColumnStyles Colección de objetos<br />
DataGridColumnStyle, que<br />
contiene los estilos de<br />
formato para cada una de<br />
las columnas mostradas <strong>por</strong><br />
el estilo de la tabla en el<br />
DataGrid<br />
HeaderFont Tipo de letra para los<br />
títulos de las columnas<br />
AlternatingBackColor Color para las filas alternas<br />
HeaderBackColor Color de fondo de los<br />
títulos de las columnas,<br />
los indicadores de fila<br />
La siguiente figura muestra el cuadro de diálogo<br />
de creación de estilos para tablas.<br />
Figura 8<br />
Tabla 2<br />
Como habrá observado el lector, muchas de las<br />
propiedades de un objeto DataGridTableStyle son<br />
comunes a las del DataGrid, ya que cuando el estilo<br />
de la tabla es aplicado sobre el control, los valores de<br />
estilo sustituyen a sus homólogos del grid.<br />
Creación de estilos para las columnas<br />
Una vez que hemos finalizado la creación del formato<br />
para la tabla, y permaneciendo en el cuadro de<br />
diálogo del estilo de tabla, haremos clic en el botón<br />
de puntos suspensivos de la propiedad GridColumn-<br />
Styles; esto nos llevará a un nuevo diálogo, que con el<br />
nombre Editor de la colección DataGridColumnStyle, será<br />
el que usaremos para crear cada uno de los estilos de<br />
columna de la tabla.<br />
Pulsando el botón Agregar, se añadirá un nuevo<br />
estilo de columna vacío, al que daremos formato asignando<br />
valores en sus propiedades. En la siguiente tabla<br />
destacamos algunas de estas propiedades.<br />
Propiedad Descripción<br />
MappingName Nombre de la columna de la tabla<br />
del DataSet, seleccionada al crear<br />
el estilo de la tabla.<br />
Format Cadena con la expresión de<br />
formato para aplicar a los datos de<br />
la columna<br />
Alignment Permite alinear el contenido de la<br />
columna a la izquierda, centro o<br />
derecha<br />
HeaderText Cadena con el título a mostrar en<br />
la columna<br />
NullText Cadena con el valor a mostrar<br />
cuando el campo de la tabla tenga<br />
valor nulo<br />
Tabla 3<br />
La siguiente figura muestra el cuadro de diálogo<br />
de creación de estilos para columnas.<br />
Figura 9<br />
cada uno de los estilos puede estar basado<br />
en un diseño de colores diferente:<br />
tonos azules y verdes.<br />
Una vez que terminemos el diseño<br />
de los estilos, añadiremos dos botones<br />
en el formulario para cambiar de uno a<br />
otro estilo, y un tercer botón para que<br />
el grid muestre los datos sin estilos, con<br />
la configuración <strong>por</strong> defecto del control.<br />
La clave de todo, como puede ver<br />
el lector en el código fuente 1, se<br />
encuentra en manipular la propiedad<br />
MappingName de la colección de estilos<br />
definidos en el DataGrid.<br />
Private Sub btnVerdes_Click(ByVal sender As System.Object,<br />
ByVal e As System.EventArgs)<br />
Handles btnVerdes.Click<br />
‘ quitar uno de los estilos y asignar el otro<br />
Me.grdDatos.TableStyles(1).MappingName = “”<br />
Me.grdDatos.TableStyles(0).MappingName = “Suppliers”<br />
End Sub<br />
Private Sub btnAzules_Click(ByVal sender As System.Object,<br />
ByVal e As System.EventArgs)<br />
Handles btnAzules.Click<br />
‘ quitar uno de los estilos y asignar el otro<br />
Me.grdDatos.TableStyles(0).MappingName = “”<br />
Me.grdDatos.TableStyles(1).MappingName = “Suppliers”<br />
End Sub<br />
La siguiente figura muestra el mismo<br />
DataGrid visualizando los datos con<br />
uno y otro estilo.<br />
La clase DataGridBoolColumn<br />
Cuando estamos añadiendo columnas<br />
a un estilo de tabla, habremos notado<br />
la presencia, junto al botón Agregar,<br />
de un botón con una flecha hacia abajo,<br />
que al ser pulsado nos ofrece elegir<br />
entre crear una columna del ya conocido<br />
DataGridTextBoxColumn o Data-<br />
GridBoolColumn. Esta última clase, que<br />
al igual que la primera hereda de Data-<br />
GridColumnStyle, nos permite mostrar<br />
una columna consistente en una casilla<br />
de verificación para indicar tres esta-<br />
Private Sub btnPredeterminados_Click(ByVal sender As System.Object,<br />
ByVal e As System.EventArgs)<br />
Handles btnPredeterminados.Click<br />
‘ no utilizar estilos en el grid<br />
Me.grdDatos.TableStyles(0).MappingName = “”<br />
Me.grdDatos.TableStyles(1).MappingName = “”<br />
End Sub<br />
Fuente 1<br />
dos: seleccionado, no seleccionado e<br />
indeterminado.<br />
Los campos de tipo bit de una base<br />
de datos, son un buen candidato para<br />
Figura 12<br />
dotNetManía<br />
Antonio Gutierrez<br />
12345678<br />
20/06/2003<br />
<br />
<br />
111111111<br />
Teclado ordenador<br />
12<br />
<br />
<br />
2222222222<br />
Monitor 17 pulgadas<br />
560<br />
<br />
<br />
<br />
<br />
Antonio Gutierrez<br />
12345678<br />
20/06/2003<br />
<br />
<br />
111111111<br />
Teclado ordenador<br />
12<br />
<br />
<br />
2222222222<br />
Monitor 17 pulgadas<br />
560<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Fuente 1. XML de ejemplo<br />
Fuente 2. Esquema XSD correspondiente al XML de ejemplo.<br />
factura miFactura = new factura();<br />
miFactura.nombre = “Antonio Gutierrez”;<br />
miFactura.dni = “1111111111”;<br />
miFactura.fecha = DateTime.Now;<br />
miFactura.producto = new productos[2];<br />
miProducto = new producto();<br />
miProducto.nombreproducto = “teclado”;<br />
miProducto.numerodeserie = “1111”;<br />
miProducto.precio = 12;<br />
miFactura.producto[0]=miProducto;<br />
miProducto.nombreproducto = “raton”;<br />
miProducto.numerodeserie = “2222”;<br />
miProducto.precio = 14;<br />
miFactura.producto[1]=miProducto;<br />
TextWriter writer = new StreamWriter(fichero);<br />
serializer.Serialize(writer, miFactura);<br />
writer.Close();<br />
O si queremos acceder al elemento<br />
nombreproducto de nuestro segundo<br />
nodo de productos tendremos que<br />
poner en nuestro código:<br />
miFactura.producto[1].nombreproducto<br />
Como hemos podido comprobar<br />
acceder ahora un XML resulta muy sencillo,<br />
y la cantidad de código a escribir<br />
Fuente 5<br />
para leer cualquier XML se reduce notablemente.<br />
Pero la serialización no sólo nos<br />
ofrece ventajas para leer XML, también<br />
nos ofrece muchas ventajas a la hora de<br />
escribir un XML.<br />
Como ya explicamos con anterioridad,<br />
para escribir un XML en un fichero<br />
realizaremos una serialización de una<br />
instancia de nuestro objeto.<br />
Veamos un ejemplo en C# en el<br />
fuente 5.<br />
En el código del fuente 4 podemos<br />
comprobar cómo vamos escribiendo las<br />
propiedades de nuestro objeto, y posteriormente<br />
rellenamos el array de productos.<br />
Pues bien, estas propiedades que<br />
estamos escribiendo serán posteriormente<br />
los elementos de nuestro XML y<br />
cada posición del array de productos se<br />
convertirá en un nodo de nuestro XML.<br />
Para serializar nuestro objeto y<br />
pasarlo a un fichero XML tan sólo debemos<br />
utilizar de nuevo la clase serializer<br />
de .NET. Así hemos conseguido de forma<br />
sencilla y con una clara orientación<br />
a objetos escribir un fichero XML.<br />
Conclusión<br />
Visual FoxPro 9.0 beta<br />
(nombre en clave “Europa”) disponible<br />
La versión definitiva se presentará el 29 de septiembre en Las Vegas en el Visual FoxPro DevCon <strong>2004</strong><br />
Microsoft ha puesto a disposición de los usuarios la beta pública de<br />
de la próxima versión de Visual FoxPro, la 9.0, llamada en clave<br />
“Europa”.<br />
En una carta de Ken Levy, VS Data Product Manager, a los usuarios<br />
de FoxPro en el pasado mes de junio, Microsoft aclaraba su posición<br />
con respecto a FoxPro:<br />
“Algunas personas nos han preguntado si verán incrementado<br />
el marketing alrededor de Visual FoxPro 9.0. Nosotros hemos declarado<br />
públicamente en el pasado que el presupuesto gastado en Visual<br />
FoxPro es relativo al negocio de Visual FoxPro, y que el esfuerzo de<br />
marketing alrededor de Visual FoxPro es y permanecerá similar a lo<br />
que ha sido en los últimos años. Microsoft no tiene planes para integrar<br />
Visual Foxpro dentro de Visual Studio .NET, pero en cambio<br />
estamos trabajando en añadir muchas de las grandes funcionalidades<br />
encontradas en Visual FoxPro dentro de las siguientes versiones de<br />
Visual Studio, tal y como hemos añadido grandes funcionalidades de<br />
Visual Studio dentro de Visual FoxPro. La estrategia de Microsoft es<br />
que el buque insignia de la herramienta de desarrollo sea Visual Studio;<br />
se dedican significamente más recursos a Visual Studio.<br />
noticias.noticias.noticias.noticias<br />
En resumen, hemos podido comprobar<br />
como la serialización, además de<br />
podernos ser útil para guardar el estado<br />
de sesión en una página Web o para<br />
copiar objetos al <strong>por</strong>tapapeles de<br />
Windows, es también muy útil para tratar<br />
con XML.<br />
La serialización de XML nos ahorra<br />
escribir código y nos simplifica la<br />
lectura y escritura de los mismos.<br />
La dirección de la estrategia de Microsoft con nuestros productos<br />
basados en la plataforma .NET es que sea Visual Studio la<br />
herramienta de desarrollo para las aplicaciones basadas en .NET. Si<br />
quieres hacer programación .NET, deberías usar Visual Studio.<br />
Microsoft está mejorando el so<strong>por</strong>te XML en Visual FoxPro 9.0 lo<br />
cual también mejorará la interoperatibilidad con .NET. Estamos<br />
añadiendo también nuevos tipos de datos a Visual FoxPro 9.0 los<br />
cuales mejorarán su siempre excelente interoperatibilidad de Visual<br />
Studio 2005 y la conectividad con SQL <strong>Server</strong> 2005.”<br />
Al menos, Microsoft, se ha comprometido ha seguir so<strong>por</strong>tando<br />
la versión 9 de Visual FoxPro hasta 2014.<br />
“Nosotros planeamos lanzar oficialmente Visual FoxPro 9.0 en<br />
Las Vegas, en el Kick Off del Visual FoxPro DevCon <strong>2004</strong> el 29 de<br />
septiembre de este año” añade Ken Levy en dicha carta.<br />
Si quiere ver el texto completo (en inglés) de dicha carta puede<br />
visitar: http://msdn.microsoft.com/vfoxpro/letters/. Desde este<br />
enlace podrá ir a la página de descarga esta beta.<br />
El sitio oficial del Visual FoxPro DevCon <strong>2004</strong> es:<br />
http://advisorevents.com/CMX0409p.nsf<br />
dotNetManía<br />
muchos casos delegar en el sistema operativo el control<br />
de los permisos de acceso a los recursos.<br />
Los métodos de autenticación disponibles se<br />
muestran en la captura de la figura 2. A este diálogo<br />
se accede pulsando sobre el botón Modificar de<br />
la figura 1.<br />
Figura 2.- Existen diversos métodos de autenticación y<br />
deberemos escoger el más adecuado en función del<br />
entorno en el que va a trabajar nuestra aplicación, tanto<br />
en los clientes como en el servidor.<br />
Acceso anónimo<br />
Si tenemos marcada la casilla de acceso anónimo<br />
en la ventana de la figura 2, cuando un usuario<br />
acceda a un recurso permitido <strong>por</strong> IIS, no necesitará<br />
introducir credenciales para identificarse.<br />
Para impedir el acceso anónimo a una aplicación<br />
Web (o a un directorio o carpeta virtual de ésta) tan<br />
sólo desmarque la casilla correspondiente. A partir<br />
de ahora todos los usuarios deberán identificarse para<br />
poder acceder al recurso y entran en juego los diversos<br />
métodos de autenticación.<br />
Métodos de autenticación disponibles<br />
en IIS<br />
En la versión 4 de IIS sólo existían dos métodos<br />
de autenticación posible (básica y desafío-respuesta).<br />
A partir de IIS 5 existen tres métodos<br />
teniendo uno de ellos además dos subtipos, <strong>por</strong> lo<br />
que en total disponemos de cuatro posibilidades.<br />
En la figura 2 puede ver las casillas de opción para<br />
estos métodos. En Windows <strong>Server</strong> 2003, IIS 6<br />
incluye también el método de autenticación de<br />
.NET Pass<strong>por</strong>t que no vamos a estudiar <strong>por</strong> tra-<br />
tarse de un método totalmente aparte que además<br />
necesita el uso de un SDK.<br />
Autenticación básica<br />
El más simple de los métodos disponibles es,<br />
obviamente, el que se denomina Autenticación Básica.<br />
En este caso el servidor envía una petición de identificación<br />
al navegador Web del usuario mediante una<br />
cabecera HTTP. Éste muestra al usuario un cuadro<br />
de diálogo como el de la figura 3 para preguntarle su<br />
nombre y contraseña de acceso. Una vez introducida<br />
la información, el navegador la codifica con el<br />
algoritmo Base64 y la envía a través de la red para<br />
que IIS la valide y pueda efectuar la suplantación del<br />
usuario (que estudiaremos en breve). También es posible<br />
escribir aplicaciones que soliciten autenticación<br />
básica y usen las credenciales enviadas para validarlas<br />
contra una base de datos u otro sistema propio.<br />
Figura 3.- Diálogo de autenticación básica<br />
en Windows 98. Funciona con cualquier navegador<br />
o sistema operativo.<br />
cifra el desafío usando este hash como<br />
clave para el proceso de encriptación,<br />
con lo que se obtiene otro hash único<br />
para ese valor de desafío y ese usuario.<br />
Este nuevo hash generado se envía<br />
al servidor junto con el nombre de<br />
usuario <strong>por</strong> la misma conexión <strong>por</strong><br />
donde se recibió (ésta se mantiene en<br />
estado keep alive), lo cual asegura la<br />
autenticidad del servidor.<br />
6. El servidor envía el hash recibido, el<br />
nombre de usuario y el valor de desafío<br />
al controlador primario de dominio<br />
(de haberlo). El PDC cifra el<br />
desafío con el hash del usuario que se<br />
guarda en la base de datos SAM del<br />
sistema o en el Directorio Activo.<br />
7. Si el hash generado en el PDC coincide<br />
con el que envió el cliente quiere<br />
decir que la autenticación ha tenido<br />
éxito y se envía la página solicitada<br />
en caso de que el usuario tenga<br />
permisos suficientes.<br />
Algún lector en este punto podría<br />
preguntar: si lo único que se conoce del<br />
usuario es su hash que <strong>por</strong> definición no<br />
se puede descifrar, ¿<strong>por</strong> qué no enviarlo<br />
directamente en lugar de obtener uno<br />
nuevo a partir de éste y del desafío? Si<br />
se hiciese de este modo cualquiera<br />
podría interceptar el hash del usuario y<br />
luego utilizarlo para hacerse pasar <strong>por</strong><br />
él, tal y como pasaba en el método anterior.<br />
Con el método descrito sólo puede<br />
autenticarse aquel que tenga el hash<br />
y el desafío enviado <strong>por</strong> el servidor, que<br />
cambia en cada ocasión, con lo que las<br />
cosas se complican. Para entenderlo<br />
mejor se podría asimilar en cierto modo<br />
a un algoritmo de clave pública en el<br />
que la contraseña del usuario sería una<br />
clave privada y el desafío enviado <strong>por</strong> el<br />
servidor una clave pública que va cambiando<br />
aleatoriamente.<br />
Internet Explorer efectúa todo el<br />
proceso de modo transparente usando<br />
el nombre y la contraseña que el usuario<br />
utilizó para entrar en la máquina<br />
cliente, y sólo si falla en este primer<br />
intento muestra un cuadro de diálogo<br />
para pedir otros datos diferentes. Este<br />
hecho puede hacer que parezca que a<br />
veces un acceso a IIS ha sido anónimo<br />
cuando no es así en realidad.<br />
La autenticación integrada de<br />
Windows posee la limitación adicional<br />
de no funcionar a través de conexiones<br />
proxy, <strong>por</strong> lo que habrá que tenerlo en<br />
cuenta en caso de que nuestros usuarios<br />
las utilicen.<br />
En definitiva, siempre que podamos<br />
deberemos usar la autenticación integrada.<br />
Sin embargo esto sólo será posible<br />
si se accede directamente al servidor<br />
(sin usar un Proxy o un cortafuegos)<br />
y en sistemas con Windows 2000<br />
o superior. Debido a estas restricciones<br />
en la práctica este método se usa sólo en<br />
Intranets, dejando para Internet normalmente<br />
la autenticación básica.<br />
SSL y Certificados digitales<br />
Una buena opción para habilitar la<br />
autenticación de usuarios segura e independiente<br />
del navegador consiste en<br />
combinar el método de autenticación<br />
básica descrito anteriormente con un<br />
certificado digital de servidor. De este<br />
modo el usuario se asegura de que se<br />
está comunicando con el servidor adecuado,<br />
y <strong>por</strong> otro lado se consigue que<br />
la información en claro que circula normalmente<br />
codificada como base64 se<br />
transmita ahora cifrada gracias al uso<br />
del algoritmo de clave pública que conlleva<br />
el uso de este tipo de certificados.<br />
Del mismo modo, en entornos que<br />
requieran una alta seguridad se puede<br />
exigir a los usuarios el empleo de certificados<br />
digitales en el lado del cliente.<br />
Puede obtener información detallada<br />
sobre este proceso consultando el<br />
artículo “Configuración de sitio Web<br />
seguro con Certificado de clientes” de<br />
Pedro Gómez en el número 4 de mayo<br />
de <strong>2004</strong> de dotNetManía.<br />
Suplantación de usuarios<br />
IIS no es más que otra aplicación<br />
que se ejecuta sobre el sistema operativo,<br />
<strong>por</strong> lo que es éste en última instancia<br />
el que se ocupa del nivel más bajo de<br />
la cadena de la seguridad. En el caso que<br />
nos ocupa dicho nivel lo constituye el<br />
sistema de archivos.<br />
En Windows, cada proceso se ejecuta<br />
dentro de su propio contexto de<br />
seguridad. Cuando un proceso accede<br />
al sistema de archivos NTFS los permisos<br />
se le otorgan en función del contexto<br />
en el que se ejecute. Normalmente<br />
si un proceso lanza otro subproceso éste<br />
se ejecutará bajo el mismo contexto de<br />
seguridad. Existen casos sin embargo en<br />
los que, <strong>por</strong> razones de seguridad, un<br />
proceso puede producir otros procesos<br />
que trabajen bajo condiciones de seguridad<br />
diferentes. Esto es lo que ocurre<br />
con IIS. Éste trabaja bajo el contexto de<br />
seguridad del sistema, esto es, como si<br />
se tratase del usuario System. Sin embargo<br />
cuando IIS ejecuta una aplicación<br />
ASP/ASP.NET, inicia un nuevo proceso<br />
bajo un contexto de seguridad diferente,<br />
efectuando lo que se denomina<br />
una suplantación de usuario. De este<br />
modo si el código de servidor de una<br />
página (o alguno de los componentes<br />
que ésta emplee) intenta acceder al disco<br />
duro u otro recurso del sistema, lo<br />
hará con los permisos del usuario al que<br />
está suplantando el proceso bajo el que<br />
se ejecuta, es decir, bajo el contexto de<br />
seguridad de dicho usuario. Este párrafo,<br />
aunque algo enrevesado, es fundamental<br />
para entender las implicaciones<br />
de seguridad en el sistema de archivos.<br />
Suplantación de usuarios en ASP<br />
y cuyos comentarios resumimos más abajo,<br />
las de Don Box (sobre arquitectura<br />
SOA y consejos asociados a los problemas<br />
de hosting de aplicaciones) y David<br />
Chapell (Biztalk <strong>2004</strong> y arquitectura)<br />
atrajeron un buen grupo de asistentes, tan<br />
interesados en sus opiniones como en el<br />
carisma personal que cada uno de estos<br />
ponentes derrocha en sus actuaciones. Al<br />
igual que, Rafal Luckawiecki (el lector<br />
encontrará una entrevista con él en éste<br />
mismo número de dotNetManía), que<br />
estos dos años ha destacado <strong>por</strong> méritos<br />
propios. Rafal anticipó las últimas novedades<br />
en uno de los marcos de trabajo<br />
propugnados <strong>por</strong> Microsoft: MSF, y también<br />
habló de IPv6 y Criptografía. El<br />
español Fernando Guerrero, uno de los<br />
grandes especialistas mundiales en SQL-<br />
<strong>Server</strong>, habló de características ocultas de<br />
T-SQL.<br />
Otra de las propuestas interesantes, ya<br />
iniciada el año pasado, son las reuniones<br />
de expertos (forums). Esta vez, acudimos<br />
a una sobre Building .NET Development<br />
Myths en la que, moderados <strong>por</strong> el propio<br />
David Chapell, Rafal Luckawiecki,<br />
Michele Leroux Bustamante, Juwal<br />
Lowy y Clemens Vasters, disertaron<br />
entre sí, y más tarde con el público sobre<br />
diversos aspectos de la construcción de<br />
aplicaciones.<br />
Pero esta no era la única forma de contactar<br />
con los “gurús”. También pudimos<br />
asistir a encuentros específicos en salas<br />
cerradas con algunos de los constructores<br />
de productos, como <strong>por</strong> ejemplo, dos<br />
representantes del equipo de desarrollo<br />
de Visual Basic .NET. En estos encuentros<br />
(libres) diferentes desarrolladores<br />
europeos les podíamos preguntar sobre<br />
el estado del arte de cada herramienta y<br />
muchas de las novedades que los usuarios<br />
solicitan (en el caso de Visual Basic<br />
eran numerosas las preguntas sobre el<br />
funcionamiento de la característica<br />
“corregir y seguir ejecutando”, que tuvieron<br />
que parar momentáneamente el<br />
desarrollo de la reunión para hacer una<br />
demo específica, que —todo hay que<br />
decirlo— resultó bastante convincente.<br />
Ask-The-Experts<br />
Otra interesante iniciativa, es la posibilidad<br />
de formular preguntas directas a distintos<br />
MVP’s de todo el mundo agrupa-<br />
dos en diferentes stands, bajo el epígrafe<br />
“Pregunte a los Expertos”. Por parte española,<br />
participaba nuestro buen amigo y<br />
mejor técnico Eladio Rincón, y quizá se<br />
echó de menos que el público en general<br />
tuviera suficiente información sobre lo<br />
que esta posibilidad deparaba.<br />
Entrevistas<br />
Queremos hacer mención especial de<br />
dos auténticos “monstruos” de la evangelización<br />
y la innovación en estas plataformas.<br />
Con ambos tuvimos la o<strong>por</strong>tunidad<br />
de charlar y el lector podrá ver<br />
las entrevistas en próximos números de<br />
Jim Gray, Distinguished Engineer de Microsoft<br />
la revista: Jim Gray y Dino Esposito.<br />
Jim Gray es un hombre de la Universidad.<br />
Es premio AMT Turing (el equivalente<br />
del Nobel en Informática) y —como casi<br />
todos los grandes— auténticamente sencillo,<br />
inteligente y natural. Trabaja en<br />
grandes proyectos de bases de datos<br />
como Terra<strong>Server</strong> (http://terraService<br />
.Net y http://skyserver.sdss.org.) Este<br />
último esta intentando aglutinar toda la<br />
información existente en el mundo sobre<br />
astronomía y nos comentaba en la entrevista<br />
su visión de la necesidad de potenciar<br />
Internet 2, la nueva generación de<br />
dispositivos de almacenamiento inteligentes<br />
y las necesidades de encontrar<br />
mecanismos más inteligentes de búsqueda<br />
de información.<br />
Dino Esposito es (junto a Francesco<br />
Balena) el máximo representante de la<br />
que podríamos llamar “Escuela Italiana”<br />
de .NET. Ampliamente conocido <strong>por</strong> sus<br />
obras de divulgación y su sección fija en<br />
MSDN Magazine (Cutting Edge), habló<br />
sobre las novedades de ADO.NET 2.0,<br />
y de cuestiones de arquitectura y seguridad<br />
en ASP.NET. Ante la ausencia de<br />
Scout Guthrie, con quien pensábamos<br />
charlar, Dino nos explicó muchas de las<br />
cosas que pensábamos preguntar a Scott,<br />
y se prestó para continuar su relación con<br />
nosotros en la forma en que su escaso<br />
tiempo le permita.<br />
...y la despedida:Tech-Ed Party<br />
dotNetManía<br />
Figura 2. Las 4 + 1 vistas de la arquitectura<br />
Lo que nos resulta llamativo es la forma de referirse<br />
a las vistas, diciendo 4 + 1 en vez de 5. El diagrama<br />
muestra que la quinta vista, la de los casos de<br />
uso, aparece con una representación diferente para<br />
indicar que tiene un rol especial en la arquitectura.<br />
Contiene algunos escenarios, o casos de uso, para ayudar<br />
a descubrir y diseñar la arquitectura en las fases<br />
iniciales del proceso al cual adhiere el autor, llamado<br />
RUP o Proceso Unificado de Rational. Al representarla<br />
diferente —una elipse en vez del rectángulo— nos<br />
indica que estos escenarios no eran recogidos previamente<br />
en ninguna vista arquitectónica, de ahí la heterogeneidad<br />
con la que aparece en la figura. Las 4 vistas<br />
restantes capturan los aspectos que comentábamos<br />
al comienzo del artículo: la vista lógica contiene elementos<br />
tales como paquetes de diseño, subsistemas o<br />
clases; la vista de implementación abarca productos<br />
tales como el código fuente, los ficheros de datos, componentes<br />
y ejecutables; la vista de proceso incluye elementos<br />
tales como tareas, hilos de ejecución o procesos<br />
y, finalmente, la vista de despliegue muestra cómo<br />
los diversos ejecutables y otros componentes de tiempo<br />
de ejecución se corresponden con los nodos de proceso<br />
en las plataformas subyacentes.<br />
La propuesta de RUP amplía el esquema para abarcar<br />
todos los elementos significativos de la arquitectura.<br />
Y la pregunta inmediata es, ¿cuáles son esos elementos<br />
significativos?. A lo que Philippe Kruchten (en<br />
The Rational Unified Process: An Introduction, 1999) responde:<br />
• Las clases principales, es decir aquellas que<br />
modelan las entidades principales del dominio<br />
considerado.<br />
• Los mecanismos arquitectónicos que incor<strong>por</strong>an<br />
com<strong>por</strong>tamiento a esas clases, tales como<br />
los de persistencia y comunicación.<br />
• Los patrones y los marcos (patterns and frameworks).<br />
• Las capas y subsistemas.<br />
• Interfaces.<br />
• Los procesos principales, o hilos de control.<br />
Y es aquí, en esta enumeración, que vemos incluidos<br />
los elementos que darán lugar a una definición<br />
más general de la arquitectura: los patrones. Cuando<br />
nos hablan de mecanismos —definidos como una cla-<br />
se, o grupo de clases o un patrón que provee una solución<br />
común a un problema dado— también se mencionan<br />
a los patrones como esquemas que presentan<br />
una solución a un problema de diseño recurrente y<br />
que se presenta en situaciones específicas del diseño.<br />
Patrones arquitectónicos<br />
La diferencia principal entre mecanismo y patrón<br />
es que estos últimos son esquemas más generales que<br />
los mecanismos, es decir que describen interacciones<br />
amplias de elementos abstractos de diseño que permiten<br />
al arquitecto o diseñador pensar en un problema<br />
complejo mediante una abreviatura intuitiva. Son<br />
los patrones los que permitirán hablar posteriormente<br />
de la arquitectura en términos de abarcar también<br />
las decisiones más im<strong>por</strong>tantes en relación con el sistema<br />
a desarrollar. Y a primera vista resulta chocante<br />
ver colocados en un mismo conjunto a componentes,<br />
subsistemas, ejecutables y procesadores con decisiones.<br />
Se empieza a decir, entonces, que la caja de herramientas<br />
para resolver problemas arquitectónicos está<br />
progresivamente más llena de patrones y mecanismos.<br />
Para ir llenando la caja de herramientas aparecen libros<br />
como los de Frank Buschmann y otros (Pattern-<br />
Oriented Software Architecture: A System of Patterns,<br />
1996) que con el tiempo quedó como primer volumen<br />
de una saga que añadió el de Douglas Schmidt y otros<br />
en el 2000, con el mismo título y subtitulado Patterns<br />
for Concurrent and Networked Objects.<br />
La extensa lista de patrones arquitectónicos abarca<br />
—<strong>por</strong> ejemplo— el clásico patrón arquitectónico<br />
de Capas, que ayuda a estructurar una aplicación, descomponiéndola<br />
en grupos de subtareas en los que cada<br />
grupo es un nivel particular de abstracción. El componente<br />
externo al patrón —llamado cliente— usa la<br />
capa más alta, es decir de mayor nivel de abstracción,<br />
y es ésta la que se ocupa de llamar a la siguiente, que<br />
a su vez puede requerir llamar a otra y así sucesivamente<br />
a lo largo de todas las capas.<br />
decir que —al revés que en sus comienzos—<br />
el enfoque deja de ser ‘hacia adentro’<br />
y comienza a tener en cuenta al sistema<br />
como un todo, con el entorno de<br />
usuario y de desarrollo, es decir un<br />
enfoque ‘hacia afuera’.<br />
Más allá de la arquitectura<br />
Esta expansión hacia afuera continúa<br />
progresando, y en algunos de los últimos<br />
trabajos (Luke Hohmann, Beyond<br />
Software Architecture: Creating and<br />
Sustaining Winning Solutions, 2003) se<br />
reconoce que, a diferencia de las definiciones<br />
previas, que se centran en los<br />
aspectos técnicos de la arquitectura, se<br />
debe poner el acento en los aspectos<br />
humanos y de negocio, que también forman<br />
parte de la gran imagen arquitectónica.<br />
De esta manera, podríamos asociar<br />
en la figura 1 el punto de vista 1 = enfoque<br />
técnico, punto de vista 2 = enfoque humano<br />
y punto de vista 3 = enfoque de negocio o de<br />
Software Architecture<br />
in Practice,<br />
Second Edition<br />
Len Bass, Paul Clements, Rick<br />
Kazman<br />
Ed.: Addison Wesley<br />
Páginas: 560<br />
ISBN: 032115495-9<br />
Publicado: Abril, 2003<br />
(primera edición de 1998)<br />
The Rational Unified<br />
Process:<br />
An Introduction<br />
(2nd Edition)<br />
Philippe Kruchten<br />
Ed.: Addison Wesley<br />
Páginas: 320<br />
ISBN: 0201707101<br />
Publicado: Marzo, 2000<br />
(primera edición de 1990)<br />
marketing para tener una visión mucho<br />
más amplia de la arquitectura.<br />
Es cierto, tal como afirma el autor,<br />
que aunque pongamos el énfasis en la<br />
creación inicial y las primeras versiones<br />
de la arquitectura, invertiremos la mayor<br />
parte del tiempo en trabajar —reelaborar—<br />
la arquitectura existente. La evolución<br />
de la arquitectura puede resultar<br />
mucho más fascinante e interesante que<br />
la creación de su versión final. Es sólo<br />
a través de la evolución que podemos<br />
constatar dónde hemos tenido éxito o<br />
no, sobre todo cuando la evolución se<br />
basa en la realimentación directa <strong>por</strong><br />
parte de los clientes.<br />
La actual tendencia —tanto de marketing<br />
como en el caso de las metodologías<br />
ágiles, en especial FDD— es a<br />
hablar de características (features) de un<br />
producto software, como algo que el<br />
producto hace o debería hacer (es decir,<br />
las antiguas funcionalidades). Pero esta<br />
nueva denominación no es simplemen-<br />
Pattern-Oriented<br />
Software Architecture,<br />
Volume 1:A System<br />
of Patterns<br />
Frank Buschmann, Regine<br />
Meunier, Hans Rohnert, Peter<br />
Sommerlad, Michael Stal,<br />
Peter Sommerlad,<br />
Michael Stal<br />
Ed.: John Wiley & Sons<br />
Páginas: 476<br />
ISBN: 0471958697<br />
Publicado: Agosto, 1996<br />
dotNetManía<br />
dotNetManía<br />
DATOS DE FACTURACIÓN<br />
IMPORTES VÁLIDOS HASTA NUEVA OFERTA<br />
CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
DATOS DE ENVÍO (sólo si son distintos de los datos de facturación)<br />
CIF/NIF . . . . . . . . . . . . . . . . . . . . .Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Nombre y apellidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Código Postal . . . . . . . . . . . . . . . . . . . Provincia . . . . . . . . . . . . . . . . . . . . . . . . .<br />
Teléfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . email . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />
FORMA DE PAGO<br />
❑ Talón nominativo a nombre NETALIA, S.L.<br />
❑ Giro postal a nombre NETALIA, S.L.<br />
❑ Transferencia bancaria a nombre de NETALIA, S.L. a:<br />
La Caixa<br />
Número de cuenta 2100 4315 48 2200014696<br />
(Indique su nombre en la transferencia)<br />
❑ Domiciliación Bancaria<br />
Indique su número de cuenta:<br />
❑ Tarjeta de crédito<br />
❑ VISA ❑ MASTERCARD ❑ AMERICAN EXPRESS<br />
Número de su tarjeta:<br />
Fecha de caducidad: / (Imprescindible)<br />
Firma y sello (imprescindible)<br />
Suscripción a dotNetManía<br />
❑ Deseo suscribirme a dotNetManía <strong>por</strong> un año (11 ejemplares) y beneficiarme de la oferta del 10% de descuento <strong>por</strong> un<br />
im<strong>por</strong>te total de 60 6 para España; o <strong>por</strong> 75 6 para el resto de Europa; o <strong>por</strong> 90 6 para el resto del mundo (IVA incluido).<br />
❑ Deseo suscribirme a dotNetManía <strong>por</strong> un año (11 números) <strong>por</strong> un im<strong>por</strong>te de 45 6 <strong>por</strong> ser estudiante (IVA incluido).<br />
A<strong>por</strong>to fotocopia del carné de estudiante o sello del centro académico (IMPRESCINDIBLE). OFERTA VÁLIDA SÓLO<br />
PARA ESTUDIANTES RESIDENTES EN ESPAÑA.<br />
a de de 20<br />
❑ Nº1 ❑ Nº2 ❑ Nº3 ❑ Nº4 ❑ Nº5<br />
Envíe este formulario <strong>por</strong> email a la dirección<br />
suscriptores@dotnetmania.com, o al fax (34) 91 499 13 64<br />
También puede enviarlo <strong>por</strong> correo postal<br />
a la siguiente dirección:<br />
C/ Robledal, 135<br />
28529- Rivas Vaciamadrid<br />
Madrid (España)<br />
Usted autoriza a la mecanización<br />
de estos datos. El responsable<br />
y destinatario de<br />
éstos es Netalia, S.L. Usted<br />
tiene derecho a acceder a sus<br />
datos, modificarlos y cancelarlos<br />
cuando lo desee. Sus<br />
datos no serán cedidos en ninguna<br />
de las formas posibles a<br />
terceras partes y no se utilizarán<br />
más que para el buen funcionamiento<br />
de su suscripción<br />
a la revista dotNetMania y<br />
para informarle de las actividades<br />
comerciales que realice<br />
la editorial Netalia, S.L. Si no<br />
desea recibir información<br />
comercial de esta empresa<br />
marque la casilla siguiente ❑