<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://liarjo.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fliarjo.spaces.live.com%2fcategory%2fComputers%2band%2bInternet%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>..:: Liarjo of Locksley ::..: Computers and Internet</title><description /><link>http://liarjo.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catComputers%2band%2bInternet</link><language>en-US</language><pubDate>Wed, 27 Aug 2008 16:16:29 GMT</pubDate><lastBuildDate>Wed, 27 Aug 2008 16:16:29 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://liarjo.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>4697793537861464105</live:id><live:alias>liarjo</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Magic Quadrant for Business Intelligence Platforms, 2008</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3677.entry</link><description>&lt;p&gt;Gartner se dedica a hacer estos estudios y el 1 de febrero de este año sacó este sobre plataformas de BI. &lt;p&gt;Este mercado se está moviendo de ser dominado por empresas de Nicho hacia los proveedores de plataforma, basado en los desarrollos o adquisiciones de estás ultimas. &lt;p&gt;Muy interesante, vale la pena ver las “Strengths” y “Cautions” de cada plataforma. &lt;p&gt;&lt;a title="Magic Quadrant for Business Intelligence Platforms, 2008" href="http://mediaproducts.gartner.com/reprints/microsoft/vol7/article3/article3.html" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=244 alt=" Magic Quadrant for Business Intelligence Platforms, 2008" src="http://byfiles.storage.msn.com/y1p69ilQ8g8zXCu41b00CwtJs-DqxhrLofPvcrvAYEDon8AUULInoc-1h-uqaQmk8l_?PARTNER=WRITER" width=238 align=right border=0&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Magic+Quadrant+for+Business+Intelligence+Platforms%2c+2008&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3677.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3677.entry</guid><pubDate>Thu, 21 Aug 2008 17:59:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3677/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3677.entry#comment</wfw:comment><dcterms:modified>2008-08-21T17:59:55Z</dcterms:modified></item><item><title>Caso de movilidad, Compañia Argentina De Granos (CAGSA)</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3570.entry</link><description>&lt;p&gt;Siguiendo con la revisión de casos de movilidad, aquí hay otra aplicación móvil para productores Argentinos, pero esta vez en BlackBerry. &lt;p&gt;En Argentina, por las características del país estas aplicaciones están avanzando muy rápido. En mi pueblo tenemos que ponernos al día. &lt;p&gt;  &lt;p&gt; &lt;div style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px"&gt;&lt;div&gt;&lt;/div&gt;Uso de Blackberry en el campo&lt;/div&gt; &lt;p&gt;LA fuente del video es &lt;a title="Compañia Argentina De Granos (CAGSA)" href="http://na.blackberry.com/eng/newsroom/success/cagsa.jsp" target="_blank"&gt;esta.&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Caso+de+movilidad%2c+Compa%c3%b1ia+Argentina+De+Granos+(CAGSA)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3570.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3570.entry</guid><pubDate>Wed, 04 Jun 2008 17:34:48 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3570/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3570.entry#comment</wfw:comment><dcterms:modified>2008-06-04T17:34:48Z</dcterms:modified></item><item><title>Excelente caso de movilidad en Argentina</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3568.entry</link><description>&lt;p&gt;Este es un excelente caso de movilidad realizado en Argentina. El video es muy ilustrativo de lo que los productores pueden hacer ahora que incorporaron esta tecnología.  &lt;p&gt;Es una solución en Windows Mobile :-) &lt;p&gt; &lt;p&gt;Al final del video dicen…. &lt;p&gt;“…Sirviendo a la Patria defendiendo su producción.” &lt;p&gt;Notable misión tiene la esta asociación de productores.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Excelente+caso+de+movilidad+en+Argentina&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3568.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3568.entry</guid><pubDate>Tue, 03 Jun 2008 14:24:13 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3568/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3568.entry#comment</wfw:comment><dcterms:modified>2008-06-03T14:33:24Z</dcterms:modified></item><item><title>Registro de la barrera sicológica de las 2000 Page View en el Blog</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3567.entry</link><description>&lt;p&gt;La semana que pasó por primera vez en la historia de este BLOG el contador de visitas de Live Space contó más de 2.000 Page Views. El registro exacto fue 2.173 visitas en esa semana. &lt;p&gt;Esto es para mí, que escribo el 99% de las cosas que aparecen aquí, un nuevo record. Esto tengo que agradecérselo a Google porque la mayoría de las visitas vienen referenciadas desde ese buscador. &lt;p&gt;Las 2.000 Page Views era una barrera sicológica que tenía ya que cuando partí con este BLOG con suerte yo lo veía. Hoy pienso que los Blog’s son una de las herramientas de la llamada WEB 2.0 más potentes y que sin duda pueden trasformar la manera como el conocimiento y las relaciones de las personas se dan en Internet. &lt;p&gt;Bueno, vamos a las medidas que es lo que a todo ingeniero le debe llamar la atención. &lt;p&gt;Primero, el registro de visitas de SPACE.  &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1puTSWQA4qEtfF-PCVtWo_vO4Fb3JCsx9Jvk66xhUpkPuiPxo5QdLCG47ZHwjPShoPHwuHrE2fvY_ZSdoZCtUuBg?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=348 alt="estadisticas de Visitas de Live" src="http://by1.storage.msn.com/y1pEbp1yuGPmyKIyX9nuEJRdApP2fYJz3kLzCV5fLl_YW2cMaINbshQebqKHJzxc-4M9mFcjE5PUg1MRef1TE7tp56fll9O5izw?PARTNER=WRITER" width=569 border=0&gt;&lt;/a&gt; &lt;p&gt;Aquí me cambio de herramienta de contabilización a &lt;a title="Esatdisticas de visitas para sitio WEB" href="http://www.shinystat.com/" target="_blank"&gt;ShinyStat&lt;/a&gt;, aquí tenemos una representación gráfica del origen de las visitas. Como es de suponer, la mayoría son de Latinoamérica seguidas de norte America y Europa. &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1pAS-CrAYA_yjijfaz1y1B0Su4j-CBHzEjOShPKuQdb4CBKtHafCivegv3OcaOWmtxKRgH0u7FVx7z3rikwjJyQoLAGElLZ-lb?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=388 alt="Mapa de geografico de visitas" src="http://by1.storage.msn.com/y1pEbp1yuGPmyJmOzR6ooNtd0lUUr5kqm2VooAXUoBVE6KuXG-HrYnlab3Unrd9hk7-DQuEhjdSNB8UnmRSQrofq8wURCzMHeYm?PARTNER=WRITER" width=570 border=0&gt;&lt;/a&gt; &lt;p&gt;El siguiente gráfico muestra los cinco países desde donde más visitan el BLOG. &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1pAS-CrAYA_yjCL6ZA8nHhe4WCj29kT81flSBhPweL-CWuRaSB4Gxsd08oiAwstgouDha3lTnHEKJSMSSMUOxKVc1VWSLkiAK5?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=159 alt="TOP FIVE countries" src="http://by1.storage.msn.com/y1pEbp1yuGPmyLVHDxBeNKoFlrvsiETzAGyV8WQmeQZ_Zmhhn2kxdqfUUlX_GrDgL-e-QfHmtGejvtwqwU8Z0yDowqH-WRIm5TT?PARTNER=WRITER" width=568 border=0&gt;&lt;/a&gt; &lt;p&gt;Ahora, se muestra la distribución de horas de visitas. Las mejores horas se dan a las 11 de la mañana y 4 de la tarde. Me imagino que esto tiene que ver con el biorritmo y que a esas horas la productividad baja ;-) &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1pAS-CrAYA_yj6LDlwSs-PzZq_h7RIODAeytDLXcHi3Qa8PuzIsIGgOa4lYWuDl7lPb840kKhv5aX77O_dMrv2ku_aya6V6p1N?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=222 alt="estadisticas por hora del día" src="http://by1.storage.msn.com/y1pEbp1yuGPmyIsSEO8yqt--ZPPNDyot7w2pdVXVqxNznD_r2mX9XZDU6Uu-IJKdJrgMFutkYOsvIVPQr43GBeKDr2LnIdMY-bD?PARTNER=WRITER" width=572 border=0&gt;&lt;/a&gt; &lt;p&gt;Aquí tenemos la distribución de visitas durante la semana. Este es un blog de “cosas del trabajo” por lo que claramente en la semana hay mucho más interés que el fin de semana. &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1pAS-CrAYA_yjCSGjSRZQw6kH95_i6oAaCPi9bIFVMSFqlXXWJBNf0Tg9QI_sKatoEhUz3r7yzPeGILNKr-1r5YRXwQefV_LkZ?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=146 alt="Estadisticas por día" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtuN7de8oO8uGj7oIpQ_SIytHmePxYnfp8EodHVWlNcXKchpXUqeyTD_rC3sgyFYso?PARTNER=WRITER" width=572 border=0&gt;&lt;/a&gt; &lt;p&gt;Por supuesto no pueden faltar algunas medidas técnicas. Aquí tenemos la distribución del uso de Browser y sistemas operativos. Explorer 7 sobre XP, potente combinación. &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1puTSWQA4qEtfyEOefLs2LoU5DIElPvAxvL0mYLD2mjlkhO3MYJzvm1UzMMhMn_X4QCslp-61RL9pvwoRKD7nYIw?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=158 alt="Estadisticas de Browser" src="http://by1.storage.msn.com/y1pEbp1yuGPmyIgIG7fFOkmHdyjOdADWfgATtNMgMAxuCA7IXXu8rAaPW0qXrx_EF1Fvw5meQAM0jGmuh0_eSGL7c4bEwRnubQX?PARTNER=WRITER" width=575 border=0&gt;&lt;/a&gt; &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1pAS-CrAYA_yjvMoWr5tGEv2EwzHOXHBsxEdDztSNvwdrZ-OSYUgqT42HeaDa05kIgzmS_K2tRhXKKqAIcAF33U07FficEwJCf?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=159 alt="Estadisticas por Sistema Operativo" src="http://by1.storage.msn.com/y1pEbp1yuGPmyK87ZoGvXERetdnKueg6oRLancm0trvbOeiccW9p0bucKQgD0zRgyY1L51dSm24auzT41tMdGzYHn2PaeB_rIZZ?PARTNER=WRITER" width=576 border=0&gt;&lt;/a&gt; &lt;p&gt;Bueno, este es un post muy grato para mí pero de poco interés para el resto. Me doy la licencia de subirlo porque me hace pensar que le apunte al inicio del camino para ser un bloger algún día en el futuro lejano.  &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Registro+de+la+barrera+sicol%c3%b3gica+de+las+2000+Page+View+en+el+Blog&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3567.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3567.entry</guid><pubDate>Mon, 02 Jun 2008 22:38:56 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3567/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3567.entry#comment</wfw:comment><dcterms:modified>2008-06-02T22:40:35Z</dcterms:modified></item><item><title>Regional Architect Forum - Microsoft Cono Sur, 2008 / Contenido Conferencia</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3517.entry</link><description>&lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1puTSWQA4qEtefCDkXwl2TwzFxLQ1R6Y8Vvgjcw9s6JgUZFHCn8Tpr_-VDAnMoc_UpTOg1gTR1DyvXfSrw5a_Iwg?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=121 alt="Regianol Architect Forum" src="http://by1.storage.msn.com/y1pEbp1yuGPmyI3xRnQB9qZgxVLZaDjIFx2EKTPU-9gjsSzqIOMgyZxa6oa4KAw5qD259b4ni5pfm-BmLQIat0uoM1U2vA0At46?PARTNER=WRITER" width=551 border=0&gt;&lt;/a&gt; &lt;p&gt;Como les comenté en este otro &lt;a title="Regional Architect Forum - Microsoft Cono Sur, 2008" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3513.entry" target="_blank"&gt;post&lt;/a&gt;, voy a exponer en el evento de arquitectos para cono sur la próxima semana.  &lt;p&gt;Mi idea era ir con un cliente con el que hemos desarrollado una arquitectura móvil corporativa muy interesante. Lamentablemente por temas administrativos él no podrá asistir así que vamos a presentar con &lt;strong&gt;&lt;font color="#baf56b"&gt;Martín Cabrera&lt;/font&gt;&lt;/strong&gt; el tema. La idea es mostrar una aplicación práctica y como está implementación ayuda al cumplimiento de los objetivos de negocio de este cliente. &lt;p&gt;Aquí les paso la descripción de la exposición. &lt;p&gt;&lt;strong&gt;&lt;font color="#baf56b"&gt;Arquitectura Móvil Corporativa&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;El avance en la cobertura de las redes de datos móviles, sus mejoras en las tasas de trasferencia de datos y su consecuente disminución de costos, sumado a los constantes avances de los dispositivos móviles está llevando a las empresas corporativas a  desarrollar cada vez mas  aplicaciones móviles para sus empleados en terreno. En un principio la movilidad se limitó a mensajería pero ahora ya estamos viendo como cada vez mas empresas incorporan aplicaciones móviles en sus diferentes equipos de trabajo en terreno. &lt;p&gt;En esta presentación revisaremos una  arquitectura móvil corporativa que se hace cargo de los aspectos trasversales de este tipo de soluciones. Está arquitectura la  hemos usado en clientes de diferentes industrias ( financiera, Minera y Vitivinícola) con muy buenos resultados.   &lt;p&gt;Durante la presentación recorreremos los módulos de la arquitectura explicando cuáles son sus motivaciones y puntos clave. Brindaremos ejemplos en los que usamos cada uno de los módulos y como ellos ayudan a la construcción de solidas aplicaciones móviles  de negocio.  &lt;p&gt;Un punto importante a destacar es que está propuesta brinda un contenedor de aplicaciones que le da a los clientes la libertad de desarrollar nuevas aplicaciones, instalarlas y que estas usen todas las funcionalidades transversales provistas por la plataforma sin que cada aplicación se haga cargo de dichos aspectos. &lt;p&gt;La audiencia objetivo de esta presentación son arquitectos y desarrolladores de software que tengan interés en aplicaciones móviles.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Regional+Architect+Forum+-+Microsoft+Cono+Sur%2c+2008+%2f+Contenido+Conferencia&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3517.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3517.entry</guid><pubDate>Thu, 22 May 2008 17:33:00 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3517/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3517.entry#comment</wfw:comment><dcterms:modified>2008-05-22T17:33:00Z</dcterms:modified></item><item><title>HOW TO WCF, Seguridad</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3476.entry</link><description>&lt;p&gt;Cachureando en &lt;strong&gt;&lt;u&gt;Google&lt;/u&gt;&lt;/strong&gt;, encontré está lista de Link’s para WCF. Son del estilo “¿Cómo Hacer…?” &lt;p&gt;Así que para los desarrolladores que están en el mundo WCF le van a ser de utilidad. &lt;p&gt;Hay códigos de ejemplos y algunos son videos. &lt;p&gt;Que los disfruten. &lt;p&gt;PD: La info la encontré en el Blog de &lt;a title=Blog href="http://blogs.msdn.com/madhuponduru/default.aspx" target="_blank"&gt;Madhu Ponduru&lt;/a&gt; &lt;p&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Create and Install Temporary Certificates in WCF for Message Security During Development&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Create and Install Temporary Certificates in WCF for Message Security During Development&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Create and Install Temporary Certificates in WCF for Transport Security during Development&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Create and Install Temporary Certificates in WCF for Transport Security during Development&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Impersonate the Original Caller in WCF calling from Web Application&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Impersonate the Original Caller in WCF calling from Web Application&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Impersonate the Original Caller in WCF calling from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Impersonate the Original Caller in WCF calling from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use netTcpBinding with Windows Authentication and Transport Security in WCF from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use netTcpBinding with Windows Authentication and Transport Security in WCF from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use SQL Role Provider with Windows Authentication in WCF calling from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use SQL Role Provider with Windows Authentication in WCF calling from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use Username Authentication with the SQL Membership Provider and Message Security in WCF from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use Username Authentication with the SQL Membership Provider and Message Security in WCF from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use wsHttpBinding with Windows Authentication and Message Security in WCF from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use wsHttpBinding with Windows Authentication and Message Security in WCF from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To - Use wsHttpBinding with Windows Authentication and Transport Security in WCF calling from Windows Forms&amp;amp;referringTitle=How Tos" target="_blank"&gt;How To - Use wsHttpBinding with Windows Authentication and Transport Security in WCF calling from Windows Forms&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To: How to Host WCF in a Windows Service&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Host WCF in a Windows Service&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To: Impersonate the Original Caller in WCF calling from a Windows Form&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Impersonate the Original Caller in WCF calling from a Windows Form&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How to: Use basicHttpBinding with Certificate Authentication from Windows Forms&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Use basicHttpBinding with Certificate Authentication from Windows Forms&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How to: Use netTcpBinding with Windows Authentication and MessageSecurity&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Use netTcpBinding with Windows Authentication and Message Security&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How to Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To: Use WsHttpBinding with Certificate Authentication with Message Security (object model programming) &amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Use WsHttpBinding with Certificate Authentication with Message Security&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=How To: Use WsHttpBinding with Windows Authentication with Message Security&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Use WsHttpBinding with Windows Authentication with Message Security&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Video: How To - Create and Install temporary Certificates in WCF for Transport Security during Development&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Create and Install temporary Certificates in WCF for Transport Security during Development&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Video: How To - Create and Install temporary Certificates in WCF for Message Security during Development&amp;amp;referringTitle=Video Index" target="_blank"&gt;Video: How To - Create and Install temporary Certificates in WCF for Message Security during Development&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Solution001&amp;amp;referringTitle=Application Scenarios" target="_blank"&gt;Intranet - Web App to Remote WCF to SQL Server - Original Caller&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Solution002&amp;amp;referringTitle=Application Scenarios" target="_blank"&gt;Intranet - Web App to Remote WCF to SQL Server - Trusted Subsystem&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Solution003&amp;amp;referringTitle=Application Scenarios" target="_blank"&gt;Intranet - Web App to Local WCF to SQL Server - Original Caller&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Solution004&amp;amp;referringTitle=Application Scenarios" target="_blank"&gt;Internet - Web App to Remote WCF to SQL Server - Original Caller&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+HOW+TO+WCF%2c+Seguridad&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3476.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3476.entry</guid><pubDate>Sun, 27 Apr 2008 20:37:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3476/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3476.entry#comment</wfw:comment><dcterms:modified>2008-04-27T20:37:05Z</dcterms:modified></item><item><title>MVP Global Summit 2008</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3414.entry</link><description>&lt;p&gt;Estoy desde el domingo pasado en Seattle, participando del &lt;a title=Summit href="https://www.mvpsummit2008.com/" target="_blank"&gt;MVP Global Summit&lt;/a&gt;. &lt;p&gt;¿Qué es esto? &lt;p&gt;Es la reunión mundial de los &lt;a title="my mvp profile" href="https://mvp.support.microsoft.com/default.aspx/profile=57A206C1-A373-4D92-8BAC-EEFADC4D935B" target="_blank"&gt;MVP&lt;/a&gt;, donde los grupos de productos y gente destacada de en estos temas hace presentaciones de lo que están trabajando. &lt;p&gt;Además de lo interesante que es hablar con los desarrolladores de los productos y tecnologías de Microsoft tenemos la oportunidad de compartir con gente de todo el mundo que es tan o mucho mas fanática que yo en temas de “computin”. &lt;p&gt;En broma digo que es la peregrinación anual a la meca del software Microsoft. &lt;p&gt;Aquí pongo un registro gráfico de lo diverso de los participantes. Ellos son mis “fans” Coreanos.  &lt;p&gt;&lt;a href="http://uo87qq.bay.livefilestore.com/y1puTSWQA4qEtes5ARPwWBp9twWiXX5fM2iiHaCXY9t9ECUN-xwjXdnTUmAsBj11Y3InagrviJax8E?PARTNER=WRITER" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=184 alt="Korean Team" src="http://by1.storage.msn.com/y1pEbp1yuGPmyJF9qki_OukGVC1i-YHoY66rrFgWNSy6uRf9gp3YmTJcvWtk1Vw8k_vfcyZJrxdIOoKv1kVbPWSiQ?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt;  &lt;p&gt;Un problema que tengo con este evento, es que los participantes tienen un acuerdo de confidencialidad del contenido que se trata aquí, por lo que no puedo dar detalles técnicos de lo que veo. Pero puedo compartir la agenda para que se hagan una idea. &lt;p&gt;  &lt;ul&gt; &lt;li&gt;SQL BI : What's new with Data visualization in SSRS2008 &lt;li&gt;ASP.NET: .NET and RIA: A spin through ASP.Net and Silverlight and ASP.NET Ajax &lt;li&gt;ASP.NET: Deep Dive into ASP.NET MVC &lt;li&gt;ASP.NET: Developing Data Driven Applications Using ASP.NET Dynamic Data &lt;li&gt;ASP.NET: What's new for developers in IIS 7.0 &lt;li&gt;ASP.NET: ADO.NET Data Services (AKA Astoria) &lt;li&gt;XML- Entity Framework Futures &lt;li&gt;Software as a Service + Q&amp;amp;A with Ray Ozzie &lt;li&gt;Innovation and Industry Trends + Q&amp;amp;A with Steve Ballmer &lt;li&gt;SQL Engine: Unlocking the power of SQL Server Compact &lt;li&gt;SQL BI: Integration Services in SQL Server 2008&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+MVP+Global+Summit+2008&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3414.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3414.entry</guid><pubDate>Wed, 16 Apr 2008 16:40:41 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!3414/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!3414.entry#comment</wfw:comment><dcterms:modified>2008-04-16T16:40:41Z</dcterms:modified></item><item><title>Material de entrenamiento en WCF</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2711.entry</link><description>&lt;p&gt;Estimados, &lt;p&gt;he aquí una excelente oportunidad de estudiar WCF. &lt;ol&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344312&amp;amp;Culture=en-US" target="_blank"&gt;Overview- Monday, July 02, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344314&amp;amp;Culture=en-US" target="_blank"&gt;Contracts- Monday, July 09, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344318&amp;amp;Culture=en-US" target="_blank"&gt;Contract Versioning- Wednesday, July 11, 2007 10:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344322&amp;amp;Culture=en-US" target="_blank"&gt;Exceptions and Faults- Friday, July 13, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344330&amp;amp;Culture=en-US" target="_blank"&gt;Bindings- Monday, July 23, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344338&amp;amp;Culture=en-US"&gt;Hosting- Wednesday, July 25, 2007 10:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344342&amp;amp;Culture=en-US"&gt;Messaging Patterns- Friday, August 10, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344344&amp;amp;Culture=en-US"&gt;Instancing Modes- Monday, August 13, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344346&amp;amp;Culture=en-US"&gt;Concurrency, Throughput, and Throttling- Wednesday, August 15, 2007 10:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344348&amp;amp;Culture=en-US"&gt;Security Fundamentals- Friday, August 24, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344351&amp;amp;Culture=en-US"&gt;Federated Security- Monday, August 27, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344353&amp;amp;Culture=en-US"&gt;Reliable Messaging- Wednesday, August 29, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344355&amp;amp;Culture=en-US"&gt;Transactions- Monday, September 03, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344357&amp;amp;Culture=en-US"&gt;Message Queuing- Wednesday, September 05, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344359&amp;amp;Culture=en-US"&gt;Extensibility- Friday, September 07, 2007 9:00 AM Pacific Time&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.dotnet-university.com/coursematerials.aspx"&gt;http://www.dotnet-university.com/coursematerials.aspx&lt;/a&gt;&lt;/ol&gt; &lt;p&gt;Ya no hay excusas :P&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Material+de+entrenamiento+en+WCF&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2711.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2711.entry</guid><pubDate>Thu, 07 Feb 2008 00:58:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2711/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2711.entry#comment</wfw:comment><dcterms:modified>2008-02-07T00:58:02Z</dcterms:modified></item><item><title>Material de Entrenamiento WF</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2687.entry</link><description>&lt;p&gt;Primer POST del año, como estamos de vacaciones de verano en Chile no he puesto mucha energía en este Blog. Espero retomar esto en Marzo 2008 ;) &lt;p&gt;Aquí hay un dato para las tardes de verano, buena época para estudiar WF. &lt;p&gt;Una lista del material de entrenamiento en WF, &lt;a title="WF TRAINING MATERIAL" href="http://blogs.msdn.com/madhuponduru/archive/2008/01/17/wf-training-material.aspx" target="_blank"&gt;WF TRAINING MATERIAL&lt;/a&gt;. &lt;p&gt;Disfrútenlo.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Material+de+Entrenamiento+WF&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2687.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2687.entry</guid><pubDate>Mon, 21 Jan 2008 14:50:58 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2687/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2687.entry#comment</wfw:comment><dcterms:modified>2008-01-21T14:50:58Z</dcterms:modified></item><item><title>La conferencia de SOA que cambió el mundo</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2644.entry</link><description>&lt;p&gt;Hoy fui a la mejor conferencia de SOA que he ido jamás. En rigor he asistido en Chile y EEU a conferencias de SOA, curso y otras yerbas. Es más yo mismo he dictado varias conferencias de SOA para desarrolladores y arquitectos de la comunidad de Microsoft Local. &lt;p&gt;Esto ocurrió en la cuarta conferencia anual &lt;strong&gt;SEPG Latinoamérica organizada por el ESI&lt;/strong&gt;. El tema de esta conferencia es Process Improvement: Achiving Competitiveness in the Global IT Market. &lt;p&gt;Como pueden ver esta conferencia es de mejora de procesos pero en uno de sus track me encontré con esta conferencia “&lt;strong&gt;Migración de Sistemas a Ambientes de Arquitecturas Orientadas a Servicios&lt;/strong&gt;” dictada por Grace Lewis del SEI. &lt;p&gt;Puntos destacables de esta conferencia que la hacen diferente a las otras que he asistido: &lt;ul&gt; &lt;li&gt;Una explicación notable de las diferencias entre invocación estática y dinámica de servicios, pasando por la necesidad de generar una ontología en el caso de dinámicas. &lt;li&gt;Se presentó el modelo SOA RM del Oasis [1]. &lt;li&gt;Una explicación notable sobre el confuso concepto Granularidad de Servicios. &lt;li&gt;Definición de cuatro pilares fundamentales para el desarrollo de un sistema bajo el estilo SOA: Alineamiento estratégico, SOA Governance, Evaluación tecnológica, Cambio de mentalidad. &lt;li&gt;La Necesidad de una adopción ordenada, por fases como propone Roy Shulte [2] &lt;li&gt;SOA governance es el conjunto de políticas, reglas y mecanismos de cumplimiento para el desarrollo, utilización y evolución de elementos de un sistema basado en SOA y el para el análisis de su valor para el negocio. &lt;li&gt;Governance aplica tanto en tiempo de diseño y ejecución. &lt;li&gt;Presentación de T-CHECK[3] cómo método de validación de pruebas de concepto. Experimento con el objetivo de verificar el comportamiento de una tecnología en un contexto específico &lt;li&gt;Presentación del método SMART, método que analiza la factibilidad de reutilizar componentes como la base para servicios, Service Migration and Reuse Technique (SMART)[4]&lt;/ul&gt; &lt;p&gt;&lt;font color="#baf56b"&gt;&lt;strong&gt;Referencias&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;[1] &lt;a title="Reference Model for Service Oriented Architecture 1.0" href="http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.html" target="_blank"&gt;Reference Model for Service Oriented Architecture 1.0&lt;/a&gt; &lt;p&gt;[2] &lt;a title="Four Pillars of Service-Oriented Architecture" href="http://www.stsc.hill.af.mil/crosstalk/2007/09/0709LewisSmith.html" target="_blank"&gt;Four Pillars of Service-Oriented Architecture&lt;/a&gt; &lt;p&gt;[3] &lt;a title="A Process for Context-Based Technology Evaluation" href="http://www.sei.cmu.edu/publications/documents/05.reports/05tn025.html" target="_blank"&gt;A Process for Context-Based Technology Evaluation&lt;/a&gt; &lt;p&gt;[4] &lt;a title="SMART: The Service-Oriented Migration and Reuse Technique" href="http://www.sei.cmu.edu/publications/documents/05.reports/05tn029.html" target="_blank"&gt;SMART: The Service-Oriented Migration and Reuse Technique&lt;/a&gt; &lt;p&gt;[5] &lt;a title="European Software Institute" href="http://www.esi.es/" target="_blank"&gt;European Software Institute&lt;/a&gt; &lt;p&gt;[6] &lt;a title="Software Engineering Institute" href="http://www.sei.cmu.edu/" target="_blank"&gt;Software Engineering Institute&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+La+conferencia+de+SOA+que+cambi%c3%b3+el+mundo&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2644.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2644.entry</guid><pubDate>Tue, 27 Nov 2007 04:00:52 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2644/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2644.entry#comment</wfw:comment><dcterms:modified>2007-11-27T04:00:52Z</dcterms:modified></item><item><title>Microsoft Workflow Foundation Rules Engine</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2624.entry</link><description>&lt;p&gt;En septiembre de este año participé en el evento &lt;a title="Post del Evento" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2480.entry" target="_blank"&gt;Microsoft TechNet &amp;amp; MSDN Briefing&lt;/a&gt; exponiendo sobre Workflow Foundation de framework 3.0.  &lt;p&gt;En esa conferencia hable muy superficialmente del motor de reglas de negocio que viene incluido en esta tecnología. Lamentablemente, el tiempo para explicar no era suficiente por lo que llegué a mi casa y describí en 3 post cómo usar ese motor de reglas.  &lt;p&gt;Los post son esto:  &lt;p&gt;1.- &lt;a title="Primera parte de la serie" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2497.entry" target="_blank"&gt;Windows Workflow Foundation, Rule Engine I&lt;/a&gt; ( 5 de septiembre)  &lt;p&gt;2.- &lt;a title="Segundo Post de la serie" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2521.entry" target="_blank"&gt;Windows Workflow Foundation, Rule Engine II&lt;/a&gt; (7 de septiembre)  &lt;p&gt;3.- &lt;a title="Tercera parte de la serie" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2537.entry" target="_blank"&gt;Windows Workflow Foundation, Rule Engine II&lt;/a&gt; (13 de septiembre)  &lt;p&gt;El resultado de este trabajo quedó apto para escribir un solo artículo y postularlo para que sea publicado en el sitio de MSDN de Microsoft. Me fue bien con esa postulación por lo que comparto con ustedes aquello en el siguiente link:  &lt;p&gt;&lt;a title="Artículo en MSDN" href="http://www.microsoft.com/spanish/msdn/latam/articulos/articulo_2007_10.aspx" target="_blank"&gt;Microsoft Workflow Foundation Rules Engine&lt;/a&gt;  &lt;p&gt;Salu2  &lt;p&gt;&lt;img height=57 alt=Archivo src="http://www.microsoft.com/spanish/msdn/latam/articulos/images/icon_anteriores_pag_msdn_latam_articulos.gif" width=60&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Microsoft+Workflow+Foundation+Rules+Engine&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2624.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2624.entry</guid><pubDate>Sat, 03 Nov 2007 16:58:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2624/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2624.entry#comment</wfw:comment><dcterms:modified>2007-11-03T16:58:17Z</dcterms:modified></item><item><title>MVP Open Day en Chile</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2583.entry</link><description>&lt;p&gt; &lt;p&gt;Me llegó la invitación para el evento &lt;a href="http://mvp.support.microsoft.com/" target="_blank"&gt;MVP&lt;/a&gt; Open Day en Chile. En este evento los manager del programa MVP vienen a Santiago de Chile a conocer las comunidades locales, recibir feedback y compartir experiencias.  &lt;p&gt;Esta es la invitación, será una excelente oportunidad de intercambiar ideas. Todo lo interesante que no sea NDA lo compartiré en este BLOG.  &lt;p&gt;&lt;span lang=ES-MX style=""&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=123 alt="clip_image001" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dudxldezo9FNkKb3Nd0VhE4YLGH4iQLXoa0EGKQdrBq8zFSWTECX8CxDK4H7ZeyW2w" width=591 border=0&gt;&lt;/span&gt; &lt;p&gt;&lt;span lang=ES-MX style=""&gt;&lt;/span&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+MVP+Open+Day+en+Chile&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2583.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2583.entry</guid><pubDate>Fri, 05 Oct 2007 14:53:45 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2583/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2583.entry#comment</wfw:comment><dcterms:modified>2007-10-05T19:41:01Z</dcterms:modified></item><item><title>.NET FX Libraries Source Code</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2580.entry</link><description>&lt;p&gt;Estoy es una muy buena noticia. Microsoft va a entregar los códigos fuentes del Framework 3.5 para que los developer puedan hacer debug de manera integrada con sus programas y además usarlo de referencia de implementación. &lt;p&gt;La segunda utilización me parece mucho más útil que la primera, pero eso puede ser porque no hago tanto código como me gustaría. &lt;p&gt;Les dejo el Link donde pueden encontrar la información de primera fuente. &lt;p&gt;Salu2, &lt;p&gt;&lt;a title="Releasing the Source Code for the .NET Framework Libraries" href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx" target="_blank"&gt;Releasing the Source Code for the .NET Framework Libraries&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+.NET+FX+Libraries+Source+Code&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2580.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2580.entry</guid><pubDate>Thu, 04 Oct 2007 04:14:18 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2580/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2580.entry#comment</wfw:comment><dcterms:modified>2007-10-04T04:14:18Z</dcterms:modified></item><item><title>Windows Workflow Foundation, Rule Engine III</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2537.entry</link><description>&lt;h1&gt;Introducción&lt;/h1&gt; &lt;p&gt;En los 2 POST anteriores he tratado el tema del motor de reglas de &lt;b style=""&gt;Windows Workflow Foundation&lt;/b&gt;. El &lt;a title="Windows Workflow Foundation, Rule Engine I" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2497.entry" target="_blank"&gt;primero&lt;/a&gt; es una introducción que permite entender el concepto de RuleSet y cómo usarlo en un Workflow. El &lt;a title="Windows Workflow Foundation, Rule Engine II" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2521.entry" target="_blank"&gt;segundo&lt;/a&gt; explica cómo funciona el tema de las dependencias de las reglas y la manera de administrar las re evaluaciones por cambios de las condiciones de validación. &lt;p&gt;Ahora voy a mostrar algo que es muy potente. Hasta ahora, las reglas de negocio se encuentran compiladas dentro del Assembly del Workflow. La consecuencia de esto es que es necesario &lt;b style=""&gt;para cambiar las reglas volver a compilar&lt;/b&gt;. Esto es un contra sentido, porque la idea de desacoplar las reglas de código de programación es poder tener una separación clara de el código del Wrokflow de las reglas. &lt;p&gt;En este Post voy a tratar de explicar cómo usar una pieza de software de terceros que permite poner el &lt;b style=""&gt;RuleSet&lt;/b&gt; de negocio en una base de datos y así &lt;b style=""&gt;cambiar las reglas sin volver a compilar&lt;/b&gt;. &lt;h3&gt;Separar las Reglas de Negocio del Assembly&lt;/h3&gt; &lt;p&gt;Lo primero que debo presisar es que voy a utilizar un software de terceros llamado “External RuleSet Toolkit”[1]. Este código es de ejemplo y demuestra como almacenar en SQL el RuleSet. Además trae una interfaz Windows Forms para modificar las reglas en la DB y así los Workflow no son alterados por cambios en las reglas de negocio.  &lt;p&gt;Lo primero que hay que entender es la arquitectura de esta solución. El siguiente diagrama muestra un &lt;b&gt;WorkflowRuntime&lt;/b&gt; que tiene 3 instancias de Workflow corriendo. Cada una de esas instancias tiene una Custom Activity llamada “Custom Policy Activity”, que se encarga de obtener el RuleSet desde la base de datos a través del servicio “&lt;b&gt;RuleSet Services&lt;/b&gt;”. Este Servicio debe ser agregado al WorkflowRuntime para que esta actividad de Políticas cutomizada pueda comunicarse con el &lt;b&gt;RuleSet Repository&lt;/b&gt; que esta en la base de datos.  &lt;p&gt;  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsyTk3jJRYwWEp7t153PpPzs7QIcdaglet-vAiKOa4h4hL5LgBr91dG2U5IrfcnXzA" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=111 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtjaRG5VIAEWZ002Zv7hW3nUli_tL5_JXwp_lsZZ8ARlF5ynERRRsMHGV2SpYB8Xzg" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Imagen 1. &lt;p&gt;&lt;span style="font-size:11pt;font-family:'Calibri','sans-serif'"&gt;Además de los componentes para el Workflow este ejemplo de código trae el &lt;b style=""&gt;RuleSet Designer&lt;/b&gt; que es una interfaz gráfica para administrar los elementos del RuleSet Repository. Esta interfaz se muestra en la imagen 2.&lt;/span&gt;  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtdadEACtNN_RRGMHdYGTOr4GAhAUlC0D4moLD_NbrfRQxQk5UBl22dJuMTFD63dVs" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=158 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsQkmICkoBG9Zydtf69lEy5Jz0Cr7nJLn7fyEMjpPeSWpqn2JGi7KXGtzGUOwR-uGI" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Imagen 2. &lt;h3&gt;¿Cómo se Instala?&lt;/h3&gt; &lt;p&gt;Para poder usar el componente se deben cumplir con el proceso de instalación. Estos no los voy a explicar porque están perfectamente detallados en el manual de instalación de este ejemplo de código.  &lt;h3&gt;Ejemplo de Uso 1&lt;/h3&gt; &lt;p&gt;Para usar este componente vamos a importar el RuleSet que usamos en el primer ejemplo del primer post de esta serie. Como sabemos las reglas de guardan en un archivo de extensión &lt;b&gt;.rule&lt;/b&gt;. Usando la aplicación &lt;b&gt;RuleSet Designer&lt;/b&gt; vamos a importar el archivo wfReglasEjemplo_1.rule que está en este ejemplo de código [2]. Una vez importado grabamos el RuleSet para que así quede persistente en la base de datos.  &lt;p&gt;Ahora, creamos un Workflow secuencial y le agregamos la actividad customizada &lt;b&gt;PolicyFromService &lt;/b&gt;que es la que enlaza con las reglas de la base de datos a través del Servicio. El workflow se ve como la siguiente imagen.  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtVRJwud4MNZ3tFFDq0rSe-eb21Ulz_fz1WnGZJOFI29IEEJi4mV5qJUsdN4jHcYWo" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=158 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dvxmxhiw5jxkjd-gFXDnLn_-9yYFrePr0hIjpca1V82fJPb58ULBtBn-hS2DcFZEg8" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Imagen 3. &lt;p&gt;Las propiedades de la actividad &lt;b style=""&gt;PolicyFromService &lt;span style=""&gt; &lt;/span&gt;&lt;/b&gt;son: &lt;p&gt;1.- &lt;b style=""&gt;RuleSet Name&lt;/b&gt;: nombre del juego de reglas a usar. &lt;p&gt;2.- &lt;b style=""&gt;Major Version&lt;/b&gt;: numero de verison. &lt;p&gt;3.- &lt;b style=""&gt;Menor Version&lt;/b&gt;: número de sub versión. &lt;p&gt;EL RuleSet de nuestro ejemplo se llama Rule Set1. LA versión es la por defecto 1.0. &lt;p&gt;Ahora para que esto funcione debemos incluir el servicio de comunicaciones con el repositorio de la reglas en la base de datos. Para eso al runtime del Workflow agregamos el Servicio &lt;b style=""&gt;RuleSet Services&lt;/b&gt;. Para esto agregamos el siguiente código. &lt;table style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse" cellspacing=0 cellpadding=0 border=1&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:black 1pt solid;width:475pt;padding-top:0in;border-bottom:black 1pt solid" valign=top width=633&gt; &lt;p style="margin-bottom:0pt"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;workflowRuntime.AddService(&lt;span style="color:blue"&gt;new&lt;/span&gt; RuleSetService());&lt;/span&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Código 1. &lt;p&gt;Con esto tenemos listo nuestro ejemplo. Si lo ejecutamos obtenemos el resultado A=15, B=5, C=5, D=2 y E=7. &lt;span style=""&gt; &lt;/span&gt;Las reglas para hacer los cambios de los valores los leyó desde la base de datos!!!!!. &lt;h1&gt;Ejemplo de Uso 2&lt;/h1&gt; &lt;p&gt;Ahora, vamos a cambiar los valores para comprobar que &lt;b style=""&gt;descaplamos las reglas del Assembly&lt;/b&gt;. Para ello usamos la herramienta &lt;b style=""&gt;RuleSet Designer&lt;/b&gt;. Lo que haremos es mantener dos versiones de las reglas, así dependiendo de un valor usaremos una u otra regla.  &lt;p&gt;Primero creamos una copia de las reglas, para eso usamos la función copy. Al hacer eso, nos aparece una nueva versión que por defecto es la versión 2.0. Usando la opción de Edit Rule, nos aparece el mismo formulario usamos antes para cambiar las reglas de Rule Set. &lt;p&gt;Si cambiamos las reglas y las grabamos en la base de datos el workflow inmediatamente comenzará a evaluar con el nuevo set de Reglas. Los valores de las reglas del segundo ejemplo son: &lt;table style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse" cellspacing=0 cellpadding=0 border=1&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border-right:#00b050 1pt solid;padding-right:5.4pt;border-top:#00b050 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:#00b050 1pt solid;width:475pt;padding-top:0in;border-bottom:#00b050 1pt solid" valign=top width=633&gt; &lt;ul&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt"&gt;&lt;span lang=EN-US style=""&gt;Regla_4: IF this.A == 15 THEN this.B = 5 &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt"&gt;&lt;span lang=EN-US style=""&gt;Regla_3: IF this.C == 5 THEN this.B = 10 &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt"&gt;&lt;span lang=EN-US style=""&gt;Regla_2: IF this.D == 2 THEN this.A = 15 &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt"&gt;&lt;span lang=EN-US style=""&gt;Regla_1: IF this.B == 5 THEN this.E = 7000&lt;/span&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p style="tab-stops:189.0pt"&gt;&lt;span lang=EN-US style=""&gt;Código 3: Reglas Ejemplo II&lt;span style=""&gt;                      &lt;/span&gt;&lt;/span&gt; &lt;p&gt;Las Reglas versión 2.0 se muestran en la siguiente imagen. &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtjYYPj-_2TJxReJm6uS4pQj-aviLtYUBoPsNcSUQ0H9Y9-npVyzpnZM1Xedlu_3Z4" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=159 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsvQbm5DxQ9XtvGJv7YU38d1i00e-WJ0UBeoUtmmtryA2p-N8KkuK9LMkq6fOP78X8" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Imagen: Reglas Versión 2.0 &lt;p&gt;Los resultados obtenidos al usar las reglas 2.0 son A=15, B=5, C=5, D=2 y E=7000, y para esto &lt;b style=""&gt;&lt;u&gt;no tuvimos que compilar.&lt;/u&gt;&lt;/b&gt; &lt;p&gt;Buenos eso es, espero lo encuentren de tanta utilidad como yo!. &lt;p&gt;El ejemplo de este POST pueden descargarlo desde &lt;a title="Ejemplo de código de este POST" href="http://desarrollo.datco.cl/materialpublico/codigosejemplo/test4_ReglasExternas.zip" target="_blank"&gt;aquí&lt;/a&gt;. &lt;p&gt;Salu2 &lt;h1&gt;&lt;span lang=EN-US style=""&gt;Referencias&lt;/span&gt;&lt;/h1&gt; &lt;p&gt;&lt;span lang=EN-US style=""&gt;[1] External RuleSet Toolkit, &lt;/span&gt;&lt;span lang=EN-US style=""&gt;&lt;a href="http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx" target="_blank"&gt;http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx&lt;/a&gt;&lt;/span&gt;&lt;span lang=EN-US style=""&gt;&lt;/span&gt; &lt;p&gt;[2] Ejemplo de código de Reglas, &lt;a href="http://desarrollo.datco.cl/materialpublico/Test2_Reglas.zip" target="_blank"&gt;http://desarrollo.datco.cl/materialpublico/Test2_Reglas.zip&lt;/a&gt; &lt;p&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Windows+Workflow+Foundation%2c+Rule+Engine+III&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2537.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2537.entry</guid><pubDate>Thu, 13 Sep 2007 17:05:09 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2537/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2537.entry#comment</wfw:comment><dcterms:modified>2007-09-13T17:05:09Z</dcterms:modified></item><item><title>Windows Workflow Foundation, Rule Engine II</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2521.entry</link><description>&lt;h1&gt;Introducción&lt;/h1&gt; &lt;p&gt;Siguiendo con esta secuencia de POST orientados a tratar de explicar cómo funciona el motor de Reglas de &lt;strong&gt;Windows Workflow Foundation&lt;/strong&gt;. En el primer &lt;a title="Windows Workflow Foundation, Rule Engine I" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2497.entry" target="_blank"&gt;POST&lt;/a&gt; tenemos se explica cómo funcionan la evaluación de reglas de un &lt;strong&gt;RulesSet&lt;/strong&gt; y cómo se re evalúan por defecto. &lt;p&gt;En este pequeño POST trataré de explicar cómo se puede controlar la ejecución de reglas atómicas del RuleSet sin dependencia entre ellas. La idea es que en algunos escenarios complejos, quien escribe las reglas necesita tener mayor control sobre el comportamiento de las re evaluaciones, específicamente limitar la cantidad de reevaluaciones. Con esto se busca evitar loops infinitos, resultados erróneos por iteraciones de las reglas y algo no menor, mejorar el desempeño. &lt;h1&gt;Control de dependencias de Reglas (Forward Chaining Control)&lt;/h1&gt; &lt;p&gt;En nivel de control que permite Windows Workflow Foundation se puede configurar en dos puntos: &lt;ul&gt; &lt;li&gt;Conjunto de Reglas (&lt;strong&gt;RuleSet&lt;/strong&gt;): con la propiedad &lt;strong&gt;Chaining Behavior&lt;/strong&gt;. &lt;li&gt;En cada Regla (&lt;strong&gt;Rule&lt;/strong&gt;): con la propiedad &lt;strong&gt;Reevaluation Behaivor&lt;/strong&gt;.&lt;/ul&gt; &lt;h2&gt;Chaining Behavior&lt;/h2&gt; &lt;p&gt;Esta propiedad actua a nivel de RuleSet, y tiene las siguientes tres posibilidades: &lt;p&gt;1. &lt;strong&gt;Full Chaining&lt;/strong&gt;: este es el comportamiento por defecto que está descrito en el primero post de esta serie. Pueden verlo &lt;a title="Windows Workflow Foundation, Rules Engine I" href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2497.entry" target="_blank"&gt;aquí&lt;/a&gt;. &lt;p&gt;2. &lt;strong&gt;Explicit Update Only&lt;/strong&gt;: está opción deshabilita las dependencias implícitas y por atributos, dejando la posibilidad solo a las explicitas declaradas usando &lt;strong&gt;&lt;font color="#ff0000"&gt;Update&lt;/font&gt;&lt;/strong&gt;. &lt;p&gt;Un ejemplo sería con el RuleSet del código 1 y los métodos del código 2 utilizando &lt;strong&gt;Chaining Behavior&lt;/strong&gt; con el valor por defecto &lt;strong&gt;Full Chaining&lt;/strong&gt; el valor de salida de las variables A, B, C, D y E son 15, 5, 5, 2 y 7 respectivamente. &lt;p&gt;Ahora si se cambia la propiedad &lt;strong&gt;Chaining Behavior&lt;/strong&gt; a &lt;strong&gt;&lt;font color="#ff0000"&gt;Explicit Update Only&lt;/font&gt;&lt;/strong&gt;, el resultado cambia a 15, 0, 5, 2, 0. Esto ocurre porque en este modo de se ignoran las dependencias declaradas como atributos.  &lt;p&gt; &lt;table style="border-right:medium none;border-top:medium none;margin-left:0.25in;border-left:medium none;border-bottom:medium none;border-collapse:collapse" cellspacing=0 cellpadding=0 border=1&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border-right:#00b050 1pt solid;padding-right:5.4pt;border-top:#00b050 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:#00b050 1pt solid;width:475pt;padding-top:0in;border-bottom:#00b050 1pt solid" valign=top width=633&gt; &lt;ul&gt; &lt;li&gt; &lt;div&gt;&lt;span lang=EN-US style=""&gt;Regla_1: IF this.B == 5 THEN this.CambiarE(7) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div&gt;&lt;span lang=EN-US style=""&gt;&lt;/span&gt;&lt;span lang=EN-US style=""&gt;Regla_2: IF this.D == 2 THEN this.CambiarA(15) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div&gt;&lt;span lang=EN-US style=""&gt;&lt;/span&gt;&lt;span lang=EN-US style=""&gt;Regla_3: IF this.C == 15 THEN this.CambiarB(10) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div&gt;&lt;span lang=EN-US style=""&gt;Regla_4: IF this.A == 15 THEN this.CambiarB(5) &lt;/span&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Código 1 &lt;p&gt;  &lt;table style="border-right:medium none;border-top:medium none;margin-left:0.25in;border-left:medium none;border-bottom:medium none;border-collapse:collapse" cellspacing=0 cellpadding=0 border=1&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border-right:#00b050 1pt solid;padding-right:5.4pt;border-top:#00b050 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:#00b050 1pt solid;width:6.4in;padding-top:0in;border-bottom:#00b050 1pt solid" valign=top width=614&gt; &lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; A = 0;&lt;/span&gt; &lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; B = 0;&lt;/span&gt; &lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; C = 5;&lt;/span&gt; &lt;p&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; D = 2;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; E = 0;&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;//Omitido el resto del código....Ver el proyecto de ejemplo&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;)]&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarB(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor)&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.B = valor;&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;)]&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarA(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor)&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.A = valor;&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;E&amp;quot;&lt;/span&gt;)]&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;private&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarE(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor)&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.E = valor;&lt;/span&gt; &lt;p style="margin:0in 0in 0pt;line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt;&lt;span lang=EN-US style=""&gt;&lt;/span&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Código 2 &lt;p&gt;Para poder obtener el mismo comportamiento que en la primera prueba tenemos que cambiar el RueSet a lo mostrado en el código 3. &lt;p&gt; &lt;strong&gt;&lt;/strong&gt; &lt;table style="border-right:medium none;border-top:medium none;margin-left:0.25in;border-left:medium none;border-bottom:medium none;border-collapse:collapse" cellspacing=0 cellpadding=0 border=1&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border-right:#00b050 1pt solid;padding-right:5.4pt;border-top:#00b050 1pt solid;padding-left:5.4pt;padding-bottom:0in;border-left:#00b050 1pt solid;width:475pt;padding-top:0in;border-bottom:#00b050 1pt solid" valign=top width=633&gt; &lt;ul&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style=""&gt;Regla_1: IF this.B == 5 THEN this.CambiarE(7) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style=""&gt;Regla_2: IF this.D == 2 THEN this.CambiarA(15) Update(&amp;quot;this/A&amp;quot;) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin-bottom:0pt;line-height:normal"&gt;&lt;span lang=EN-US style=""&gt;Regla_3: IF this.C == 15 THEN this.CambiarB(10) &lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin:0in 0in 0pt;line-height:normal"&gt;&lt;span lang=EN-US style=""&gt;Regla_4: IF this.A == 15 THEN this.CambiarB(5)&lt;/span&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Código 3 &lt;p&gt;Al poner la dependencia de forma explícita entonces el motor de reglas cuando evalúa la regla 2, re evalúa a regla 4. El resultado obtenido es 15, 5, 5, 2 y 7 respectivamente. &lt;p&gt;3. &lt;strong&gt;Sequiencial&lt;/strong&gt;: esta es la opción final y lo que hace es forzar a que el motor realice las evaluaciones en un orden línea estricto, es decir no re evalúa las dependencias. &lt;p&gt;Si al ejemplo anterior, le cambiamos el valor a &lt;strong&gt;&lt;font color="#ff0000"&gt;Secuencial&lt;/font&gt;&lt;/strong&gt;, entonces obtenemos el resultado 15, 0 ,5, 2 y 0 porque no hay re evaluación de la Regla 4 &lt;p&gt;  &lt;h2&gt;Reevaluation Behavior Property&lt;/h2&gt; &lt;p&gt;Está propiedad se aplica a&lt;span style=""&gt;  &lt;/span&gt;nivel de Reglas y permite la re evaluación o no de la regla. Los valore posibles son: &lt;ul&gt; &lt;li&gt; &lt;div style="text-indent:-0.25in"&gt;&lt;span style="font-family:symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;Always&lt;/b&gt;: es el &lt;span style=""&gt; &lt;/span&gt;comportamiento descrito hasta ahora y el que viene por defecto.&lt;/div&gt; &lt;li&gt; &lt;div style="text-indent:-0.25in"&gt;&lt;span style="font-family:symbol"&gt;&lt;span style=""&gt;·&lt;span style="font:7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;Never:&lt;/b&gt; al marcar una regla con Never está ejecutará las acciones THEN o ELSE sólo una vez según corresponda.&lt;b style=""&gt;&lt;/b&gt;&lt;/div&gt;&lt;/ul&gt; &lt;p&gt;En el ejemplo anterior, si la Regla 4 es marcada con &lt;b style=""&gt;Never&lt;/b&gt; entonces los valores de salida con 15, 0, 5, 2 y 0 porque la Regla 4 no se re evaluó. &lt;h2&gt;Función Halt&lt;/h2&gt; &lt;p&gt;Está función es muy interesante porque permite controlar la ejecución de dependencias entre reglas relacionadas. Al incluir &lt;b style=""&gt;Halt&lt;/b&gt; en la acción THEN o ELSE, entonces el &lt;b style=""&gt;RuleSet&lt;/b&gt; retorna de manera inmediata el control al código que lo invocó. &lt;p&gt;Con lo expuesto en este POST más el primer POST de RULE ENGINE ya se puede echar a volar la imaginación y buscar las aplicaciones prácticas de está tecnología. Yo ya la uso en proyectos Reales. &lt;p&gt;Espero seguir con otro Post (esto solo es una expresión de deseo) que muestra otros aspectos de Rules Engine de Windows Workflow Foundation. &lt;p&gt;EL código fuente del ejemplo mostrado se puede descargar desde &lt;a title="Codigo del ejemplo" href="http://desarrollo.datco.cl/materialpublico/Test2_Reglas.zip" target="_blank"&gt;aquí&lt;/a&gt;. &lt;p&gt;Salu2&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Windows+Workflow+Foundation%2c+Rule+Engine+II&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2521.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2521.entry</guid><pubDate>Fri, 07 Sep 2007 22:19:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2521/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2521.entry#comment</wfw:comment><dcterms:modified>2007-09-07T22:25:47Z</dcterms:modified></item><item><title>Windows Workflow Foundation, Rule Engine I</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2497.entry</link><description>&lt;h1&gt;Introducción &lt;/h1&gt; &lt;p&gt;La tecnología DotNet Framework 3.0 tiene un componente para implementar Workflow's[0] llamado Windows Workflow Foundation [1]. Este no es un producto de Workflow sino un motor de workflow más herramientas para los desarrolladores para que construyan sus propias soluciones de Workflow.  &lt;p&gt;Dentro de las cosas más interesantes que veo en WF se encuentra su motor de Reglas de negocio (Rule Engine)[2].  &lt;p&gt;Rules Engine permite hacer desde evaluación de condiciones lógicas hasta la definición y evaluación de complejas reglas que conforman políticas. En este post voy a tratar de explicar cómo se implementan esas políticas y cómo podemos usarlas en nuestros Worklows.  &lt;p&gt;Lo primero que hay que entender es que las políticas son definidas por un conjunto de reglas semánticas llamado RuleSet. Estas reglas son del estilo If/Then/Else. Para poder invocar desde un Workflow la evaluación de un RuleSet se usa la actividad &lt;strong&gt;Policy&lt;/strong&gt;[3].  &lt;h1&gt;Procedimiento de evaluación de las Reglas &lt;/h1&gt; &lt;p&gt;Las Reglas que componen un RuleSet tienen una propiedad llamada &lt;strong&gt;Priority&lt;/strong&gt;, que permite asignarle una prioridad a cada regla. El procedimiento de Evaluación del RuleSet es el siguiente:  &lt;ol&gt; &lt;li&gt;La regla de &lt;strong&gt;mayor&lt;/strong&gt; prioridad se evalúa y ejecuta la acción del Then o Else.  &lt;li&gt;Si la acción (Then o Else) cambia el valor de un campo o propiedad que es usado por una regla anterior en la lista de reglas, esa regla afectada por el cambio se re evalúa.  &lt;li&gt;La siguiente regla de la lista se evalúa y ejecuta la acción del Then o Else. &lt;/ol&gt; &lt;p&gt;Veamos el siguiente ejemplo. Tenemos un Workflow sencillo de 3 Actividades, el que se muestra en la imagen 1. La primera actividad muestra los valores de las variables A, B, C, D, E en la consola. La segunda actividad es una Política que tiene 4 reglas que están priorizadas y la última muestra los valores después de aplicar el RuleSet de reglas.  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dvlt2exbtRCO1lYDSlbu_jx6_aU9PYPchVb49i2Ptm4aEtYbI-65TMhA1tTfysZDC4" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=157 alt="Ejemplo de dependencia implicita" src="http://by1.storage.msn.com/y1pEbp1yuGPmyJgKAqrUT0YKAeTW6YOoIDjJ-HpbTp9HZbXVPL_Uu_sx36GIMAvBmp5Wgjenwx0cDcjNZUtJOwAEcrI_vRFaQ6M" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt; &lt;p&gt;Imagen 1: Workflow de Ejemplo y RuleSet.  &lt;p&gt;El RuleSet se ve en la imagen 1. Las reglas se ejecutan desde la mayor prioridad (4) hasta la menor (1). El proceso en que se ejecutan las reglas es el siguiente:  &lt;ol&gt; &lt;li&gt;Regla_4: Falso  &lt;li&gt;Regla_3: Verdadero entonces B = 10.  &lt;li&gt; &lt;div&gt;Regla_2: Verdadero entonces A=15. &lt;/div&gt; &lt;ol&gt; &lt;li&gt;Como cambio A la Regla_4 se re evalua. Regla_4: Verdadero entonces B=5. &lt;/ol&gt; &lt;li&gt;Regla_1: Verdadero entonces E=7. &lt;/ol&gt; &lt;p&gt;Quedando cuando se ejecutan los valores mostrados en la imagen 2 en color Rojo.  &lt;p&gt; &lt;p&gt;&lt;a href="http://by1.storage.msn.com/y1pEbp1yuGPmyKf-17rKv_MQ_UaNlNviHi_uGuLXzMruJk1AS7v8G-Qn94EDZod2Pnyhf95ZvuJzerpR1nFqKFw0u_q8-l9Z3dl" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=158 alt="Resultados dependencia implicita" src="http://by1.storage.msn.com/y1pEbp1yuGPmyI40U2--0eWgP_yXb1PmMZcnCftnTCDUv3491xIisxkMqtIQ8eE8iUmCZS9U-HmVQzO7Fs71aiiP0o5w9fYhpxd" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt;Imagen 2: resultados.  &lt;p&gt;Las dependencias entre las reglas son identificadas de tres maneras por el Rules Engine:  &lt;ol&gt; &lt;li&gt; &lt;div&gt;&lt;strong&gt;Dependencia implícita&lt;/strong&gt;. &lt;/div&gt; &lt;p&gt;Este tipo de dependencia es la que vimos en el ejemplo 1, donde las acciones cambian valores que se usan en otras reglas.   &lt;li&gt; &lt;div&gt;&lt;strong&gt;Dependencia por atributos&lt;/strong&gt;. &lt;/div&gt; &lt;p&gt;La dependencia por atributos es usado en reglas que llaman a métodos en el Workflow. Como llama a un método no tiene como deducir implícitamente que reglas debe ReEvaluar. Para usar este tipo de dependencia se debe usar uno de estos tres atributos en el método:&lt;/ol&gt; &lt;ul style="margin-left:54pt"&gt; &lt;li&gt;RuleRead: Este quiere decir que el método lee un valor usado en el RuleSet  &lt;li&gt;RuleWrite: Este atributo indica que en ese método el valor indicado es modificado.  &lt;li&gt;RuleInvoke: Este atributo le indica al motor que el método llama a otro método. &lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Veamos un ejemplo para que sea más simple de entender. Tenemos un Workflow igual al anterior pero con el RuleSet mostrado en la imagen 3. Las reglas son las mismas que antes, pero en vez de cambiar los valores de las propiedades A,B, C, D y E directamente en la acción de la regla se invoca a un método. &lt;/blockquote&gt; &lt;p style="margin-left:18pt"&gt;El código de cada uno de los métodos invocados desde el RuleSet se muestra en el código 1.  &lt;p style="margin-left:18pt"&gt;Pueden ver en la imagen 4 que el resultado de la evaluación es el mismo que en ejemplo de reglas implícitas porque se hacen los mismos cambios de valores pero en métodos decorados con los atributos que le dan al motor de regla la información necesaria para actuar.  &lt;p style="margin-left:18pt"&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtU8vbqjLWqruO1vtJul6_sbM2_VgYYMEnGGWwHQCSHtwo-GNNRBcHpp-JWqJ_HjtQ" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=158 alt="Dependencia por atributos" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsCfbxXoDCbgwnleUblIeCLY_RB6-4w7FDFFdEqYKbaltYWekGuT-p311BxYCTaT4c" width=240 border=0&gt;&lt;/a&gt;  &lt;p style="margin-left:18pt"&gt; &lt;p style="margin-left:18pt"&gt;Imagen 3  &lt;div style="margin-left:18pt"&gt; &lt;table style="border-collapse:collapse" border=0&gt; &lt;colgroup&gt; &lt;col style="width:614px"&gt; &lt;tbody valign=top&gt; &lt;tr&gt; &lt;td style="border-right:black 0.5pt solid;border-top:black 0.5pt solid;border-left:black 0.5pt solid;border-bottom:black 0.5pt solid"&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;)] &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarB(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.B = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;} &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;)] &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarA(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.A = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;} &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;[RuleWrite(&lt;span style="color:#a31515"&gt;&amp;quot;E&amp;quot;&lt;/span&gt;)] &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarE(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.E = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;}&lt;/span&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;p style="margin-left:18pt"&gt;Código 1.  &lt;ol&gt; &lt;li&gt; &lt;div&gt;&lt;strong&gt;Dependencia Explicita &lt;/strong&gt;&lt;/div&gt; &lt;p&gt;La dependencia explicita se basa e declarar uno mismo los cambios que ocurren al ejecutar una acción. Para ello se usa la instrucción Update de esta forma &lt;strong&gt;Update(&amp;quot;this/A&amp;quot;)&lt;/strong&gt; por ejemplo para indicarle al motor que el valor de la propiedad A cambio.  &lt;p&gt;La única ventaja que he encontrado en la dependencia explicita es que se puede hacer por ejemplo esto &lt;strong&gt;Update(&amp;quot;this/OrdenCompra/*&amp;quot;)&lt;/strong&gt; que le indica al motor que todos los atributos de la orden de compra cambian con esa acción. Esto es notable!!.  &lt;p&gt;El próximo ejemplo se muestra en la imagen 4. Las reglas contienen ahora en la acción la directiva &lt;strong&gt;Update&lt;/strong&gt;. El código de los métodos ya no tiene la directiva &lt;span style="font-size:10pt;font-family:courier new"&gt;RuleWrite&lt;/span&gt;, por lo que el motor se entera del cambio de manera explícita. El código de los métodos de cambio, sin el atributo, se muestra en el código 2.  &lt;p&gt;Por último el resultado sigue siendo el mismo!!! Y se muestra en la imagen 4.  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsmzltYC-KZ0ApcjteteFjfybG8bL_8DJyO99rLfC0_3OJTipaMiy9C_aG_z0ZXW6k" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=158 alt="Dependencia Reglas explicitas" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DvxuQqxuMVEGXaN6YOQE20m-xj9_dowfh8ojPnwj7xoH29dRyJVan6rhTgx9CcdXWA" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt; &lt;p&gt;Imagen 4. &lt;/ol&gt; &lt;div&gt; &lt;table style="border-collapse:collapse" border=0&gt; &lt;colgroup&gt; &lt;col style="width:633px"&gt; &lt;tbody valign=top&gt; &lt;tr&gt; &lt;td style="border-right:black 0.5pt solid;border-top:black 0.5pt solid;border-left:black 0.5pt solid;border-bottom:black 0.5pt solid"&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarB(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.B = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;} &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarA(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.A = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;} &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CambiarE(&lt;span style="color:blue"&gt;int&lt;/span&gt; valor) &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;{ &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;.E = valor; &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:courier new"&gt;}&lt;/span&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;p&gt;Código 2.  &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dvpks2_Ok4CsqFFI2vzQ4QgntrggvKBo6fqb-rk4sQJN0S-whwDIF3Q-wqPKWq672E" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=158 alt="Resultados explicitos" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DvSWb6OOa1ZFmf7IQlbNcJqIFtUDIZsMrzLR9IFQMeEsSAnv4P4w5tv2DcxKlMmCq4" width=240 border=0&gt;&lt;/a&gt;  &lt;p&gt; &lt;p&gt;Imagen 4  &lt;p&gt;El motor de reglas es mucho más potente de lo que se muestra en este POST, espero seguir explicando cómo funciona en una serie de post que quiero hacer sobre Windows Forkflow Foundation Rules Engine.  &lt;p&gt;El código fuente de los ejemplos pueden descargarlos dese este &lt;a href="http://desarrollo.datco.cl/materialpublico/Test2_Reglas.zip" target="_blank"&gt;Link&lt;/a&gt; &lt;p&gt;Salu2  &lt;h1&gt;Referencias &lt;/h1&gt; &lt;p&gt;[0] Sistemas de Workflow, &lt;a href="http://es.wikipedia.org/wiki/Sistemas_de_workflow " target="_blank"&gt;http://es.wikipedia.org/wiki/Sistemas_de_workflow&lt;/a&gt;  &lt;p&gt;[1] Windows Workflow Foundation, &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx " target="_blank"&gt;http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx&lt;/a&gt;  &lt;p&gt;[2] Introduction to the Windows Workflow Foundation Rules Engine, &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480193.aspx " target="_blank"&gt;http://msdn2.microsoft.com/en-us/library/aa480193.aspx&lt;/a&gt;  &lt;p&gt;[3] Introducing Microsoft Windows Workflow Foundation: An Early Look , &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480215.aspx" target="_blank"&gt;http://msdn2.microsoft.com/en-us/library/aa480215.aspx&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Windows+Workflow+Foundation%2c+Rule+Engine+I&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2497.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2497.entry</guid><pubDate>Thu, 06 Sep 2007 01:45:01 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2497/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2497.entry#comment</wfw:comment><dcterms:modified>2007-09-06T02:02:38Z</dcterms:modified></item><item><title>Aproximaciones para manejo  de datos en aplicaciones OCC</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2473.entry</link><description>&lt;p&gt;Los desarrolladores de aplicaciones móviles independiente de la tecnología que utilicen manejan el concepto de computación ocasionalmente conectada (&lt;a href="http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!846.entry" target="_blank"&gt;OCC&lt;/a&gt;). &lt;p&gt;Las aplicaciones OCC tienen que tomar una decisión de arquitectura muy importante para enfrentar este problema: &lt;b&gt;Data-Centric&lt;/b&gt; y &lt;b&gt;Service-Oriented&lt;/b&gt;.  &lt;p&gt;&lt;img height=398 alt="Modelos de tratamiento de datos" src="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dsx8-JW-DEUkiSkNndxRqTafLh83xVGn3W5OEELA_7Yq7IrV8Aet_RN8HDRTX3CXaI" width=417&gt; &lt;p&gt;Las aplicaciones que utilizan la estrategia de Data-Centric tienen una base de datos relacional (&lt;strong&gt;RDBMS&lt;/strong&gt;) en el cliente. Las capacidades de esta base de datos son utilizadas para propagar los cambios en los datos locales al servidor, administrando el proceso de sincronización, detectando y resolviendo los conflictos de datos. &lt;p&gt;La segunda aproximación es utilizar Service-Oriented, que almacena los datos locales en mensajes que son puestos en colas cuando el cliente está fuera de línea. Después que se restablece la conexión esos mensajes son enviados al servidor para ser procesados. &lt;p&gt;A continuación se desarrollan ambas aproximaciones. &lt;h4&gt;&lt;a&gt;&lt;/a&gt; &lt;/h4&gt; &lt;h4&gt;&lt;a&gt;Aproximación Data-Centric&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;Cuando se usa está aproximación, el servidor publica los datos a ser utilizados y los clientes se suscriben a los datos que necesitan, entonces obtienen una copia de los datos que necesitan antes de desconectarse. &lt;p&gt;Mientras la aplicación esta fuera de línea, los cambios son hechos sobre los datos locales mediante la interacción de la aplicación con sus datos locales. &lt;p&gt;Cuando el dispositivo vuelve a conectarse, la base de datos local propaga los cambios realizados a los datos locales. También, los cambios hechos en el servidor central son propagados hacia el cliente. &lt;p&gt;Cualquier conflicto ocurrido durante la fase de unión de los datos es manejado por el motor de resolución de conflictos, en base a reglas. Estas reglas son implementadas tanto en el servidor como en el cliente, de acuerdo a las propias reglas de negocio de la aplicación. &lt;p&gt;El proceso de fusión (Merge) de los cambios en los datos es conocido cómo &lt;b&gt;Merge Replication&lt;/b&gt;. Los cambios pueden ocurrir de manera autónoma tanto el servidor como en el cliente, por esto no se utilizan transacciones ACID. En vez de una transacción, cuando se realiza el merge, todos los suscriptores recibirán el dato cambiado en el publicador. &lt;p&gt;La principal ventaja de usar esta aproximación es que todo el seguimiento de los cambios está contenido dentro de las funcionalidades de la base de datos. Generalmente, la base de datos incluye código para detectar conflictos de datos a nivel de filas y columnas a nivel de base de datos, códigos de validación y restricciones del dato. En este sentido el único trabajo que se debe hacer es armar el esquema de replicación para la aplicación móvil que optimice la resolución de conflictos y actualización de datos. &lt;p&gt;En este modelo, la sincronización de los datos es responsabilidad del motor de datos, por lo tanto, no es necesario codificar funcionalidades para ello. Se define que tablas son las que necesitan ser sincronizadas y el motor de datos se encarga de llevar el rastro de los datos, sincronizarlos y resolver conflictos. En este punto, la resolución de conflictos, si los criterios que vienen no son suficientes, pueden extenderse utilizando código. &lt;p&gt;Por otra parte, al existir una base de datos central, después que los clientes sincronizan los datos, se puede asegurar la convergencia de los datos es completa. &lt;p&gt;Las desventajas que aparecen al usar este modelo son las siguientes: &lt;ul&gt; &lt;li&gt; No puede ser usado en dispositivos son base de datos. &lt;li&gt; El deploy de las aplicaciones es cliente por cliente, por la configuración de la base de datos. &lt;li&gt; El deploy debe ser hecho por un administrador del cliente. &lt;li&gt; Cambios en el esquema de la base de datos central afectan todos los clientes. &lt;li&gt; Está atada a un motor de datos. &lt;li&gt; Si ningún criterio de resolución de conflictos resuelve el problema, este debe ser solucionado por el administrador.&lt;/ul&gt; &lt;p&gt;Los escenarios recomendados para usar esta aproximación son: &lt;ul&gt; &lt;li&gt;Se controlan los dispositivos clientes para la instalación de la DB. &lt;li&gt;No se requiere interactuar con múltiples bases de datos.&lt;/ul&gt; &lt;p&gt;Ø Se puede sincronizar utilizando HPPTS, VPN o la LAN. &lt;p&gt;  &lt;h4&gt;&lt;a&gt;&lt;/a&gt;&lt;a&gt;Aproximación Service-Oriented&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;Con esta aproximación, los clientes interactúan con el servidor central consumiendo servicios a través de mensajes definidos. Pueden tener o no un cache de datos local. La ventaja es que no se necesita una base de datos local instalada en el cliente. Esto significa que está aproximación puede ser aplicada a muchos tipos de dispositivos sin las restricciones del uso de un motor de base de datos local. &lt;p&gt;El uso de está aproximación de servicios es particularmente apropiada cuando las aplicaciones deben operar en ambientes como Internet y Extranet. Esto porque es posible habilitar en el firewall la entrada de las peticiones de los clientes, por ejemplo Web Service. &lt;p&gt;El uso de servicios permite mantener bajo acoplamiento, lo que significa que puede interactuar con diferentes esquemas de base de datos. &lt;p&gt;La principal desventaja de está aproximación es que es responsabilidad del constructor del sistema codificar toda la funcionalidad que guarda relación con el modelo transaccional de Store and Forware de mensajes, como también implementar la contención de transacciones cuando el cliente está fuera de línea. &lt;p&gt;El uso de una aproximación de servicios se desempeña mejor en escenarios en los que la aplicación necesita interactuar con muchos servicios diferentes, provistos por diferentes servidores. Se comporta muy bien con múltiples trasportes, ya que es independiente el mensaje al trasporte usado. Por ejemplo un trasporte es Web Services. &lt;p&gt;Los escenarios recomendados para usar esta aproximación son: &lt;ul&gt; &lt;li&gt; Se quiere una solución desacoplada del cliente y servidor. &lt;li&gt; Se quiere tener todo el control y flexibilidad sobre la conciliación de los datos. &lt;li&gt; Se tiene experiencia en desarrollo de software de infraestructura. &lt;li&gt; Se requiere un cliente liviano. &lt;li&gt; Existe una arquitectura SOA en la organización dónde instalar el sistema. &lt;li&gt; Se requiere funcionalidad específica de negocio, la cual se encuentra en el Back-End. &lt;li&gt; Se requiere flexibilidad en los esquemas de bases de datos del servidor. &lt;li&gt; La aplicación opera en Extranet o Internet.&lt;/ul&gt; &lt;p&gt;Si se quiere desarrollar aplicaciones OCC utilizando una orientación de servicios se deben considerar los siguientes puntos principales: &lt;ul&gt; &lt;li&gt;Uso de mensajería asíncrona preferentemente. &lt;li&gt;Administrar la interacción con la red. &lt;li&gt;Data Caching. &lt;li&gt;Implementación del mecanismo Store and Forward. &lt;li&gt;Administrar los datos y las reglas de negocio para solucionar conflictos de datos.&lt;/ul&gt; &lt;h4&gt;&lt;a&gt;Referencias &lt;/a&gt;&lt;/h4&gt; &lt;p&gt;[1] &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=8ec600bd-a2e5-44ac-9a8f-68d06361853e&amp;amp;displaylang=en" target="_blank"&gt;Smart Client Architecture and Design Guide&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Aproximaciones+para+manejo++de+datos+en+aplicaciones+OCC&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2473.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2473.entry</guid><pubDate>Fri, 31 Aug 2007 03:21:21 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2473/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2473.entry#comment</wfw:comment><dcterms:modified>2007-08-31T03:21:21Z</dcterms:modified></item><item><title>SOA REPORT 2007: Service-Oriented Architecture Graduates to the Enterprise.</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2465.entry</link><description>&lt;p&gt;Este es un informe que hizo InfoWorld en julio del 2007, recién salido del horno para el público general. &lt;p&gt;Lo he revisado y tiene interesantes resultados, alguno de los cuales comparto aquí. &lt;p&gt;Por supuesto mejor lo consiguen y leen completo ustedes mismos para evitar interpretaciones equivocadas de los cuadros que les comparto ;) &lt;p&gt;salu2 &lt;p&gt;  &lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=456 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4Dt0oey58TnYqLCjlhRb6XXM6JbItuyKubQv-jJvvGhcIE29Pt8xA61mUqkDPZBHk9s" width=552 border=0&gt; &lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=327 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DsC0uNYuNF6T2zQIR9MS_6r5K-Ro70eQf2Eia5ABl159YEjsKgq4BkEIr6rMd81150" width=551 border=0&gt;  &lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=274 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4DtyE4c8i0rsU9IyRckTOdZFCynJ-7bQvh7-PSxpbxLc4ziPC8pdypYki2S1M1ghsXk" width=552 border=0&gt;  &lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=195 alt=image src="http://byfiles.storage.msn.com/y1p4ztv0kRO4Du-qZH2XJcICyRIVekhO62z0KbiLj643mL88Fn4j2404MqSaPORudQ47_b4RvKpXCs" width=280 border=0&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+SOA+REPORT+2007%3a+Service-Oriented+Architecture+Graduates+to+the+Enterprise.&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2465.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2465.entry</guid><pubDate>Fri, 24 Aug 2007 15:00:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2465/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2465.entry#comment</wfw:comment><dcterms:modified>2007-08-24T15:00:42Z</dcterms:modified></item><item><title>BizTalkLATAM's Blog : ¿Donde guardo mis parámetros de configuración?</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2460.entry</link><description>&lt;p&gt;En este link hay un muy buen POST de como alamcenar información de configuración para aplicaciones BizTalk.  &lt;p&gt;&lt;a href="http://blogs.msdn.com/biztalklatam/archive/2005/11/24/496720.aspx" target="_blank"&gt;BizTalkLATAM's Blog : ¿Donde guardo mis parámetros de configuración?&lt;/a&gt;  &lt;p&gt;salu2&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+BizTalkLATAM's+Blog+%3a+%c2%bfDonde+guardo+mis+par%c3%a1metros+de+configuraci%c3%b3n%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2460.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2460.entry</guid><pubDate>Wed, 22 Aug 2007 20:19:40 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2460/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2460.entry#comment</wfw:comment><dcterms:modified>2007-10-28T15:30:19Z</dcterms:modified></item><item><title>Visual Studio Plugin Now Available Globally | BlackBerry Developer Community</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2448.entry</link><description>&lt;p&gt;Por fin se liberó a nivel mundial el Plug-in de BlackBerry para Visual Studio .NET. Este permite generar aplicaciones para BlackBerry. &lt;p&gt;Se puede descargar del siguiente Link: &lt;p&gt;&lt;a href="http://blackberry.developercommunity.com/node/340" target="_blank"&gt;Visual Studio Plugin Now Available Globally | BlackBerry Developer Community&lt;/a&gt;  &lt;p&gt;Yo ya tengo el mio funcionando!!!!!  ;) &lt;p&gt;&lt;img height=97 alt="" src="http://blackberry.developercommunity.com/files/images/VSplugin.jpg" width=100 align=left border=0&gt; &lt;p&gt;  &lt;p&gt;  &lt;p&gt;  &lt;p&gt;  &lt;p&gt;salu2&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Visual+Studio+Plugin+Now+Available+Globally+%7c+BlackBerry+Developer+Community&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2448.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2448.entry</guid><pubDate>Fri, 17 Aug 2007 20:50:39 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2448/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2448.entry#comment</wfw:comment><dcterms:modified>2007-08-22T12:13:01Z</dcterms:modified></item><item><title>Comparación de desempeño entre .NET 3.0 e IBM WebSphere 6.1 Application Server</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2414.entry</link><description>&lt;p&gt;Este documento muestra una completa comparación hecha entre dos aplicaciones que tienen la misma funcionalidad. Una de estas aplicaciones está implementada en .NET (.NET StockTrader) versus otra hecha en IBM WebSphere (Trade 6.1 performance sample). 
&lt;p&gt;Este documento contiene la comparación de desempeño en diferentes configuraciones de las aplicaciones, incluyendo el desempeño de los Web Services, desempeño de la mensajería, etc.
&lt;p&gt;El documento incluye todos los parámetros de sintonía y detalles de pruebas con la idea que uno pueda repetirla las pruebas para así corroborar los sorprendentes resultados que presenta el informe.
&lt;p&gt;EL informe pueden descárgalo desde &lt;a href="http://go.microsoft.com/?linkid=6895275" title=".NET StockTrader Technical Overview" target="_blank"&gt;aquí&lt;/a&gt;
	&lt;p&gt;Ahora, para los Developer como yo, les paso el el link desde donde pueden descargar la aplicación .NET 3.0 &lt;a href="http://go.microsoft.com/?linkid=7178091" target="_blank"&gt;StockTrader&lt;/a&gt;
	&lt;p&gt;Salu2&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Comparaci%c3%b3n+de+desempe%c3%b1o+entre+.NET+3.0+e+IBM+WebSphere+6.1+Application+Server&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2414.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2414.entry</guid><pubDate>Wed, 01 Aug 2007 16:58:00 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2414/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2414.entry#comment</wfw:comment><dcterms:modified>2007-08-01T16:58:00Z</dcterms:modified></item><item><title>Windows Live Writer, dejó de ser BEta</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2400.entry</link><description>&lt;p&gt;Por fin salio la versión final del editor de Post, para los que le gusta escribir en Blogs está muy bueno. &lt;p&gt;Yo lo estoy usando para escribir este POST. &lt;p&gt;Dentro de las funcionalidades nuevas que trae están: &lt;ol&gt; &lt;li&gt;Poder dar una fecha de publicación. &lt;li&gt;Manejo de Plugin como por ejemplo para copiar código desde Visual Studio formateado. &lt;li&gt;Manejo de Glosario :O muy cool para quien postea puros acrónimos como ESB, WS, FIFO, LIFO, etc.... &lt;li&gt;Mejora en la inserción de link's&lt;/ol&gt; &lt;p&gt;Que lo disfruten, se puede descargar for free desde &lt;a href="http://g.live.com/0saes_cl/50" target="_blank"&gt;Aquí&lt;/a&gt; &lt;p&gt;salu2 &lt;p&gt;&lt;a href="http://by1.storage.msn.com/y1pJonp_5aVRv5A9vgAHr6bDGMxI8w49FfOA3W-wFeWIv-WXvWGkW_vY2KV47GhD1K8YFczp-nnL5khb_svNg2wjFXR-r6r72lX" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=180 alt="El editor :)" src="http://by1.storage.msn.com/y1pJonp_5aVRv4ZJN-0FG2M_Ui6avGFpBkoF6HEQhHn_VRKJga9NBaQW2zWOmakTpVvld6baMzh8Pmlmy66cjPXCzSmo8WH2-hf" width=240 border=0&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Windows+Live+Writer%2c+dej%c3%b3+de+ser+BEta&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2400.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2400.entry</guid><pubDate>Fri, 20 Jul 2007 22:52:10 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2400/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2400.entry#comment</wfw:comment><dcterms:modified>2007-07-20T23:06:57Z</dcterms:modified></item><item><title>Pipe and Filter, simple y útil.</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2267.entry</link><description>&lt;p&gt;Para un proyecto necesitamos hacer un &lt;strong&gt;Middleware&lt;/strong&gt;. Este Middleware consume servicios del BackOffice del cliente, pero no es solo un catalogo de servicios sino que debe actuar como intermediario entre el cliente y los servicios. 
