<?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; Mono</title>
	<atom:link href="http://blog.darioquintana.com.ar/category/mono/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>yaml, una alternativa para XML</title>
		<link>http://blog.darioquintana.com.ar/2008/04/28/yaml-an-alternative-for-xml/</link>
		<comments>http://blog.darioquintana.com.ar/2008/04/28/yaml-an-alternative-for-xml/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 17:17:03 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[db4o]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2008/04/28/yaml-an-alternative-for-xml/</guid>
		<description><![CDATA[<p><a href="http://www.yaml.org/">yaml</a> es un lenguaje de serialización de datos, una alternativa al lenguaje de marcado XML. Es muy interesante, y es muy útil usarlo por que es más legible para el ojo humano que un archivo XML. Está enfocado a la simplicidad. Vamos a ver un ejemplo tomado de la realidad, así es como luciría [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yaml.org/">yaml</a> es un lenguaje de serialización de datos, una alternativa al lenguaje de marcado XML. Es muy interesante, y es muy útil usarlo por que es más legible para el ojo humano que un archivo XML. Está enfocado a la simplicidad. Vamos a ver un ejemplo tomado de la realidad, así es como luciría un archivo de mapeo de NHibernate si fuera escrito en yaml:</p>
<p><img src="http://uooopaa.googlepages.com/yaml_hibernate.png"></p>
<p>Si usas NHiberante, debes darte cuenta que esto es mucho más fácil de leer. Como se puede apreciar la delimitación es hecha por identación. Si conoces lenguajes como Python esto te resultará muy familiar. Por supuesto, esto no está soportado en NHibernate, pero quien sabe, quizás alguien quiere donar algunas horas al OSS y hacerlo <img src='http://blog.darioquintana.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Quizás una notoria desventaja es que yaml no posee esquema (schema). Y podés darte cuenta de las características que nos estamos perdiendo por esto, la más importante: validación de un documento yaml.</p>
<p>En .Net-landia no es tan popular, de hecho no lo es, pero en lenguajes como Python, Php, Perl, C++ se usa mucho. En el nuevo bebé de Google: <a href="http://code.google.com/appengine/">Google App Engine</a>, el cual tiene como lenguaje principal a Python (actualmente es el único lenguaje que soporta), usa yaml para los archivos de configuración.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2008/04/28/yaml-an-alternative-for-xml/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Linking assemblies</title>
		<link>http://blog.darioquintana.com.ar/2007/06/28/linking-assemblies/</link>
		<comments>http://blog.darioquintana.com.ar/2007/06/28/linking-assemblies/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 04:52:18 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/06/28/linking-assemblies/</guid>
		<description><![CDATA[<p><a href="http://www.mono-project.com/Linker">Linker</a>, es una libreria que escribió <a href="http://evain.net/blog/">Jb</a>, y se encarga de reducir al mínimo el conjunto de funciones assemblies para que un conjunto de programas puedan correr. En otras palabras, toma las librerias que necesita un programa y elimina de ellas los métodos ó tipos que no son necesarios.</p> <p>Pueden obtener el <a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mono-project.com/Linker">Linker</a>, es una libreria que escribió <a href="http://evain.net/blog/">Jb</a>, y se encarga de reducir al mínimo el conjunto de funciones assemblies para que un conjunto de programas puedan correr. En otras palabras, toma las librerias que necesita un programa y elimina de ellas los métodos ó tipos que no son necesarios.</p>
<p>Pueden obtener el <a href="http://anonsvn.mono-project.com/source/trunk/cecil/linker/">código del SVN</a>, y compilarlo. Requiere <a href="http://anonsvn.mono-project.com/source/trunk/cecil/lib/">Mono.Cecil</a>. </p>
<p>Linker es una simple aplicación de consola, y toda la magia ocurre en una sola linea de comandos.&nbsp;Antes que nada, veamos que tenemos. Los archivos necesarios para que la aplicación <em>Mono.Sms.exe</em> funcionen son: <em>Castle.Core.dll, Castle.Windsor.dll, Castle.MicroKernel.dll y Castle.DynamicProxy.dll</em>. Ponemos todos archivos en el mismo directorio que el ejecutable Mono.Sms.exe. Luego ejecutamos:</p>
<pre>

monolinker -a Mono.Sms.exe -out linkedfiles/ -x descritor.xml
</pre>
<p>Donde indicamos cual va a ser la aplicación objetivo, el directorio de salida, y el archivo xml descritor con los tipos que se desean preservar despues del proceso de linkeo. Nuestro archivo con los tipos que no queremos que Linker los eliminie es el siguiente:</p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span> <span class="attr">encoding</span><span class="kwrd">="utf-8"</span> ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">linker</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">assembly</span> <span class="attr">fullname</span><span class="kwrd">="Castle.Windsor"</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">namespace</span> <span class="attr">fullname</span><span class="kwrd">="Castle.Windsor.Configuration.Interpreters.XmlProcessor.ElementProcessors"</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">type</span> <span class="attr">fullname</span><span class="kwrd">="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler"</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">assembly</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">linker</span><span class="kwrd">&gt;</span></pre>
<p>Con esto indicamos que el namespace ElementProcessors, y el tipo CastleSectionHandler deben ser incluidos en la salida. Este descritor lo tuve que elaborar porque Linker omitia el tipo CastleSectionHandler, y tambíén eliminaba los constructores de los tipos contenidos en el namespace ElementProcessors. Como lo supe? Prueba y error.</p>
<p><u>Ahora veamos el resultado:</u></p>
<p><img src="http://uooopaa.googlepages.com/monosmslinked.png"> </p>
<p>Ahora que hemos reducido, el tamaño de los assemblies, imaginense otra herramienta para <strong><u>juntar todos los assemblies en 1 sólo</u></strong>.&nbsp;La filosofía XCOPY de .Net, se convertiria en la COPY, nada más. Por estos caminos anda también Jb, que según dijo, está reescribiendo a <a href="http://anonsvn.mono-project.com/source/trunk/cecil/merge/">monomerge</a> (actualmente se cae).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/06/28/linking-assemblies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compilando y Configurando Mono.Sms con NAnt en Ubuntu</title>
		<link>http://blog.darioquintana.com.ar/2007/06/26/compilando-y-configurando-monosms-con-nant-en-ubuntu/</link>
		<comments>http://blog.darioquintana.com.ar/2007/06/26/compilando-y-configurando-monosms-con-nant-en-ubuntu/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 02:58:16 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/06/26/compilando-y-configurando-monosms-con-nant-en-ubuntu/</guid>
		<description><![CDATA[<p>Veamos como bajar y compilar Mono.Sms desde el código fuente en Ubuntu:</p> <p>Para hacerlo debemos considerar tener un repositorio que contenga la version de Mono 1.2.4, con versiones anteriores no va a funcionar. Entonces hacemos:</p> $sudo apt-get install mono mono-gmcs mono subversion $svn checkout http://monosms.googlecode.com/svn/trunk/ monosms $cd monosms/ $nant <p>y con esto es suficiente para [...]]]></description>
			<content:encoded><![CDATA[<p>Veamos como bajar y compilar Mono.Sms desde el código fuente en Ubuntu:</p>
<p>Para hacerlo debemos considerar tener un repositorio que contenga la version de Mono 1.2.4, con versiones anteriores no va a funcionar. Entonces hacemos:</p>
<pre>

$sudo apt-get install mono mono-gmcs mono subversion
</pre>
<pre>

$svn checkout http://monosms.googlecode.com/svn/trunk/ monosms
</pre>
<pre>

$cd monosms/
</pre>
<pre>

$nant
</pre>
<p>y con esto es suficiente para compilar&nbsp;Mono.Sms desde el SVN.&nbsp;Y para correrlo:</p>
<pre>

$cd build/
</pre>
<pre>

$mono Mono.Sms.exe
</pre>
<p>Previamente a lanzar la aplicación quizás querramos configurarla, para esto dentro de la sección monosms&nbsp;en el archivo&nbsp;Mono.Sms.exe.config se encuentran algunos parámetros:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ -->
<pre class="csharpcode">  <span class="kwrd">&lt;</span><span class="html">monosms</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">settings</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">="user.name"</span> <span class="attr">value</span><span class="kwrd">="Jorge"</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">="user.email"</span> <span class="attr">value</span><span class="kwrd">="usuario@monosms.com.ar"</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">="smtp.server"</span> <span class="attr">value</span><span class="kwrd">="mail.gigared.com"</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">settings</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">monosms</span><span class="kwrd">&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/06/26/compilando-y-configurando-monosms-con-nant-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Im&#225;genes como recursos en los assemblies</title>
		<link>http://blog.darioquintana.com.ar/2007/06/26/imgenes-como-recursos-en-los-assemblies/</link>
		<comments>http://blog.darioquintana.com.ar/2007/06/26/imgenes-como-recursos-en-los-assemblies/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 02:41:13 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/06/26/imgenes-como-recursos-en-los-assemblies/</guid>
		<description><![CDATA[<p>Cuando trabajamos con Visual Studio/Sharpdevelop,&#160;podemos&#160;agregar en un&#160;pictureBox una imagen. Lo podemos hacer de 2 maneras (a simple vista): como Project Resource file ó Local Resource. </p> <p>Ahora bien,&#160;otra manera de&#160;hacer esto,&#160;es añadiendo al proyecto las imágenes y declarándolas como Recursos Embebidos, para eso se podría crear una carpeta. Y después para obtener&#160;dichas imagenes utilizariamos un [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando trabajamos con Visual Studio/Sharpdevelop,&nbsp;podemos&nbsp;agregar en un&nbsp;pictureBox una imagen. Lo podemos hacer de 2 maneras (a simple vista): como Project Resource file ó Local Resource. </p>
<p>Ahora bien,&nbsp;otra manera de&nbsp;hacer esto,&nbsp;es añadiendo al proyecto las imágenes y declarándolas como Recursos Embebidos, para eso se podría crear una carpeta. Y después para obtener&nbsp;dichas imagenes utilizariamos un helper que nos retorne los recursos embebidos.</p>
<p>Así es como se está realizando el manejo de imágenes/iconos en <a href="http://code.google.com/p/paint-mono/">Paint.Net.</a> También copié el mismo esquema <a href="http://monosms.googlecode.com/svn/trunk/src/Mono.Sms/Core/MonoSmsResources.cs">(y código)</a> para <a href="http://code.google.com/p/monosms">Mono.Sms</a>. Lo bueno del esquema que utiliza Paint.Net es que permite tener imágenes personalizadas dependiendo de la cultura:</p>
<p><img src="http://uooopaa.googlepages.com/resources-paint.net.png"> </p>
<p>Cuando Paint.Net necesita una imagen, lo solicita a la clase PdnResources, y esta hace lo siguiente: </p>
<ul>
<li>Verifica si posse una imagen personalizada según la Cultura, si encuentra la devuelve.
<li>Sino, busca dentro del assembly por imagenes embebidas, si encuentra la devuelve.</li>
</ul>
<p>Al momento de buscar una imagen para asignarla a un pictureBox podemos hacer esto:</p>
<pre>

pictureBox.Image&nbsp;= PdnResources.GetImage("image.png");
</pre>
<p>El archivo <a href="http://paint-mono.googlecode.com/svn/trunk/src/Resources/PdnResources.cs">PdnResources</a> puede encontrarse <a href="http://paint-mono.googlecode.com/svn/trunk/src/Resources/PdnResources.cs">aquí</a>, y la manera que trata los recursos la considero como una buena práctica.</p>
<p>Mono.Sms contiene todas las imágenes&nbsp;embebidas de esta misma manera. Así se&nbsp;ven los recursos de Mono.Sms&nbsp;con Reflector:</p>
<p>&nbsp;<img src="http://uooopaa.googlepages.com/monosmsresources.png"></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/06/26/imgenes-como-recursos-en-los-assemblies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mono.Sms preview</title>
		<link>http://blog.darioquintana.com.ar/2007/06/23/monosms-preview/</link>
		<comments>http://blog.darioquintana.com.ar/2007/06/23/monosms-preview/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 04:07:03 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>
		<category><![CDATA[NAnt]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/06/23/monosms-preview/</guid>
		<description><![CDATA[<p>Ya está para descargar Mono.Sms, hosteado&#160;como&#160;proyecto en&#160;<a href="http://code.google.com/p/monosms">Code Google</a>.</p> <p> </p> <p>Los binarios&#160;han sido probados en Mono 1.2.4/.Net Framework 2.0</p> <p>Este es el trunk, pueden descargar el código fuente con un cliente de SVN como <a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a>si usan Windows.</p> <a title="http://monosms.googlecode.com/svn/trunk/" href="http://monosms.googlecode.com/svn/trunk/">http://monosms.googlecode.com/svn/trunk/</a> <p>Aquí están los binarios/setup para descargar:</p> <a title="http://code.google.com/p/monosms/downloads/list" href="http://code.google.com/p/monosms/downloads/list">http://code.google.com/p/monosms/downloads/list</a> <p>&#160;Para dejar comentarios [...]]]></description>
			<content:encoded><![CDATA[<p>Ya está para descargar Mono.Sms, hosteado&nbsp;como&nbsp;proyecto en&nbsp;<a href="http://code.google.com/p/monosms">Code Google</a>.</p>
<p><img src="http://uooopaa.googlepages.com/monosms-preview3.png"> </p>
<p>Los binarios&nbsp;han sido probados en Mono 1.2.4/.Net Framework 2.0</p>
<p>Este es el trunk, pueden descargar el<strong> <u>código fuente</u></strong> con un cliente de SVN como <a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a>si usan Windows.</p>
<ul>
<li><a title="http://monosms.googlecode.com/svn/trunk/" href="http://monosms.googlecode.com/svn/trunk/">http://monosms.googlecode.com/svn/trunk/</a></li>
</ul>
<p>Aquí están los <strong><u>binarios/setup</u></strong> para descargar:</p>
<ul>
<li><a title="http://code.google.com/p/monosms/downloads/list" href="http://code.google.com/p/monosms/downloads/list">http://code.google.com/p/monosms/downloads/list</a></li>
</ul>
<p>&nbsp;Para dejar <strong><u>comentarios</u></strong> creé este grupo en google:</p>
<ul>
<li><a title="http://groups.google.com.ar/group/monosms/" href="http://groups.google.com.ar/group/monosms/">http://groups.google.com.ar/group/monosms/</a></li>
</ul>
<p>Voluntarios, envien los <u>parches</u>, reporte de<u> issues/bugs</u> aquí:</p>
<ul>
<li><a title="http://code.google.com/p/monosms/issues/list" href="http://code.google.com/p/monosms/issues/list">http://code.google.com/p/monosms/issues/list</a></li>
</ul>
<p>&nbsp;El código fuente se puede compilar usando <a href="http://nant.sourceforge.net/">NAnt</a>. He incluido el archivo <em>default.build</em> en el SVN para este fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/06/23/monosms-preview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nuevo screenshot de Mono.Sms</title>
		<link>http://blog.darioquintana.com.ar/2007/05/23/nuevo-screenshot-de-monosms/</link>
		<comments>http://blog.darioquintana.com.ar/2007/05/23/nuevo-screenshot-de-monosms/#comments</comments>
		<pubDate>Wed, 23 May 2007 05:53:30 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/05/23/nuevo-screenshot-de-monosms/</guid>
		<description><![CDATA[<p> </p> <p>Esta screenshot fue tomada corriendo en .Net Framework de Microsoft. Dentro de poco liberaremos la release.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://uooopaa.googlepages.com/monosms-preview2.png"> </p>
<p>Esta screenshot fue tomada corriendo en .Net Framework de Microsoft. Dentro de poco liberaremos la release.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/05/23/nuevo-screenshot-de-monosms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mono.Sms y Windsor Container</title>
		<link>http://blog.darioquintana.com.ar/2007/05/23/monosms-y-windsor-container/</link>
		<comments>http://blog.darioquintana.com.ar/2007/05/23/monosms-y-windsor-container/#comments</comments>
		<pubDate>Wed, 23 May 2007 05:35:23 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[IoC]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/05/23/monosms-y-windsor-container/</guid>
		<description><![CDATA[<p>Para ponerle un poco de sabor al Core de Mono.Sms, una de las cosas que me encargué de añadir es la capacidad solicitar los proveedores que estén disponibles para enviar mensajes por medio de un container de <a href="http://en.wikipedia.org/wiki/Inversion_of_control">IoC</a>. Para los que no sepan que es esto, pueden tener una introducción <a href="http://blog.darioquintana.com.ar/2006/12/28/inyeccin-de-dependencia-con-springnet/">aquí</a>&#160;con Spring.Net, o [...]]]></description>
			<content:encoded><![CDATA[<p>Para ponerle un poco de sabor al Core de Mono.Sms, una de las cosas que me encargué de añadir es la capacidad solicitar los proveedores que estén disponibles para enviar mensajes por medio de un container de <a href="http://en.wikipedia.org/wiki/Inversion_of_control">IoC</a>. Para los que no sepan que es esto, pueden tener una introducción <a href="http://blog.darioquintana.com.ar/2006/12/28/inyeccin-de-dependencia-con-springnet/">aquí</a>&nbsp;con Spring.Net, o <a href="http://blog.bittercoder.com/PermaLink,guid,bc382e38-a6c6-4e98-840e-ea00d635fc5e.aspx">aquí utilizando Windsor</a>.</p>
<p>Para&nbsp;dicha Inversion de Control (IoC)&nbsp;estoy usando <a href="http://www.castleproject.org/container/index.html">Windsor Container</a>. </p>
<p>Este caso todos los proveedores son inyectados, es decir, dejo que el container me entregue en mano, todas la implementaciones existentes de <strong>IProvider</strong>&nbsp;para la aplicación. Cada proveedor implementa la interfaz <strong>IProvider</strong>:</p>
<pre class="csharpcode"><span class="kwrd">namespace</span> Mono.Sms.Core.Provider
{
    <span class="kwrd">public</span> <span class="kwrd">interface</span> IProvider
    {
        <span class="kwrd">string</span> Name { get; set; }
        <span class="kwrd">string</span> Domain { get; set; }
        <span class="kwrd">bool</span> UseSmtp { get; set; }
        <span class="kwrd">string</span> HostName { get; set; }
        <span class="kwrd">string</span> DataPost { get; }
        <span class="kwrd">string</span> Sign { get; }
        <span class="kwrd">string</span> Message { get; set; }
        CelNumber CelNumber { get; set; }
        <span class="kwrd">int</span> NumberOfCharacters { set; get; }
        <span class="kwrd">string</span> Description { get; set; }
    }
}</pre>
<p>&nbsp;y luego configuro los proveedores para que Windsor sepa sobre ellos y pueda crear los objetos:&nbsp;</p>
<pre class="csharpcode" style="width: 485px; height: 623px">  <span class="kwrd">&lt;</span><span class="html">castle</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">components</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">component</span>
        <span class="attr">id</span><span class="kwrd">="ProviderPersonalPost"</span>
        <span class="attr">service</span><span class="kwrd">="Mono.Sms.Core.Provider.IProvider, Mono.Sms"</span>
        <span class="attr">type</span><span class="kwrd">="Mono.Sms.Core.Provider.PersonalProvider, Mono.Sms"</span>
        <span class="attr">lyfestyle</span><span class="kwrd">="singleton"</span>
        <span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">parameters</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Name</span><span class="kwrd">&gt;</span>Personal<span class="kwrd">&lt;/</span><span class="html">Name</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Domain</span><span class="kwrd">&gt;</span>@personal-net.com.ar<span class="kwrd">&lt;/</span><span class="html">Domain</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">UseSmtp</span><span class="kwrd">&gt;</span>false<span class="kwrd">&lt;/</span><span class="html">UseSmtp</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">HostName</span><span class="kwrd">&gt;</span>host25.200-43-139.telecom.net.ar<span class="kwrd">&lt;/</span><span class="html">HostName</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Port</span><span class="kwrd">&gt;</span>80<span class="kwrd">&lt;/</span><span class="html">Port</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">NumberOfCharacters</span><span class="kwrd">&gt;</span>138<span class="kwrd">&lt;/</span><span class="html">NumberOfCharacters</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Description</span><span class="kwrd">&gt;</span>Este proveedor permite la entrega de
          mensajes a un celular Personal<span class="kwrd">&lt;/</span><span class="html">Description</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">parameters</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">component</span><span class="kwrd">&gt;</span>

      <span class="kwrd">&lt;</span><span class="html">component</span>
      <span class="attr">id</span><span class="kwrd">="ProviderPersonalMail"</span>
      <span class="attr">service</span><span class="kwrd">="Mono.Sms.Core.Provider.IProvider, Mono.Sms"</span>
      <span class="attr">type</span><span class="kwrd">="Mono.Sms.Core.Provider.PersonalProvider, Mono.Sms"</span>
      <span class="attr">lyfestyle</span><span class="kwrd">="singleton"</span>
        <span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">parameters</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Name</span><span class="kwrd">&gt;</span>Personal<span class="kwrd">&lt;/</span><span class="html">Name</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Domain</span><span class="kwrd">&gt;</span>@personal-net.com.ar<span class="kwrd">&lt;/</span><span class="html">Domain</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">UseSmtp</span><span class="kwrd">&gt;</span>true<span class="kwrd">&lt;/</span><span class="html">UseSmtp</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">HostName</span><span class="kwrd">&gt;</span>host25.200-43-139.telecom.net.ar<span class="kwrd">&lt;/</span><span class="html">HostName</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Port</span><span class="kwrd">&gt;</span>80<span class="kwrd">&lt;/</span><span class="html">Port</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">NumberOfCharacters</span><span class="kwrd">&gt;</span>110<span class="kwrd">&lt;/</span><span class="html">NumberOfCharacters</span><span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span><span class="html">Description</span><span class="kwrd">&gt;</span>Este proveedor permite la entrega de mensajes
          a un celular Personal utilizando mails.<span class="kwrd">&lt;/</span><span class="html">Description</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">parameters</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">component</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">components</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">castle</span><span class="kwrd">&gt;</span></pre>
<p>En este caso hemos creado 2 implementaciones para enviar mensajes a una misma empresa, una forma es haciendo un post, y la otra utilzando mails. Hablando en el idioma de Windsor container, hemos creado aquí 2 <strong>Componentes (ProviderPersonalPost y ProviderPersonalMail)</strong>, para un mismo <strong>Servicio (IProvider)</strong>.</p>
<p>Luego para pedirle&nbsp;al container que nos entregue todas las implementaciones de los servicios <strong>IProvider</strong>, realizo esta siguiente iteración:</p>
<pre class="csharpcode" style="width: 579px; height: 191px">  <span class="kwrd">public</span> IList&lt;IProvider&gt; GetAllProviders()
        {
            IHandler[] handles = container.Kernel.GetHandlers(<span class="kwrd">typeof</span> (IProvider));
            IList&lt;IProvider&gt; providersImpl = <span class="kwrd">new</span> List&lt;IProvider&gt;();

            <span class="kwrd">foreach</span> (IHandler hdlr <span class="kwrd">in</span> handles)
            {
                providersImpl.Add((IProvider)hdlr.Resolve(CreationContext.Empty));
            }

            <span class="kwrd">return</span> providersImpl;
        }</pre>
<p>Se puede ver que agrego a una lista <strong>providersImpl</strong> todos los proveedores y los retorno. Y con esto tengo en mano a todos los proveedores con los que puedo mandar mensajes. </p>
<p>Se preguntarán: &#8220;Es necesario todo esto para una simple aplicación de sms?&#8221;, la respuesta es &#8220;No&#8221;. Como se sabe, IoC es un principio de diseño, y no un requerimiento indispensable. </p>
<p>Opiniones ? Sientanse como en casa <img src='http://blog.darioquintana.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/05/23/monosms-y-windsor-container/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mono.Sms para enviar mensajes</title>
		<link>http://blog.darioquintana.com.ar/2007/05/19/monosms-para-enviar-mensajes/</link>
		<comments>http://blog.darioquintana.com.ar/2007/05/19/monosms-para-enviar-mensajes/#comments</comments>
		<pubDate>Sat, 19 May 2007 07:32:35 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[IoC]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monosms]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/05/19/monosms-para-enviar-mensajes/</guid>
		<description><![CDATA[<p>Mono.Sms es una aplicación que se escribió&#160;para mandar mensajes de texto en Argentina a clientes de empresas como Personal, Cti, y Movistar. La ventaja es que lo podemos correr tanto en Linux y Windows. Aquí les mando un screenshot del preview:</p> <p>&#160;</p> <p>Dentro de poco se podrá bajar el binario para usarlo, con los nombres [...]]]></description>
			<content:encoded><![CDATA[<p>Mono.Sms es una aplicación que se escribió&nbsp;para mandar mensajes de texto en Argentina a clientes de empresas como Personal, Cti, y Movistar. La ventaja es que lo podemos correr tanto en Linux y Windows. Aquí les mando un screenshot del preview:</p>
<p><img src="http://uooopaa.googlepages.com/monosms-preview.png">&nbsp;</p>
<p>Dentro de poco se podrá bajar el binario para usarlo, con los nombres de los coders de esta app.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/05/19/monosms-para-enviar-mensajes/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Iteraciones en C# &#8211; capturas de pantalla</title>
		<link>http://blog.darioquintana.com.ar/2007/05/08/iteraciones-en-c-capturas-de-pantalla/</link>
		<comments>http://blog.darioquintana.com.ar/2007/05/08/iteraciones-en-c-capturas-de-pantalla/#comments</comments>
		<pubDate>Tue, 08 May 2007 05:10:33 +0000</pubDate>
		<dc:creator>Dario Quintana</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://blog.darioquintana.com.ar/2007/05/08/iteraciones-en-c-capturas-de-pantalla/</guid>
		<description><![CDATA[<p>En este <a href="http://blog.darioquintana.com.ar/2007/05/07/iteraciones-en-c/">post previo</a>, hablábamos sobre las iteraciones en C# y donde dije que Mono me resultó un poco más rápido en Linux a diferencia con Mono en Windows y .Net Framework de MS. Bueno aquí les muestro las resultados de las ultimas corridas de cada uno para que vean. La clase con la [...]]]></description>
			<content:encoded><![CDATA[<p>En este <a href="http://blog.darioquintana.com.ar/2007/05/07/iteraciones-en-c/">post previo</a>, hablábamos sobre las iteraciones en C# y donde dije que Mono me resultó <strong>un poco</strong> más rápido en Linux a diferencia con Mono en Windows y .Net Framework de MS. Bueno aquí les muestro las resultados de las ultimas corridas de cada uno para que vean. La clase con la que probé se encuentra aquí: <a href="http://uooopaa.googlepages.com/Iteraciones.zip">Iteraciones.zip</a></p>
<p><u><strong>Con .Net Framework de MS:</strong></u><img alt="con MS .Net Framework" src="http://uooopaa.googlepages.com/iteraciones_dotnet_windows.jpg"> </p>
<p>&nbsp;</p>
<p><u><strong>Con Mono en Windows:</strong></u><img alt="con Mono en Windows" src="http://uooopaa.googlepages.com/iteraciones_mono_windows.jpg"> </p>
<p><u><strong>Con Mono en Linux:</strong></u><img alt="con Mono en Linux" src="http://uooopaa.googlepages.com/iteraciones_mono_linux.jpg"></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.darioquintana.com.ar/2007/05/08/iteraciones-en-c-capturas-de-pantalla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

