<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David Barkol's blog : Atlas</title><link>http://weblogs.asp.net/davidbarkol/archive/tags/Atlas/default.aspx</link><description>Tags: Atlas</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>ASP.NET AJAX: Client-side event viewer</title><link>http://weblogs.asp.net/davidbarkol/archive/2007/03/25/asp-net-ajax-client-side-event-viewer.aspx</link><pubDate>Mon, 26 Mar 2007 06:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2097357</guid><dc:creator>davidbarkol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/davidbarkol/rsscomments.aspx?PostID=2097357</wfw:commentRss><comments>http://weblogs.asp.net/davidbarkol/archive/2007/03/25/asp-net-ajax-client-side-event-viewer.aspx#comments</comments><description>&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;Often times when an ASP.NET developer is first learning about the page lifecycle, he puts together a simple application that displays the raised events on the page. This widespread technique helps him understand the order in which the events occur, the arguments that are passed along, and ultimately what can and cannot be accomplished during each event. &lt;/p&gt;&lt;p&gt;In ASP.NET AJAX, a page lifecyle, similar to the one that occurs on the server; takes place on the client as well. By leveraging the client-side events raised by the &lt;a href="http://ajax.asp.net/docs/ClientReference/Sys/ApplicationClass/default.aspx" target="_blank"&gt;Application class&lt;/a&gt; and the &lt;a href="http://ajax.asp.net/docs/ClientReference/Sys.WebForms/PageRequestManagerClass/default.aspx" target="_blank"&gt;PageRequestManager&lt;/a&gt;, we can take more control of the application during partial-page updates. The figure below illustrates the events that occur within the browser when a successful partial postback is applied. &lt;/p&gt;&lt;p&gt;&lt;img alt="Partial postback events" height="550" src="http://www.neudesic.com/uploads/david_barkol/prmevents.png" width="600" /&gt; &lt;/p&gt;&lt;h3&gt;Client-Side Event Viewer&lt;/h3&gt;&lt;p&gt;To gain a deeper understanding of the client-side event model in ASP.NET AJAX, I&amp;#39;ve put together an application that exposes the client-side steps that occur during partial postbacks. In addition, the example demonstrates: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Canceling a postback request&lt;/li&gt;&lt;li&gt;Aborting a postback request&lt;/li&gt;&lt;li&gt;Client-side error handling&lt;/li&gt;&lt;li&gt;Visual feedback for long postbacks (similar to the UpdateProgress control)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here is a snapshot of a portion of the application after a typical postback: &lt;br /&gt;&lt;img alt="Client event viewer" height="218" src="http://www.neudesic.com/uploads/david_barkol/prmviewer.png" width="650" /&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.neudesic.com/uploads/david_barkol/clienteventviewer.zip"&gt;Click here&lt;/a&gt; to download the source code and let me know what you think. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2097357" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/AJAX/default.aspx">AJAX</category></item><item><title>ASP.NET AJAX - Ajax Server Extensions sample</title><link>http://weblogs.asp.net/davidbarkol/archive/2007/01/23/AjaxServerExtensions.aspx</link><pubDate>Tue, 23 Jan 2007 22:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:1459019</guid><dc:creator>davidbarkol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/davidbarkol/rsscomments.aspx?PostID=1459019</wfw:commentRss><comments>http://weblogs.asp.net/davidbarkol/archive/2007/01/23/AjaxServerExtensions.aspx#comments</comments><description>&lt;p&gt;In ASP.NET AJAX, the Ajax Server Extensions consists of a powerful set of server controls that &lt;em&gt;simulate&lt;/em&gt; Ajax behavior on the client. In other words, these controls do not perform Ajax in its traditional sense (JavaScript calls to a server and dynamic updates with dhtml) but rather in a different way that gives the same illusion to the end user.&lt;/p&gt;&lt;p&gt;To demonstrate the power of these controls, I&amp;#39;ve taken an existing ASP.NET application that suffered from normal, pre-ajax symptoms like page refreshes, static content and loss of interactivity and added the controls to make it a more engaging experience. The goals for the task were as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Improve network latency - cut back on the amount of data being passed back and forth between the server and browser&lt;/li&gt;&lt;li&gt;Eliminate unnecessary page refreshes - keep the user connected to the application and the interaction as fluid as possible&lt;/li&gt;&lt;li&gt;Keep UI and application logic on the server - This spares us from exposing ui logic to savvy web users (like yourselves) and also gives us the luxury of supporting the rare cases when a browser has JavaScript disabled&lt;/li&gt;&lt;li&gt;Seamless and transparent integration - Keep intact the existing logic on the server and make integration as unintrusive as possible&lt;/li&gt;&lt;li&gt;Stick to familiar paradigm - leverage the server controls as much as possible to provide the typical ASP.NET developer a familiar paradigm to work with&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Along the way I also tried to&amp;nbsp;exercise some common, recommended&amp;nbsp;patterns for ASP.NET AJAX:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Set UpdateMode for UpdatePanels to Conditional&lt;/li&gt;&lt;li&gt;Placed ScriptManager in&amp;nbsp;master page, leveraged ScriptManagerProxy for content pages&lt;/li&gt;&lt;li&gt;Avoided gratuitous animations - kept animations subtle, relevant and simple&lt;/li&gt;&lt;li&gt;Set Timer control&amp;nbsp;interval to a high value - the timer actually runs on the client, we should be mindful of their resources&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The application manages to use all of the controls in the AJAX Extensions (not the Futures CTP). For a little extra, it includes the AutoCompleteExtender&amp;nbsp;for the search box. By the way, this control is now in the &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit" title="Ajax Control Toolkit"&gt;Ajax Control Toolkit&lt;/a&gt; - where it belongs. &lt;/p&gt;&lt;p&gt;The code for the application, written for the 1.0 release; can be downloaded&amp;nbsp;&lt;a href="http://www.neudesic.com/uploads/david_barkol/ajaxserverextensions.zip"&gt;here&lt;/a&gt;&amp;nbsp;(requires SQL Express).&lt;/p&gt;&lt;p&gt;Below is a snapshot of the application in action:&lt;/p&gt;&lt;p&gt;&lt;img alt="Ajax Server Extensions" height="705" src="http://www.neudesic.com/uploads/david_barkol/ajaxserverextensions.jpg" style="width: 1000px; height: 705px" title="Ajax Server Extensions" width="1000" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1459019" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/davidbarkol/archive/tags/AJAX/default.aspx">AJAX</category></item></channel></rss>