14.12.2012 Views

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 ...

SHOW MORE
SHOW LESS

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 ❑

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!