<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.3devnet.com/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>Joel Francia Blog</title><link>http://blogs.3devnet.com/blogs/jfrancia/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.0 (Build: 60210.2610)</generator><item><title>ASP .NET Routing</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/12/21/78430.aspx</link><pubDate>Sun, 21 Dec 2008 19:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:78430</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/78430.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=78430</wfw:commentRss><description>&lt;P&gt;En este articulo quisiera hablar acera de ASP .NET Routing, pero en la idea de seguir escribiendo para llegar a mostrar ASP .NET MVC.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/UsingRoutingIndependentofMVC_10FBE/image_4.png"&gt;&lt;IMG height=494 alt=image src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/UsingRoutingIndependentofMVC_10FBE/image_thumb_1.png" width=600 border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;SPAN&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;En esta lámina se muestra la referencia al assembly que se requiere para empezar a usar esta característica.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El siguiente paso sería registrar el Router en el Global.asax &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;void Application_Start(object sender, EventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;RegisterRoutes(RouteTable.Routes);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;private void RegisterRoutes(RouteCollection Routes)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Route r = new Route("{Parameter}", new &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;DemoRouter());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Routes.Add(r);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Luego implementar la clase DemoRouter dentro del archivo DemoRouter.cs en la carpeta App_code&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Collections.Generic;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Web.Routing;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Web;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Web.UI;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;using&lt;/SPAN&gt;&lt;SPAN&gt; System.Web.Compilation;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;class&lt;/SPAN&gt; &lt;SPAN&gt;DemoRouter&lt;/SPAN&gt; : &lt;SPAN&gt;IRouteHandler&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt; &lt;SPAN&gt;IHttpHandler&lt;/SPAN&gt; GetHttpHandler(&lt;SPAN&gt;RequestContext&lt;/SPAN&gt; requestContext)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;string&lt;/SPAN&gt; nombrePagina&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;= requestContext.RouteData.GetRequiredString(&lt;SPAN&gt;"Parameter"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;nombrePagina =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombrePagina.ToLower() == &lt;SPAN&gt;"home"&lt;/SPAN&gt; ? &lt;SPAN&gt;"default"&lt;/SPAN&gt; : nombrePagina;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; virtualPath&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;= &lt;SPAN&gt;string&lt;/SPAN&gt;.Format(&lt;SPAN&gt;"~/PaginasRoutingDemo/{0}.aspx"&lt;/SPAN&gt;, nombrePagina);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; (&lt;SPAN&gt;Page&lt;/SPAN&gt;)&lt;SPAN&gt;BuildManager&lt;/SPAN&gt;.CreateInstanceFromVirtualPath(virtualPath, &lt;SPAN&gt;typeof&lt;/SPAN&gt;(&lt;SPAN&gt;Page&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Y Finalmente registrar en el Web.Config el HttpModule que manejara la redirección&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;modules&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;remove&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;SPAN&gt;ScriptModule&lt;/SPAN&gt;"&lt;SPAN&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;add&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;SPAN&gt;ScriptModule&lt;/SPAN&gt;"&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;preCondition&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;"&lt;SPAN&gt;managedHandler&lt;/SPAN&gt;"&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;"&lt;SPAN&gt;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/SPAN&gt;"&lt;SPAN&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;add&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;SPAN&gt;UrlRoutingModule&lt;/SPAN&gt;"&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;"&lt;SPAN&gt;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&lt;/SPAN&gt;"&lt;SPAN&gt;/&amp;gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;modules&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;SPAN&gt;A continuación voy a dar ejemplos de la forma en que se especifica los URLs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El siguiente ejemplo muestra cómo definir un objeto Route que acepta dos parámetros URLs &lt;/SPAN&gt;&lt;SPAN class=code&gt;&lt;SPAN&gt;&lt;FONT face="Courier New" color=#000066&gt;action&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; y &lt;/SPAN&gt;&lt;FONT color=#000066&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN class=code&gt;&lt;SPAN&gt;categoryName&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;protected&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Application_Start(object sender, EventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;RegisterRoutes(RouteTable.Routes);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;static&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; RegisterRoutes(RouteCollection routes)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;routes.Add(&lt;/SPAN&gt;&lt;SPAN&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; Route&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"Category/{action}/{categoryName}"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; CategoryRouteHandler()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=78430" width="1" height="1"&gt;</description></item><item><title>ToolkitScriptManager Optimizar el uso de Ajax</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/12/05/77683.aspx</link><pubDate>Sat, 06 Dec 2008 02:46:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:77683</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/77683.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=77683</wfw:commentRss><description>&lt;P&gt;Siguiendo con los articulos de Ajax, bueno un poco rezagado y regresando de un viaje a Ecuador luego de dictar un taller de Vs 2008 aqui va mi nuevo envio.&lt;/P&gt;
&lt;P&gt;Hay una version del Ajax Control Toolkit que trae un control el ToolScriptManager, &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488"&gt;http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/scottgu/archive/2007/06/08/new-asp-net-ajax-control-toolkit-release.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/06/08/new-asp-net-ajax-control-toolkit-release.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Este nuevo control permite combinar varios archivos JavaScript en una sola descarga pero agregando ademas la caracteristica de comprimir esta descarga. Lo que permite evidentemente una mejora notable en rendimiento respecto a versiones anteriores de Ajax. Usar este control en lugar del ScriptManager.&lt;/P&gt;
&lt;P&gt;Porque usar este control? Actualmente cuano un navegador Web realiza atenciones a peticiones estas se van procesando de manera que nunca se estén sirviendo más de 4&amp;nbsp;peticiones simultaneamente, entonces cuantas mas peticiones mas lenta la pagina&lt;/P&gt;
&lt;P&gt;Con el ScriptManager que viene con el Service Pack 1 de Visual Studio 2008 y del Framework 3.5 tenemos lo siguiente:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;asp:ScriptManager ID="scriptManager" runat="server"&amp;gt;&lt;BR&gt;&amp;lt;CompositeScript&amp;gt;&lt;BR&gt;&amp;lt;Scripts&amp;gt;&lt;BR&gt;&amp;lt;asp:ScriptReference Path=”~/Scripts/JSArchivo1.js” /&amp;gt;&lt;BR&gt;&amp;lt;asp:ScriptReference Path=”~/Scripts/JSArchivo2.js” /&amp;gt;&lt;BR&gt;&amp;lt;/Scripts&amp;gt;&lt;BR&gt;&amp;lt;/CompositeScript&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Pero tambien requerimos los archivos JS de Ajax, los mismos y solo los que estan siendo usados pueden ser descargados de la siguiente manera:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptManager ID="scriptManager" runat="server"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CompositeScript&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Scripts&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="MicrosoftAjax.js"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="MicrosoftAjaxWebForms.js"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.ConfirmButton.confirmButtonBehavior.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.Compat.Timer.Timer.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.Common.Common.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.Animation.Animations.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptReference name="AjaxControlToolkit.AlwaysVisibleControl.AlwaysVisibleControlBehavior.js" assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Scripts&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CompositeScript&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:ScriptManager&amp;gt;&lt;/P&gt;
&lt;P&gt;Por supuesto mas los archivos JS nuestros originales dle primer ejemplo.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Joel&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=77683" width="1" height="1"&gt;</description></item><item><title>&amp;#191;Por qu&amp;#233; un UpdatePanel es lento?</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/10/06/74277.aspx</link><pubDate>Mon, 06 Oct 2008 11:39:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:74277</guid><dc:creator>jfrancia</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/74277.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=74277</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;Y Bueno&amp;nbsp; esta vez es regresando de Huancayo. Y sigo escribiendo sobre Ajax y el Updatepanel esta vez. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Las razones de motivarme a escribir sobre este tema vienen como ya comentaba de las cosas que encuentro con clientes y desarrollos propios en 3Dev. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;Espero aportar algunos tips que ayuden a los desarrolladores a mejorar sus aplicaciones.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT&gt;Pero todavia queda mucho material por mostrar sobre este tema. En los siguientes posts los veran.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;SPAN&gt;¿&lt;/SPAN&gt;&lt;SPAN&gt;Por&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;qué&lt;/SPAN&gt;&lt;SPAN&gt; un &lt;/SPAN&gt;&lt;SPAN&gt;UpdatePanel&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; lento?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT&gt;&lt;SPAN&gt;Cuando&lt;/SPAN&gt;&lt;SPAN&gt; el &lt;/SPAN&gt;&lt;SPAN&gt;UdpatePanel&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;tiene&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;varios&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;controles&lt;/SPAN&gt;&lt;SPAN&gt;, se &lt;/SPAN&gt;&lt;SPAN&gt;siente&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;una&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;baja&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;significativa&lt;/SPAN&gt;&lt;SPAN&gt; en la &lt;/SPAN&gt;&lt;SPAN&gt;perfomance&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;puesto&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;que&lt;/SPAN&gt;&lt;SPAN&gt; se &lt;/SPAN&gt;&lt;SPAN&gt;tarda&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;SPAN&gt;más&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;tiempo&lt;/SPAN&gt;&lt;SPAN&gt; en &lt;/SPAN&gt;&lt;SPAN&gt;renderizar&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;Regularmente&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;este&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;escenario&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;visto&lt;/SPAN&gt;&lt;SPAN&gt; con el &lt;/SPAN&gt;&lt;SPAN&gt;uso&lt;/SPAN&gt;&lt;SPAN&gt; del &lt;/SPAN&gt;&lt;SPAN&gt;GridView&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Después&lt;/SPAN&gt;&lt;SPAN&gt; de &lt;/SPAN&gt;&lt;SPAN&gt;retornar&lt;/SPAN&gt;&lt;SPAN&gt; de un &lt;/SPAN&gt;&lt;SPAN&gt;postback&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;asíncrono&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;todos&lt;/SPAN&gt;&lt;SPAN&gt; los &lt;/SPAN&gt;&lt;SPAN&gt;componentes&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;asociados&lt;/SPAN&gt;&lt;SPAN&gt; con &lt;/SPAN&gt;&lt;SPAN&gt;elementos&lt;/SPAN&gt;&lt;SPAN&gt; en el &lt;/SPAN&gt;&lt;SPAN&gt;UpdatePanel&lt;/SPAN&gt;&lt;SPAN&gt; son &lt;/SPAN&gt;&lt;SPAN&gt;eliminados&lt;/SPAN&gt;&lt;SPAN&gt; (disposed)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT&gt;&amp;nbsp;&lt;/FONT&gt; 
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Cuando&lt;/SPAN&gt;&lt;SPAN&gt; el &lt;/SPAN&gt;&lt;SPAN&gt;viejo&lt;/SPAN&gt;&lt;SPAN&gt; HTML &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;reemplazado&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;por&lt;/SPAN&gt;&lt;SPAN&gt; el &lt;/SPAN&gt;&lt;SPAN&gt;nuevo&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;todos&lt;/SPAN&gt;&lt;SPAN&gt; los &lt;/SPAN&gt;&lt;SPAN&gt;elementos&lt;/SPAN&gt;&lt;SPAN&gt; DOM en el Panel son &lt;/SPAN&gt;&lt;SPAN&gt;examinados&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;por&lt;/SPAN&gt;&lt;SPAN&gt; Microsoft Ajax, &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;decir&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;todo&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;control.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Para &lt;/SPAN&gt;&lt;SPAN&gt;evitar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;perder&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;memoria&lt;/SPAN&gt;&lt;SPAN&gt;, los &lt;/SPAN&gt;&lt;SPAN&gt;componentes&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;asociados&lt;/SPAN&gt;&lt;SPAN&gt; con &lt;/SPAN&gt;&lt;SPAN&gt;elementos&lt;/SPAN&gt;&lt;SPAN&gt; DOM son &lt;/SPAN&gt;&lt;SPAN&gt;eliminados&lt;/SPAN&gt;&lt;SPAN&gt; (disposed) y &lt;/SPAN&gt;&lt;SPAN&gt;entonces&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;destruidos&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;cuando&lt;/SPAN&gt;&lt;SPAN&gt; el HTML &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;reemplazado&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; 
&lt;P&gt;&lt;FONT&gt;&lt;SPAN&gt;Solución&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Lo &lt;/SPAN&gt;&lt;SPAN&gt;que&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;debemos&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;hacer&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;es&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;suscribir&lt;/SPAN&gt;&lt;SPAN&gt; al &lt;/SPAN&gt;&lt;SPAN&gt;evento&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;pageLoading&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;entonces&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;podemos&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;conseguir&lt;/SPAN&gt;&lt;SPAN&gt; la &lt;/SPAN&gt;&lt;SPAN&gt;referencia&lt;/SPAN&gt;&lt;SPAN&gt; del control y &lt;/SPAN&gt;&lt;SPAN&gt;removerlo&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT&gt;&lt;SPAN&gt;Como &lt;/SPAN&gt;&lt;SPAN&gt;resultado&lt;/SPAN&gt;&lt;SPAN&gt; el &lt;/SPAN&gt;&lt;SPAN&gt;PageRequestManager&lt;/SPAN&gt;&lt;SPAN&gt; no &lt;/SPAN&gt;&lt;SPAN&gt;iterará&lt;/SPAN&gt;&lt;SPAN&gt; a &lt;/SPAN&gt;&lt;SPAN&gt;través&lt;/SPAN&gt;&lt;SPAN&gt; de los &lt;/SPAN&gt;&lt;SPAN&gt;elementos&lt;/SPAN&gt;&lt;SPAN&gt; en el &lt;/SPAN&gt;&lt;SPAN&gt;GridView&lt;/SPAN&gt;&lt;SPAN&gt;. Y el &lt;/SPAN&gt;&lt;SPAN&gt;nuevo&lt;/SPAN&gt;&lt;SPAN&gt; HTML &lt;/SPAN&gt;&lt;SPAN&gt;reemplazará&lt;/SPAN&gt;&lt;SPAN&gt; al &lt;/SPAN&gt;&lt;SPAN&gt;viejo&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;Agregar esta rutina en la pagina aspx donde se encuentra el Gridview&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pageRequestManager.add_pageLoading(onPageLoading);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onPageLoading()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var gv = $get("GridView1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(gv!=null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gv.parentNode.removeNode(gv);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;Solo para entender mejor, el codigo que se estaria evitando seria el que viene en el archivo MicrosoftAjaxWebForms.debug.js &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT&gt;&lt;SPAN&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;function&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement,&amp;nbsp;rendering)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//some&amp;nbsp;code&amp;nbsp;not&amp;nbsp;germane&amp;nbsp;to&amp;nbsp;this&amp;nbsp;post&amp;nbsp;has&amp;nbsp;been&amp;nbsp;omitted&amp;nbsp;here &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//this&amp;nbsp;is&amp;nbsp;where&amp;nbsp;the&amp;nbsp;existing&amp;nbsp;content&amp;nbsp;is&amp;nbsp;disposed &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;this&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;._destroyTree(updatePanelElement); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//and&amp;nbsp;the&amp;nbsp;content&amp;nbsp;is&amp;nbsp;updated &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;updatePanelElement.innerHTML&amp;nbsp;=&amp;nbsp;rendering; &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;FONT&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;function&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;Sys$WebForms$PageRequestManager$_destroyTree(element)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;if&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(element.nodeType&amp;nbsp;===&amp;nbsp;1)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;childNodes&amp;nbsp;=&amp;nbsp;element.childNodes; &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;for&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;childNodes.length&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;i&amp;nbsp;&amp;gt;=&amp;nbsp;0;&amp;nbsp;i--)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;node&amp;nbsp;=&amp;nbsp;childNodes&lt;img src="/emoticons/emotion-55.gif" alt="Idea [I]" /&gt;; &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;if&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(node.nodeType&amp;nbsp;===&amp;nbsp;1)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//if&amp;nbsp;the&amp;nbsp;node&amp;nbsp;has&amp;nbsp;a&amp;nbsp;dispose&amp;nbsp;method,&amp;nbsp;call&amp;nbsp;it &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;if&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(node.dispose&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;typeof&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;(node.dispose)&amp;nbsp;===&amp;nbsp;“&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;function&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;”)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;node.dispose(); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//if&amp;nbsp;the&amp;nbsp;node&amp;nbsp;has&amp;nbsp;a&amp;nbsp;sys.ui.control&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;it,&amp;nbsp;call&amp;nbsp;its&amp;nbsp;dispose&amp;nbsp;method &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;else&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;if&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(node.control&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;typeof&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;(node.control.dispose)&amp;nbsp;===&amp;nbsp;“&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;function&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;”)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;node.control.dispose(); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//check&amp;nbsp;for&amp;nbsp;sys.ui.behaviors&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;the&amp;nbsp;node&amp;nbsp;and&amp;nbsp;call&amp;nbsp;dispose&amp;nbsp;on&amp;nbsp;each&amp;nbsp;one &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;behaviors&amp;nbsp;=&amp;nbsp;Sys.UI.Behavior.getBehaviors(node); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;for&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;(&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;j&amp;nbsp;=&amp;nbsp;behaviors.length&amp;nbsp;-&amp;nbsp;1;&amp;nbsp;j&amp;nbsp;&amp;gt;=&amp;nbsp;0;&amp;nbsp;j–)&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;behaviors[j].dispose(); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;&lt;FONT color=#008200&gt;//recurse&amp;nbsp;the&amp;nbsp;contents&amp;nbsp;of&amp;nbsp;this&amp;nbsp;node&amp;nbsp;to&amp;nbsp;do&amp;nbsp;it&amp;nbsp;again &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=""&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;&lt;STRONG&gt;&lt;FONT color=#006699&gt;this&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;._destroyTree(node); &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;FONT color=#000000&gt;}&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;OL&gt;&lt;/OL&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;FONT&gt;Para terminar he encontrado un enlace interesante sobre el mismo tema pero realizado sobre controles de lista.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;A href="http://siderite.blogspot.com/2008/06/very-slow-updatepanel-refresh-when.html"&gt;http://siderite.blogspot.com/2008/06/very-slow-updatepanel-refresh-when.html&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Joel&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=74277" width="1" height="1"&gt;</description></item><item><title>JSON en Ajax</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/08/05/69809.aspx</link><pubDate>Tue, 05 Aug 2008 07:32:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:69809</guid><dc:creator>jfrancia</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/69809.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=69809</wfw:commentRss><description>&lt;P&gt;De regreso hoy lunes de Arequipa donde estuve dictando un curso el fin de semana. Por coincidencia esta semana que paso tanto este curso como otro en un cliente he tocado los temas de ASP .NET Ajax.&lt;/P&gt;
&lt;P&gt;Ahora cuando comienzo el curso y hablo de que cuando se desarrolla con Ajax en ASP .NET se debe evaluar el rendimiento para buscar la forma para tener una pagina eficiente vienen los comentarios acerca de los problemas que han tenido con sobrecarga en las paginas. Ciertamente el UpdatePanel facilita mucho el trabajo pero hay varias formas de lograr usar Ajax ademas del UpdatePanel y que en ocasiones es ideal. &lt;/P&gt;
&lt;P&gt;Entonces ahora empezamos el curso hablando justamente del enfoque del lado del cliente con ASP .NET Ajax. Ajax nos&amp;nbsp;permite invocar funcionalidades de servidor sin necesidad de crear servicios web con los métodos de página (&lt;EM&gt;Page Methods&lt;/EM&gt;). El objetivo es permitirnos llamar a métodos estáticos de cualquier página (.aspx) desde el cliente utilizando Javascript&amp;nbsp; sin complicarnos mucho la vida y de una forma mas eficiente.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;En principio Ajax emite JSON por defecto, esto se puede configurar a traves del atributo &lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;ScriptService&lt;/FONT&gt;], configurandolo podriamos definir la forma de la llamada a traves de POST o GET y la forma de la serializacion, por ejemplo&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;ScriptMethod&lt;/FONT&gt;(ResponseFormat=&lt;FONT color=#2b91af&gt;ResponseFormat&lt;/FONT&gt;.Json )]&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;WebMethod&lt;/FONT&gt;]&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; LeerCantidadEmpleados(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; departmento)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;System.Threading.&lt;FONT color=#2b91af&gt;Thread&lt;/FONT&gt;.Sleep(2000);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;RecursosHumanos&lt;/FONT&gt;.LeerCantidad(departmento);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Donde este metodo ofrece una serializacion JSON, la otra alternativa podria ser XML.&lt;/P&gt;
&lt;P&gt;A continuacion voy a mostrar como invocar directamente un servicio web desde una pagian ASP .NET pero usando elementos HTML con el ScriptManager pero sin usar controles del lado del servidor para mejorar el rendimiento de la pagina al no usar UpdatePanel:&lt;/P&gt;
&lt;P&gt;&amp;lt;%&lt;FONT color=#0000ff&gt;@&lt;/FONT&gt; &lt;FONT color=#a31515&gt;Page&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;Language&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="C#"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;AutoEventWireup&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="true"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;CodeFile&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="EnfoqueDelCliente.aspx.cs"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;Inherits&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="EnfoqueDelCliente"&lt;/FONT&gt; %&amp;gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;html&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;body&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;form&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="form1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ScriptManager&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;ID&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="ScriptManager1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Services&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ServiceReference&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;Path&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Servicio.asmx"&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Services&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ScriptManager&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;h2&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Busqueda de Empleados&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;h2&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;div&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;select&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Departamentos"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;size&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="5"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;value&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Ingenieria"&amp;gt;&lt;/FONT&gt;Ingenieria&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;value&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="HR"&amp;gt;&lt;/FONT&gt;Recursos Humanos&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;value&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Ventas"&amp;gt;&lt;/FONT&gt;Ventas&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;value&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Marketing"&amp;gt;&lt;/FONT&gt;Marketing&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;option&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;select&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;div&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;br&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;div&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;span&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Resultado"&amp;gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;span&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;span&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="loading"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;style&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;display&lt;/FONT&gt;:&lt;FONT color=#0000ff&gt;none&lt;/FONT&gt;;&lt;FONT color=#0000ff&gt;"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;img&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;src&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="images/indicator.gif"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;alt&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=""&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/FONT&gt;Loading ...&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;span&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;div&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;script&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="text/javascript"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;lt;!--&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt; departments = &lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Sys.Application.add_load(page_load);&lt;/P&gt;
&lt;P&gt;Sys.Application.add_unload(page_unload);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; page_load(sender, e){ &lt;/P&gt;
&lt;P&gt;departamentos = $get(&lt;FONT color=#a31515&gt;"Departamentos"&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;$addHandler(departamentos, &lt;FONT color=#a31515&gt;"change"&lt;/FONT&gt;, departamentos_onchange);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; page_unload(sender, e){ &lt;/P&gt;
&lt;P&gt;$removeHandler(departamentos, &lt;FONT color=#a31515&gt;"change"&lt;/FONT&gt;, departamentos_onchange);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; departamentos_onchange(sender, e){&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"Resultado"&lt;/FONT&gt;).innerHTML = &lt;FONT color=#a31515&gt;""&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"loading"&lt;/FONT&gt;).style.display = &lt;FONT color=#a31515&gt;"block"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt; selectedValue = departamentos.value;&lt;/P&gt;
&lt;P&gt;Servicio.LeerCantidadEmpleados(selectedValue, onSuccess); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; onSuccess(result){&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"loading"&lt;/FONT&gt;).style.display = &lt;FONT color=#a31515&gt;"none"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"Resultado"&lt;/FONT&gt;).innerHTML = &lt;FONT color=#a31515&gt;"Cantidad Empleados: "&lt;/FONT&gt; + result;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//--&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;script&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;form&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;body&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;html&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;En esta seccion se referencia al servicio web:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ScriptManager&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;ID&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="ScriptManager1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Services&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ServiceReference&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;Path&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="Servicio.asmx"&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Services&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;En este metodo JavaScript se llama al metodo LeerCantidadEmpleado del servicio web pasandole el elemento seleccionado de la lista y derivando la ejecucion al metodo onSuccess, que es donde se recibe el resultado del servidor y se procesa en el cliente:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; departamentos_onchange(sender, e){&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"Resultado"&lt;/FONT&gt;).innerHTML = &lt;FONT color=#a31515&gt;""&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"loading"&lt;/FONT&gt;).style.display = &lt;FONT color=#a31515&gt;"block"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt; selectedValue = departamentos.value;&lt;/P&gt;
&lt;P&gt;Servicio.LeerCantidadEmpleados(selectedValue, onSuccess); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Metodo donde se procesa el resultado:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; onSuccess(result){&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"loading"&lt;/FONT&gt;).style.display = &lt;FONT color=#a31515&gt;"none"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"Resultado"&lt;/FONT&gt;).innerHTML = &lt;FONT color=#a31515&gt;"Cantidad Empleados: "&lt;/FONT&gt; + result;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Ahora se puede lograr lo mismo con el atributo PageMethods del ScriptManager de la siguiente manera:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ScriptManager&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;ID&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="ScriptManager1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;EnablePageMethods&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=true&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;asp&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;:&lt;/FONT&gt;&lt;FONT color=#a31515&gt;ScriptManager&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Y el metodo JavaScritp cambia de la siguiente manera:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; departamentos_onchange(sender, e){&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"Resultado"&lt;/FONT&gt;).innerHTML = &lt;FONT color=#a31515&gt;""&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;$get(&lt;FONT color=#a31515&gt;"loading"&lt;/FONT&gt;).style.display = &lt;FONT color=#a31515&gt;"block"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt; selectedValue = departamentos.value;&lt;/P&gt;
&lt;P&gt;PageMethods.LeerCantidadEmpleados(selectedValue, onSuccess); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Ademas el metodo invocado se escribe en la misma pagina ASP .NET de la siguiente manera:&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;WebMethod&lt;/FONT&gt;]&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; LeerCantidadEmpleados(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; departmento)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;System.Threading.&lt;FONT color=#2b91af&gt;Thread&lt;/FONT&gt;.Sleep(2000);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;RecursosHumanos&lt;/FONT&gt;.LeerCantidad(departmento);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;En este caso no es necesario que sea un servicio Web pero si un metodo estatico. Estas dos formas son alternativas a usar un UpdatePanel y demuestran una forma eficiente de usar Ajax en ASP .NET. &lt;/P&gt;
&lt;P&gt;Otra forma habitual de hacer esta invocacion seria usando JQuery que brinda caracteristicas adicionales como son capacidad de invocar al metodo o al servicio desde otra pagina, una limitante que en este caso se muestra en ASP .NET Ajax.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=69809" width="1" height="1"&gt;</description><enclosure url="http://blogs.3devnet.com/blogs/jfrancia/attachment/69809.ashx" length="4158" type="application/x-zip-compressed" /></item><item><title>WCF REST Services</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/26/67282.aspx</link><pubDate>Thu, 26 Jun 2008 07:28:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:67282</guid><dc:creator>jfrancia</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/67282.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=67282</wfw:commentRss><description>&lt;H2&gt;Operaciones WCF para la Web&lt;/H2&gt;
&lt;P&gt;Estas operaciones se exponen a traves de URIs, los mensajes se transmiten sin la sobrecarga de SOAP, los parametros se pasan usando HTTP, el formato de los datos puede ser JSON o POX. WCF provee WebHttpBinding binding para soportar estas caracteristicas. Este binding tiene dos elementos. El primero es un nuevo encoder llamado WebMessageEncodingBindingElement, el cual permite seleccionar entre JSON o POX. El segundo elemento es un elemento binding de transporte basado en HttpTransportBindingElement o HttpsTransportBindingElement. El HttpsTransportBindingElement es usado para seguridad a nivel de transporte.&lt;/P&gt;
&lt;P&gt;Para el binding&amp;nbsp;WebHttpBinding pueden ser usados dos behaviors. El WebHttpBehavior y el WebScriptEnablingBehavior. El WebScriptEnablingBehavior behavior&amp;nbsp; se usara para&amp;nbsp; AJAX y JSON. El WebHttpBehavior behaviorse usa para formatear los mensajes usando JSON o XML. El valor por defecto es&amp;nbsp;usar XML.&lt;/P&gt;
&lt;P&gt;Ejemplo:&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.ServiceModel;&lt;BR&gt;using System.ServiceModel.Web;&lt;BR&gt;&lt;BR&gt;[ServiceContract]&lt;BR&gt;public interface IMensaje&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebGet]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string Responder(string mensaje);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.ServiceModel;&lt;BR&gt;&lt;BR&gt;public class&amp;nbsp;ServicioMensaje : IMensaje&lt;/P&gt;
&lt;P&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IMensaje Members&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Responder(string mensaje)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mensaje;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;lt;system.serviceModel&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;services&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service name="ServicioMensaje"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address=""&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration="WebBehavior"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; binding="webHttpBinding" contract="IMensaje"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/services&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpointBehaviors&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name="WebBehavior"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webHttp /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpointBehaviors&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/behaviors&amp;gt;&lt;BR&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;POX y REST se basan ambos en invocaciones a traves de URLs para llamar a los metodos. Donde tienen diferencias es en la forma como son definidos estos URLs, y que verbos HTTP son usados para invocar las operaciones en cada URL.&lt;/P&gt;
&lt;H2&gt;&lt;FONT face=Verdana&gt;&lt;FONT face=Verdana&gt;WebGet Y WebInvoke&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;Los servicios pueden ser expuestos usando WebHttpBinding binding, usando ya sea los atributos WebGet o WebInvoke. Cada atributo especifica el verbo HTTP, el formato del mensaje y el estilo del cuerpo que se requiere para exponer una operacion.&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Verdana&gt;WebGet&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;Este atributo exponer el verbo GET. Get tiene ventajas sobre los verbos HTTP. Primero, el endpoint puede ser accesado directamente via un navegador ingresando el URL del servicio en la barra de direcciones. Los parametros pueden ser enviados dentro del URI como query strings o dentro del URI. Este atributo debe ser usado para recuperacion.&lt;/P&gt;
&lt;H3&gt;WebInvoke&lt;/H3&gt;
&lt;P&gt;Este atributo expone los servicios usando los verbos HTTP como POST, PUT y DELETE. Por defecto es POST, pero puede ser modificado configurando la propiedad "Method" del atributo. Estas operaciones sirven para modificar recursos, por lo tanto este atributo debe ser usado para realizar modificaciones a recurso.&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.ServiceModel;&lt;BR&gt;using System.ServiceModel.Web;&lt;BR&gt;&lt;BR&gt;namespace EssentialWCF&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class&amp;nbsp;ServicioCliente&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebGet(UriTemplate="/cliente/{id}")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Customer LeerCliente(int id)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Customer customer = null;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Leer cliente de la base de datos&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return customer;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebInvoke(Method = "PUT", UriTemplate = "/cliente/{id}")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void EnviarCliente(int id, Customer customer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Grabar en la base de datos&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebInvoke(Method = "DELETE", UriTemplate = "/cliente/{id}")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void EliminarCliente(int id)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Grabar en la base de datos&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=67282" width="1" height="1"&gt;</description></item><item><title>Seguridad en REST</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/25/67244.aspx</link><pubDate>Wed, 25 Jun 2008 08:48:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:67244</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/67244.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=67244</wfw:commentRss><description>&lt;P&gt;Siendo casi la 1 am aqui en Lima continuo escribiendo las preguntas que he acumulado.&lt;/P&gt;
&lt;P&gt;Una pregunta sobre REST es como implementar la seguridad.&lt;/P&gt;
&lt;P&gt;La seguridad en REST hoy en dia esta limitada a la autenticacion HTTP, los que llaman pueden usar Basic, Digest, Windows o credenciales de certificados para autentificar cada llamada. Los cookies HTTP pueden ser asignados despues que quien llama es identificado usando la autentificacion de ASP .NET o despues de completada la autentificacion HTTP.&lt;/P&gt;
&lt;P&gt;Al usar WebHttpBinding se puede habilitar la autentificacion para un endpoint al habilitar uno de dos modos de seguridad: Transport o TransportCredentialOnly Transport requiere SSL, mientras que TransportCredentialOnly envia las credenciales sin SLL. En cualquier caso&amp;nbsp; la eleccion de la credencial esta definida por los valores de HttpClientCredentialType&lt;/P&gt;
&lt;P&gt;Aqui estan los posibles valores:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.httpclientcredentialtype.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.servicemodel.httpclientcredentialtype.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Una alternativa menos atractiva es proteger los servicios REST usando la autentificacion ASP .NET. Lo cual significa habilitar el modo de compatibilidad ASP .NET para el servicio.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=67244" width="1" height="1"&gt;</description></item><item><title>Mixing REST and SOAP parte II</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/25/67242.aspx</link><pubDate>Wed, 25 Jun 2008 08:35:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:67242</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/67242.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=67242</wfw:commentRss><description>&lt;P&gt;Finalmente pense que Jonathan Chavez estaria contento por mi respuesta y me sale con otra pregunta:&lt;/P&gt;
&lt;P&gt;"&lt;/P&gt;
&lt;B&gt;&lt;FONT size=2&gt;
&lt;P&gt;solo tengo los asmx&lt;/P&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT face="MS Shell Dlg" color=#545454 size=2&gt;
&lt;P&gt;Jona says:&lt;/P&gt;
&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;
&lt;P&gt;el contrato y mi implementation&lt;/P&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT face="MS Shell Dlg" color=#545454 size=2&gt;
&lt;P&gt;Jona says:&lt;/P&gt;
&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;
&lt;P&gt;no es como cuando lo hacia en consola&lt;/P&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT face="MS Shell Dlg" color=#545454 size=2&gt;
&lt;P&gt;Jona says:&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;STRONG&gt;de iniciar el host y todo eso&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;" (Texto reproducidos con su consentimiento)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Es simple la respuesta y aqui va:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Lo mismo se aplica cuando se usa WebServiceHostFactory para los endpoints .svc&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;En algo que seria como esto:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#660000&gt;&amp;lt;%&lt;/FONT&gt;&lt;FONT color=blue&gt;@&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#660000&gt;ServiceHost&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;Language&lt;/FONT&gt;&lt;FONT color=blue&gt;="C#"&amp;nbsp;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=red&gt;Debug&lt;/FONT&gt;&lt;FONT color=blue&gt;="true"&amp;nbsp;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=red&gt;Service&lt;/FONT&gt;&lt;FONT color=blue&gt;="TimeTrakkerServicio"&amp;nbsp;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=red&gt;CodeBehind&lt;/FONT&gt;&lt;FONT color=blue&gt;="~/App_Code/TimeTrakkerClass.cs"&amp;nbsp;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=red&gt;Factory&lt;/FONT&gt;&lt;FONT color=blue&gt;="System.ServiceModel.&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=blue&gt;Activation.&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#660000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=blue&gt;WebServiceHostFactory"&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#660000 size=2&gt;%&lt;FONT color=blue&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=67242" width="1" height="1"&gt;</description></item><item><title>Mixing REST and SOAP</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/25/67239.aspx</link><pubDate>Wed, 25 Jun 2008 07:59:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:67239</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/67239.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=67239</wfw:commentRss><description>&lt;P&gt;A proposito del TechEd 2008, estuve invitado como parte del equipo de Arquitectura en el "Ask The Experts", fue un evento fabuloso, y algo que quedo en el tintero fue el uso de WCF en .NET 3.5. De alli en mas inmediatamente gracias al apoyo de mis alumnos en el curso de Taller que dicto en USIL (&lt;A href="http://www.usil.edu.pe"&gt;www.usil.edu.pe&lt;/A&gt;)&amp;nbsp; empezamos a implementar muchas de las caracteristicas. Una de ellas es REST, tambien con algo de JQuery (para mejorar Ajax) y claro esta JSON. Pero un reto y tarea pendiente que tenia era implementar servicios usando DuplexBinding, una sugerencia que recibi de Shy Cohen de Microsoft sobre una pregunta de arquitecturas basadas den Firewall NAT. Bueno espero que puedan tener todo listo para la presentacion en dos semanas :)&lt;/P&gt;
&lt;P&gt;De este experimento recibi una consulta interesante de uno de mis alumnos (Jonathan Chavez)&amp;nbsp;sobre el uso de REST. Nuestro proyecto considera el uso de REST con WCF, antes de eso habiamos trabajado bajo el modelo de la fabrica de Software para modelar los contratos. La pregunta es: Como mezclar REST y SOAP?, es decir de que manera se pueden exponer los servicios sin tener que programar o modelar dos veces el servicio.&lt;/P&gt;
&lt;P&gt;Que sucede si queremos alojar el mismo servicio WCF usando SOAP y REST?. De hecho un solo contrato de servicio y su implementacion pueden manejar ambos tipos de "requests".&lt;/P&gt;
&lt;P&gt;- REST se basa en un modelo de servicio que permite mapear a un URL una operacion particular, SOAP se basa en un "action header" dentro del mensaje.&lt;/P&gt;
&lt;P&gt;- Los mensaje REST pueden ser formateados como XML o JSON, los mensajes SOAP pueden ser serializados como binarios, XML o MTOM&lt;/P&gt;
&lt;P&gt;Al decorar los contratos con WebGetAttribute o WebInvokeAttribute se puede especificar el UriTemplate para el mapeo de las operaciones a los URLs. Los mismos atributos permiten definir la serializacion JSON o XML.&lt;/P&gt;
&lt;P&gt;Estos atributos son ignorados a menos que se habilite el &lt;STRONG&gt;WebHttpBEhavior&lt;/STRONG&gt; para un "endpoint". Entonces si se expone dos endpoints para el mismo contrato, se puede configurar uno para REST y el otro para SOAP. La direccion para cada uno debe ser unica, como por ejemplo:&lt;/P&gt;
&lt;P&gt;&amp;lt;services&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;service name="ServicioCliente"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;endpoint address="&lt;A href="http://localhost:8000/ServicioCliente/REST"&gt;http://localhost:8000/ServicioCliente/REST&lt;/A&gt;" binding="webHttpBinding" contract="Contrato.IServicioCliente"/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;endpoint address="&lt;A href="http://localhost:8000/ServicioCliente/SOAP"&gt;http://localhost:8000/ServicioCliente/SOAP&lt;/A&gt;" binding="wsHttpBinding" contract="Contrato.IServicioCliente"/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/service&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/services&amp;gt;&lt;/P&gt;
&lt;P&gt;La configuracion usa WebHttpBinding para /Rest y WsHttpBinding para Soap.&lt;/P&gt;
&lt;P&gt;- Se pueden exponer ambos endpoint usando WebService-Host en lugar de ServiceHost. El siguiente codigo muestra como en un "self-host" (una aplicacion de consola, o windows, o un servicio windows, etc.) se puede hacer. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WebServiceHost ohost=new WebServiceHost(typeof(Servicios.ServicioCliente));&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ohost.Open();&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=67239" width="1" height="1"&gt;</description></item><item><title>Fast page loading by moving ASP.NET AJAX scripts after visible content</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/10/66462.aspx</link><pubDate>Wed, 11 Jun 2008 02:33:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66462</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/66462.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=66462</wfw:commentRss><description>&lt;P&gt;Otro problema frecuente con Ajax en ASP .NET es el tiempo que demora en cargar por primera vez la pagina. Muchas veces esto puede llegar a ser un problema. &lt;/P&gt;
&lt;P&gt;Encontre un articulo &lt;/P&gt;
&lt;P&gt;&lt;A href="http://msmvps.com/blogs/omar/archive/2008/04/06/fast-page-loading-by-postponing-asp-net-ajax-scripts-after-content.aspx"&gt;http://msmvps.com/blogs/omar/archive/2008/04/06/fast-page-loading-by-postponing-asp-net-ajax-scripts-after-content.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;donde muestra como hacer que la carga de los Scripts de Ajax se haga al final de la pagina lo que permite tener una experiencia de usuario que no se ve afectada por los scripts. Este articulo lleva a una aplicacion&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dropthings.com"&gt;www.dropthings.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Y donde los autores ademas hacen referencia a un libro que es bastante recomendable.&lt;/P&gt;
&lt;P&gt;Building a Web 2.0 Portal with ASP.NET 3.5&lt;/P&gt;
&lt;P&gt;&lt;A href="http://oreilly.com/catalog/9780596510503/"&gt;http://oreilly.com/catalog/9780596510503/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Bastante codigo y muchos tips.&lt;/P&gt;
&lt;P&gt;Joel&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66462" width="1" height="1"&gt;</description></item><item><title>Why ASP.NET AJAX UpdatePanels are dangerous?</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/06/10/66460.aspx</link><pubDate>Wed, 11 Jun 2008 02:27:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66460</guid><dc:creator>jfrancia</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/66460.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=66460</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/"&gt;http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;He recibido varias consultas acerca de como optimizar Ajax. Aqui se muestra algunos tips importantes que permiten optimizar el uso de Ajax en .NET.&lt;/P&gt;
&lt;P&gt;Por ejemplo hay una nota que puedo resaltarles:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Using JSON, the entire HTTP round trip is 24 bytes, as compared to 872 bytes for the UpdatePanel. That’s roughly a 4,000% improvement, which will only continue to increase with the complexity of the page.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Joel&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66460" width="1" height="1"&gt;</description></item><item><title>SilverLight en el sitio de 3Dev</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/05/31/65921.aspx</link><pubDate>Sun, 01 Jun 2008 01:38:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:65921</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/65921.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=65921</wfw:commentRss><description>&lt;P&gt;Quisiera compartir con ustedes unas demos que hemos puesto en nuestra pagina de SilverLight&lt;/P&gt;
&lt;P&gt;En esta URL pueden encontrar un visor hecho con SilverLight&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.3devnet.com/servicios.aspx"&gt;http://www.3devnet.com/servicios.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;En nuestra zona de descarga hay varias demos que pueden descargar. El codigo fuente esta alli para descargar.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.3devnet.com/descargas.aspx"&gt;http://www.3devnet.com/descargas.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;En estas direcciones pueden ver las demos directamente&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.3devnet.com/silverlight/playernormal/"&gt;http://www.3devnet.com/silverlight/playernormal/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.3devnet.com/silverlight/banner/sample/"&gt;http://www.3devnet.com/silverlight/banner/sample/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Joel&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=65921" width="1" height="1"&gt;</description></item><item><title>Base de datos de la demo de Eventos con .NET Remoting</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/05/01/63845.aspx</link><pubDate>Fri, 02 May 2008 03:32:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:63845</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/63845.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=63845</wfw:commentRss><description>&lt;P&gt;Base de datos de la demo de Eventos con .NET Remoting. Por favor me envian un correo a &lt;A href="mailto:jfrancia@3devnet.com"&gt;jfrancia@3devnet.com&lt;/A&gt; para enviarles la BD.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Joel&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=63845" width="1" height="1"&gt;</description><enclosure url="http://blogs.3devnet.com/blogs/jfrancia/attachment/63845.ashx" length="1526272" type="application/octet-stream" /></item><item><title>Eventos con .NET Remoting Parte III</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/05/01/63842.aspx</link><pubDate>Fri, 02 May 2008 03:17:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:63842</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/63842.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=63842</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Proyecto Cliente&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Form1.cs&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.ComponentModel;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Data;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Drawing;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Windows.Forms;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Runtime.Remoting;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Runtime.Remoting.Channels;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Runtime.Remoting.Channels.Tcp;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; CommonAssembly;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; Entidades;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; DemosEventosRemoting&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;partial&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Form1&lt;/FONT&gt; : Form&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; sucursal=&lt;FONT color=#a31515&gt;""&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; Form1(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; _sucursal)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;InitializeComponent();&lt;/P&gt;
&lt;P&gt;sucursal = _sucursal;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.Text = sucursal;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;IOrder _orderObject;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Form1_Load(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; sender, &lt;FONT color=#2b91af&gt;EventArgs&lt;/FONT&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;RemotingConfiguration&lt;/FONT&gt;.Configure(&lt;FONT color=#a31515&gt;"DemosEventosRemoting.exe.config"&lt;/FONT&gt;,&lt;FONT color=#0000ff&gt;false&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;WellKnownClientTypeEntry&lt;/FONT&gt;[] entry = &lt;FONT color=#2b91af&gt;RemotingConfiguration&lt;/FONT&gt;.GetRegisteredWellKnownClientTypes();&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;_orderObject = (IOrder)&lt;FONT color=#2b91af&gt;Activator&lt;/FONT&gt;.GetObject( entry[0].ObjectType &lt;/P&gt;
&lt;P&gt;,entry[0].ObjectUrl);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;AgregarEventHandler o = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; AgregarEventHandler(refrescarLista);&lt;/P&gt;
&lt;P&gt;_orderObject.AddOnAgregarEvent(o);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; prs = _orderObject.getPersons();&lt;/P&gt;
&lt;P&gt;bindingSource1.DataSource = prs;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Person person;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; refrescarLista(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; o, ArgumentosEventArgs e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; s = e.Sucursal;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (s == sucursal)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;person = e.Person;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.BeginInvoke(&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; MethodInvoker(&lt;FONT color=#0000ff&gt;delegate&lt;/FONT&gt;()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;bindingSource1.Add(person);&lt;/P&gt;
&lt;P&gt;}));&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//private void Pintar()&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//{&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;// bindingSource1.Add(person);&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//}&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; btnOK_Click(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; sender, &lt;FONT color=#2b91af&gt;EventArgs&lt;/FONT&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Form2 fr = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; Form2(_orderObject, sucursal);&lt;/P&gt;
&lt;P&gt;fr.Show();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Form1_FormClosing(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; sender, FormClosingEventArgs e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;AgregarEventHandler o = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; AgregarEventHandler(refrescarLista);&lt;/P&gt;
&lt;P&gt;_orderObject.AddOnRemoveEvent(o);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Form2.cs&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.ComponentModel;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Data;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Drawing;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Windows.Forms;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; CommonAssembly;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; Entidades;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; DemosEventosRemoting&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;partial&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Form2&lt;/FONT&gt; : Form&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; Form2()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;InitializeComponent();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;IOrder _orderObject;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; sucursal = &lt;FONT color=#a31515&gt;""&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; Form2(IOrder orderObject,&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; _sucursal)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;_orderObject = orderObject;&lt;/P&gt;
&lt;P&gt;sucursal = _sucursal;&lt;/P&gt;
&lt;P&gt;InitializeComponent();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; button1_Click(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; sender, &lt;FONT color=#2b91af&gt;EventArgs&lt;/FONT&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Person p = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; Person();&lt;/P&gt;
&lt;P&gt;p.Nombre = textBox1.Text;&lt;/P&gt;
&lt;P&gt;p.Apellido = textBox2.Text;&lt;/P&gt;
&lt;P&gt;p.Edad = &lt;FONT color=#2b91af&gt;Convert&lt;/FONT&gt;.ToInt32(textBox3.Text);&lt;/P&gt;
&lt;P&gt;p.Direccion = textBox4.Text;&lt;/P&gt;
&lt;P&gt;_orderObject.Insertar(p,sucursal);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Formulario SetSucursal&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.ComponentModel;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Data;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Drawing;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Windows.Forms;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; DemosEventosRemoting&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;partial&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;SetSucursal&lt;/FONT&gt; : Form&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; SetSucursal()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;InitializeComponent();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; button1_Click(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; sender, &lt;FONT color=#2b91af&gt;EventArgs&lt;/FONT&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; s = comboBox1.Text;&lt;/P&gt;
&lt;P&gt;Form1 fr = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; Form1(s);&lt;/P&gt;
&lt;P&gt;fr.Show();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Program.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Windows.Forms;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; DemosEventosRemoting&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Program&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080&gt;///&lt;/FONT&gt;&lt;FONT color=#008000&gt; &lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#808080&gt;///&lt;/FONT&gt;&lt;FONT color=#008000&gt; The main entry point for the application.&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#808080&gt;///&lt;/FONT&gt;&lt;FONT color=#008000&gt; &lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;STAThread&lt;/FONT&gt;]&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Main()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Application.EnableVisualStyles();&lt;/P&gt;
&lt;P&gt;Application.SetCompatibleTextRenderingDefault(&lt;FONT color=#0000ff&gt;false&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;Application.Run(&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; SetSucursal());&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=63842" width="1" height="1"&gt;</description></item><item><title>Eventos con .NET Remoting Parte II</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/05/01/63841.aspx</link><pubDate>Fri, 02 May 2008 03:10:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:63841</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/63841.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=63841</wfw:commentRss><description>&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;STRONG&gt;Proyecto ServerP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ServerP.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Runtime.Remoting;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; ServerP&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Program&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Main(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt;[] args)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;RemotingConfiguration&lt;/FONT&gt;.Configure(&lt;FONT color=#a31515&gt;"ServerP.exe.config"&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;false&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;.WriteLine(&lt;FONT color=#a31515&gt;"Hello from the Server"&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;.ReadLine();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ServerP.exe.config&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&amp;lt;?&lt;/FONT&gt;&lt;FONT color=#a31515&gt;xml&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;version&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;1.0&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;encoding&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;utf-8&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; ?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;system.runtime.remoting&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;application&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;channels&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;channel&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;port&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;6000&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;displayName&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;CakeServerChannel&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;ref&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;tcp&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;serverProviders&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;formatter&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;ref&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;binary&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;typeFilterLevel&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;Full&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;serverProviders&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;clientProviders&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;formatter&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;ref&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;binary&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;clientProviders&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;channel&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;channels&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;service&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;wellknown&lt;/FONT&gt;&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;OrdenBL.Orden, OrdenBL&lt;/FONT&gt;"&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;objectUri&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;Orden&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;mode&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;Singleton&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;service&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;application&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;system.runtime.remoting&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Proyecto Entidades&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;STRONG&gt;Person.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Collections.Generic;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Text;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt;&lt;FONT color=#000000&gt; Entidades&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;Serializable&lt;/FONT&gt;]&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Person&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; nombre;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; Nombre&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; nombre; }&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { nombre = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; apellido;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; Apellido&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; apellido; }&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { apellido = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; edad;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; Edad&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; edad; }&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { edad = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; direccion;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; Direccion&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; direccion; }&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { direccion = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Proyecto DAPerson, disculpen la cadena de conexion&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Collections.Generic;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Text;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Data;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Data.SqlClient;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT color=#000000&gt; Entidades;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt;&lt;FONT color=#000000&gt; DAPerson&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;DALPerson&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; GetDAPersons()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; cn = &lt;FONT color=#a31515&gt;@"Data Source=.\sql2005;Initial Catalog=DemoPerson;Integrated Security=True;Pooling=False"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; persons = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt;();&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; (SqlConnection cnn = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; SqlConnection(cn))&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; (SqlCommand cmd = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; SqlCommand(&lt;FONT color=#a31515&gt;"getPersons"&lt;/FONT&gt;, cnn))&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;cmd.CommandType = CommandType.StoredProcedure;&lt;/P&gt;
&lt;P&gt;cnn.Open();&lt;/P&gt;
&lt;P&gt;SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;while&lt;/FONT&gt; (reader.Read())&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;Person pp = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; Person();&lt;/P&gt;
&lt;P&gt;pp.Nombre = reader[&lt;FONT color=#a31515&gt;"Nombre"&lt;/FONT&gt;].ToString();&lt;/P&gt;
&lt;P&gt;pp.Apellido = reader[&lt;FONT color=#a31515&gt;"Apellido"&lt;/FONT&gt;].ToString();&lt;/P&gt;
&lt;P&gt;pp.Edad = &lt;FONT color=#2b91af&gt;Convert&lt;/FONT&gt;.ToInt32(reader[&lt;FONT color=#a31515&gt;"Edad"&lt;/FONT&gt;]);&lt;/P&gt;
&lt;P&gt;pp.Direccion = reader[&lt;FONT color=#a31515&gt;"Direccion"&lt;/FONT&gt;].ToString();&lt;/P&gt;
&lt;P&gt;persons.Add(pp);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; persons;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; SetDAPerson(Person person)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; cn = &lt;FONT color=#a31515&gt;@"Data Source=.\sql2005;Initial Catalog=DemoPerson;Integrated Security=True;Pooling=False"&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; (SqlConnection cnn = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; SqlConnection(cn))&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; (SqlCommand cmd = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; SqlCommand(&lt;FONT color=#a31515&gt;"setPerson"&lt;/FONT&gt;, cnn))&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;cmd.CommandType = CommandType.StoredProcedure;&lt;/P&gt;
&lt;P&gt;cnn.Open();&lt;/P&gt;
&lt;P&gt;cmd.Parameters.Add(&lt;FONT color=#a31515&gt;"@Nombre"&lt;/FONT&gt;, SqlDbType.VarChar).Value = person.Nombre;&lt;/P&gt;
&lt;P&gt;cmd.Parameters.Add(&lt;FONT color=#a31515&gt;"@Apellido"&lt;/FONT&gt;, SqlDbType.VarChar).Value = person.Apellido;&lt;/P&gt;
&lt;P&gt;cmd.Parameters.Add(&lt;FONT color=#a31515&gt;"@Edad"&lt;/FONT&gt;, SqlDbType.Int).Value = person.Edad;&lt;/P&gt;
&lt;P&gt;cmd.Parameters.Add(&lt;FONT color=#a31515&gt;"@Direccion"&lt;/FONT&gt;, SqlDbType.VarChar).Value = person.Direccion;&lt;/P&gt;
&lt;P&gt;cmd.ExecuteNonQuery();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=63841" width="1" height="1"&gt;</description></item><item><title>Eventos con .NET Remoting</title><link>http://blogs.3devnet.com/blogs/jfrancia/archive/2008/05/01/63840.aspx</link><pubDate>Fri, 02 May 2008 02:59:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:63840</guid><dc:creator>jfrancia</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/jfrancia/comments/63840.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/jfrancia/commentrss.aspx?PostID=63840</wfw:commentRss><description>&lt;P&gt;Hola, nuevamente regresando al blog, aqui invito a compartir una demo sobre como implementar eventos con .NET Remoting, lo hare en dos envios, y luego pasare a comentar el codigo.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Proyecto CommonAssembly&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;IOrder.cs&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; Entidades;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; CommonAssembly&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;interface&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IOrder&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Insertar(Person person,&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; sucursal);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; AddOnAgregarEvent(AgregarEventHandler handler);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; AddOnRemoveEvent(AgregarEventHandler handler);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; getPersons();&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; getSucursalEnvio(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; suc);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ArgumentosEventArgs.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; Entidades;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; CommonAssembly&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;delegate&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; AgregarEventHandler(&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; o, ArgumentosEventArgs e);&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;Serializable&lt;/FONT&gt;]&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;ArgumentosEventArgs&lt;/FONT&gt;:&lt;FONT color=#2b91af&gt;EventArgs&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; Entidades.Person person;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; sucursal;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; Sucursal&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; sucursal; }&lt;/P&gt;
&lt;P&gt;} &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; Entidades.Person Person&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; person; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; ArgumentosEventArgs(Entidades.Person m_person, &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; _sucursal)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;person = m_person;&lt;/P&gt;
&lt;P&gt;sucursal = _sucursal;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Proyecto OrdenBL&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OrdenBL.cs&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Collections.Generic;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; System.Text;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; CommonAssembly;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; Entidades;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;using&lt;/FONT&gt; DAPerson;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;namespace&lt;/FONT&gt; OrdenBL&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Orden&lt;/FONT&gt; : &lt;FONT color=#2b91af&gt;MarshalByRefObject&lt;/FONT&gt;, IOrder&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;event&lt;/FONT&gt; AgregarEventHandler AgregarEvento;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#region&lt;/FONT&gt; IOrder Members&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; Insertar(Person person,&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; sucursal)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;DALPerson dal = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; DALPerson();&lt;/P&gt;
&lt;P&gt;dal.SetDAPerson(person);&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; pers = dal.GetDAPersons();&lt;/P&gt;
&lt;P&gt;ArgumentosEventArgs e = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; ArgumentosEventArgs(person, sucursal);&lt;/P&gt;
&lt;P&gt;OnAgregarEvento(e);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; AddOnAgregarEvent(AgregarEventHandler handler)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;AgregarEvento += handler;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#endregion&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; OnAgregarEvento(ArgumentosEventArgs Argumentos)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (AgregarEvento != &lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;)&lt;/P&gt;
&lt;P&gt;AgregarEvento(&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;, Argumentos);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#region&lt;/FONT&gt; IOrder Members&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;List&lt;/FONT&gt;&amp;lt;Person&amp;gt; getPersons()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; DALPerson().GetDAPersons();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#endregion&lt;/P&gt;
&lt;P&gt;#region&lt;/FONT&gt; IOrder Members&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; AddOnRemoveEvent(AgregarEventHandler handler)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;AgregarEvento -= handler;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#endregion&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;override&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; InitializeLifetimeService()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#region&lt;/FONT&gt; IOrder Members&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; getSucursalEnvio(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; suc)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; suc;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;#endregion&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=63840" width="1" height="1"&gt;</description></item></channel></rss>