200 likes | 324 Views
AJAX in ASP.NET. James Crowley Developer Fusion http://www.developerfusion.co.uk/. Overview. What is AJAX? How does it work? Using it in ASP.NET 1.x Using it in ASP.NET 2.0 Challenges. What is AJAX (and who cares?). Current postback solutions can be slow and confusing to users
E N D
AJAX in ASP.NET James Crowley Developer Fusion http://www.developerfusion.co.uk/
Overview • What is AJAX? • How does it work? • Using it in ASP.NET 1.x • Using it in ASP.NET 2.0 • Challenges
What is AJAX (and who cares?) • Current postback solutions can be slow and confusing to users • AJAX allows server-side processing to occur without a postback, and therefore... a more interactive & responsive UI • Nothing new, but all the rage thanks to Google Maps, Flickr, and A9 to name a few
Server Web Server Database How it works 1 Client Browser Async HTTP Request JavaScript XML HTTP Object Parameters DHTML
How it works 2 Client Browser Server Web Server JavaScript XML HTTP Object DHTML Database
Server Web Server Database How it works 3 Client Browser Async HTTP Response JavaScript XML HTTP Object Text, XML, HTML, etc DHTML
AJAX in ASP.NET 1.x • Either we deal with the XML HTTP request ourselves • or we can use an existing library, such as • AJAX.NET wrapperhttp://ajax.schwarz-interactive.de/ • “My AJAX.NET” http://jason.diamond.name/weblog/
Demo • “Colourizing” Code
Complex Data Types • Need to either reproduce (a subset of) the .NET type system within JavaScript or vice-versa • Need to serialize for transfer via HTTP • Serializable return types dealt with automatically • Parameters are harder
Demo • “Google Suggest”
AJAX in ASP.NET 2.0 • Known as “Script Callbacks” • Call ClientScript.GetCallBackEventReference to get the string for a javascript call to trigger a callback • Implement the ICallbackEventHandler interface public stringGetCallbackEventReference(System.Web.UI.Controlcontrol, stringargument, stringclientCallback, stringcontext, stringclientErrorCallback, booluseAsync) public interface ICallbackEventHandler { void RaiseCallbackEvent(string eventArgument); String GetCallbackResult(); }
ASP.NET 2.0 vs AJAX.NET • No dynamic mapping of parameters using reflection • More complicated with multiple callbacks • No JavaScript objects corresponding to server-side types (only returning strings) • Executes within the page lifecycle
Things to note • ViewState not updated during a callback because of allowance for parallel callbacks • Page.IsPostBack is true for callbacks and postbacks. Use Page.IsCallback • Request.Browser.SupportsCallback
Demo • AJAX in ASP.NET 2.0
Atlas • New library from Microsoft to plug-in to ASP.NET 2.0 • Preview available from http://atlas.asp.net/ • Warning: pre-Alpha quality! • But Microsoft wants your feedback…
Atlas • Cross-browser script libraries, bringing namespaces, inheritance, and plenty more • Callbacks triggered in similar way to AJAX.NET library • Web Services integration • Declarative data binding • New AJAX-enabled server controls
Things to watch out for… • Debugging is a pain • Response timeouts and server exceptions • Non-JavaScript/non-ActiveX scenarios
Things to watch out for… • Accessibility, page flow, scroll position • Can break layered architectures • Inability to access by URL, and breaking back/forward browser buttons • No search indexing for AJAX’ed data
Wrapping Up AJAX enables you to create web apps that are… more responsive with enhanced functionality… and a great user experience • Go away and experiment! • Email me: james@developerfusion.co.uk
References • ASP.NET AJAX Libraries • http://ajax.schwarz-interactive.de/ (AJAX.NET) • Tutorial @ http://www.developerfusion.co.uk/show/4704/ • http://jason.diamond.name/weblog/ (My AJAX.NET) • http://atlas.asp.net/ (Atlas) • My Contact Details • Web: http://www.developerfusion.co.uk/ • Email: james@developerfusion.co.uk