&lt;p&gt;Para implementar esta maravilla se me ocurrió mirar el patrón de diseño &lt;strong&gt;Pipe And Filter&lt;/strong&gt;, después de leer con atención me dije que esto podía hacerse extremadamente simple y quedar muy útil. 
&lt;p&gt;Entonces en unas 2,5 horas hice el ejemplo que incluyo en este POST. Este es un ejemplo para mostrarlo a los otros Developer del equipo por lo que deben perdonarme algunas barbaridades en la escritura del código, no es un ejemplo de buenas prácticas de codificación. 
&lt;p&gt;Aclarado eso, vamos al grano!! 
&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;Descripción del Patrón &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;Lo primero es entender el patrón Pipe and Filter. Este patrón se refiere a una cadena de &lt;strong&gt;filtros&lt;/strong&gt; por los cuales pasa un mensaje (&lt;strong&gt;Contexto&lt;/strong&gt;), desde el inicio al final. Cada uno de los filtros tiene acceso al contexto tanto de lectura como de escritura. Quien controla el armado y ejecución del Pipe es un &lt;strong&gt;Controlador&lt;/strong&gt;. Este controlador lee de la configuración cuales son los filtros y su orden, los carga y le pasa el contexto al primero. Cuando el primero ejecuta le regresa el control al Controlador para que tome el Contexto y se lo pase al siguiente filtro. 
&lt;p&gt;  &lt;img src="http://byfiles.storage.msn.com/y1p5g7Hkee47P3EwNGN8Oz-xaxpgergoZczH50ZOrujJc7SDT8XJRpabTCKVY4tDjoT"&gt; 
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Diagrama 1: Pipe And Filter&lt;/strong&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;Contexto&lt;/strong&gt;&lt;/span&gt; 
&lt;p&gt;El contexto es lo que se comparte entre los filtros. Los filtros tienen que compartir un método de ejecución, es este método el que ejecuta el Controlador para que el filtro se active. La siguiente clase es un ejemplo de una implementación de una clase Contexto. 
&lt;p&gt;&lt;img src="http://byfiles.storage.msn.com/y1p5g7Hkee47P1L4sGHSx-I3H_ZFdfmU0IeK8VM9XAWXjRmVrLtXvmoIFLvH_uyTxPJ"&gt;  
&lt;p&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Diagrama 2: Clase Contextooperaciones &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;  
&lt;p&gt;EL siguiente código muestra la implementación de de la clase contexto. Este contexto es el que se irá traspasando de filtro en filtro para ser usado en la lógica que implementa cada filtro. Aparte de los dos operadores, que se usaran como argumentos en cada filtro, tiene una lista de respuestas dónde almacenará la respuesta de cada uno de los filtros. Así al terminar la ejecución del Pipe se contará con los resultados de cada filtro en la lista. 
&lt;p&gt;  
&lt;p align=center&gt;&lt;a href="http://desarrollo.datco.cl/MaterialPublico/pipeandfilter/codigo1Contexto.htm"&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Código 1: Clase Contextooperaciones &lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;  
&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;Filtro &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;Los filtros componen el Pipe. La idea de los filtros es que expongan un método que los acciones (los ponga a trabajar) y que cuando terminen de ejecutar ese método regresen el Contexto al Controlador del Pipe. En el siguiente diagrama se muestran cuatro filtros los cuales exponen el método interceptar como iniciador del trabajo del filtro. 
&lt;p&gt;&lt;img src="http://byfiles.storage.msn.com/y1p5g7Hkee47P2UPVSQDpaJjOtGfrfD3ohaLxrFNGkU09G2YJRR2ycltumSHgb5O8II"&gt; 
&lt;p&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Diagrama 3: Clases que implementan filtros &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;El método que los acciona es Interceptar (muy creativo el nombre) el cual recibe el contexto, ejecuta la lógica programada en el filtro y deja el contexto en la propiedad miNuevoContexto para que el controlador del Pipe pueda tomarlo. 
&lt;p&gt;El siguiente código muestra la implementación del filtro. Este filtro lo que hace es sumar dos números que lee del contexto y guardar el resultado en una lista de resultados. Esa lista contendrá el resultado de todas las operaciones realizadas en el Pipe, esto es posible porque la lista de resultados está en el contexto y no el filtro. 
&lt;p align=center&gt;&lt;a href="http://desarrollo.datco.cl/MaterialPublico/pipeandfilter/codigo2Filtro.htm"&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Código 2: Clase FiltroSuma &lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;Controlador&lt;/strong&gt;&lt;/span&gt; 
&lt;p&gt;El controlador es el director de orquesta de este patrón, toma desde la configuración cuales son los filtros que debe cargar y en qué orden. Cuando inicia la ejecución utiliza el contexto y se lo entrega al primer filtro ejecutando su método para gatillar la lógica del filtro. En el ejemplo anterior el método Interceptar. 
&lt;p&gt;&lt;img src="http://byfiles.storage.msn.com/y1p5g7Hkee47P20ShhoJhHmoFlYSVnaIdZXPZjRfSDlm6tC9W53Z8tcstJz8DKbLZY7"&gt; 
&lt;p&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Diagrama 4: Controlador &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;  
&lt;p&gt;En el siguiente código se muestra la clase PipeManager, que es el controlador del Pipe. LA instanciarse la clase, se le pasa la configuración XML que contiene los filtros a ser cargados. Una Vez cargados los filtros, el Pipe está listo para ser ejecutado. 
&lt;p&gt;Para poner en acción el Pipe es necesario llamar al método Ejecutar pasándolo el contexto inicial como argumento. Opcionalmente hay un parámetro de la ejecución que se llama ExceptionForward. Este segundo parámetro especifica cómo se comporta el Pipe si hay una excepción en alguno de los filtros. Puede comportarse de dos maneras ante una excepción: detenerse o guardar en el log y avanzar. &lt;a href="http://desarrollo.datco.cl/MaterialPublico/pipeandfilter/codigo2Controlador.htm"&gt;
&lt;p align=center&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Código 3: Clase PipeManager &lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;Programa para probar el código &lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;Para probar la implementación hice una aplicación de consola que instancia el controlador pasándole la ruta del archivo XML que contiene la configuración de los filtros. Paso dos, crea el contexto inicial. Luego comienza un loop en el que pide ingresar los dos operadores, los carga en el contexto y ejecuta el Pipe. 
&lt;p align=center&gt;&lt;a href="http://desarrollo.datco.cl/MaterialPublico/pipeandfilter/codigo4Programa.htm"&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Código 4: Clase Program &lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Configuracion XML &lt;/u&gt;&lt;/strong&gt;
&lt;p&gt;La configuración XML se muestra en el siguiente archivo XML. 
&lt;p align=center&gt;&lt;a href="http://desarrollo.datco.cl/MaterialPublico/pipeandfilter/codigo5Xml.htm"&gt;&lt;span style="font-size:9pt;color:#4f81bd"&gt;&lt;strong&gt;Código 5: Xml configuración &lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;  
&lt;p&gt;Los códigos de este ejemplo los pueden descargar &lt;a href="http://desarrollo.datco.cl/materialpublico/PruebasConceptoMM.rar"&gt;aquí&lt;/a&gt;. 
&lt;p&gt;  
&lt;p&gt;Salu2  &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Pipe+and+Filter%2c+simple+y+%c3%batil.&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2267.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2267.entry</guid><pubDate>Thu, 28 Jun 2007 00:15:57 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2267/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2267.entry#comment</wfw:comment><dcterms:modified>2007-06-28T16:56:25Z</dcterms:modified></item><item><title>Entendiendo la administración de SOA</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2249.entry</link><description>&lt;p&gt;He aquí un excelente artículo sobre administración de SOA (SOA Management) escrito por Dain Hansen para BEA.
&lt;p&gt;El aspecto de administración es crítico para el éxito de las iniciativas de SOA. Para lograr cumplir con la promesa de lograr agilidad usando SOA no solo es necesario una solida tecnología de servicios sino administrarla de manera efectiva. 
&lt;p&gt;En el siguiente link pueden ver una buena introducción al tema de administración.
&lt;p&gt;&lt;a href="http://dev2dev.bea.com/pub/a/2007/06/understanding-soa-management.html" title="Understanding SOA Management: What’s in your SOA?" target="_blank"&gt;Understanding SOA Management: What's in your SOA?&lt;/a&gt;
	&lt;p&gt;Salu2&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Entendiendo+la+administraci%c3%b3n+de+SOA&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2249.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2249.entry</guid><pubDate>Mon, 18 Jun 2007 19:37:13 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2249/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2249.entry#comment</wfw:comment><dcterms:modified>2007-06-18T19:43:06Z</dcterms:modified></item><item><title>Mi primera aplicación BlackBerry</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2150.entry</link><description>&lt;p&gt;
