<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Espacio de Dario Quintana &#187; enterprise-library</title>
	<atom:link href="http://blog.darioquintana.com.ar/category/enterprise-library/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.darioquintana.com.ar</link>
	<description></description>
	<lastBuildDate>Tue, 21 Jun 2011 22:51:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>NHibernate + EventListeners + &quot;Cualquier Framework de Validaci&#243;n&quot;</title>
		<link>http://blog.darioquintana.com.ar/2007/12/14/nhibernate-eventlisteners-cualquier-framework-de-validacin/</link>
		<comments>http://blog.darioquintana.com.ar/2007/12/14/nhibernate-eventlisteners-cualquier-framework-de-validacin/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 05:37:14 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[enterprise-library]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[uNHAddIns]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/12/14/nhibernate-eventlisteners-cualquier-framework-de-validacin/</guid>
		<description><![CDATA[<p>En <a href="http://blog.darioquintana.com.ar/2007/11/01/validacin-en-nhibernate/">este post</a> estaba adelantando algo que estoy empezando a hacer, por ahora bosquejando y pensando, sin embargo&#8230;hay algo funcional para ir pispeando.</p> <p>La idea es crear un &#34;puente&#34; entre NHibernate y diferentes frameworks para validar nuestras entidades de negocio. Hay quienes les gusta validar solamente en la entrada, otros en la capa de [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://blog.darioquintana.com.ar/2007/11/01/validacin-en-nhibernate/">este post</a> estaba adelantando algo que estoy empezando a hacer, por ahora bosquejando y pensando, sin embargo&#8230;hay algo funcional para ir pispeando.</p>
<p>La idea es crear un &quot;puente&quot; entre NHibernate y diferentes frameworks para validar nuestras entidades de negocio. Hay quienes les gusta validar solamente en la entrada, otros en la capa de negocio, otros en la capa de acceso a datos, u otros en todos lados! Este &quot;approach&quot; intentar&#225; validar en la capa de Acceso a datos, justo antes de que NHibernate realice un Save/Update (y por que no un Delete?).</p>
<p>Por ahora, pueden encontrar el c&#243;digo disponible para usar haciendo un checkout de <a href="http://unhaddins.googlecode.com/svn/branches/NHTrunk/">SVN de uNHAddIns</a>. Consta de un proveedor para usar el validador del <a href="http://www.codeplex.com/entlib">Enterprise Library Application Block</a> . Despu&#233;s veremos que otros frameworks podemos inyectar (para eso necesito sus sugerencias).</p>
<p>Como pueden ver en este test, NHibernate arroja una excepci&#243;n si alguien intenta guardar una entidad no v&#225;lida. Cr&#233;anme que arroja luz verde.</p>
<p>
<div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:7a78aa97-4b54-4f02-936a-bf12080d7f58" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="background-color:White;;overflow: auto;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">[Test,ExpectedException(</span><span style="color: #0000FF;">typeof</span><span style="color: #000000;">(ValidationException))]
</span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> InsertWithInvalidEntity() {

    </span><span style="color: #0000FF;">using</span><span style="color: #000000;"> (ISession s </span><span style="color: #000000;">=</span><span style="color: #000000;"> sf.OpenSession())
    {
        </span><span style="color: #0000FF;">using</span><span style="color: #000000;"> (ITransaction tx </span><span style="color: #000000;">=</span><span style="color: #000000;"> s.BeginTransaction())
        {
            s.Save(GetNoValidFoo());
            tx.Commit();
        }
    }
}</span></div>
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</p>
<p>Para poder configurar este escenario es necesario una configuraci&#243;n previa como esta:</p>
<p><div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:691731bf-cb10-48a5-9003-a2c728f5dab1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="background-color:White;;overflow: auto;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">cfg </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Configuration();
cfg.SetProperty(Environment.HibernateValidationProvider,
                </span><span style="color: #0000FF;">typeof</span><span style="color: #000000;">(EntLibValidator).AssemblyQualifiedName);

ValidateEventListener validateEventListener </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> ValidateEventListener();
cfg.SetListener(ListenerType.PreInsert, validateEventListener);
cfg.SetListener(ListenerType.PreUpdate, validateEventListener);

cfg.Configure();

sf </span><span style="color: #000000;">=</span><span style="color: #000000;"> cfg.BuildSessionFactory();</span></div>
</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</p>
<p>El EventListener <em>ValidateEventListener</em> hace el trabajo de intercepci&#243;n antes de las operaciones Insert/Update, de ese modo es como podemos hacer el trabajo de validaci&#243;n.</p>
<p>Esto es un borrador, que por cierto funciona, as&#237; que puede cambiar. Todo comentario es m&#225;s que bienvenido.</p>
<p>Para hacer checkout de el c&#243;digo fuente:</p>
<h4><a href="http://unhaddins.googlecode.com/svn/branches/NHTrunk/">http://unhaddins.googlecode.com/svn/branches/NHTrunk/</a></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/12/14/nhibernate-eventlisteners-cualquier-framework-de-validacin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AOP en el Enterprise Library?</title>
		<link>http://blog.darioquintana.com.ar/2007/02/24/aop-en-el-enterprise-library/</link>
		<comments>http://blog.darioquintana.com.ar/2007/02/24/aop-en-el-enterprise-library/#comments</comments>
		<pubDate>Sat, 24 Feb 2007 05:41:46 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[enterprise-library]]></category>
		<category><![CDATA[IoC]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/02/24/aop-en-el-enterprise-library/</guid>
		<description><![CDATA[<p>Un nuevo Application Block nació: Policy Injection Application Block. </p> <p>Al parecer, con este nuevo App Block podremos aplicar conceptos como el de <a href="http://en.wikipedia.org/wiki/Separation_of_concerns">SoC (Separation of concerns)</a> en nuestra aplicación, tal como lo venían predicando de manera similar frameworks como <a href="http://springframework.net/">Spring.Net</a>.</p> <p>Para ser claro, podriamos hacer que en&#160;un objeto de nuestra aplicación, al [...]]]></description>
			<content:encoded><![CDATA[<p>Un nuevo Application Block nació: <strong><u>Policy Injection Application Block</u></strong>. </p>
<p>Al parecer, con este nuevo App Block podremos aplicar conceptos como el de <a href="http://en.wikipedia.org/wiki/Separation_of_concerns">SoC (Separation of concerns)</a> en nuestra aplicación, tal como lo venían predicando de manera similar frameworks como <a href="http://springframework.net/">Spring.Net</a>.</p>
<p>Para ser claro, podriamos hacer que en&nbsp;un objeto de nuestra aplicación, al ejecutarse un método, realice una entrada al archivo de log, de forma transparente en el código cliente.&nbsp;</p>
<p>Esto se pone más interesante, en la <strong>interoperabilidad</strong> que podremos llegar a tener con otros App Blocks, como ser: <strong>Validation, Logging, Exception</strong> entre otros. </p>
<p>La idea básica es trabajar con una factoría de clases, para la instanciación de nuestros objetos.&nbsp;Dicha factoria inspeccionará la configuración, para ver si el objeto posee politicas que aplicar, si no las posee, se crea una instancia común y corriente, si las posee, se crea un proxy para que el framework pueda manejar al objeto de forma transparente al cliente.</p>
<p><u>Escenario donde podriamos aplicar:</u></p>
<p>En nuestra aplicación un objeto que posee un método <strong>Guardar(Cliente obj). </strong>Utilizando estos conceptos, podríamos hacer que cada vez que se llame a este método, es decir, que querramos guardar un cliente, por medio del<strong> Policy Injection App Block</strong> se realize la validación del objeto (utilizando el <strong>Validation App Block</strong>), y si no es una entidad válida,&nbsp;dicho método&nbsp;<strong>Guardar </strong>no se ejecute. </p>
<p><u>Para más lean estos posts:</u></p>
<ul>
<li><a href="http://blogs.msdn.com/tomholl/archive/2007/02/23/announcing-the-policy-injection-application-block.aspx">Announcing the Policy Injection Application Block</a></li>
<li><a href="http://blogs.msdn.com/edjez/archive/2007/02/23/policy-injection-app-block-behind-the-scenes.aspx">Policy Injection App Block &#8211; Behind the Scenes</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/02/24/aop-en-el-enterprise-library/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

