200 likes | 374 Views
Overview of MS Atlas. Wallace B. McClure Scalable Development, Inc. www.scalabledevelopment.com ASP.NET Podcast www.aspnetpodcast.com. Who the heck am I…. Developer/Architect. Microsoft MVP. ASPInsider. Author. “Building Highly Scalable Database Applications” – 2002.
E N D
Overview of MS Atlas Wallace B. McClure Scalable Development, Inc. www.scalabledevelopment.com ASP.NET Podcast www.aspnetpodcast.com
Who the heck am I…. • Developer/Architect. • Microsoft MVP. • ASPInsider. • Author. • “Building Highly Scalable Database Applications” – 2002. • “Professional ADO.NET V2” – Soon. • “AJAX with ASP.NET” – 2006. • “IIS7 for Developers/Admins” – 2007. • “ASP.NET in Orcas.” – In our lifetime.
Disclaimer • Atlas is currently Alpha. • Your mileage will vary. • Not everything is documented at this time. • I make no guarantees that anything will work during the demo or afterwards. • October, 2005 TP. • 2006 – Go Live. • Ship with the next revision of the framework Orcas.
What’s the problem with what we got? • Roundtrips. • Server-oriented architecture. • Client and server are not integrated together.
What/Why AJAX? • Out of band client-server calls. • AJAX - Asynchronous Javascript and XML (Atlas and AJAX.NET Pro use JSON). • Decreased network utilization. • Decreased Server CPU utilization. • Much like Client-Server computing. • Better utilization of application resources. • Opportunity to relearn Javascript. • Its cool, its hip, everybody’s doing it.
What is Ajax? (cont.) • Major operations no longer “require” going back to the server.
What is Atlas? • Floor Wax? • Dessert Topping? • Shampoo? • More than Microsoft’s AJAX. • Component Framework for building client side web applications. • Similar in concept to the .NET Framework for the client side web browser.
What is Atlas(cont.)? • Out-of-band client to server calls. • Asynchronous. • Cross-browser. • Internet Explorer. • Firefox. • Safari. • Browser Abstraction Layer. • VSI file that plugs into VS.NET 2005. • GAC is not required.
Pieces-n-Parts • Client • Browser Abstraction Layer. • Script Core. • Base Class Library. • Component Model and UI Layer. • Controls & Components. • Server • Server Control Framework. • Web Services Bridge. • Application Services Bridge.
“Atlas” Client Script Library Controls, Components ASP.NET “Atlas” Server Extensions App Services Bridge Component Model and UI Framework “Atlas” Client Application Services “Atlas” Server Controls Web Services Bridge Base Class Library Local Store, … Script Core ASP.NET 2.0 Browser Integration Page Framework, Server Controls Application Services Browser Compatibility Architecture Diagram HTML, Script, “Atlas” Markup “Atlas”-enabled ASP.NET Pages “Atlas” Service Proxies Web Services (ASMX or WCF) Controls, Components “Atlas” Server Controls “Atlas” Client Framework and Services “Atlas” Server Framework
“Atlas” Approach to Development • Application development • Simple inclusion of script-based functionality via script components, server controls • Separation of UI and behavior • Component development • Enables disciplined approach to scripting • Framework for encapsulating data, and logic • Abstracts browser differences • Provides building blocks for higher level development
Simple AJAX/Atlas Example • Two form elements. • On a client side event, call a server side method without posting back to the server. • Asynchronous call. • Process the information that is returned. • MethodName(Param1,…ParamN, OnCompletion, OnTimeOut, OnError).
Let’s go to the code. • Namespace utilization on the client. • Client side framework through javascript includes. • Client side proxies generated through “/js” option in the include. • Use the .ClientID/UniqueID.
More Complicated UI Example • AutoCompletion of Textboxes. • Sorry, but Drag-n-Drop is not well documented at this point. • Databinding Examples are online. • Let’s go to the code.
Building an Atlas Component Type.registerNamespace('PDC'); PDC.Sequence = function() { PDC.Sequence.initializeBase(this); var _count = 1; var _value = 0; var _randomize = false; this.get_count = function() { return _count; } this.set_count = function(value) { _count = value; } ………….. this.dispose = function() { if (_timer) { _timer.tick.remove(_tickHandler); _timer.dispose(); } PDC.Sequence.callBaseMethod(this, 'dispose'); } ………….. Type.registerSealedClass('PDC.Sequence', Web.Component); Web.TypeDescriptor.addType('pdc', 'sequence', PDC.Sequence); } <atlas:Script ID="sampleScript" runat="server" Path="~/ScriptLibrary/Sequence.js" /> var g_sequence = new PDC.Sequence(); g_sequence.set_count(20); g_sequence.next(); var value = g_sequence.get_value();
Debugging • debug.dump(object, name, true/false); • for(m in object) alert(m); • Tools: • Visual Studio .NET. • Fiddler. • WebDev Helper.
Where does Atlas/AJAX make sense? • Microsoft IIS Environment. • .NET 2.0. • Where data transfer is limited. • Small changes. • Limited bandwidth.
Difficulties • No Javascript IDE Intellisense. • Bookmarking. • Back Button. • Accessibility/Section 508. • Search Engines. • Application State. • Downlevel browsers. • Debugging Javascript. • Doing too much at the client. • I’ll just save these 50,000 records on the client and not have to go back to the server for the next page of records………….. • Browsers are fairly fragile animals.
Resources • http://atlas.asp.net/ • http://www.aspnetpodcast.com/ • http://www.wilcob.com/ • http://weblogs.asp.net/wallym • http://www.nikhilk.net/ • “AJAX with ASP.NET” in 2006
Questions / Comments • Wallace B. McClure • Scalable Development, Inc. • http://www.scalabledevelopment.com • 865-693-3004