&lt;p&gt;&lt;br&gt;Ayer terminé mi primera aplicación BlackBerry (BB) [1] que hace consultas a una base de datos MSSQL [2]. Es un piloto demostrativo para &lt;strong&gt;Cliente XXX&lt;/strong&gt;. El esquema de la solución es muy simple:&lt;br&gt;
&lt;p&gt;1.- Cliente JAVA desarrollado con MDS Studio [3]&lt;br&gt;2.-Web Services con dos métodos, uno para cada tipo de consulta.&lt;br&gt;3.- Una base de datos con los datos a consultar.&lt;br&gt;
&lt;p&gt;No es un tema complejo, como son simples consultas nada de la NASA. Ahora, MSD STUDIO es una herramienta hecha para aplicaciones simples, que tiene un Wizard con el cual puedes construir una aplicación de consultas a Web Services con 3 Click’s sin saber nada de JAVA. Utiliza un concepto muy cool, que es Workflow. Si ha usado el ide de desarrollo de BEA [4], hace tiempo que ellos lo tienen. Es una simplificación del concepto de Page Flow.&lt;br&gt;
&lt;p&gt;Una vez ejecutado el Wizard de desarrollo en base a servicios Web, queda customizar la aplicación, proceso que se hace con código JAVA y JAVA SCRIPT [5].&lt;br&gt;Los resultados son como esto. 
&lt;p&gt;  
&lt;p&gt;Salu2&lt;br&gt;&lt;strong&gt;&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;Referencias&lt;br&gt;&lt;/strong&gt;[1] BlackBerry: &lt;a href="http://na.blackberry.com/eng/developers/"&gt;http://na.blackberry.com/eng/developers/&lt;/a&gt;&lt;br&gt;[2] MSSQL: &lt;a href="http://www.microsoft.com/sql/default.mspx"&gt;http://www.microsoft.com/sql/default.mspx&lt;/a&gt;&lt;br&gt;[3] MDS Studio: &lt;a href="http://na.blackberry.com/eng/developers/downloads/studio.jsp"&gt;http://na.blackberry.com/eng/developers/downloads/studio.jsp&lt;/a&gt;&lt;br&gt;[4] BEA: &lt;a href="http://es.bea.com/"&gt;http://es.bea.com/&lt;/a&gt;&lt;br&gt;[5] Java Script: &lt;a href="http://es.wikipedia.org/wiki/JavaScript"&gt;http://es.wikipedia.org/wiki/JavaScript&lt;/a&gt;&lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1pmHTUXh_3PSw__U1y0a-E5Wj1ORiQdA9XpQ8JXedyfB94xr-RvxssCQ"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;4131EA552C5BB029&amp;#33;2141&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1peaPvxfIqOMgXI1g5I0Pyk6p2_yjb0UwpxcnxLuR-d3fTOgrwhnzLmg"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;4131EA552C5BB029&amp;#33;2151&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1pD17CiCyceEh612SNrTRgZmL60BpwiGdvEIRfPZhGM0shk6cTCe76kA"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;4131EA552C5BB029&amp;#33;2152&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Mi+primera+aplicaci%c3%b3n+BlackBerry&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2150.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2150.entry</guid><pubDate>Thu, 31 May 2007 00:53:55 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2150/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2150.entry#comment</wfw:comment><dcterms:modified>2007-05-31T01:03:33Z</dcterms:modified></item><item><title>Link's de Biztalk :)</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2131.entry</link><description>&lt;p&gt;  
&lt;p&gt;Trabajando de “consultor” para un proyecto con BST 2006 [1] me topé con estos link’s, que están bien interesantes. 
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/msdnmag/issues/07/05/biztalk/default.aspx?loc=es" href="http://msdn.microsoft.com/msdnmag/issues/07/05/biztalk/default.aspx?loc=es" target="_blank"&gt;8 consejos y trucos para mejorar la programación de BizTalk&lt;/a&gt; 
&lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/aa937647.aspx" href="http://msdn2.microsoft.com/en-us/library/aa937647.aspx" target="_blank"&gt;BizTalk Server 2006 samples&lt;/a&gt; 
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/msdnmag/issues/07/03/ServiceStation/Default.aspx?loc=es" href="http://msdn.microsoft.com/msdnmag/issues/07/03/ServiceStation/Default.aspx?loc=es" target="_blank"&gt;Servicios web de BizTalk Server 2006&lt;/a&gt; 
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=00a6472c-14df-4da8-8d77-6aa2315b5862&amp;amp;displaylang=en"&gt;Biztalk Server 2006 Capabilities Poster&lt;/a&gt; 
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;displaylang=en"&gt;Biztalk Server 2006 Runtime Architecture Poster &lt;/a&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ae60b18d-c7f0-4089-aeb3-6bc652a3b898&amp;amp;displaylang=en"&gt;BizTalk Server 2006 Legacy Modernization Poster&lt;/a&gt; 
&lt;p&gt;  
&lt;p&gt;Salu2 
&lt;p&gt;[1] Biztalk Server 2006 &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4697793537861464105&amp;page=RSS%3a+Link's+de+Biztalk+%3a)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=liarjo.spaces.live.com&amp;amp;GT1=liarjo"&gt;</description><comments>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2131.entry#comment</comments><guid isPermaLink="true">http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2131.entry</guid><pubDate>Mon, 28 May 2007 04:49:14 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://liarjo.spaces.live.com/blog/cns!4131EA552C5BB029!2131/comments/feed.rss</wfw:commentRss><wfw:comment>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2131.entry#comment</wfw:comment><dcterms:modified>2007-06-01T23:19:58Z</dcterms:modified></item><item><title>WCF Referencias</title><link>http://liarjo.spaces.live.com/Blog/cns!4131EA552C5BB029!2130.entry</link><description>&lt;p&gt;Preparando una conferencia de WCF[1] estuve Googleando mucho y encontré los siguientes link’s que están muy buenos para los desarrolladores que están comenzando con WCF. 
&lt;p&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/020407/voices/bb332338.mspx" target="_blank"&gt;Alojamiento y consumo de servicios WCF&lt;/a&gt; 
&lt;p&gt;&lt;a href="http://www.extremeexperts.com/Net/Articles/ExceptionHandlingInWCF.aspx" target="_blank"&gt;Exceptional Handling in Windows Communication Framew