ASP.NET Ajax Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH .

Post on 28-Mar-2015

221 views 1 download

Transcript of ASP.NET Ajax Daniel Walzenbach Developer Evangelist Microsoft Deutschland GmbH .

ASP.NET Ajax

Daniel WalzenbachDeveloper EvangelistMicrosoft Deutschland GmbH

http://blogs.msdn.com/walzenbach

select * from Danieldocument.getElementById('Daniel')$get('Daniel')

setting expectations

Was ist Ajax?

Design PatternSäulen von Ajax

JavaScriptDocument Object Model (DOM)Cascading Style Sheets (CSS)XMLHttpRequest

AJAX Komponenten

ASP.NET AJAX in Action, Manning Verlag, Seite 6

Ajax

Synchrone Webentwicklung

ASP.NET AJAX in Action, Manning Verlag, Seite 8

Asynchrone Webentwicklung

ASP.NET AJAX in Action, Manning Verlag, Seite 9

XMLHttpRequest

ASP.NET AJAX Architektur

ASP.NET AJAX in Action, Manning Verlag, Seite 16

Microsoft Ajax Library Features

Application ModelComponentsJavaScript ExtensionsCompatibilityAjaxApplication ServicesPartial Rendering

Client Page Lifecycle

ASP.NET AJAX in Action, Manning Verlag, Seite 44

tons of demos ;-)

Optimizing Symbolic ResolutionBackground: Javascript Variable Scoping

Local

Global

DOM

Expando

Optimizing Symbol ResolutionBackground: Evaluating local variablesfunction WorkOnLocalVariable() {

local_var = ObtainValueFromDOM();return (local_var + 1);

}

Optimizing Symbol ResolutionRecommendation: Declare local variables

function WorkOnLocalVariable() {

var local_var = ObtainValueFromDOM();return (local_var + 1);

}

Optimizing Symbol ResolutionBackground: Recognize implicit look ups

function BuildUI() {

var baseElement=document.getElementById(‘target’);

 baseElement.innerHTML = ‘’; //Clear out previous

baseElement.innerHTML += BuildTitle(); baseElement.innerHTML += BuildBody(); baseElement.innerHTML += BuildFooter();

}

Optimizing Symbol ResolutionRecommendation: Cache values in local variables

function BuildUI() {

var elementText = BuildTitle() + BuildBody() + BuildFooter();

document.getElementById(‘target’).innerHTML =

elementText;}

Optimizing Symbol Resolution Background: DOM function symbolic lookupfunction CalculateSum() {

var lSide = document.body.all.lSide.value;var rSide = document.body.all.rSide.value;

document.body.all.result.value = lSide + rSide;}

Optimizing Symbol ResolutionRecommendation: Cache values in local variablesfunction CalculateSum() {

// Cache document.body.allvar elemCollection = document.body.all;

var lSide = elemCollection.lSide.value;var rSide = elemCollection.rSide.value;      elemCollection.result.value = lSide + rSide;

}

Optimizing Symbol ResolutionBackground: Javascript function symbolic lookupfunction IterateWorkOverCollection() {

var length = myCollection.getItemCount(); for(var index = 0; index<length; index++) {

Work(myCollection[index]);}

}

Optimizing Symbol ResolutionRecommendation: cache JavaScript function pointersfunction IterateWorkOverCollection() {

var funcWork = Work;var length = myCollection.getItemCount(); for(var index = 0; index<length; index++) {

funcWork(myCollection[index]);}

}

Optimizing Symbol ResolutionBackground: Internet Explorer function symbolic lookupfunction IterateWorkOverCollection() {

var parentElement = document.getElementById(‘target’);

var length = myCollection.getItemCount();for(var index = 0; index<length; index++) {

parentElement.appendChild(myCollection[iterate]);}

}

Optimizing Symbol ResolutionRecommendation: Cache Internet Explorer function pointers (sometimes)function IterateWorkOverCollection() {

var funcAppendChild =

document.getElementById(‘target’).appendChild;

var length = myCollection.getItemCount(); for(var index = 0; index<length; index++) {

funcAppendChild(myCollection[index]);}

}

Javascript Code InefficienciesBackground: String concatenationvar smallerStrings = new Array();var myRatherLargeString = "";var length = smallerStrings.length;

for(var index = 0; index<length; index++) {

myRatherLargeString += smallerStrings[index];}

Javascript Code InefficienciesRecommendation: array.join for string concatenationvar smallerStrings = new Array();

smallerStrings.push("<div id=\""); smallerStrings.push("sampleID"); smallerStrings.push("\">"); smallerStrings.push("sampleText"); smallerStrings.push("</div>");

…var myRatherLargeString =

smallerStrings.join(‘’);

Referenzen

ASP.NETAjax in Action, Manning Verlag

Referenzen

ASP.NET AJAX Online Documentationhttp://www.asp.net/AJAX/Documentation/Live/default.aspx

HTML and DHTML Referencehttp://msdn2.microsoft.com/en-us/library/ms533050.aspx

Extending JavaScript with ASP.NET AJAX

http://www.asp.net/AJAX/Documentation/Live/tutorials/EnhancingJavaScriptTutorial.aspx

Referenzen

XML Documentation Comments (C# Programming Guide)

http://msdn2.microsoft.com/en-us/library/b2s063f7.aspx

The format for JavaScript doc comments

http://weblogs.asp.net/bleroy/archive/2007/04/23/the-format-for-javascript-doc-comments.aspx

AjaxDoc http://www.codeplex.com/ajaxdoc

Referenzen

Ajax Design Patternshttp://ajaxpatterns.org/

RESTwikihttp://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage

Remote Procedure Calls (RPC)http://www.cs.cf.ac.uk/Dave/C/node33.html

Microsoft AJAX Library Cheat Sheetshttp://aspnetresources.com/blog/ms_ajax_cheat_sheets_batch2.aspx

Referenzen

IE + JavaScript Performance Recommendations

http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspxhttp://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspxhttp://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx

Referenzen

Yahoo developer network: Best Practices for Speeding Up Your Web Site

http://developer.yahoo.com/performance/rules.html

Referenzen

Fiddlerhttp://www.fiddlertool.com/fiddler/

Web Development Helperhttp://projects.nikhilk.net/Projects/WebDevHelper.aspx

Firebughttp://www.getfirebug.com/

Visual Studio – weitere Angebote

90-Tage Evaluierungs Versionen aller VS2008 Editionenwww.msdn-online.de/evalcenter

Launchveranstaltung von VS2008, SQL2008 & WS200819.-21. Februar 2008 in Frankfurt a.M.www.microsoftlaunch2008.de

Visual Studio Team System Information DayRegelmäßige ganztägige Informationsveranstaltung von MicrosoftPraxisnahe Demos & viel Raum für DiskussionenDetails & Anmeldung: www.event-team.com/events/visualstudio

TeamConf 2008 – Die Visual Studio Team System KonferenzSave the Date! 22.-24. April 2008 in MünchenErste Informationen und Call for Papers: www.teamconf.de

Patterns & Practices VSTS Guidance Project Praktische Ratschläge über den Einsatz von VSTS www.codeplex.com/VSTSGuidance

© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.