<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blog de Juan Peláez en Geeks.ms</title><link>http://geeks.ms/blogs/jkpelaez/default.aspx</link><description>Algunas notas sobre Tecnologias Microsoft</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Todas las Ciudades del Planeta. Parte 1</title><link>http://geeks.ms/blogs/jkpelaez/archive/2012/05/23/todas-las-ciudades-del-planeta-parte-1.aspx</link><pubDate>Wed, 23 May 2012 12:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205191</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=205191</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=205191</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2012/05/23/todas-las-ciudades-del-planeta-parte-1.aspx#comments</comments><description>&lt;p&gt;Por diversas razones en varios proyectos para clientes hemos tenido que crear una lista de pa&amp;iacute;ses, ciudades, idiomas. Ahora que estamos trabajando en &lt;a href="http://www.thecompanytool.com/"&gt;the Company Tool&lt;/a&gt; (Una herramienta de seguimiento y control de la operaci&amp;oacute;n para compa&amp;ntilde;&amp;iacute;as peque&amp;ntilde;as y medianas) nos encontramos con el mismo asunto e incluso ampliado porque necesitamos la lista de todos los pa&amp;iacute;ses y ciudades del mundo, as&amp;iacute; que decidimos revisar un poco mejor si hay algo que pod&amp;iacute;amos hacer para no repetirnos y tener este problema resulto de una mejor forma. Este art&amp;iacute;culo es el producto de esa investigaci&amp;oacute;n y el c&amp;oacute;digo que construimos.&lt;/p&gt;
&lt;h1&gt;Informaci&amp;oacute;n de todos las Ciudades.&lt;/h1&gt;
&lt;p&gt;Lo primero era obtener la lista de todos los pa&amp;iacute;ses y ciudades del mundo, eso ten&amp;iacute;a que existir en alguna parte as&amp;iacute; que luego de un rato en internet encontramos que pod&amp;iacute;amos copiarla a mano de Wikipedia o consumir un servicio llamado &lt;a href="http://www.geonames.org/"&gt;GeoNames&lt;/a&gt; que no solo incluye Wikipedia sino muchas m&amp;aacute;s &lt;a href="http://www.geonames.org/data-sources.html"&gt;fuentes&lt;/a&gt;, este servicio expone unos Servicios Web (web services) con JSON o XML donde se pueden realizar una serie de consultas asociadas a cualquier ciudad o pa&amp;iacute;s del mundo, sin embargo tiene unos limites de uso (30.000 peticiones por d&amp;iacute;a y 2.000 por hora) y no quer&amp;iacute;amos depender de un servicio externo por m&amp;aacute;s que este parece bastante confiable, tomamos entonces la otra opci&amp;oacute;n y descargamos la &lt;a href="http://download.geonames.org/export/dump/"&gt;data&lt;/a&gt;. Ahora bien procesar 2 GB de datos no result&amp;oacute; tan sencillo.&lt;/p&gt;
&lt;p&gt;Lo segundo era cargarlos a nuestro SQL 2008 R2 para poder hacer consultas, explorar las capacidades de georeferenciaci&amp;oacute;n (Datos geogr&amp;aacute;ficos) incluidos en SQL y construir nuestro propio servicio.&lt;/p&gt;
&lt;h1&gt;Cargando la Data de GeoNames en SQL Server 2008 R2.&lt;/h1&gt;
&lt;p&gt;Antes que nada hay que transformar el archivo que venia en formato UTF8 a UTF16. Algunas recomendaciones en Internet dicen que puede importarse con el asistente de SQL y la opci&amp;oacute;n de encoding del archivo, pero no funcion&amp;oacute; aunque le dimos varias vueltas as&amp;iacute; que utilizamos esta &lt;a href="http://forum.geonames.org/gforum/posts/list/817.page"&gt;herramienta&lt;/a&gt;, que convierte el archivo desde UTF8 a UTF16 y que funcion&amp;oacute; perfectamente.&lt;/p&gt;
&lt;p&gt;Luego construimos una tabla en la base de datos con la estructura del archivo:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--CREATE TABLE Core.GeoNames(&lt;br /&gt;--geonameid int NOT NULL,&lt;br /&gt;--name nvarchar(200) NULL,&lt;br /&gt;--asciiname nvarchar(200) NULL,&lt;br /&gt;--alternatenames nvarchar(max) NULL,&lt;br /&gt;--latitude float NULL,&lt;br /&gt;--longitude float NULL,&lt;br /&gt;--feature_class char(2) NULL,&lt;br /&gt;--feature_code nvarchar(10) NULL,&lt;br /&gt;--country_code char(3) NULL,&lt;br /&gt;--cc2 char(60) NULL,&lt;br /&gt;--admin1_code nvarchar(20) NULL,&lt;br /&gt;--admin2_code nvarchar(80) NULL,&lt;br /&gt;--admin3_code nvarchar(20) NULL,&lt;br /&gt;--admin4_code nvarchar(20) NULL,&lt;br /&gt;--population bigint NULL,&lt;br /&gt;--elevation int NULL,&lt;br /&gt;--gtopo30 int NULL,&lt;br /&gt;--timezone char(31) NULL,&lt;br /&gt;--modification_date date NULL)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Luego insertamos la data desde el nuevo archivo convertido en UTF16 en nuestra base de datos.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--BULK INSERT Core.GeoNames&lt;br /&gt;--FROM &amp;#39;C:\Reference\GeoNames\utf16Allcountries.txt&amp;#39;&lt;br /&gt;--WITH( DATAFILETYPE = &amp;#39;widechar&amp;#39;,&lt;br /&gt;-- FIELDTERMINATOR = &amp;#39;\t&amp;#39;,&lt;br /&gt;-- ROWTERMINATOR = &amp;#39;\n&amp;#39;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--Select top 1000 * from Core.GeoNames&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En este punto ya tenemos la data cargada y pod&amp;iacute;amos hacer consultas sobre ella, incluso tenemos unos campos con latitud y longitud pero no estamos aprovechando el poder de los datos geogr&amp;aacute;ficos de SQL Server 2008 R2 (incluso en su versi&amp;oacute;n Express que es gratuita). As&amp;iacute; que modificamos la tabla de GeoNames para incluir un campo geogr&amp;aacute;fico. (Los campos geogr&amp;aacute;ficos incluyen en su an&amp;aacute;lisis la curvatura de la tierra, los campos geom&amp;eacute;tricos no, as&amp;iacute; que si uno quiere analizar cosas peque&amp;ntilde;as como una bodega, almac&amp;eacute;n, etc, usando sus coordenadas gps y georeferenciacion debe usar campos geom&amp;eacute;tricos, pero ese es tema de otro post)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--ALTER TABLE Core.GeoNames&lt;br /&gt;-- ADD geog GEOGRAPHY NULL&lt;br /&gt;--GO&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Creado el campo geogr&amp;aacute;fico hay que actualizarlo con la informaci&amp;oacute;n de cada punto, n&amp;oacute;tese aqu&amp;iacute; como se construye el campo utilizando la funci&amp;oacute;n POINT a la que le pasamos la longitud y latitud. (Curiosamente si se integra luego esto con GoogleMaps ellos utilizan latitud y longitud)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--UPDATE Core.GeoNames&lt;br /&gt;-- SET geog = GEOGRAPHY::STGeomFromText&lt;br /&gt;-- (&amp;#39;POINT(&amp;#39; + CAST(longitude AS CHAR(20))&lt;br /&gt;-- + &amp;#39; &amp;#39; + CAST(latitude AS CHAR(20)) + &amp;#39;)&amp;#39;,4326)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un par de &amp;iacute;ndices son buenos y necesarios para las consultas sobre 9 millones de registros tengan un rendimiento aceptable.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--ALTER TABLE Core.GeoNames&lt;br /&gt;-- ADD CONSTRAINT pk_geonames_geonameid&lt;br /&gt;-- PRIMARY KEY (geonameid)&lt;br /&gt;--GO&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE SPATIAL INDEX geonames_mmmm16_sidx&lt;br /&gt;-- ON Core.GeoNames(geog)&lt;br /&gt;-- USING GEOGRAPHY_GRID&lt;br /&gt;-- WITH (&lt;br /&gt;-- GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM),&lt;br /&gt;-- CELLS_PER_OBJECT = 16,&lt;br /&gt;-- PAD_INDEX = ON&lt;br /&gt;-- )&lt;br /&gt;--GO&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La informaci&amp;oacute;n descriptiva de los pa&amp;iacute;ses, regiones e idiomas tambi&amp;eacute;n esta disponible en los archivos:&lt;/p&gt;
&lt;p&gt;countryInfo.txt, admin2Codes.txt, admin1CodesASCII.txt, iso-languagecodes.txt, timeZones.txt&lt;/p&gt;
&lt;p&gt;Con sus correspondientes scripts:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[TimeZones](&lt;br /&gt;-- [CountryCode] [nvarchar](255) NULL,&lt;br /&gt;-- [TimeZoneId] [nvarchar](255) NULL,&lt;br /&gt;-- [GMT offset 1# Jan 2012] [float] NULL,&lt;br /&gt;-- [DST offset 1# Jul 2012] [float] NULL,&lt;br /&gt;-- [rawOffset (independant of DST)] [float] NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[Iso-LanguageCodes](&lt;br /&gt;-- [ISO 639-3] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO 639-2] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO 639-1] [nvarchar](255) NULL,&lt;br /&gt;-- [Language Name] [nvarchar](255) NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[countryInfo](&lt;br /&gt;-- [ISO] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO3] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO-Numeric] [float] NULL,&lt;br /&gt;-- [fips] [nvarchar](255) NULL,&lt;br /&gt;-- [Country] [nvarchar](255) NULL,&lt;br /&gt;-- [Capital] [nvarchar](255) NULL,&lt;br /&gt;-- [Area] [float] NULL,&lt;br /&gt;-- [Population] [float] NULL,&lt;br /&gt;-- [Continent] [nvarchar](255) NULL,&lt;br /&gt;-- [tld] [nvarchar](255) NULL,&lt;br /&gt;-- [CurrencyCode] [nvarchar](255) NULL,&lt;br /&gt;-- [CurrencyName] [nvarchar](255) NULL,&lt;br /&gt;-- [Phone] [float] NULL,&lt;br /&gt;-- [Postal Code Format] [nvarchar](255) NULL,&lt;br /&gt;-- [Postal Code Regex] [nvarchar](255) NULL,&lt;br /&gt;-- [Languages] [nvarchar](255) NULL,&lt;br /&gt;-- [geonameid] [float] NULL,&lt;br /&gt;-- [neighbours] [nvarchar](255) NULL,&lt;br /&gt;-- [EquivalentFipsCode] [nvarchar](255) NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[AdminCodes](&lt;br /&gt;-- [adminCode] [nvarchar](255) NULL,&lt;br /&gt;-- [name] [nvarchar](255) NULL,&lt;br /&gt;-- [fullName] [nvarchar](255) NULL,&lt;br /&gt;-- [geonamesId] [float] NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esta informaci&amp;oacute;n nos permite crear una estructura de datos desde la cual podemos consultar los estados de un pa&amp;iacute;s (departamentos, provincias), las ciudades que hacen parte de ese estado y muchas m&amp;aacute;s consultas sobre proximidad, por ejemplo cual es la ciudad de m&amp;aacute;s de 15.000 habitantes m&amp;aacute;s cercana a mi punto actual.&lt;/p&gt;
&lt;p&gt;Unas consultas r&amp;aacute;pidas para entender la estructura de datos generada:&lt;/p&gt;
&lt;p&gt;Lista de Pa&amp;iacute;ses: (mejor obtenerla de la tabla countryInfo):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;Select * from CoreDB.Core.GeoNames Where&lt;br /&gt;Feature_code = &amp;#39;PCLI&amp;#39;&lt;br /&gt;Order by Name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lista de Departamentos (regiones, provincias) de un pa&amp;iacute;s:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--deptos o primer nivel&lt;br /&gt;Select top 100 * from CoreDB.Core.GeoNames Where&lt;br /&gt;Country_code =&amp;#39;CO&amp;#39; and Feature_code = &amp;#39;ADM1&amp;#39;&lt;br /&gt;Order By name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Donde CO es el c&amp;oacute;digo del pa&amp;iacute;s.&lt;br /&gt;Lista de las ciudades que pertenecen a un depto&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--Ciudades o segundo nivel&lt;br /&gt;Select * from CoreDB.Core.GeoNames Where&lt;br /&gt;Country_code =&amp;#39;CO&amp;#39; and Admin1_code = 02 and Feature_code = &amp;#39;ADM2&amp;#39;&lt;br /&gt;Order By name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Donde CO es el c&amp;oacute;digo del pa&amp;iacute;s, en este caso Colombia, y Admin1_code es el c&amp;oacute;digo del departamento (regi&amp;oacute;n, provincia) seleccionado anteriormente.&lt;/p&gt;
&lt;p&gt;Con estos datos estamos listos para construir una capa de servicios que exponga esta informaci&amp;oacute;n, eso lo haremos en la segunda parte.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pel&amp;aacute;ez&lt;br /&gt;Arquitecto de software&lt;br /&gt;&lt;a href="http://www.3metas.com/"&gt;3Metas Corp.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.juanpelaez.com/"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Referencias:&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.geonames.org/"&gt;http://www.geonames.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.geonames.org/export/codes.html"&gt;http://www.geonames.org/export/codes.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://midnightprogrammer.net/post/Integrate-Bing-Maps-With-Geonames-Database-And-ASPNET.aspx"&gt;http://midnightprogrammer.net/post/Integrate-Bing-Maps-With-Geonames-Database-And-ASPNET.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forum.geonames.org/gforum/posts/list/817.page"&gt;http://forum.geonames.org/gforum/posts/list/817.page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/edkatibah/archive/2009/01/13/loading-geonames-data-into-sql-server-2008-yet-another-way.aspx"&gt;http://blogs.msdn.com/b/edkatibah/archive/2009/01/13/loading-geonames-data-into-sql-server-2008-yet-another-way.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nota: Algunas de estas operaciones de procesamiento del archivo, creaci&amp;oacute;n de &amp;iacute;ndices, etc., toman varios minutos, m&amp;aacute;s de 10, en mi maquina de escritorio que es una buena maquina.&lt;/p&gt;
&lt;p&gt;Continent codes :&lt;br /&gt;AF : Africa geonameId=6255146&lt;br /&gt;AS : Asia geonameId=6255147&lt;br /&gt;EU : Europe geonameId=6255148&lt;br /&gt;NA : North America geonameId=6255149&lt;br /&gt;OC : Oceania geonameId=6255151&lt;br /&gt;SA : South America geonameId=6255150&lt;br /&gt;AN : Antarctica geonameId=6255152&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205191" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/GeoReferenciacion/default.aspx">GeoReferenciacion</category></item><item><title>Adicionar Headers en Mensajes SOAP</title><link>http://geeks.ms/blogs/jkpelaez/archive/2010/12/05/adicionar-headers-en-mensajes-soap.aspx</link><pubDate>Sun, 05 Dec 2010 06:02:28 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:185646</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=185646</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=185646</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2010/12/05/adicionar-headers-en-mensajes-soap.aspx#comments</comments><description>&lt;p&gt;Para diferentes efectos (enrutamiento por ejemplo) es necesario agregar a los mensajes SOAP gestionados por servicios de WCF un encabezado (header) personalizado con información, de esta forma se puede enviar información entre los clientes y los servicios sin que sea necesario modificar el contenido del servicio (datos). Un recordatorio rápido de cómo hacerlo usando código en &lt;strong&gt;&lt;span style="font-size:x-small;"&gt;WCF 3.5.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;ServicioFuncionario.ServicioFuncionarioClient sv = &lt;span class="kwrd"&gt;new&lt;/span&gt; ServicioFuncionario.ServicioFuncionarioClient();
&lt;span class="kwrd"&gt;using&lt;/span&gt; (&lt;span class="kwrd"&gt;new&lt;/span&gt; OperationContextScope(sv.InnerChannel))
{
     MessageHeader headerLocal = MessageHeader.CreateHeader(&lt;span class="str"&gt;&amp;quot;Key&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;http://serviciosproduccionCP&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;HostCP&amp;quot;&lt;/span&gt;);
     OperationContext.Current.OutgoingMessageHeaders.Add(headerLocal);

     MessageHeader headerBogota = MessageHeader.CreateHeader(&lt;span class="str"&gt;&amp;quot;Key&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;http://serviciosproduccionBogota&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;HostBogota&amp;quot;&lt;/span&gt;);
     OperationContext.Current.OutgoingMessageHeaders.Add(headerBogota);

     resultado = sv.FuncionarioLogin(login, passWord);
}

sv.Close();&lt;/pre&gt;

&lt;p&gt;Este código agrega dos encabezados a la petición funcionarioLogin, el valor HostCP y HostBogota es el que nos interesa agregar a los mensajes, con esa información el servicio podría realizar diferentes procesos como enrutamiento, registro, gestión de errores, respaldo entre otros.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Nota1: en WCF 4.0 se puede utilizar el tag header en el archivo de configuración del servicio.&lt;/p&gt;

&lt;p&gt;Nota2: El protocolo usado en la comunicación debe tener soporte para la gestión de encabezados en el mensaje SOAP.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Juan Peláez&lt;/p&gt;

&lt;p&gt;3Metas Corp&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=185646" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Multicast with WCF 3.5</title><link>http://geeks.ms/blogs/jkpelaez/archive/2010/12/04/multicast-with-wcf-3-5.aspx</link><pubDate>Sat, 04 Dec 2010 05:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:185645</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=185645</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=185645</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2010/12/04/multicast-with-wcf-3-5.aspx#comments</comments><description>&lt;p&gt;Para escenarios de Arquitecturas Distribuidas con Multicast usando &lt;strong&gt;WCF 3.5&lt;/strong&gt; una opción posible es la siguiente: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;[ServiceContract(Namespace = &lt;span class="str"&gt;&amp;quot;http://servicios.cliente/2009/06&amp;quot;&lt;/span&gt;, Name = &lt;span class="str"&gt;&amp;quot;IRouter&amp;quot;&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IServiceRouter
{
   [OperationContract(ReplyAction = &lt;span class="str"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, Action = &lt;span class="str"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;)]
   Message ForwardMessage(Message message);
}

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
&lt;span class="kwrd"&gt;class&lt;/span&gt; ServiceRouter : IServiceRouter
{
               
        &lt;span class="preproc"&gt;#region&lt;/span&gt; IRouter Members
 
        &lt;span class="kwrd"&gt;public&lt;/span&gt; Message ForwardMessage(Message message)
        {
            Message BogotaServer;
            Message localServer;
 
            MessageBuffer messageBuffer = message.CreateBufferedCopy(&lt;span class="kwrd"&gt;int&lt;/span&gt;.MaxValue);
            Message messageCopy = messageBuffer.CreateMessage();
            Message messageCopy2 = messageBuffer.CreateMessage();
 
 
            &lt;span class="rem"&gt;//Almacenamiento en servidor local finca   &lt;/span&gt;
            &lt;span class="kwrd"&gt;int&lt;/span&gt; headerLocalIndex = message.Headers.FindHeader(&lt;span class="str"&gt;&amp;quot;Key&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;http://serviciosproduccionCP&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (headerLocalIndex != -1)
            {
                &lt;span class="kwrd"&gt;string&lt;/span&gt; localHost = message.Headers.GetHeader&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(headerLocalIndex);
                ChannelFactory&amp;lt;IServiceRouter&amp;gt; client = &lt;span class="kwrd"&gt;new&lt;/span&gt; ChannelFactory&amp;lt;IServiceRouter&amp;gt;(localHost);
                localServer = (client.CreateChannel()).ForwardMessage(messageCopy);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span class="str"&gt;&amp;quot;No se puede encontrar la cabecera &amp;#39;local&amp;#39;&amp;quot;&lt;/span&gt;);
            }
 
            &lt;span class="rem"&gt;//Almacenamiento en servidor de Bogotá.  &lt;/span&gt;
            &lt;span class="kwrd"&gt;int&lt;/span&gt; headerBogotaIndex = message.Headers.FindHeader(&lt;span class="str"&gt;&amp;quot;Key&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;http://serviciosproduccionBogota&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (headerBogotaIndex != -1)
            {
                &lt;span class="kwrd"&gt;string&lt;/span&gt; bogotaHost = message.Headers.GetHeader&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(headerBogotaIndex);
                ChannelFactory&amp;lt;IServiceRouter&amp;gt; client = &lt;span class="kwrd"&gt;new&lt;/span&gt; ChannelFactory&amp;lt;IServiceRouter&amp;gt;(bogotaHost);
                BogotaServer = (client.CreateChannel()).ForwardMessage(messageCopy2);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span class="str"&gt;&amp;quot;No se puede encontrar la cabecera &amp;#39;bogota&amp;#39;&amp;quot;&lt;/span&gt;);
            }
 
            &lt;span class="kwrd"&gt;return&lt;/span&gt; BogotaServer; 
 
        }
 
        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;
    }&lt;/pre&gt;


&lt;pre&gt;&amp;#160;&lt;/pre&gt;

&lt;p&gt;Este código analiza la información enviada por el cliente y crea una copia del mensaje que es distribuido posteriormente a los servidores que estén registrados en el encabezado del mensaje. Esta técnica de enrutamiento se basa en Contenido, el contenido del header del mensaje SOAP. &lt;/p&gt;

&lt;p&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;Juan Peláez &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.3metas.com/es/" target="_blank"&gt;3Metas Corp.&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=185645" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Grid changes in Edit Event–Framework 4.0</title><link>http://geeks.ms/blogs/jkpelaez/archive/2010/11/18/grid-changes-in-edit-event-framework-4-0.aspx</link><pubDate>Thu, 18 Nov 2010 06:38:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:185021</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=185021</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=185021</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2010/11/18/grid-changes-in-edit-event-framework-4-0.aspx#comments</comments><description>&lt;p&gt;Uno de los clientes de &lt;a href="http://www.3metas.com/"&gt;3Metas&lt;/a&gt; utiliza un conjunto importante de controles GridView de ASP.Net para su aplicación de misión crítica, por diferentes consideraciones de diseño estas grillas utilizan unas imágenes para indicar la modificación de registros, pero en vez de editar el registro en la grilla misma cuando se hace clic en el icono se dirige al usuario a un formulario con más validaciones e información, cuando finaliza la edición el usuario regresa a la grilla, muy elegante en términos de usabilidad y experiencia de usuario. &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Para controlar el evento de edición y obtener el id del registro que se está modificando se hace uso del evento RowEditing del control. En las versiones 2 y 3.5 del framework este comportamiento funcionaba perfectamente, sin embargo al migrar la solución al framework 4.0 y visual studio 2010 este flujo de navegación dejo de comportarse de la forma acostumbrada, ahora cuando el usuario termina el proceso de edición y regresa a la página con el control GridView toda la grilla esta en modo de edición. &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Este cambio introducido en el Framework 4.0 y que afecta muchas líneas de código ya construido está reportado en &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/554166/gridview-sets-editindex-property-when-in-previous-net-versions-it-didnt"&gt;Connect&lt;/a&gt; y en el foro de &lt;a href="http://forums.asp.net/p/1549677/3804982.aspx"&gt;ASP.Net&lt;/a&gt;, para nosotros la solución más rápida y que introducía menos problemas fue cancelar la edición del registro al terminar el método usando &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;e.cancel = true; &lt;/b&gt;&lt;b&gt;//cancelar el proceso de edición por cambios en el comportamiento del framework 4.0 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Probablemente la mejor forma de lograr este efecto de navegación no era precisamente utiliza el evento RowEditing, sino utilizar un link o image column template, incluso para procesar algo antes de navegar al formulario de edición se hubiera podido usar un button template o un template personalizado, pero la aplicación de nuestro cliente ya estaba así y no era viable realizar ese cambio. &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=185021" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/.Net/default.aspx">.Net</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Framework+4/default.aspx">Framework 4</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/ASP.Net/default.aspx">ASP.Net</category></item><item><title>Integrando Visual FoxPro con Windows Communication Foundation</title><link>http://geeks.ms/blogs/jkpelaez/archive/2010/03/27/integrando-visual-foxpro-con-windows-communication-foundation.aspx</link><pubDate>Sat, 27 Mar 2010 21:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:171552</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=171552</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=171552</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2010/03/27/integrando-visual-foxpro-con-windows-communication-foundation.aspx#comments</comments><description>&lt;p&gt;Uno de los clientes de &lt;a href="http://www.3metas.com/"&gt;3Metas&lt;/a&gt; tiene una 
base instalada muy importante de aplicaciones construidas en Visual Fox Pro 7, 8 
y 9. Durante los &amp;uacute;ltimos meses hemos trabajado en conjunto para desarrollar una 
estrategia de migraci&amp;oacute;n de estas aplicaciones hacia una arquitectura orientada a 
servicios (SOA) construida con WCF y el Framework 3.5 de .Net. &lt;/p&gt;
&lt;p&gt;Uno de los aspectos claves de un proceso como estos consiste en evitar al 
m&amp;aacute;ximo que se siga construyendo funcionalidad en Visual Fox Pro (VFP) as&amp;iacute; que el 
primer paso de la estrategia consiste en la integraci&amp;oacute;n de VFP con servicios de 
Windows Communication Foundation (WCF) de forma tal que las aplicaciones 
actuales se vean beneficiadas de las mejoras en la l&amp;oacute;gica de negocios o de 
nuevas funcionalidades que se construyen con la &amp;uacute;ltima tecnolog&amp;iacute;a disponible. 
&lt;/p&gt;
&lt;p&gt;1. Lo primero que debe hacerse es construir un servicio de WCF en lo que no 
profundizare especialmente. 
&lt;/p&gt;
&lt;p&gt;2. En nuestro caso una vez que tuvimos construido el servicio construimos una 
&lt;a href="http://en.wikipedia.org/wiki/Facade_pattern"&gt;fachada&lt;/a&gt; para su 
utilizaci&amp;oacute;n desde VFP. 
&lt;/p&gt;
&lt;p&gt;3. En esta fachada establecemos las referencias a los servicios por medio de 
la herramienta de Visual Studio, all&amp;iacute; verificamos el tipo de conversi&amp;oacute;n que se 
realizar&amp;aacute; sobre las colecciones gen&amp;eacute;ricas, como queremos proteger la inversi&amp;oacute;n 
del cliente en este proyecto esta fachada deber&amp;aacute; poderse usar desde VFP pero 
tambi&amp;eacute;n desde aplicaciones desarrolladas con .Net hoy y en el futuro. 
&lt;/p&gt;
&lt;p&gt;4. Creamos una clase que estar&amp;aacute; visibles por COM desde VFP y que ser&amp;aacute; la 
fachada para esta herramienta 
&lt;/p&gt;
&lt;p&gt;5. Esta clase debe estar decorada como COM visible [ComVisible(true)] y para 
asegurar las opciones de Intellisense tambi&amp;eacute;n agregamos la decoraci&amp;oacute;n de 
generaci&amp;oacute;n de la Interfaz [ClassInterface(ClassInterfaceType.AutoDual)] 
&lt;/p&gt;
&lt;p&gt;6. Aunque visual Studio 2008 (VS2008) crea el constructor de forma 
predeterminada preferimos asegurarnos as&amp;iacute; que agregamos el constructor, tener 
presente aqu&amp;iacute; que el constructor no puede sobrecargarse ni recibir par&amp;aacute;metros 
para evitar problemas en COM 
&lt;/p&gt;
&lt;p&gt;7. Luego creamos los m&amp;eacute;todos que ser&amp;aacute;n consumidos por VFP y se los decora 
como visibles para COM [ComVisible(true)]. 
&lt;/p&gt;
&lt;p&gt;8. En nuestro caso los m&amp;eacute;todos del servicio de WCF devuelven colecciones 
gen&amp;eacute;ricas de tipos espec&amp;iacute;ficos, por ejemplo la colecci&amp;oacute;n de colores de la 
entidad color: [CollectionDataContract(Name = &amp;quot;Colores&amp;quot;, Namespace 
=&amp;quot;http://myDomain.com/Data/2010/01&amp;quot;)] public class Colores: 
Collection&amp;lt;ColorEntity&amp;gt; {}, para que estos m&amp;eacute;todos puedan ser consumidos 
desde VFP y teniendo en cuenta la restricci&amp;oacute;n de COM para el manejo de gen&amp;eacute;ricos 
se realiza una modificaci&amp;oacute;n al m&amp;eacute;todo para que no retorne la colecci&amp;oacute;n sino que 
retorno un arreglo de objetos que es algo que si puede ser manejado por VFP, la 
posibilidad de convertir la colecci&amp;oacute;n gen&amp;eacute;rica en un arreglo se adiciono con 
LINQ, as&amp;iacute; que debe establecerse la referencia a LINQ en el proyecto y la clase, 
al final debe quedar algo como esto: 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.InteropServices;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; ServicioProducto;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ServicesFacade&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    [ComVisible(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    [ClassInterface(ClassInterfaceType.AutoDual)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ProductoFacadeVFP&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="rem"&gt;//default constructor&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ProductoFacadeVFP() {}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;      &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Metodo trae los colores del Sistema&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        [ComVisible(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Color[] GetColores()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            Colores colores = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                ServicioProductoClient srv = &lt;span class="kwrd"&gt;new&lt;/span&gt; ServicioProductoClient();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                colores = srv.GetColores();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                srv.Close();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; ex;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; colores.ToArray();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;     }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="padding:0px;border-width:0px;margin:4px 0px 0px;" id="d822a4af-b3be-4f71-bd3d-7c02313d8284" class="postBody"&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;9. Al compilar este proyecto se obtendr&amp;aacute; una DLL y un archivo de 
configuraci&amp;oacute;n que corresponde a la forma como se establecer&amp;aacute; la comunicaci&amp;oacute;n con 
el servicio (Address y Bindings), estos dos archivos son los que deben 
entregarse a los desarrolladores de VFP para que consuman los servicios. 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Completada la fase de preparaci&amp;oacute;n y construcci&amp;oacute;n de los servicios y su 
fachada los desarrolladores de VFP ya pueden integrar estos componentes en sus 
aplicaciones, para ello deben realizarse las siguientes actividades: 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. Registrar la Interfaz COM de la fachada de los servicios por medio del 
comando &lt;a href="http://msdn.microsoft.com/en-us/library/tzat5yw6%28VS.71%29.aspx"&gt;regasm&lt;/a&gt;, 
idealmente deber&amp;iacute;a utilizarse el par&amp;aacute;metro CODEBASE, la instrucci&amp;oacute;n ser&amp;iacute;a algo 
como esto si se corre desde el directorio del Framework 2.0 de .Net: 
&lt;b&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&amp;gt;RegAsm.exe 
&amp;quot;C:\3Metas\Clients\Cliente\Proyecto\ServiceFacade\ ServicesFacade.dll&amp;quot; 
/CODEBASE&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;2. Uno de los aspectos m&amp;aacute;s importantes de WCF es la separaci&amp;oacute;n de la 
configuraci&amp;oacute;n del servicio del c&amp;oacute;digo, el address y el binding del servicio que 
est&amp;aacute;n definidos en el archivo de configuraci&amp;oacute;n, este archivo de configuraci&amp;oacute;n se 
gener&amp;oacute; al compilar la fachada. Para cada proyecto en el que va a utilizarse la 
fachada se debe copiar el archivo de configuraci&amp;oacute;n del servicio en la misma ruta 
del ejecutable de la aplicaci&amp;oacute;n de VFP o para depuraci&amp;oacute;n en la ruta donde reside 
el proyecto, este archivo debe renombrarse con el nombre de la aplicaci&amp;oacute;n de VFP 
y la extensi&amp;oacute;n .config, en nuestro caso queda algo como esto: 
aplicaciondelcliente.exe.config. Muchos de los errores que se pueden presentar 
al usar la fachada tienen que ver con el hecho de que la aplicaci&amp;oacute;n no encuentra 
el archivo de configuraci&amp;oacute;n. 
&lt;/p&gt;
&lt;p&gt;3. Registrada la interfaz COM de la fachada y renombrado y ubicado 
correctamente el archivo de configuraci&amp;oacute;n del servicio ya est&amp;aacute; todo listo para 
que el desarrollador pueda utilizar los servicios desde VFP. Solo debe utilizar 
el m&amp;eacute;todo CREATEOBJECT con el nombre de la clase de la fachada. Por ejemplo: 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;LOCAL Colores &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;LOCAL MyColor &lt;span class="kwrd"&gt;as&lt;/span&gt; ServiceFacade.ServicioProducto.Color &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;LOCAL ProductoFacade &lt;span class="kwrd"&gt;as&lt;/span&gt; ServicesFacade.ProductoFacadeVFP &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;ProductoFacade = CREATEOBJECT(&lt;span class="str"&gt;&amp;quot;ServicesFacade.ProductoFacadeVFP&amp;quot;&lt;/span&gt;) &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;Colores = ProductoFacade.GetColores() &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;OPEN DATABASE &lt;span class="str"&gt;&amp;quot;C:\3Metas\Clients\Integration\sampledata&amp;quot;&lt;/span&gt; EXCLUSIVE &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;USE color IN 0 EXCLUSIVE ALIAS tblColor &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;ZAP &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;FOR EACH Item IN Colores &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    INSERT INTO color (ColorId) VALUES (Item.ColorId) &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;ENDFOR &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Listo, el equipo de desarrolladores de VFP est&amp;aacute; consumiendo servicios de WCF. 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Juan Pel&amp;aacute;ez&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;CTO &lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3Metas Corp.&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Aclaraciones importantes: &lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;middot; Con Visual Fox Pro se pueden consumir servicios Web, as&amp;iacute; que si se exponen 
los servicios de WCF con un binding b&amp;aacute;sico HTTP el servicio de WCF se ve 
exactamente igual que un servicio web y por tanto se consume sin problemas desde 
FoxPro, sin embargo desde la perspectiva t&amp;eacute;cnica puede llegar a tener problemas 
con objetos de negocios que VFP no entienda o que el servicio de WCF este 
expuesto por otro binding lo que har&amp;iacute;a imposible consumirlo desde VFP nativo, en 
nuestro caso las aplicaciones no estaba construidas consumiendo servicios web y 
el cliente no quer&amp;iacute;a invertir tiempo de los desarrolladores en que aprendieran a 
consumir servicios web desde VFP, de all&amp;iacute; ten&amp;iacute;a sentido que ellos consumieran 
objetos COM que les son familiares. 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;middot; Al crearse el proyecto de fachada podr&amp;iacute;a configurarse por medio de VS2008 
la conversi&amp;oacute;n de las colecciones gen&amp;eacute;ricas en arreglos (ARRAYS) sin embargo eso 
har&amp;iacute;a que la fachada perdiera tipos de datos que podr&amp;iacute;an ser utilizados por 
clientes de .Net 
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Referencias: &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnet247.com/247reference/msgs/15/75021.aspx"&gt;http://www.dotnet247.com/247reference/msgs/15/75021.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.west-wind.com/presentations/VfpDotNetInterop/DotNetFromVFP.asp"&gt;http://www.west-wind.com/presentations/VfpDotNetInterop/DotNetFromVFP.asp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.west-wind.com/presentations/dotnetfromVfp/DotNetFromVfp_ComplexObjects.asp"&gt;http://www.west-wind.com/presentations/dotnetfromVfp/DotNetFromVfp_ComplexObjects.asp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/calvin_hsia/archive/2005/09/02/460206.aspx"&gt;http://blogs.msdn.com/calvin_hsia/archive/2005/09/02/460206.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Publicidad&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Migrando aplicaciones de visual fox pro a .net? tratando de establecer una 
politica o un proceso de desarrollo para sus aplicaciones legacy? contactenos a 
&lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;, nuestro equipo tiene la 
experiencia y las habilidades necesarias para tener resultados exitosos. &lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=171552" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/3Metas/default.aspx">3Metas</category></item><item><title>Usando LiveMesh en Ambientes de Trabajo.</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/10/21/usando-livemesh-en-ambientes-de-trabajo.aspx</link><pubDate>Wed, 21 Oct 2009 15:57:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:158561</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=158561</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=158561</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/10/21/usando-livemesh-en-ambientes-de-trabajo.aspx#comments</comments><description>&lt;p&gt;Uno de los paradigmas que 3Metas (&lt;a href="http://www.3metas.com"&gt;www.3metas.com&lt;/a&gt;) est&amp;aacute; tratando de romper tiene que ver con las oficinas f&amp;iacute;sicas. La mayor&amp;iacute;a de las personas que trabajan con nosotros permanecen en sus casas la mayor&amp;iacute;a del tiempo pero incluso aquellos que est&amp;aacute;n en sitio con nuestros clientes trabajan desde sus casas algunas veces. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Para poder soportar este tipo de operaci&amp;oacute;n y la expansi&amp;oacute;n geogr&amp;aacute;fica que tenemos en mente es necesario establecer herramientas que reemplacen las que estamos acostumbrados a usar en oficinas tradicionales. Una de esas herramientas es Live Mesh (&lt;a href="https://www.mesh.com/welcome/default.aspx"&gt;https://www.mesh.com/welcome/default.aspx&lt;/a&gt;) &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Con Live Mesh cada una de las personas de nuestro equipo puede tener sincronizados en todo momento los documentos y/o archivos relacionados con un proyecto o incluso con la compa&amp;ntilde;&amp;iacute;a, este es un enfoque diferente al que se le da tradicionalmente a este sistema para permitir la sincronizaci&amp;oacute;n entre varias maquinas de un mismo usuario. A continuaci&amp;oacute;n una gu&amp;iacute;a super r&amp;aacute;pida de c&amp;oacute;mo hacer para usar Mesh en escenarios de trabajo &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;1. Vaya a la p&amp;aacute;gina de Mesh y autent&amp;iacute;quese con su usuario de Windows Live, Messenger o Hotmail. &lt;/p&gt;
&lt;p&gt;2. Una vez que se autentique y este en la ventana de administraci&amp;oacute;n de dispositivos haga clic en el icono de agregar dispositivos e instale la aplicaci&amp;oacute;n Mesh en su computadora. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/DeviceManager_5F00_1982420F.jpg"&gt;&lt;img height="147" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/DeviceManager_5F00_thumb_5F00_2FF4E096.jpg" alt="DeviceManager" border="0" title="DeviceManager" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/InstallOnDevice_5F00_23F2F062.jpg"&gt;&lt;img height="147" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/InstallOnDevice_5F00_thumb_5F00_6852E1A1.jpg" alt="InstallOnDevice" border="0" title="InstallOnDevice" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;3. Terminado el proceso de instalaci&amp;oacute;n l&amp;oacute;guese desde la aplicaci&amp;oacute;n cliente y seleccione la carpeta que desea compartir con su equipo de trabajo. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/ClientLogin_5F00_19721C42.jpg"&gt;&lt;img height="165" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/ClientLogin_5F00_thumb_5F00_6967CAC0.jpg" alt="ClientLogin" border="0" title="ClientLogin" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/AddFolderToMesh_5F00_688F64D6.jpg"&gt;&lt;img height="147" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/AddFolderToMesh_5F00_thumb_5F00_0216F204.jpg" alt="AddFolderToMesh" border="0" title="AddFolderToMesh" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;4. Luego puede invitar a otros usuarios a que tengan acceso a estos documentos. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/InviteMembers_5F00_2C16F02C.jpg"&gt;&lt;img height="154" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/InviteMembers_5F00_thumb_5F00_6957A4F3.jpg" alt="InviteMembers" border="0" title="InviteMembers" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;5. Cuando los usuarios hagan cambios en los archivos de la carpeta todos recibir&amp;aacute;n una notificaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Las carpetas de Mesh ahora aparecen en azul. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/MeshOnDevice_5F00_4864324C.jpg"&gt;&lt;img height="154" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/MeshOnDevice_5F00_thumb_5F00_41D0B2BC.jpg" alt="MeshOnDevice" border="0" title="MeshOnDevice" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;El proceso anterior es para la primera persona que comparte un grupo de archivos. Para las personas que hacen parte del grupo de trabajo y que son invitadas por primera vez a usar un recurso compartido en Mesh el proceso es m&amp;aacute;s o menor as&amp;iacute;: &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;1. Vaya a la p&amp;aacute;gina de Mesh y autent&amp;iacute;quese con su usuario de Windows Live, Messenger o Hotmail. &lt;/p&gt;
&lt;p&gt;2. Una vez que se autentique y este en la ventana de administraci&amp;oacute;n de dispositivos haga clic en el icono de agregar dispositivos e instale la aplicaci&amp;oacute;n Mesh en su computadora. &lt;/p&gt;
&lt;p&gt;3. Terminado el proceso de instalaci&amp;oacute;n l&amp;oacute;guese desde la aplicaci&amp;oacute;n cliente &lt;/p&gt;
&lt;p&gt;4. Haga clic en el link de la invitaci&amp;oacute;n a la carpeta compartida que le llega a su correo. &lt;/p&gt;
&lt;p&gt;5. Se habr&amp;aacute; creado un icono en el escritorio, haga doble clic en este icono y verifique la ruta en la que quiere almacenar los archivos que se sincronice desde Mesh. &lt;/p&gt;
&lt;p&gt;6. Listo, ya puede est&amp;aacute; usando Mesh. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Cada vez que usted o alguien del grupo de trabajo modifique un archivo todos ser&amp;aacute;n actualizados. No existe control de versiones aun y el sistema informa de conflictos por modificaciones simult&amp;aacute;neas, es mejor establecer un poco de orden para evitar problemas pero en general nos ha resultado una herramienta muy &amp;uacute;til. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Si aun no le queda claro que hace LiveMesh piense en ella como un recurso de red compartido, pero que est&amp;aacute; en Internet. (La unidad P, Z, X o alguna de esas en las que lo obligan a guardar las cosas que quieren que les hagan backup y que generalmente est&amp;aacute;n en un servidor de la red). &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Juan Pelaez &lt;br /&gt;CTO &lt;br /&gt;3Metas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3a74f770-e731-46e3-af54-1c6df26b2677" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/LiveMesh"&gt;LiveMesh&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Mesh"&gt;Mesh&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Software+Tools"&gt;Software Tools&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Keywords: Emprendimiento, Entrepreneur, Innovaci&amp;oacute;n, Creatividad, Gesti&amp;oacute;n de Empresas de Software, Empresa Virtual, commute work, Juan Pelaez, 3Metas, Herramientas, Live Mesh&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=158561" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Gestion+de+Empresas+de+Software/default.aspx">Gestion de Empresas de Software</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/3Metas/default.aspx">3Metas</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/LiveMesh/default.aspx">LiveMesh</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Software+Tools/default.aspx">Software Tools</category></item><item><title>Windows 7 y Dispositivos Moviles</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/09/13/windows-7-y-dispositivos-moviles.aspx</link><pubDate>Mon, 14 Sep 2009 03:25:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:155866</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=155866</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=155866</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/09/13/windows-7-y-dispositivos-moviles.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Algo r&amp;aacute;pido, en @3Metas hemos trabajado mucho los &amp;uacute;ltimos meses en el desarrollo de aplicaciones para dispositivos m&amp;oacute;viles que corren Windows Mobile. Recientemente actualizamos nuestras maquinas de desarrollo a Windows 7 y hemos encontrado un problema cuando se consumen servicios de WCF. &lt;/p&gt;
&lt;p&gt;Como sabr&amp;aacute;n para consumir un servicio WCF desde un dispositivo m&amp;oacute;vil usando el compact framework hay que crear una clase proxy utilizando la utilidad NetCFSvcUtil.exe que hace parte del conjunto &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c8174c14-a27d-4148-bf01-86c2e0953eab&amp;amp;displaylang=en"&gt;power toys del compact framework 3.5 de .net&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;El problema es que cuando se utiliza esta utilidad en Windows 7 siempre se produce un error como este: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Attempting to download metadata from &amp;#39;http://localhost/DinnerNow/service/DeliveryService.svc&amp;#39; using WS-Metadata Exchange or DISCO. &lt;/em&gt;&lt;i&gt;&lt;br /&gt;&lt;em&gt;Error: An error occurred in the tool. &lt;/em&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Error: Error in the application.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Hay una incompatibilidad entre el tool de generaci&amp;oacute;n de la&amp;nbsp; clase proxy y Windows 7, afortunadamente ya fue resuelto y puede obtenerse una actualizaci&amp;oacute;n del tool desde este &lt;a href="http://download.microsoft.com/download/6/2/0/6205ED05-E435-44FC-AA82-B763CA5F8B1A/NetCFSvcUtil.exe"&gt;enlace&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;O se puede generar el archivo proxy en Vista o XP y pasarlo al proyecto en Windows 7 :-).&lt;/p&gt;
&lt;p&gt;Referencias. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/26/netcfsvcutil-exe-and-windows-7.aspx"&gt;http://blogs.msdn.com/habibh/archive/2009/06/26/netcfsvcutil-exe-and-windows-7.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.softpedia.com/news/Updated-NetCFSvcUtil-exe-for-Windows-7-and-Vista-SP2-118787.shtml"&gt;http://news.softpedia.com/news/Updated-NetCFSvcUtil-exe-for-Windows-7-and-Vista-SP2-118787.shtml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Juan Pel&amp;aacute;ez &lt;br /&gt;CTO &lt;br /&gt;3Metas Corp.&lt;/p&gt;
&lt;p&gt;Keywords: Dispositivos m&amp;oacute;viles, Windows Mobile, WCF, Compact Framework, 3Metas, Desarrollo de Aplicaciones, Soluciones para Dispositivos M&amp;oacute;viles, Mobile Devices, Aplicaciones M&amp;oacute;viles, Desarrollo de Software, Arquitectura de Aplicaciones Moviles. &lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b6c55dcb-2b14-4648-a4eb-8bfa11a53452" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Dispositivos+Moviles"&gt;Dispositivos Moviles&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Windows+Mobile"&gt;Windows Mobile&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/SOA"&gt;SOA&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicidad: Necesita desarrollar aplicaciones para Dispositivos Moviles con Windows Mobile?, quiere usar SOA en dispositivos Moviles?, contactenos a &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=155866" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/WCF/default.aspx">WCF</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Mobile+Devices/default.aspx">Mobile Devices</category></item><item><title>De TFS, Control de Versiones, Branching y Otras</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/07/11/de-tfs-control-de-versiones-branching-y-otras.aspx</link><pubDate>Sat, 11 Jul 2009 12:26:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:152232</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=152232</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=152232</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/07/11/de-tfs-control-de-versiones-branching-y-otras.aspx#comments</comments><description>&lt;p&gt;En &lt;a href="http://www.3metas.com/"&gt;3Metas&lt;/a&gt; usamos Visual Studio Team Fundation Server (VSTFS2008) como sistema de gesti&amp;oacute;n de proyecto y control de versiones (*), sin embargo al momento de crear las soluciones comet&amp;iacute; un error por no revisar con cuidado la gu&amp;iacute;a de &lt;a href="http://www.codeplex.com/BranchingGuidance"&gt;Branching de Patterns And Practices de Microsoft&lt;/a&gt; lo que me llevo a quedar con los proyectos y la documentaci&amp;oacute;n andando pero con un esquema incorrecto de control de c&amp;oacute;digo fuente. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La soluci&amp;oacute;n borrar (destruir) los repositorios de C&amp;oacute;digo Fuente (previo backup por supuesto J) y reorganizar el sistema. &lt;/p&gt;
&lt;p&gt;Para destruir un repositorio de c&amp;oacute;digo Fuente, se utiliza el comando &lt;a href="http://msdn.microsoft.com/en-us/library/bb386005.aspx"&gt;&lt;strong&gt;tf destroy&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;,&lt;/strong&gt; (Btw: se encuentra en la ruta Program Files\Microsoft Visual Studio 9.0\Common7\IDE&amp;gt;) desde la consola de comandos, una confirmaci&amp;oacute;n de borrado aparecer&amp;aacute; y luego se listaran los archivos y carpetas que se eliminaron. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s de Borrado puede usarse VS2008 con el Team Explorer para volver a la interfaz de gesti&amp;oacute;n de los sistemas de control de c&amp;oacute;digo fuente y all&amp;iacute; crear de nuevo el repositorio y configurarlo correctamente. Es importante anotar que hay que volver a asignar los permisos a los usuarios que aunque siguen teniendo permisos en el TFS en el Proyecto al que est&amp;aacute;n asignados ahora no tienen permisos en el repositorio de control de versiones. Estos permisos se asignan en la pestana de seguridad de las propiedades del repositorio&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_5F615F52.jpg"&gt;&lt;img height="309" width="516" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_thumb_5F00_2BB8F2F4.jpg" alt="clip_image002" border="0" title="clip_image002" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(el borrado no es lo mismo, el borrado solo marca el repositorio pero sigue existiendo en el sistema se puede ver aqu&amp;iacute;: Tools &amp;gt; Options &amp;gt; Source Control &amp;gt; Visual Studio Team Foundation Server and check &lt;i&gt;Show deleted items in the Source Control Explorer que los archivos no se borraron&lt;/i&gt;)&lt;/p&gt;
&lt;p&gt;(Esto tambi&amp;eacute;n es diferente a la eliminaci&amp;oacute;n del proyecto porque yo no quer&amp;iacute;a perder el portal, documentos, work &amp;iacute;tems, etc que ya se hab&amp;iacute;an alimentado al sistema)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pelaez&lt;/p&gt;
&lt;p&gt;CTO &lt;/p&gt;
&lt;p&gt;3Metas Corp. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;KeyWords: TFS2008, Visual Studio Team Foundation Server 2008, Buenas Pr&amp;aacute;cticas de Desarrollo de Software, Branching, Control de Versiones, Juan Pelaez, 3Metas, Consultores, Expertos Tecnolog&amp;iacute;a Microsoft, Estrategia Digital, Nuevos Medios, Desarrollo de Soluciones Interactivas, Twitter, Facebook, Integraci&amp;oacute;n de Redes Sociales. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:db9c69d3-ef4e-4dcb-866d-fbcb9b54531c" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Emprendimiento"&gt;Emprendimiento&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Microsoft"&gt;Microsoft&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;Team Fundation Server (TFS) es una de esas herramientas &amp;ldquo;must to have&amp;rdquo; para una compa&amp;ntilde;&amp;iacute;a de tecnolog&amp;iacute;a como la nuestra, las caracter&amp;iacute;sticas de control de versiones, gesti&amp;oacute;n del proyecto, personalizaci&amp;oacute;n de la metodolog&amp;iacute;a de desarrollo, etc, etc, la hacen imprescindible en el modelo que estamos construyendo de una empresa en la que cada persona puede trabajar desde donde quiera.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;Aunque no utilice VSTFS2008 una compa&amp;ntilde;&amp;iacute;a que desarrolle software en alg&amp;uacute;n momento siempre debe tener un sistema de control de versiones, uno basado en Internet agrega gran flexibilidad, otro sistema que hemos usado con buenos resultados es &lt;/span&gt;&lt;a href="http://subversion.tigris.org/"&gt;&lt;span style="font-size:xx-small;"&gt;Subversion&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:xx-small;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;Publicado en &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;Publicidad: Necesita integrar sus estrategias de comunicaciones tradiciones con nuevos medios? est&amp;aacute; buscando aprovechar las oportunidades de mercadeo BTL usando Facebook, Twitter, Flicker, YouTube? Contactenos a &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;, tenemos la experiencia y las capacidades para que su proyecto sea exitoso. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=152232" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Gestion+de+Empresas+de+Software/default.aspx">Gestion de Empresas de Software</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/TFS2008/default.aspx">TFS2008</category></item><item><title>Splendid CRM Version 2.1 Codigo Fuente</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/06/16/splendid-crm-version-2-1-codigo-fuente.aspx</link><pubDate>Tue, 16 Jun 2009 17:08:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:150651</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=150651</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=150651</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/06/16/splendid-crm-version-2-1-codigo-fuente.aspx#comments</comments><description>&lt;p&gt;En &lt;a href="http://www.3metas"&gt;www.3metas&lt;/a&gt; usamos el sistema de CRM de &lt;a href="http://www.splendidcrm.com/"&gt;SplendidCRM Company&lt;/a&gt;, que es una implementaci&amp;oacute;n en .Net del muy conocido Sugar CRM. Hace poco se lanzo una versi&amp;oacute;n nueva (3.0), que incluye un mont&amp;oacute;n de nuevas caracter&amp;iacute;sticas en las versiones empresariales y como siempre una versi&amp;oacute;n de comunidad open source, una de las novedades de la versi&amp;oacute;n nueva es la integraci&amp;oacute;n de Windows WorkFlow Foundation con el Core del Sistema CRM. (Por cierto no actualice desde la versi&amp;oacute;n 2.1 a la 3.0, algunas caracter&amp;iacute;sticas dejaran de estas habilitadas.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sin embargo parece que ya no es posible encontrar la versi&amp;oacute;n 2.1 del c&amp;oacute;digo. Algunas personas me lo han pedido por internet, as&amp;iacute; que lo comprim&amp;iacute; y lo publiqu&amp;eacute; en mi skydrive: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-1a646e447a191ea8.skydrive.live.com/self.aspx/Public/SplendidCRM21.zip"&gt;http://cid-1a646e447a191ea8.skydrive.live.com/self.aspx/Public/SplendidCRM21.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Espero que sea &amp;uacute;til para las personas que necesitan esta versi&amp;oacute;n, quieren conocer el c&amp;oacute;digo original, est&amp;aacute;n dado soporte a la versi&amp;oacute;n, etc. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pelaez. &lt;br /&gt;Arquitecto de Software&lt;/p&gt;
&lt;p&gt;Publicado en: &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.juanpelaez.com"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keywords: 3Metas Corp,&amp;nbsp; Juan Pelaez, Colombia, CRM, Splendid CRM, Digital Strategy, Digital Companies. Estragias CRM, Empresas CRM, Implementacion de CRM, CRM Open Source, Desarrolladores CRM, Implementadores de CRM.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:79ee2240-af26-41fa-8477-fddc39edee6b" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colombia"&gt;Colombia&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Fort+Lauderdale"&gt;Fort Lauderdale&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Web+2.0"&gt;Web 2.0&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CRM"&gt;CRM&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Splendid+CRM"&gt;Splendid CRM&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Digital+Strategy"&gt;Digital Strategy&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Publicidad&lt;/strong&gt;: Quiere implementar una estrategia de CRM exitosa en su compa&amp;ntilde;&amp;iacute;a, quiere utilizar software libre sobre plataforma Microsoft para su sistema de CRM. Necesita ayuda para identificar la mejor soluci&amp;oacute;n para su necesidad. Nuestro equipo de 3Metas puede ayudarle. Cont&amp;aacute;ctenos. &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=150651" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Gestion+de+Empresas+de+Software/default.aspx">Gestion de Empresas de Software</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/SlendidCRM/default.aspx">SlendidCRM</category></item><item><title>Ejecutando Windows 7 en MacBookPro</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/06/07/ejecutando-windows-7-en-macbookpro.aspx</link><pubDate>Sun, 07 Jun 2009 13:17:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:150158</guid><dc:creator>jkpelaez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=150158</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=150158</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/06/07/ejecutando-windows-7-en-macbookpro.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hace alg&amp;uacute;n tiempo compr&amp;eacute; una computadora MacBookPro, y &lt;a href="http://www.juanpelaez.com/Blog/2008/04/08/InstalandoWindowsVistaYFedora8EnUnMacBookPro.aspx"&gt;le instale un sistema de triple partici&amp;oacute;n&lt;/a&gt;, la experiencia era buena pero hab&amp;iacute;a d&amp;iacute;as en que (me imagino que como la mayor&amp;iacute;a), dec&amp;iacute;a &amp;ldquo;DIOS Vista, mu&amp;eacute;vete&amp;rdquo;, especialmente programando, haciendo render, navegando en Internet y esas cosas. En fin&amp;hellip; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ayer saque tiempo y le instal&amp;eacute; a la maquina Windows 7. La experiencia de instalaci&amp;oacute;n estuvo bien, hice un upgrade del sistema Windows Vista as&amp;iacute; que la cosa tom&amp;oacute; m&amp;aacute;s de los 30 minutos que promocionan. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La calificaci&amp;oacute;n de la maquina fue la misma de vista: 4.8 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Todos mis archivos y configuraci&amp;oacute;n de programas parecen estar bien, curiosamente ahora tengo m&amp;aacute;s espacio libre que cuando inicie la instalaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El sistema de update del OS se fue a actualizar, est&amp;aacute; cargando versiones nuevas de los drivers de la red inal&amp;aacute;mbrica y la tarjeta de video. &lt;/p&gt;
&lt;p&gt;Para conseguir la llave de licencia fue al sitio de Microsoft, seleccione un instalador en versi&amp;oacute;n e idioma, inicie el proceso de registro, pero no descargue el software solo llegue a la ventana en la que me dan el numero de licencia, lo copie en la ventana de activaci&amp;oacute;n y listo. (por cierto que hice todo el proceso sin este n&amp;uacute;mero, de esta forma la maquina ser&amp;aacute; &amp;uacute;til por 30 d&amp;iacute;as) &lt;/p&gt;
&lt;p&gt;Una cosa interesante fue que el instalador mostr&amp;oacute; una lista de los programas que tendr&amp;iacute;an problemas para ejecutarse despu&amp;eacute;s de la instalaci&amp;oacute;n pero tambi&amp;eacute;n indicaba que si se reinstalaban funcionar&amp;iacute;an bien, los m&amp;aacute;s notorios: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&amp;amp;DisplayLang=en"&gt;Microsoft Network Monitor&lt;/a&gt; y SQL Server 2005, aunque yo uso SQL2008 (WTF?), as&amp;iacute; que no tengo como comprobar si hay alg&amp;uacute;n problema con SQL Server 2005 y mi upgrade de Windows 7, SQL Server 2008 express funciona perfectamente despu&amp;eacute;s de la instalaci&amp;oacute;n. (Revisando el visor de eventos si parece que tengo problemas con reporting services y la creaci&amp;oacute;n de contadores de desempe&amp;ntilde;o.). &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sin embargo al ejecutar el Network Monitor despu&amp;eacute;s de la instalaci&amp;oacute;n encuentro que hay una nueva versi&amp;oacute;n as&amp;iacute; que eso resuelve los problemas, a pesar de los errores en el event viewer Reporting Services tambi&amp;eacute;n est&amp;aacute; funcionando bien, habr&amp;aacute; que investigar m&amp;aacute;s. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s de la instalaci&amp;oacute;n el Input Remaper que usaba para controlar los ventiladores no funciona m&amp;aacute;s, sin embargo aparentemente ahora la maquina se calienta menos. Todo lo dem&amp;aacute;s va bien, la maquina realmente se siente m&amp;aacute;s r&amp;aacute;pida, la barra de tareas es buen&amp;iacute;sima para cambiar de aplicaciones, el sistemita de control de los iconos al lado del reloj es de lujo. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La versi&amp;oacute;n de pruebas que instale es Ultimate as&amp;iacute; que ahora podre probar el reconocimiento de voz en espa&amp;ntilde;ol finalmente a ver si eso si funciona o no. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El nuevo Paint, Calculadora y NotePad son curiosos. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Seguire probando.. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pel&amp;aacute;ez. &lt;/p&gt;
&lt;p&gt;Arquitecto de Software. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.3metas.com"&gt;3Metas Corp&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicado en &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;,&amp;nbsp; Si est&amp;aacute; leyendo esto en otra direcci&amp;oacute;n no se pierda el contenido del sitio original.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2bb36324-f7cb-48b7-85ef-91999f17d942" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/MacBookPro"&gt;MacBookPro&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Windows+7"&gt;Windows 7&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Windows+Vista"&gt;Windows Vista&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Boot"&gt;Boot&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; Windows 7, MacBookPro, Instalacion, Leopard, Linux, Windows Vista, Windows 7, 3Metas Corp, Juan Pel&amp;aacute;ez, Colombia, Fort Lauderdale, Florida, USA, Digital Strategy Company, New Media Company, Social Media Company. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Publicidad:&lt;/strong&gt; Quiere adoptar las &amp;uacute;ltimas tecnolog&amp;iacute;as Microsoft pero no sabe por d&amp;oacute;nde comenzar, nuestro grupo de expertos pueden ayudarlo a explotar lo mejor y m&amp;aacute;s novedoso de esta plataforma en beneficio de su negocio. Escribanos &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=150158" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/MacBook+Pro/default.aspx">MacBook Pro</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Definiciones - Atributos de Calidad para Aplicaciones Distribuidas y de Alta Disponibilidad.</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/definiciones-atributos-de-calidad-para-aplicaciones-distribuidas-y-de-alta-disponibilidad.aspx</link><pubDate>Sat, 30 May 2009 02:23:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:149659</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=149659</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=149659</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/definiciones-atributos-de-calidad-para-aplicaciones-distribuidas-y-de-alta-disponibilidad.aspx#comments</comments><description>&lt;p&gt;Extractado de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fwww.codeplex.com%252fAppArchGuide"&gt;La Gu&amp;iacute;a de Arquitectura Versi&amp;oacute;n 2.0a&lt;/a&gt; del grupo de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fmsdn.microsoft.com%252fen-us%252fpractices%252fdefault.aspx"&gt;Patterns and Practices de Microsoft&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Disponibilidad&lt;/i&gt;&lt;/b&gt; define la proporci&amp;oacute;n del tiempo que el sistema es funcional y trabaja. Puede ser medido como un porcentaje del tiempo total en que el sistema estuvo ca&amp;iacute;do en un periodo predefinido. La disponibilidad puede verse afectada por errores del sistema, problemas de infraestructura, ataques o carga del sistema.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Integridad Conceptual&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;define la consistencia y coherencia del dise&amp;ntilde;o total. Esto incluye la forma en que los componentes o m&amp;oacute;dulos han sido dise&amp;ntilde;ados, as&amp;iacute; como factores como el estilo de codificaci&amp;oacute;n y la nomenclatura de las variables. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Flexibilidad&lt;/i&gt;&lt;/b&gt; es la habilidad del sistema para adaptarse a ambientes y situaciones variables y para soportar cambios en pol&amp;iacute;ticas de negocios y reglas de negocio. Un sistema flexible es uno que es f&amp;aacute;cil de reconfigurar o que se adapta en respuesta a los diferentes requerimientos de usuarios y del sistema. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Interoperabilidad&lt;/i&gt;&lt;/b&gt; es la habilidad de que diversos componentes de un sistema diferentes sistemas funcionen correctamente al intercambiar informaci&amp;oacute;n, com&amp;uacute;nmente por medio de servicios. Un sistema interoperable hace f&amp;aacute;cil intercambiar y usar informaci&amp;oacute;n interna y externamente. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Capacidad de mantenimiento&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;es la habilidad de un sistema para permitir cambios en sus componentes, servicios, caracter&amp;iacute;sticas e interfaces en la medida en que dichos cambios son requeridos cuando se adiciona o cambia la funcionalidad, se corrigen errores o se suplen nuevos requerimientos de negocios. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Capacidad de Administraci&amp;oacute;n&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;define que tan f&amp;aacute;cil es gestionar la aplicaci&amp;oacute;n, usualmente a trav&amp;eacute;s de una instrumentaci&amp;oacute;n suficiente y adecuada que se expone en un sistema de monitoreo para efectos mejoramiento del rendimiento e identificaci&amp;oacute;n de errores. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Rendimiento&lt;/i&gt;&lt;/b&gt; es un indicador de la capacidad de respuesta del sistema para ejecutar una acci&amp;oacute;n dentro de un intervalo de tiempo dado. Puede ser medida en t&amp;eacute;rminos de latencia o de respuesta. Latencia es el tiempo que tarda en responder a un evento, respuesta en es el numero de eventos que tiene lugar en una cantidad dada de tiempo. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Confiabilidad&lt;/i&gt;&lt;/b&gt; es la habilidad de un sistema para mantener operacional en el tiempo. La confiabilidad se mide como la probabilidad de que un sistema no falle en ejecutar la funci&amp;oacute;n para la que fue construido dentro de un periodo especifico de tiempo. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Capacidad de Re-Uso&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;define la capacidad de un componente y un subsistema para ser usado por otras aplicaciones en otros escenarios. La capacidad de re-uso minimiza la duplicaci&amp;oacute;n de componentes as&amp;iacute; como el tiempo de implementaci&amp;oacute;n. &lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Escalabilidad&lt;/i&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;es la habilidad de un sistema para funcionar bien cuando se presentan cambios en la demanda o en la carga del mismo. T&amp;iacute;picamente el sistema ser&amp;aacute; capaz de extenderse a un n&amp;uacute;mero mayor o m&amp;aacute;s poderoso de servidores al incrementarse la demanda o la carga. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Seguridad&lt;/i&gt;&lt;/b&gt; define la forma en que el sistema es protegido de perder o suministrar informaci&amp;oacute;n y la posibilidad de &amp;eacute;xito de un ataque. Un sistema seguro trata de proteger sus actives y previene la modificaci&amp;oacute;n de informaci&amp;oacute;n de fuentes no autorizadas.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Capacidad de Soporte&lt;/i&gt;&lt;/b&gt; define que tan f&amp;aacute;cil es para los operadores, desarrolladores, y usuarios entender y usar la aplicaci&amp;oacute;n as&amp;iacute; como que tan f&amp;aacute;cil es resolver los errores que se presentan cuando la aplicaci&amp;oacute;n falla. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Capacidad de Pruebas&lt;/i&gt;&lt;/b&gt; es una medida de que tan f&amp;aacute;cil es crear un criterio de pruebas para el sistema y sus componentes y como ejecutar estos test en un orden que permita determinar si el criterio se cumpli&amp;oacute;. Una buena capacidad de pruebas hace m&amp;aacute;s com&amp;uacute;n que las falas en el sistema puedan ser aisladas de una forma r&amp;aacute;pida y efectiva. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Usabilidad&lt;/i&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;define que tan bien la aplicaci&amp;oacute;n cumple con los requerimientos de los usuarios y los consumidores al ser intuitiva, f&amp;aacute;cil de localizar y globalizar, y capaz de proveer acceso correcto para usuarios con discapacidad as&amp;iacute; como una experiencia general Buena para el usuario. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Carlos Pelaez &lt;br /&gt;Arquitecto de Sofware. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicado en : &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5cbd652c-1ee5-4021-b90f-47bf8df1a254" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colombia"&gt;Colombia&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Sharepoint"&gt;Sharepoint&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Innovaci%c3%b3n"&gt;Innovaci&amp;oacute;n&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/emprendimiento"&gt;emprendimiento&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Web+2.0"&gt;Web 2.0&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/SOA"&gt;SOA&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arquitectura+de+Software"&gt;Arquitectura de Software&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Servicios+Web"&gt;Servicios Web&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.3metas.com"&gt;3Metas Corp&lt;/a&gt; tiene un grupo de especialistas que pueden apoyar sus procesos de dise&amp;ntilde;o, construcci&amp;oacute;n e implementaci&amp;oacute;n de soluciones.&amp;nbsp; Cont&amp;aacute;ctenos al correo electr&amp;oacute;nico &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=149659" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category></item><item><title>Arquitectura Orientada a Servicios (SOA)</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/arquitectura-orientada-a-servicios-soa.aspx</link><pubDate>Sat, 30 May 2009 01:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:149656</guid><dc:creator>jkpelaez</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=149656</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=149656</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/arquitectura-orientada-a-servicios-soa.aspx#comments</comments><description>&lt;p&gt;Extractado de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fwww.codeplex.com%252fAppArchGuide"&gt;La Gu&amp;iacute;a de Arquitectura Versi&amp;oacute;n 2.0a&lt;/a&gt; del grupo de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fmsdn.microsoft.com%252fen-us%252fpractices%252fdefault.aspx"&gt;Patterns and Practices de Microsoft&lt;/a&gt;. Para los que nos gusta en la lengua de cervantes:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La arquitectura orientada a servicios permite que la funcionalidad de la aplicaci&amp;oacute;n se exponga y consuma como un conjunto de servicios. Los servicios usan una forma est&amp;aacute;ndar de interacci&amp;oacute;n que les permiten ser invocados, publicados y descubiertos. Los servicios SOA est&amp;aacute;n enfocados en proveer un esquema (schema) y una interacci&amp;oacute;n basada en mensajes con una aplicaci&amp;oacute;n. Los servicios SOA proveen interfaces con alcance de aplicaci&amp;oacute;n en vez de interfaces del nivel de componente u objeto. En otras palabras un servicio SOA no debe ser tratado como un servicio prove&amp;iacute;do por un componente. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El estilo SOA tiene las siguientes caracter&amp;iacute;sticas que lo identifican:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;bull; La interacci&amp;oacute;n con los servicios es desacoplada. &lt;/p&gt;
&lt;p&gt;&amp;bull; Puede involucrar procesos de negocios que se convierten en servicios interoperables.&lt;/p&gt;
&lt;p&gt;&amp;bull; Clientes y otros servicios pueden accede a servicios locales que se ejecutan en el mismo nivel.&lt;/p&gt;
&lt;p&gt;&amp;bull; Clientes y otros servicios acceden a servicios remotos sobre una red que los conecta. &lt;/p&gt;
&lt;p&gt;&amp;bull; Estos servicios pueden usar un rango de protocolos y formatos de datos para comunicar informaci&amp;oacute;n. &lt;/p&gt;
&lt;h5&gt;Principios Fundamentales. &lt;/h5&gt;
&lt;p&gt;Los principios fundamentales de la arquitectura estilo SOA son:&lt;/p&gt;
&lt;p&gt;&amp;bull; Los servicios son aut&amp;oacute;nomos. Cada servicio SOA es mantenido, desarrollado, instalado y versionado de forma independiente.&lt;/p&gt;
&lt;p&gt;&amp;bull; Los servicios son distribuibles. Los servicios SOA pueden ser localizados en cualquier parte sobre la red, local o remotamente en tanto que la red soporte los protocolos de comunicaci&amp;oacute;n requeridos. &lt;/p&gt;
&lt;p&gt;&amp;bull; Los servicios son desacoplados. Cada servicio SOA es independiente de los otros y puede ser reemplazado o actualizado sin romper con las aplicaciones que lo consumen en tanto que la interface siga siendo compatible. &lt;/p&gt;
&lt;p&gt;&amp;bull; Los servicios comparten esquemas y contratos no clases. Los servicios SOA comparten contraltos y esquemas cuando se comunican, no clases internas. &lt;/p&gt;
&lt;p&gt;&amp;bull; La compatibilidad est&amp;aacute; basada en pol&amp;iacute;ticas. Pol&amp;iacute;tica en este caso significa la definici&amp;oacute;n de caracter&amp;iacute;sticas como transporte, protocolo y seguridad. &lt;/p&gt;
&lt;h5&gt;Beneficios&lt;/h5&gt;
&lt;p&gt;Los mayores beneficios del estilo de arquitectura SOA son: &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Alineaci&amp;oacute;n con el Dominio&lt;/b&gt;. El re-uso de servicios comunes con interfaces est&amp;aacute;ndar incrementa las oportunidades de negocios y reduce costos. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Abstracci&amp;oacute;n.&lt;/b&gt; Los servicios son aut&amp;oacute;nomos y se accede a ellos a trav&amp;eacute;s de un contrato formal lo que provee desacople y abstracci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Capacidad de Descubrimiento&lt;/b&gt;. Los servicios pueden exponer descripciones que permiten a otras aplicaciones y servicios localizarlos y determinar de forma autom&amp;aacute;tica la interfaz. &lt;/p&gt;
&lt;h5&gt;&lt;/h5&gt;
&lt;h5&gt;Ejemplos&lt;/h5&gt;
&lt;p&gt;Ejemplos comunes de aplicaciones orientadas a servicios incluyen: &lt;/p&gt;
&lt;p&gt;&amp;bull; Sistemas que comparten informaci&amp;oacute;n m&amp;eacute;dica.(Harvard Medical School)&lt;/p&gt;
&lt;p&gt;&amp;bull; Sistemas de reservas (Starwood Hotels and Resorts)&lt;/p&gt;
&lt;p&gt;&amp;bull; Sistemas de WorkFlow. (State Children&amp;rsquo;s Health Insurance Program)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Carlos Pelaez &lt;br /&gt;Arquitecto de Sofware. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:864fa830-0f20-4905-8f01-e0338fa934de" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colombia"&gt;Colombia&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Sharepoint"&gt;Sharepoint&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Innovaci%c3%b3n"&gt;Innovaci&amp;oacute;n&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/emprendimiento"&gt;emprendimiento&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Web+2.0"&gt;Web 2.0&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/SOA"&gt;SOA&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arquitectura+de+Software"&gt;Arquitectura de Software&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Servicios+Web"&gt;Servicios Web&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicado en : &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.3metas.com"&gt;3Metas Corp&lt;/a&gt; tiene un grupo de especialistas que pueden apoyar sus procesos de dise&amp;ntilde;o, construcci&amp;oacute;n e implementaci&amp;oacute;n de soluciones.&amp;nbsp; Cont&amp;aacute;ctenos al correo electr&amp;oacute;nico &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=149656" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category></item><item><title>Arquitectura basada en capas.</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/arquitectura-basada-en-capas.aspx</link><pubDate>Sat, 30 May 2009 00:54:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:149655</guid><dc:creator>jkpelaez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=149655</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=149655</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/05/29/arquitectura-basada-en-capas.aspx#comments</comments><description>&lt;p&gt;Extractado de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fwww.codeplex.com%252fAppArchGuide"&gt;La Gu&amp;iacute;a de Arquitectura Versi&amp;oacute;n 2.0a&lt;/a&gt; del grupo de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.juanpelaez.com%2fBlog%2fct.ashx%3fid%3d1eca3f73-119b-4f9f-8089-80b5b250b84f%26url%3dhttp%253a%252f%252fmsdn.microsoft.com%252fen-us%252fpractices%252fdefault.aspx"&gt;Patterns and Practices de Microsoft&lt;/a&gt;. Para los que nos gusta en la lengua de cervantes:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La arquitectura basada en capas se enfoca en la distribuci&amp;oacute;n de roles y responsabilidades de forma jer&amp;aacute;rquica proveyendo una forma muy efectiva de separaci&amp;oacute;n de responsabilidades. El rol indica el modo y tipo de interacci&amp;oacute;n con otras capas, y la responsabilidad indica la funcionalidad que est&amp;aacute; siendo desarrollada.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Por ejemplo, una aplicaci&amp;oacute;n web t&amp;iacute;pica est&amp;aacute; compuesta por una capa de presentaci&amp;oacute;n (funcionalidad relacionada con la interfaz de usuario), una capa de negocios (procesamiento de reglas de negocios) y una capa de datos (funcionalidad relacionada con el acceso a datos).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El estilo de arquitectura basado en capas se identifica por las siguientes caracter&amp;iacute;sticas:&lt;/p&gt;
&lt;p&gt;&amp;bull; Describe la descomposici&amp;oacute;n de servicios de forma que la mayor&amp;iacute;a de la interacci&amp;oacute;n ocurre solamente entre capas vecinas.&lt;/p&gt;
&lt;p&gt;&amp;bull; Las capas de una aplicaci&amp;oacute;n pueden residir en la misma maquina f&amp;iacute;sica (misma capa) o puede estar distribuido sobre diferentes computadores (n-capas).&lt;/p&gt;
&lt;p&gt;&amp;bull; Los componentes de cada capa se comunican con otros componentes en otras capas a trav&amp;eacute;s de interfaces muy bien definidas.&lt;/p&gt;
&lt;p&gt;&amp;bull; Este modelo ha sido descrito como una &amp;ldquo;pir&amp;aacute;mide invertida de re-uso&amp;rdquo; donde cada capa agrega responsabilidad y abstracci&amp;oacute;n a la capa directamente sobre ella.&lt;/p&gt;
&lt;h5&gt;Principios fundamentales&lt;/h5&gt;
&lt;p&gt;Los principios comunes que se aplican cuando se dise&amp;ntilde;a para usar este estilo de arquitectura incluyen: &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Abstracci&amp;oacute;n&lt;/b&gt;. La arquitectura basada en capas abstrae la vista del modelo como un todo mientras que provee suficiente detalle para entender las relaciones entre capas.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Encapsulamiento&lt;/b&gt;. El dise&amp;ntilde;o no hace asunciones acerca de tipos de datos, m&amp;eacute;todos, propiedades o implementaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Funcionalidad claramente definida&lt;/b&gt;. El dise&amp;ntilde;o claramente define la separaci&amp;oacute;n entre la funcionalidad de cada capa. Capas superiores como la capa de presentaci&amp;oacute;n env&amp;iacute;a comandos a las capas inferiores como la capa de negocios y la capa de datos y los datos fluyen hacia y desde las capas en cualquier sentido.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Alta cohesion&lt;/b&gt;. Cada capa contiene funcionalidad directamente relacionas con la tarea de dicha capa.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Reutilizable&lt;/b&gt;. Las capas inferiores no tienen ninguna dependencia con las capas superiores, permiti&amp;eacute;ndoles ser reutilizables en otros escenarios.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Desacople&lt;/b&gt;. La comunicacion entre las capas est&amp;aacute; basada en la abstracci&amp;oacute;n lo que provee un desacople entre las capas.&lt;/p&gt;
&lt;h5&gt;Beneficios&lt;/h5&gt;
&lt;p&gt;Los principales beneficios del estilo de arquitectura basado en capas son:&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Abstracci&amp;oacute;n&lt;/b&gt;. Las capas permiten cambios que se realicen en un nivel abstracto. Usted puede incrementar o disminuir el nivel de abstracci&amp;oacute;n usado en cada capa de la &amp;ldquo;pila&amp;rdquo; jer&amp;aacute;rquica. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Aislamiento&lt;/b&gt;. El estilo de arquitectura de capas permite asilar los cambios en tecnolog&amp;iacute;as a ciertas capas para reducir el impacto en el sistema total.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Rendimiento&lt;/b&gt;. Distribuir las capas entre m&amp;uacute;ltiples sistemas (f&amp;iacute;sicos) puede incrementar la escalabilidad, la tolerancia a fallos y el rendimiento.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Mejoras en Pruebas&lt;/b&gt;. La capacidad de realizar pruebas se beneficia de tener una interfaces bien definidas para cada capa as&amp;iacute; como de la habilidad para cambiar a diferentes implementaciones de las interfaces de cada capa.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Independencia&lt;/b&gt;. El estilo de arquitectura basado en capas el requerimiento de considerar el hardware y los problemas de instalaci&amp;oacute;n as&amp;iacute; como las dependencias de interfaces externas.&lt;/p&gt;
&lt;h5&gt;Ejemplos&lt;/h5&gt;
&lt;p&gt;Algunos tipos comunes de aplicaciones por capas incluyen: &lt;/p&gt;
&lt;p&gt;&amp;bull; Aplicaciones de l&amp;iacute;nea de negocios (LOB), como contabilidad, y sistemas de gesti&amp;oacute;n de clientes.&lt;/p&gt;
&lt;p&gt;&amp;bull; Aplicaciones web Corporativas y sitios Web&lt;/p&gt;
&lt;p&gt;&amp;bull; Aplicaciones corporativas de escritorio o clientes inteligentes con servidores centralizados de aplicaci&amp;oacute;n con l&amp;oacute;gica de negocios.&lt;/p&gt;
&lt;p&gt;Los siguientes son algunas variaciones del estilo de arquitectura basado en capas: &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Capas estrictas (Strict layering).&lt;/b&gt; Cada capa solo puede invocar a la capa directamente debajo de a ella. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Saltos de Capas (Layer skipping).&lt;/b&gt; Las capas pueden invocar otras capas m&amp;aacute;s profundas que las que est&amp;aacute;n directamente debajo de ellas. Esto puede incrementar el rendimiento pero impacta la portabilidad.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Capa de Caja Negra (Black-box layering).&lt;/b&gt; Los limites de las capas y sus dependencias esta definidas de forma estricta usando interfaces, lo que soporta extensiones en run-time, intercepci&amp;oacute;n y mejora la capacidad de realiza pruebas.&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Capa de Caja Blanca (White-box layering).&lt;/b&gt; Clases que colaboran entre los l&amp;iacute;mites de las capas y est&amp;aacute;n altamente acopladas. &lt;/p&gt;
&lt;h5&gt;Arquitectura de N-Capas / 3-Capas &lt;/h5&gt;
&lt;p&gt;Este estilo de despliegue arquitect&amp;oacute;nico describe la separaci&amp;oacute;n de la funcionalidad en segmentos separados de forma muy parecida al estilo de capas, pero en el cual cada segmento est&amp;aacute; localizado en un computador f&amp;iacute;sicamente separado. Este estilo ha evolucionado desde la aproximaci&amp;oacute;n basada en componentes generalmente usando m&amp;eacute;todos espec&amp;iacute;ficos de comunicaci&amp;oacute;n asociados a una plataforma en vez de la aproximaci&amp;oacute;n basada en mensajes. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_7FAF06C0.gif"&gt;&lt;img height="165" width="518" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_thumb_5F00_1C48303C.gif" alt="clip_image002" border="0" title="clip_image002" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;Principios Fundamentales. &lt;/h5&gt;
&lt;p&gt;Los siguientes son los principios fundamentales del estilo de arquitectura basado en N-capas/3-capas:&lt;/p&gt;
&lt;p&gt;&amp;bull; Es un estilo para definir el despliegue de las capas en una instalaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;bull; La arquitectura de N-capas est&amp;aacute; caracterizada por la descomposici&amp;oacute;n functional de la aplicaci&amp;oacute;n, los componentes de servicio y su instalaci&amp;oacute;n distribuida. Mejorando la escalabilidad, disponibilidad, administraci&amp;oacute;n, y utilizaci&amp;oacute;n de recursos. &lt;/p&gt;
&lt;p&gt;&amp;bull; Cada capa es completamente independiente de las otras capas, excepto aquella que esta inmediatamente debajo de ella. La capa n solo necesita saber c&amp;oacute;mo manejar una solicitud de la capa n+1, como hacer la solicitud a la capa n-1 (si existe) y c&amp;oacute;mo manejar el resultado de la petici&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;&amp;bull; La arquitectura de N-capas tiene al menos tres capas separadas o partes, cada una de ellas con su responsabilidad y est&amp;aacute; localizada en diferentes servidores.&lt;/p&gt;
&lt;p&gt;&amp;bull; Una capa es desplegada en un nivel espec&amp;iacute;fico si m&amp;aacute;s de un servicio o aplicaci&amp;oacute;n est&amp;aacute; expuesto por esa capa.&lt;/p&gt;
&lt;h5&gt;Beneficios. &lt;/h5&gt;
&lt;p&gt;Los principales beneficios del estilo de arquitectura de N-capas/3-capas son:&lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Mejoras en las posibilidades de mantenimiento&lt;/b&gt;. Debido a que cada capa es independiente de la otra los cambios o actualizaciones pueden ser realizados sin afectar la aplicaci&amp;oacute;n como un todo. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Escalabilidad&lt;/b&gt;. Como las capas est&amp;aacute;n basadas en diferentes maquinas, el escalamiento de la aplicaci&amp;oacute;n hacia afuera es razonablemente sencillo. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Flexibilidad&lt;/b&gt;. Como cada capa puede ser manejada y escalada de forma independiente, la flexibilidad se incrementa. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Disponibilidad&lt;/b&gt;. Las aplicaciones pueden aprovechar la arquitectura modular de los sistemas habilitados usado componentes que escalan f&amp;aacute;cilmente lo que incrementa la disponibilidad.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h5&gt;Ejemplos.&lt;/h5&gt;
&lt;p&gt;Algunos ejemplos del estilo de arquitectura de N-capas/3-capas son:&lt;/p&gt;
&lt;p&gt;&amp;bull; Una aplicaci&amp;oacute;n Web Financiera donde la seguridad es importante y la capa de negocios necesita estar instalada detr&amp;aacute;s de un Firewall, lo que obliga la instalaci&amp;oacute;n de la capa de presentaci&amp;oacute;n en una capa separada del per&amp;iacute;metro. &lt;/p&gt;
&lt;p&gt;&amp;bull; Una aplicaci&amp;oacute;n de cliente rico conectada, donde la capa de presentaci&amp;oacute;n esta en las maquinas cliente y las capas de negocios y datos est&amp;aacute;n instaladas en el servidor. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Carlos Pelaez &lt;br /&gt;Arquitecto de Sofware. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f044c30e-35d5-41fe-93ed-162f135b765b" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colombia"&gt;Colombia&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arquitectura+de+Software"&gt;Arquitectura de Software&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Sharepoint"&gt;Sharepoint&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Publicado en : &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=bb1210d3-404c-466b-b1cd-3933d73685cc&amp;amp;url=http%3a%2f%2fwww.3metas.com"&gt;3Metas Corp&lt;/a&gt; tiene un grupo de especialistas que pueden apoyar sus procesos de dise&amp;ntilde;o, construcci&amp;oacute;n e implementaci&amp;oacute;n de soluciones.&amp;nbsp; Cont&amp;aacute;ctenos al correo electr&amp;oacute;nico &lt;a href="mailto:sales@3metas.com"&gt;sales@3metas.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=149655" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/3Metas/default.aspx">3Metas</category></item><item><title>Arquitectura basada en Componentes</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/04/18/arquitectura-basada-en-componentes.aspx</link><pubDate>Sat, 18 Apr 2009 14:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:147010</guid><dc:creator>jkpelaez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=147010</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=147010</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/04/18/arquitectura-basada-en-componentes.aspx#comments</comments><description>&lt;p&gt;Extractado de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=1eca3f73-119b-4f9f-8089-80b5b250b84f&amp;amp;url=http%3a%2f%2fwww.codeplex.com%2fAppArchGuide"&gt;La Gu&amp;iacute;a de Arquitectura Versi&amp;oacute;n 2.0a&lt;/a&gt; del grupo de &lt;a href="http://www.juanpelaez.com/Blog/ct.ashx?id=1eca3f73-119b-4f9f-8089-80b5b250b84f&amp;amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2fpractices%2fdefault.aspx"&gt;Patterns and Practices de Microsoft&lt;/a&gt;. Para los que nos gusta en la lengua de cervantes:&lt;/p&gt;
&lt;h5&gt;ARQUITECTURA BASADA EN COMPONENTES. &lt;/h5&gt;
&lt;p&gt;Una arquitectura basada en componentes describe una aproximaci&amp;oacute;n de ingenier&amp;iacute;a de software al dise&amp;ntilde;o y desarrollo de un sistema. Esta arquitectura se enfoca en la descomposici&amp;oacute;n del dise&amp;ntilde;o en componentes funcionales o l&amp;oacute;gicos que expongan interfaces de comunicaci&amp;oacute;n bien definidas. Esto provee un nivel de abstracci&amp;oacute;n mayor que los principios de orientaci&amp;oacute;n por objetos y no se enfoca en asuntos espec&amp;iacute;ficos de los objetos como los protocolos de comunicaci&amp;oacute;n y la forma como se comparte el estado. &lt;/p&gt;
&lt;p&gt;El estilo de arquitectura basado en componentes tiene las siguientes caracter&amp;iacute;sticas: &lt;/p&gt;
&lt;p&gt;&amp;bull; Es un estilo de dise&amp;ntilde;o para aplicaciones compuestas de componentes individuales. &lt;/p&gt;
&lt;p&gt;&amp;bull; Pone &amp;eacute;nfasis en la descomposici&amp;oacute;n del sistema en componentes l&amp;oacute;gicos o funcionales que tienen interfaces bien definidas. &lt;/p&gt;
&lt;p&gt;&amp;bull; Define una aproximaci&amp;oacute;n de dise&amp;ntilde;o que usa componentes discretos, los que se comunican a trav&amp;eacute;s de interfaces que contienen m&amp;eacute;todos, eventos y propiedades. &lt;/p&gt;
&lt;h5&gt;Principios Fundamentales&lt;/h5&gt;
&lt;p&gt;Un componente es un objeto de software espec&amp;iacute;ficamente dise&amp;ntilde;ado para cumplir con cierto prop&amp;oacute;sito. Los principios fundamentales cuando se dise&amp;ntilde;a un componente es que estos deben ser: &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Reusable&lt;/b&gt;. Los componentes son usualmente dise&amp;ntilde;ados para ser utilizados en escenarios diferentes por diferentes aplicaciones, sin embargo, algunos componentes pueden ser dise&amp;ntilde;ados para tareas espec&amp;iacute;ficas. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Sin contexto especifico&lt;/b&gt;. Los componentes son dise&amp;ntilde;ados para operar en diferentes ambientes y contextos. Informaci&amp;oacute;n espec&amp;iacute;fica como el estado de los datos deben ser pasadas al componente en vez de incluirlos o permitir al componente acceder a ellos. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Extensible&lt;/b&gt;. Un componente puede ser extendido desde un componente existente para crear un nuevo comportamiento. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Encapsulado&lt;/b&gt;. Los componentes exponen interfaces que permiten al programa usar su funcionalidad. Sin revelar detalles internos, detalles del proceso o estado. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Independiente&lt;/b&gt;. Los Componentes est&amp;aacute;n dise&amp;ntilde;ados para tener una dependencia m&amp;iacute;nima de otros componentes. Por lo tanto los componentes pueden ser instalados en el ambiente adecuado sin afectar otros componentes o sistemas. &lt;/p&gt;
&lt;h5&gt;Beneficios&lt;/h5&gt;
&lt;p&gt;Los siguientes son los principales beneficios del estilo de arquitectura basado en componentes: &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Facilidad de Instalaci&amp;oacute;n&lt;/b&gt;. Cuando una nueva versi&amp;oacute;n est&amp;eacute; disponible, usted podr&amp;aacute; reemplazar la versi&amp;oacute;n existente sin impacto en otros componentes o el sistema como un todo. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Costos reducidos&lt;/b&gt;. El uso de componentes de terceros permite distribuir el costo del desarrollo y del mantenimiento. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Facilidad de desarrollo&lt;/b&gt;. Los componentes implementan un interface bien definida para proveer la funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Reusable&lt;/b&gt;. El uso de componentes reutilizables significa que ellos pueden ser usados para distribuir el desarrollo y el mantenimiento entre m&amp;uacute;ltiples aplicaciones y sistemas. &lt;/p&gt;
&lt;p&gt;&amp;bull; &lt;b&gt;Mitigaci&amp;oacute;n de complejidad t&amp;eacute;cnica&lt;/b&gt;. Los componentes mitigan la complejidad por medio del uso de contenedores de componentes y sus servicios. Ejemplos de servicios de componentes incluyen activaci&amp;oacute;n de componentes, gesti&amp;oacute;n de la vida de los componentes, gesti&amp;oacute;n de colas de mensajes para m&amp;eacute;todos del componente y transacciones. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h5&gt;Ejemplos&lt;/h5&gt;
&lt;p&gt;Tipos comunes de componentes usados en aplicaciones incluyen: &lt;/p&gt;
&lt;p&gt;&amp;bull; Componentes de interfaz de usuario, como grillas, botones, etc., generalmente conocidos como &amp;ldquo;controles&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;&amp;bull; Componentes de ayuda que exponen un conjunto espec&amp;iacute;fico de funciones usados por otros componentes. &lt;/p&gt;
&lt;p&gt;&amp;bull; Componentes que se no se usan con mucha frecuencia o son intensivos en recursos y deben ser actividades usando una aproximaci&amp;oacute;n de solo en el momento justo (Just in Time (JIT)). Estos son comunes en escenarios de componentes distribuidos o en componentes remotos. &lt;/p&gt;
&lt;p&gt;&amp;bull; Componentes encolados, aquellos cuyos m&amp;eacute;todos pueden ser ejecutados de forma as&amp;iacute;ncrona usando colas de mensajes del tipo almacenamiento, entrega. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Juan Carlos Pelaez &lt;/p&gt;
&lt;p&gt;Arquitecto de Sofware. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas. &lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:12d83901-afda-4584-97f5-428b3d7f310e" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arquitectura+de+Software"&gt;Arquitectura de Software&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Desarrollo+de+Aplicaciones"&gt;Desarrollo de Aplicaciones&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/.Net"&gt;.Net&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Publicado en : &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? &lt;a target="_blank" href="http://www.3metas.com"&gt;3Metas Corp&lt;/a&gt; tiene un grupo de especialistas que pueden apoyar sus procesos de dise&amp;ntilde;o, construcci&amp;oacute;n e implementaci&amp;oacute;n de soluciones.&amp;nbsp; Cont&amp;aacute;ctenos al correo electr&amp;oacute;nico sales at 3metas.com &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=147010" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category></item><item><title>Arquitectura de Software 101</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/04/11/arquitectura-de-software-101.aspx</link><pubDate>Sat, 11 Apr 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:146602</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=146602</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=146602</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/04/11/arquitectura-de-software-101.aspx#comments</comments><description>&lt;p&gt;Me gusta mucho el conjunto de gu&amp;iacute;as de arquitectura de soluciones .Net del grupo de &lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx"&gt;Patterns and Practices de Microsoft&lt;/a&gt;. El documento principal es &lt;a href="http://www.codeplex.com/AppArchGuide"&gt;La Guia de Arquitectura Version 2.0a&lt;/a&gt;, una de las principales razones por las que me gusta esta gu&amp;iacute;a es por la definici&amp;oacute;n de c&amp;oacute;mo encajan los diferentes elementos o tipos de arquitecturas juntas en un esquema que es sencillo pero muy elegante y que se resume en este gr&amp;aacute;fico: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_4EB06D68.jpg"&gt;&lt;img height="485" width="587" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jkpelaez/clip_5F00_image002_5F00_thumb_5F00_283E6450.jpg" alt="Elementos Arquitectura" border="0" title="Elementos Arquitectura" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Al segmentar las aplicaciones por tipos (m&amp;aacute;s o menos obvio no?), y separar los conceptos como estilos de arquitectura, atributos de calidad, tendencias etc., se obtiene una forma m&amp;aacute;s sencilla de explicar porque se hace una aplicaci&amp;oacute;n de una forma y no de otra, lo que en general podemos decir que es la arquitectura. Una de las secciones m&amp;aacute;s interesante tiene que ver con los estilos de arquitectura (sobre el que profundizare m&amp;aacute;s adelante) ya que establece las diferencias entre elementos que son un poco confusos al seleccionar que tipo de aplicaci&amp;oacute;n se quiere construir y nos permite explicar de una manera clara al cliente por que se tomaron estas decisiones de dise&amp;ntilde;o. &lt;/p&gt;
&lt;p&gt;Si usted alguna vez se ha preguntado como una arquitectura SOA se integra con una arquitectura por componentes y con el paradigma de Orientaci&amp;oacute;n por Objetos este es definitivamente un documento que deber&amp;iacute;a leer. &lt;/p&gt;
&lt;p&gt;Juan Pel&amp;aacute;ez&lt;/p&gt;
&lt;p&gt;Arquitecto de Software&lt;/p&gt;
&lt;p&gt;Publicado en: &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Keywords: Juan Pelaez, Arquitectura de Software, 3Metas, Patterns and Practices, Microsoft, .Net.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:36663241-fb71-450e-8df1-3126088b9d8d" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arquitectura+de+Software"&gt;Arquitectura de Software&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Patterns+and+Practices"&gt;Patterns and Practices&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/.Net"&gt;.Net&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Microsoft"&gt;Microsoft&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;Publicidad: Necesita ayuda en la arquitectura de su aplicaci&amp;oacute;n .Net?, no est&amp;aacute; seguro si su desarrollo cumplir&amp;aacute; con los requerimientos de escalabilidad, seguridad, requerimientos de negocios o expectativas de los usuarios?, Quiere validar si sus desarrolladores o contratistas siguen las mejores pr&amp;aacute;cticas para el desarrollo de aplicaciones? &lt;strong&gt;Los servicios de consultor&amp;iacute;a en Arquitectura de Soluciones de 3Metas seguramente ser&amp;aacute;n un de las mejores alternativas. Cont&amp;aacute;ctenos al correo electr&amp;oacute;nico contacto@3Metas.com &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=146602" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/.Net/default.aspx">.Net</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Software+as+a+Service/default.aspx">Software as a Service</category></item><item><title>Pruebas de compatibilidad de aplicaciones con Windows Vista (e IE8)</title><link>http://geeks.ms/blogs/jkpelaez/archive/2009/04/08/pruebas-de-compatibilidad-de-aplicaciones-con-windows-vista-e-ie8.aspx</link><pubDate>Wed, 08 Apr 2009 12:40:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:146471</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=146471</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=146471</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2009/04/08/pruebas-de-compatibilidad-de-aplicaciones-con-windows-vista-e-ie8.aspx#comments</comments><description>&lt;p&gt;Un Post r&amp;aacute;pido&amp;hellip;vengo trabajando con el equipo de DP de Microsoft Colombia en Laboratorios de Compatibilidad para aplicaciones que funcionen con Internet Explorer 8, Windows Vista y Windows 7.&amp;nbsp; En los pr&amp;oacute;ximos d&amp;iacute;as en la p&amp;aacute;gina de &lt;a href="http://www.microsoft.com/colombia/thinkbig/compatibilidad.aspx"&gt;InnovateOn relacionada con estos temas&lt;/a&gt;, podr&amp;aacute;n encontrar informaci&amp;oacute;n detallada al respecto. Por ahora un recurso muy importante que quiero compartir son estos enlaces que corresponden a maquinas virtuales con XP, Windows Vista, Internet Explorer 6,7 y 8. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pelaez. &lt;/p&gt;
&lt;p&gt;Arquitecto de Software. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Keywords: Juan Pelaez, 3Metas, Windows Vista, Compatibilidad de Aplicaciones, Maquinas Virtuales, Maquina Virtual Vista, Maquina Virtual XP, Maquina Virtual IE8, Microsoft Colombia, D&amp;amp;P Colombia. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Publicado en &lt;a href="http://www.juanpelaez.com"&gt;www.juanpelaez.com&lt;/a&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;displaylang=en"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:365d8cde-b45a-43ba-8175-dbeecc5771fe" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Juan+Pelaez"&gt;Juan Pelaez&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/3Metas"&gt;3Metas&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Windows+Vista"&gt;Windows Vista&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Maquinas+Virtuales"&gt;Maquinas Virtuales&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/IE8."&gt;IE8.&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=146471" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Developer+Evangelist/default.aspx">Developer Evangelist</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/3Metas/default.aspx">3Metas</category></item><item><title>CDN and Cloud Computing …juntos.</title><link>http://geeks.ms/blogs/jkpelaez/archive/2008/12/09/cdn-and-cloud-computing-juntos.aspx</link><pubDate>Tue, 09 Dec 2008 19:23:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:126640</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=126640</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=126640</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2008/12/09/cdn-and-cloud-computing-juntos.aspx#comments</comments><description>&lt;p align="justify"&gt;CDN (Content Distribution Network) es un sistema de distribución de archivos basado en ubicaciones geográficas muy útil cuando se construyen sistemas de alta disponibilidad. Ya hice un post del tema hace algunos días &lt;a href="http://www.juanpelaez.com/Blog/2008/05/16/UsandoRedesDeDistribucioacutenDeContenido.aspx"&gt;aquí&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;Y también hace poco escribí sobre el sistema de hosting que uso que es basado en Cloud Computing, &lt;a href="http://www.juanpelaez.com/Blog/2008/07/15/NuevoHostingEnLaNubeYAlgoDeSoftwareAsAService.aspx"&gt;aquí&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;Hace poco estos dos servicios se han integrado para ofrecer un mejor paquete y ahora es posible por muy poco dinero y solo con una tarjeta de crédito tener en cuestión de horas un sistema de hosting por demanda integrado con la red de distribución de contenido. Todo parece muy sencillo: creo una carpeta en el sistema del sitio y subo mis archivos, marco la carpeta como publica y listo, ahora esos archivos se distribuyen usando una CDN de las más usadas en el mundo. Cuando no lo quiero mas entonces solo quito la marca de folder publico y listo, ya no se actualiza el archivo en el cache de la CDN. &lt;/p&gt;
&lt;p align="justify"&gt;Supongamos que creamos un sitio de distribución de videos del tipo YouTube o de música como sonidolocal.com, eso son miles de canciones o archivos de gran tamaño, un monton de dinero para gastar en ancho de banda, almacenamiento, etc, con estos sistemas lo que hago es pagar por uso, dejar que ellos corran con los costos de infraestructura y demás y puedo crecer el servicio a la medida que mi sitio crezca. &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://aws.amazon.com/s3/"&gt;Amazon ofrece un servicio parecido llamado S3&lt;/a&gt; que parece funcionar muy bien, pero en el cual hay que pagar por el almacenamiento y aparte por el uso de la CDN, asi que el servicio de Mosso en ese aspecto parece mejor. &lt;/p&gt;
&lt;p align="justify"&gt;Cuando empecé mi primera compañía en internet en el año 2000, el primer gasto era de 550 dólares mensuales por un servidor dedicado en DellHost, una cifra absurda para una empresa que había facturado 0 dólares el día 1, pero necesario para poder poner algo en la red. Estos nuevos sistemas de costos y de pago por uso hacen que todo cambie, no solo para las nuevas compañías, también para nuestros clientes. &lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Update:&lt;/strong&gt; Mosso Publica informacion comparativa de rendimiento y disponibilidad vs Amazon &lt;a href="http://blog.mosso.com/2008/12/mosso-is-fast-%e2%80%a6-and-were-so-much-faster-its-not-even-close/"&gt;aqui&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Juan Pelaez&lt;/p&gt;
&lt;p align="justify"&gt;Arquitecto de Software. &lt;/p&gt;
&lt;p align="justify"&gt;Publicado en : &lt;a href="http://www.juanpelaez.com/"&gt;www.juanpelaez.com&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Keywords: Mosso, CDN, Juan Pelaez, Juan Carlos Pelaez, Software como Servicio, SaaS, Infraestructura como Servicio, Hosting as a Service, Hosting como Servicio, Redes de Distribucion de Contenido. &lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:633619bc-5c26-4c57-88d4-795bb0d01b68" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Mosso" rel="tag"&gt;Mosso&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Juan+Pelaez" rel="tag"&gt;Juan Pelaez&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CDN" rel="tag"&gt;CDN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Hosting" rel="tag"&gt;Hosting&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=126640" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Gestion+de+Empresas+de+Software/default.aspx">Gestion de Empresas de Software</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Software+as+a+Service/default.aspx">Software as a Service</category></item><item><title>Evento - Gestión de Pruebas con VS2008.</title><link>http://geeks.ms/blogs/jkpelaez/archive/2008/12/01/evento-gesti-243-n-de-pruebas-con-vs2008.aspx</link><pubDate>Mon, 01 Dec 2008 15:34:41 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:122995</guid><dc:creator>jkpelaez</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=122995</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=122995</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2008/12/01/evento-gesti-243-n-de-pruebas-con-vs2008.aspx#comments</comments><description>&lt;p&gt;Por invitación de Luis Linares de Microsoft Colombia el pasado 30 de Noviembre de 2008 presente una sesión sobre gestión de pruebas usando VSTS 2008, durante la presentación realizamos diferentes modelos de pruebas automatizadas, especialmente pruebas unitarias con cobertura de código, pruebas de funcionalidad web y pruebas de carga. &lt;/p&gt;  &lt;p&gt;Junto con Miguel Mendoza de Synergy desarrollamos algunos escenarios un poco más profundos, como hacer pruebas de funcionalidad y carga de un portal de Sharepoint usando VS2008 for Testers. Pruebas automatizadas basadas en información de bases de datos contra aplicaciones desarrolladas en PHP y /o corriendo en otras plataformas y generación de datos de pruebas usando DataGenerator de VS2008 for DataBase Professionals. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gracias a todos los participantes por sus preguntas y comentarios, a Miguel Mendoza por su apoyo en las demostraciones y en la preparación de la sesión y a Luis por invitarnos, espero que el evento haya sido productivo para todos. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Descargar Presentación: &lt;a target="_blank" href="http://cid-1a646e447a191ea8.skydrive.live.com/self.aspx/Public/VS2008%20Testing.zip"&gt;Gestión de Pruebas con VS 2008 for Tester y Team Foundation Server (TFS).&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Juan Pelaez&lt;/p&gt;  &lt;p&gt;Arquitecto de Software. &lt;/p&gt;  &lt;p&gt;Publicado en : &lt;a href="http://www.juanpelaez.com/blog"&gt;www.juanpelaez.com/blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Creditos: para la construcción de la PPT he usado información e imágenes de otras presentaciones de expertos en TFS y VS2008, en especial de las siguientes personas: &lt;/p&gt;  &lt;p&gt;Juan Carlos Viñas&lt;/p&gt;  &lt;p&gt;TFS Competence Administrator &lt;/p&gt;  &lt;p&gt;Jorge Ramo López&lt;/p&gt;  &lt;p&gt;EPM Manager &lt;/p&gt;  &lt;p&gt;Raona &lt;a href="http://www.raona.com/"&gt;http://www.raona.com&lt;/a&gt;&lt;a href="http://www.lfraile.net/"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Rodrigo Corral&lt;/p&gt;  &lt;p&gt;MVP Team System &lt;/p&gt;  &lt;p&gt;Plain Concepts &lt;/p&gt;  &lt;p&gt;http://www.plainconcepts.com&lt;a href="http://www.lfraile.net/"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog: http://geeks.ms/blogs/rcorral&lt;/p&gt;  &lt;p&gt;Bruno Capuano&lt;/p&gt;  &lt;p&gt;MVP&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.multidomo.com/"&gt;http://www.avanade.es&lt;/a&gt;&lt;a href="http://www.lfraile.net/"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blog: &lt;a href="http://elbruno.com"&gt;http://elbruno.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Keywords: VS2008, Visual Studio for Tester Editions, Gestión de Pruebas, Pruebas de Software, Automatización de Pruebas, SharePoint, Pruebas Unitarias, Cobertura de Código, Pruebas de Funcionalidad Web, Pruebas de Carga, Pruebas de Stress. &lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:33304107-a77e-42f7-a11b-101982861c1c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Juan+Pelaez" rel="tag"&gt;Juan Pelaez&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS2008" rel="tag"&gt;VS2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unit+Testing" rel="tag"&gt;Unit Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+Coverage" rel="tag"&gt;Code Coverage&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=122995" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Juan+Pelaez+curriculum+vitae/default.aspx">Juan Pelaez curriculum vitae</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Eventos+Microsoft/default.aspx">Eventos Microsoft</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Gestion+de+Empresas+de+Software/default.aspx">Gestion de Empresas de Software</category></item><item><title>JQuery Day 01</title><link>http://geeks.ms/blogs/jkpelaez/archive/2008/11/25/jquery-day-01.aspx</link><pubDate>Tue, 25 Nov 2008 20:05:21 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:120401</guid><dc:creator>jkpelaez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=120401</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=120401</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2008/11/25/jquery-day-01.aspx#comments</comments><description>&lt;p&gt;He empezado un nuevo proyecto para Microsoft Colombia y la Secretaria de Salud que es a la vez una prueba de concepto de una migración de una aplicación de VS2003 a VS2008 como la reconstrucción de la aplicación (refactoring) hacia un modelo orientado a Software + Servicios.&lt;/p&gt;  &lt;p&gt;Uno de los entregables del proyecto es un Web Site, así que pareció una buena oportunidad para comenzar a explorar JQuery, que lo había visto por ahí con los anuncios de soporte en VS2008 y demás pero nunca lo había tocado. &lt;/p&gt;  &lt;p&gt;Lo primero es hacerlo funcionar, eso lo explico mejor Scott Guttrie en un post, entonces yo cree un Web Application, luego una carpeta scripts, y en ella copie el archivo jquery-1.2.6.js y el archivo jquery-1.2.6-vsdoc.js, estos dos me permiten tener JQuery e IntelliSense en Visual Studio, se pueden descargar de Aquí. &lt;/p&gt;  &lt;p&gt;Luego incluí el archivo de JQuery y el archivo de la documentación en el default.aspx así:&lt;/p&gt;  &lt;p&gt;&amp;lt;script src=&amp;quot;scripts/jquery-1.2.6.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;script src=&amp;quot;scripts/jquery-1.2.6-vsdoc.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;Si no se incluye el archivo de la documentacion JQuery funciona, pero no tengo intellisense. &lt;/p&gt;  &lt;p&gt;Ahora, cómo funciona esto: &lt;/p&gt;  &lt;h3&gt;Recorriendo el DOM&lt;/h3&gt;  &lt;p&gt;var help = $(&amp;quot;#help&amp;quot;); //obtiene el elemento que se llama help, es como usar document.getElementById solo que funciona en cualquier browser. &lt;/p&gt;  &lt;p&gt;var p = $(&amp;quot;p&amp;quot;); //obtiene todos los elementos de tipo &amp;lt;p&amp;gt;&lt;/p&gt;  &lt;p&gt;var username = $(&amp;quot;input[name=&amp;#39;username&amp;#39;]&amp;quot;); //obtiene un elemento de tipo input llamado username&lt;/p&gt;  &lt;p&gt;Todas las funciones anteriores retornan un arreglo (array), de hecho, la función $(), conocida como función JQuery siempre retorna un array de 0 elementos, 1 elemento o el número de elementos que encuentre (y es en realidad una abreviación de JQuery(“p”) ). &lt;/p&gt;  &lt;p&gt;Es una práctica recomendada nombrar las variables con el signo pesos, así que el último ejemplo debería ser algo como esto: &lt;/p&gt;  &lt;p&gt;var $username = $(&amp;quot;input[name=&amp;#39;username&amp;#39;]&amp;quot;);&lt;/p&gt;  &lt;p&gt;Al ser $username un array tiene un conjunto de métodos que se pueden usar para obtener su longitud, elementos, etc (var form = $form.get(0); var form = $form. length)&lt;/p&gt;  &lt;h3&gt;Manipulando el DOM&lt;/h3&gt;  &lt;p&gt;Una vez que tengo identificados los objetos puedo empezar a hacer algo con ellos, algunos consejos: &lt;/p&gt;  &lt;p&gt;No es necesario crear todas las clases que se van a usar en la hoja de estilo, solamente se necesitan para que JQuery las identifique&lt;/p&gt;  &lt;p&gt;Un elemento puede tener varias clases aplicadas asi: &amp;lt;table class=”VisualTable PopulationTable”&amp;gt;…&amp;lt;/table&amp;gt;, de esta forma puedo separar las clases que modifican los diseñadores de las que yo utilizo en JQuery para manipular los objetos. &lt;/p&gt;  &lt;h3&gt;Eventos&lt;/h3&gt;  &lt;p&gt;Uno de los elementos importantes de JQuery son los eventos, estos responden generalmente a acciones de los usuarios, pero uno que siempre es útil es el evento ready del document. Algo como esto: &lt;/p&gt;  &lt;p&gt;$(document).ready(function{ myCodigo});&lt;/p&gt;  &lt;p&gt;Que quiere decir que se debe ejecutar el código {MyCodigo} cuando la pagina este lista. Algo interesante es la forma como se declarara la función a ejecutar, muy similar a un método anónimo y también con una notación de JSON. Sin embargo si por alguna razón a uno no le gusta esta forma de funciones en línea puede usar esta notación: %(document).ready(onLoaded); donde onLoaded es un método definido previamente en el script. (esto también puede ser útil cuando se combinan diversos scripts y se quiere invocar desde un evento una parte de otro script).&lt;/p&gt;  &lt;p&gt;Muchos eventos reciben funciones como parámetros, incluso una función en cada parámetro, por ejemplo: &lt;/p&gt;  &lt;p&gt;$(&amp;quot;#partList .row&amp;quot;).hover&lt;/p&gt;  &lt;p&gt;(&lt;/p&gt;  &lt;p&gt;function()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;$(this).addClass(&amp;quot;rowOver&amp;quot;);&lt;/p&gt;  &lt;p&gt;},&lt;/p&gt;  &lt;p&gt;function()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;$(this).removeClass(&amp;quot;rowOver&amp;quot;);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;)&lt;/p&gt;  &lt;p&gt;Recibe dos funciones, una para cuando se entra al hover y otra para cuando se sale. Aquí puede ser interesante notar el $(this) que significa un “apuntador” al elemento que está ejecutando el evento, algo parecido al $(document). &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Juan Pelaez. &lt;/p&gt;  &lt;p&gt;Arquitecto de Software. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Keywords: JQuery, Web Applications, &lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c72d6350-28d2-47e5-9cd3-fc18f5719f2f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/JQuery" rel="tag"&gt;JQuery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Juan+Pelaez" rel="tag"&gt;Juan Pelaez&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=120401" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/JQuery/default.aspx">JQuery</category></item><item><title>Primer año en Geeks.ms</title><link>http://geeks.ms/blogs/jkpelaez/archive/2008/11/10/primer-a-241-o-en-geeks-ms.aspx</link><pubDate>Mon, 10 Nov 2008 18:09:51 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:112767</guid><dc:creator>jkpelaez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/rsscomments.aspx?PostID=112767</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jkpelaez/commentapi.aspx?PostID=112767</wfw:comment><comments>http://geeks.ms/blogs/jkpelaez/archive/2008/11/10/primer-a-241-o-en-geeks-ms.aspx#comments</comments><description>&lt;p&gt;Hace casi un año, Rodrigo Corral me envió un mail invitándome a participar en la comunidad Geeks.ms. (todavía hoy me pregunto cómo me encontró).&amp;#160; &lt;/p&gt;  &lt;p&gt;Casualmente me encontraba con Miguel Jiménez en Sao Paulo recibiendo un entrenamiento en Silverlight y tecnologías de presentación, él conocía a muchos de los que publican por aca y me animo aun más a participar en geeks.ms. &lt;/p&gt;  &lt;p&gt;En este año he escrito 28 posts (no debo ser el que más publica), he creado poca polémica (excepto por el número de proyectos que he hecho en la vida :-)) y recibido más de 30 comentarios, de todo tipo, sin embargo lo más valioso ha sido que he aprendido un montón en la preparación de cada post,&amp;#160; Ocasionalmente alguien me escribe agradeciendo algo que ha encontrado y que le ha ahorrado un par de horas o dolores de cabeza, lo que me llena de satisfacción.&lt;/p&gt;  &lt;p&gt;No quería dejar pasar este aniversario del inicio del&amp;#160; blog sin agradecer a Rodrigo, a la Comunidad, pero sobre todo a todos los que nos leen. Espero haber realizado algún aporte y seguir haciéndolo por un buen rato. , tener la posibilidad de publicar en esta comunidad, una de las más grandes y de alto nivel en habla hispana, ha sido toda una realización personal y profesional. &lt;/p&gt;  &lt;p&gt;Cordial Saludo&lt;/p&gt;  &lt;p&gt;Juan Pelaez&lt;/p&gt;  &lt;p&gt;Arquitecto de Software. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Keywords: Geeks.ms, Juan Pelaez&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:efdaad9c-f5ec-4fa3-871f-d155ebb4ed11" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Juan+Pelaez" rel="tag"&gt;Juan Pelaez&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Geeks.ms" rel="tag"&gt;Geeks.ms&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=112767" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Juan+Pelaez+curriculum+vitae/default.aspx">Juan Pelaez curriculum vitae</category></item></channel></rss>