Atlas Project

We are now well into the final RTM milestone of the ASP.NET 2.0 and Visual Web Developer 2005 release. Having reached our ZBB (Zero Bug Bounce), we are now locked down on our feature set, and we’re focusing on the final quality, performance, and reliability push.

 

At the same time, we have started to work on our next release. One area we’ve been looking at for a while is the growing popularity of richer user experiences in browsers, through AJAX (Asynchronous Javascript and XML)-style programming.

 

All of the pieces of AJAX – DHTML, JScript, and XMLHTTP – have been available in Internet Explorer for some time, and Outlook Web Access has used these techniques to deliver a great browser experience since 1998. In ASP.NET 2.0, we have also made it easier to write AJAX-style applications for any browser using asynchronous callbacks, and we use them in several of our built-in controls.

 

Recently, however, the technologies used by AJAX have become broadly available in all browsers, and use of this model for rich web applications has really taken flight. There are a number of high-profile new AJAX-style websites out there today, including a number by Google, as well as sites like A9 and Flickr. Microsoft will also have more sites that use this technology out there soon – check out Start.com and the MSN Virtual Earth project for examples.

 

The popularity of AJAX shows the growing demand for richer user experiences over the web. However, developing and debugging AJAX-style web applications is a very difficult task today. To write a rich web UI, you have to know a great deal of DHTML and JavaScript, and have a strong understanding of all the differences and design details of various browsers. There are very few tools to help your design or build these applications easily. Finally, debugging and testing these applications can be very tricky.

 

What we’ve set out to do is to make it dramatically easier for anyone to build AJAX-style web applications that deliver rich, interactive, and personalized experiences. Developers should be able to build these applications without great expertise in client scripting; they should be able to integrate their browser UI seamlessly with the rest of their applications; and they should be able to develop and debug these applications with ease.

 

For this work, we’ve been working on a new project on our team, codenamed “Atlas”. Our goal is to produce a developer preview release on top of ASP.NET 2.0 for the PDC this September, and then have a website where we can keep updating the core bits, publishing samples, and building an active community around it.

 

Here are some of the pieces of Atlas that we are going to be delivering over time:

 

 

Atlas Client Script Framework

 

The Atlas Client Script Framework is an extensible, object-oriented 100% JavaScript client framework that allows you to easily build AJAX-style browser applications with rich UI and connectivity to web services. With Atlas, you can write web applications that use a lot of DHTML, Javascript, and XMLHTTP, without having to be an expert in any of these technologies.

 

The Atlas Client Script Framework will work on all modern browsers, and with any web server. It also won’t require any client installation at all – to use it, you can simply include references to the right script files in your page.

 

The Atlas Client Script Framework will include the following components:

o        An extensible core framework that adds features to JavaScript such as lifetime management, inheritance, multicast event handlers, and interfaces

o        A base class library for common features such as rich string manipulation, timers, and running tasks

o        A UI framework for attaching dynamic behaviors to HTML in a cross-browser way

o        A network stack to simplify server connectivity and access to web services

o        A set of controls for rich UI, such as auto-complete textboxes, popup panels, animation, and drag and drop

o        A browser compatibility layer to address scripting behavior differences between browsers.

 

 

ASP.NET Server Controls for Atlas

 

For ASP.NET applications, we are planning on building a new set of AJAX-style ASP.NET Server Controls, and enhancing our existing ASP.NET page framework and controls, to support the Atlas Client Script Framework.

 

ASP.NET 2.0 includes a new feature, called asynchronous client callbacks, that makes it easy to build ASP.NET pages that update their content from the server without requiring a page roundtrip. Asynchronous client callbacks wrap XMLHTTP, and work on a variety of browsers. ASP.NET itself includes several controls that use callbacks, including client-side paging and sorting in the GridView and DetailsView controls, and supporting virtual lists of items in the TreeView control. You can learn more about callbacks on Bertrand Le Roy’s blog.

 

The Atlas Client Script Framework will fully support ASP.NET 2.0 callbacks, but we’re planning on enriching the level of integration between the browser and the server much further. For example, you will be able to data bind Atlas client controls to ASP.NET data source controls on the server, and you’ll be able to control personalization features of web parts pages asynchronously from the client.

 

 

ASP.NET Web Services Integration

 

Like any client application, an AJAX-style web application will usually need to access functionality on the web server. The model for connecting to the server for Atlas applications is the same as for the rest of the platform – through the use of Web services.

 

With ASP.NET Web Services Integration, Atlas applications will be able to access any ASP.NET-hosted ASMX or Indigo service directly through the Atlas Client Script Framework, on any browser that supports XMLHTTP. The framework will automatically handle proxy generation, and object serialization to and from script. With web services integration, you can use a single programming model to write your services, and use them in any application, from browser-based sites to full smart client applications.

 

 

 ASP.NET Building Block Services for Atlas

 

With ASP.NET 2.0, we’ve built a rich set of building block services that make it incredibly easy to build powerful, personalized web applications. These building blocks dramatically reduce the amount of code you have to write for common web application scenarios, such as managing users, authorizing users by role, and storing profiles and personalized data.

 

With Atlas, we’ll make these accessible as web services that can be used from the client framework in the browser or from any client application. For example, if you are building a website that shows a list of to-do items for the user, you can use the ASP.NET Profile service to store them in the user’s profile on the server. These items will then be accessible even as the user roams from one machine to another.

 

Services we will provide include the following (all based on the ASP.NET V2.0 implementations):

 

-          Profile: Store per-user data on the server.

-          UI Personalization: Store personalized UI settings on the server.

-          Authentication: Authenticate users.

-          Roles: Authorize user tasks and show different UI based on the user’s roles.

 

Because these building blocks are server based, you can use the same security model as for accessing the rest of the site. These services also won’t require any client download – just reference the script proxy from the browser.

 

All of our ASP.NET 2.0 Building Block Services are pluggable at the back-end using a common provider model extensibility pattern. We provide built-in providers that let you use a SQL Server database or Active Directory as a store, but you can easily plug in your own. For example, if you want to store user profiles in a centralized cloud rather than on your own database server, you can simply plug in a different provider – the choice is yours. 

 

 

Client Building Block Services

 

In addition to DHTML, JScript, and XMLHTTP, we’re looking at additional services that allow websites to harness the power of the client to deliver an enriched experience.

 

The local browser cache is an example of such a service. When enabled, websites can store content in that cache and later retrieve it efficiently. But there’s no API from the browser to store data in the cache, and applications like Google Maps or OWA have to go through hoops to generate unique URLs so that the browser will cache the server response. With Atlas, we plan on providing programmable access to a local store/cache, so that applications can locally cache data easily, efficiently and securely.

 

Integration with other applications is another new dimension of a rich web experience. For example, when a user browses an auction site and bids on an item, they can see when the auction ends, but how easily can they integrate that event into their personal calendar application? With Atlas, we are also looking to provide a set of client-side building block services, and a model for how websites can securely publish connection points for those services. When the user selects “Add to Calendar”, the browser can call the connection point to get the calendar data, and pass it onto the local calendar application. The page doesn’t get to download or run its own code or initiate the action, so it’s safer than ActiveX.

 

 

Next Steps

 

As we move further along, more pieces of the story will emerge. In parallel, we are already working on our next release of development and debugging tools, so that we can deliver a great development experience for these type of rich web applications.

 

One question you may have is how Atlas relates to Avalon and smart clients.

 

We see Atlas as the best way to write a whole new generation of richer, more interactive, more personalized experiences in browser applications.  Avalon is the next generation presentation model for Microsoft, and will let you build the richest user experiences on the Windows platform. Avalon will deliver phenomenal graphical experiences that use the latest in media integration and hardware acceleration. And Avalon will also let you provide persistent, immersive experiences that go beyond the browser.

 

Of course, when you’re building Avalon applications, you can reuse the programming model investments you make today with ASP.NET and Atlas. For example, the ASP.Net Building Block Services and Client Building Block Services will also be accessible from any Avalon client. This model gives you a smooth path to the next generation of applications.

 

Stay tuned here to hear more about our plans for Atlas and ASP.NET V.Next. And let us know your thoughts – Are you considering building richer AJAX-style web applications? What would you like to see in Atlas?  You can post here on the blog, or send your comments to our feedback to our team alias at atlas@microsoft.com.

 

Thanks,

 

Web Platform and Tools Team

 

P.S. Some of you may be wondering how we chose the name Atlas.  We’ve used several names related to Saturn for projects owned by our team.  Saturn itself was the codename for ASP.NET Web Matrix, Cassini was the sample web server for hosting ASP.NET, and Calypso was the name for our community website at www.asp.net. And we thought Atlas would be a nice name for the roadmap to the next generation of rich, personalized web applications.

 

P.P.S. To learn even more come to the PDC this September

Published Tuesday, June 28, 2005 8:27 AM by ScottGu

Comments

# re: Atlas Project

Tuesday, June 28, 2005 11:56 AM by Marc Hoeppner
Awesome! - You did it again ;)

Did you take a look at the AJAX.NET (www.schwarz-interactive.de) implementation that recently went open source? - It really has some niffty features such as DataSet support in the client etc. which would be great to have in ASP.NET V2 as well!!

# re: Atlas Project

Tuesday, June 28, 2005 12:27 PM by Javier G. Lozano
This is great! You guys rock! This should definately take ASP.NET to the next level!

# re: Atlas Project

Tuesday, June 28, 2005 12:33 PM by Scott Sargent
I agree with Marc, AJAX.NET is very cool and extremely useful. We use it on some of our projects.

# re: Atlas Project

Tuesday, June 28, 2005 12:38 PM by Kevin Dente
Cool stuff! But I'm fuzzy - will this be part of the next version of the .NET framework, or an add-on to 2.0?

# re: Atlas Project

Tuesday, June 28, 2005 12:44 PM by Old ideas getting right !
I suggest you leave the asynchronous callbacks and use webservices directly.
see http://ajaxaspects.blogspot.com/ (in progress)

# re: Atlas Project

Tuesday, June 28, 2005 12:53 PM by Roman Rozinov
Looking forward to that. It'll be technology to use in the future.

# re: Atlas Project

Tuesday, June 28, 2005 1:12 PM by Steele Price
Thanks for the great new tools Scott, you make our lives as developers much more rewarding.

# re: Atlas Project

Tuesday, June 28, 2005 3:07 PM by Nate London
We have started relying heavily on AJAX to improve the functionality of our web UI's. Since you're looking for suggestions, I will oblige. I think an ASP.NET server control you can associate with a BackgroundWorker would be extremely useful for creating effective web UI's for long-running tasks. It can be used to do a vareity of client updates including progress and status without traditional postbacks. Right now we use timed asynchronous postbacks to check on our threads. It took a lot of messy wiring to get that working smoothly. Even if it just approximates two-way communication with timed requests, a simple control framework around that would really improve the platform for everybody.

# re: Atlas Project

Tuesday, June 28, 2005 3:13 PM by ex-msftie
How well will this work for non-IE browsers and other (non-pc) platforms? It is pretty much useless otherwise.

# re: Atlas Project

Tuesday, June 28, 2005 3:20 PM by scottgu
Atlas will work with all modern browsers. It will also work on non-Windows platforms.

# re: Atlas Project

Tuesday, June 28, 2005 5:22 PM by Ignat Andrei
Very nice..Waiting to see and to experiment with!

# re: Atlas Project

Tuesday, June 28, 2005 5:42 PM by buk
check out AJAX.NET

# re: Atlas Project

Tuesday, June 28, 2005 6:57 PM by Mike Gale
Will this system be open to developers who know what they're doing? Who know how they want to render in browser X and want to use their own JScripts.

The uplevel / downlevel dichotomy in ASP.NET 1.x forced many to roll their own. (Cause downlevel is not a serious contender.)

I hope this won't be similar. We need to be able to make it do what we want, including (probably) tailoring the rendering for different browsers.

# re: Atlas Project

Tuesday, June 28, 2005 7:07 PM by Freelance Programmer
Great! and hopefully you can include some improved js intellisense in VS.Next

# re: Atlas Project

Tuesday, June 28, 2005 7:17 PM by scottgu
Hi Mike,

That is definitely our goal (making it very flexible and extensible for advanced developers). The core framework will provide tons of customization opportunities. It is also cross-plat and cross-browser by default.

Hope this helps,

Scott

# re: Atlas Project

Tuesday, June 28, 2005 9:01 PM by Aaron
Scott,

Very cool. You guys should definitely take a look at some of the kits already in this space. The one with the scope nearest to what you're trying to build is probably the Dojo Toolkit (dojotoolkit.org).

One thing that concerns me however, is when you say that developers should be able to use this technology without really understanding it (I paraphrase :-)). You should be careful with that. I also have a good deal of experience with ASP.Net and DHTML and as a previous poster said, the server controls that shipped with ASP.Net 1.0 were a complete no-go because they weren't - in a word - webby.

They did not build on the fundamentals of modern web development: structural markup and CSS for presentation, gracefully improving when the right technologies (CSS, DOM) were available. Instead, they tried to detect browsers on the server and send two completely different sets of markup to the client, creating a maintenance nightmare.

I think the reason this was done was the same reason that is being presented here: to make it really easy to get something that jumps and spins onto the page for people that didn't really understand how that's accomplished.

Most technologies MSFT have created recently that really succeed do so because of their clarity, transparency, and consistency -- not because of their drag-n-drop-ability.

Take, for example the .NET BCL. By all means, probably more complex than VB Control or ATL. But wildly popular and successful. Why? I think because once people understand how .NET works at a high level and have the fundamental concepts, they can crack that BCL open and peer all the way down to the very bottom and it all makes sense. It's all self-consistent and plays by the same rules.

Do the same for DHTML. Build on top of the foundation of the real web, not a new one that you layer on top of the real one. That way, when developers are ready to customize and extend those great AJAX tools you give them -- they won't be shocked to find that internally, they're completely different beasts. There will be a smooth learning curve all the way down to the very core. I think that is the way to make this a successful project in the long term.

# re: Atlas Project

Tuesday, June 28, 2005 11:47 PM by Shiju Varghese
Thanks to Web Platform and Tools Team.You r doing great things for microsoft developer community.

# re: Atlas Project

Wednesday, June 29, 2005 2:23 AM by SteinarH
Atlas appears to have a very rich feature-set, compared to competitors, and developer previews are nice.

How about creating a SUPPORTED "reduced feature version"? Then developers can start using that (and DEPLOY). If you release a "install at your own risk and if anything fails your on your own" version, we most certainly can’t afford to invest much time in this now. Later, when you release the full version, we may already have invested too much time in competing libraries.

# re: Atlas Project

Wednesday, June 29, 2005 2:40 AM by Craig Hooper
I've used AJAX for a few web apps previously but they were always limited to intranets because they relied on the XMLHTTP ActiveX object and so the user's IE security settings had to allow ActiveX scripting. Won't this still be an issue for Atlas?

# re: Atlas Project

Wednesday, June 29, 2005 4:37 AM by john
"The Atlas Client Script Framework will work on all modern browsers" - tested based on capability, rather than user_agent, I'd hope?

That should be a question I wouldn't even have to ask, but, well... after asp.net 1.0...

# re: Atlas Project

Wednesday, June 29, 2005 6:01 AM by Anup Shah
Hi,

Sort of expanding on Aaron's comments is some basic accessibility issues.

For example, will the .NET controls for Ajax provide some alternative when JavaScript is disabled by users (e.g. round tripping), or will that need to be developed by web developers instead (I can imagine it quite tricky to provide such an alternative out of the box).

Other accessibility issues that people need to consider are the impacts to screen reader users when content is updated somewhere on the page (causes some screen readers to jump to the updated content, thoroughly diorienting the user).

I guess what I am saying is that Ajax applications, while very cool and potentially extremely useful, somehow need to be developed with care.

Will .NET be providing any information, controls or something else to help in this area?

# re: Atlas Project

Wednesday, June 29, 2005 6:50 AM by LukCAD
I think, explorer's developers can help you. If they implement the library of javascript procedures into universal global library placed into internet server then many problems for asp.net go away. I suppose it will cool features when all explorer's developers will use shared common library of JS with good documentation and description. You suppose that Atlas must to provide rich UI and easy implementing of DHTML for user but it will better if that client side (any rich UI editor need a lot of JS code) will borned from explorer side. I hope we have poore web explorer still, we will try to save state our pages by hide information posted around server but we forgot that explorer is for it. DOM was first step to solve task about less loading of server from a big quantity of bytes transmitted between client and server side, so i hope in Atlas your team will continue this way and may be Opera, NS, FireFox, IE and so on will try to find share variant of making internet client browsers. Idea is simple - shared JS library has in xml file for example or into web service the information about current version. When the user start his explorer then explorer check the global library and upload new adds if it is. ASP.NET developers use the global library for their projects and they don't think about is it library in user side or not.
Sincerely, LukCAD.

# re: Atlas Project

Wednesday, June 29, 2005 8:51 AM by Alex B. Ferland
It's good to see Microsoft pushing some projects related to AJAX even with their smart client strategy.

The XMLHttpRequest object has been around for quite some times in IE and it's weird that ATLAS comes almost 5 years later just because there's a big talk around AJAX. Anyway, I applaude this initiative.

We've been doing this kind of web application design for years (even before webservices!) and we have our own DHTML/AJAX framework that gives us great benefits.

You can see if for yourself (http://www.xicommunity.ca), we have built an online software factory (XI-Factory) that allows you to design and generate applications online and generate .NET code out of it. Give it a try to see the possibilities of AJAX.



Now.. I have some concerns about the "cross-browser" aspect of ATLAS. For years we've always developped on IE because.. well... not many people are using other browsers and the applications we build are mostly targeted to intranet. Now some of our clients want to have few of their application supporting FireFox for example.

We've converted our AJAX framework (we've been calling it OWPA (One Web Page Application)) but it was quite painful because of some bugs in FireFox and the lack of good tools to debug client-side javascript.

Our experience showed that it's possible to have some of the features being cross-browser (for FireFox at least) but it comes at a price. It's obviously longer to code, harder to debug, etc...

I can't wait to see how you guys are going to manage that issue.

# re: Atlas Project

Wednesday, June 29, 2005 9:20 AM by Jeff
I have to agree with Aaron - don't kill this by making it so simple that my grandmother could use it.

If it's functional, extensible and compliant it will be a welcome addition to my toolbox.

If it generates or encourages bad code just to make things easier, I will avoid it like the plague.

# re: Atlas Project

Wednesday, June 29, 2005 9:36 AM by AIM48
This might be too sweeping a suggestion - but I will suggest it anyways. Just like you currentlly have the RenderControl method that outputs the HTML to render a control - you should also have a "RenderScriptControl" which would output javascript property change commands - so that when the developer wants to respond to button click event - he can do it all in server side code. After everything is run at the server side - the server will poll all of the controls who's properties have changed (or the dev might nneed to flag them - not that bad) and the server will generate the proprty change scripts - which it will send back to the page and the page will eval() it to change the page.

A lot of the kits out there require a lot of extra javascripting which adds another layer of code - and alos puts too much logic on the page.

# re: Atlas Project

Wednesday, June 29, 2005 11:16 AM by John
How about creating a supported "reduce feature version" ?

# re: Atlas Project

Wednesday, June 29, 2005 1:58 PM by truvy
The following AJAX code/implementation has served me pretty good:
http://dkpinteractive.ath.cx/scripts/AJAXRequest.js

-Truvy

# re: Atlas Project

Wednesday, June 29, 2005 3:08 PM by Tei
Hello.

I am 31 years old. And code its my life. I am artist and coder, profesional.
AJAX its a cool buzzword, but the feel of most .NET coded webpages its __WRONG__ befeuse feel obstructive to player desieres. More "this page has his own mind" will make pages feel much less responsive, much more crappy. And this will be the result of giving ATLAS to some people out here.

This its not a tecnical problem, more than a human problem. How to solve?. Maybe Microsoft sould avoid giving powers that sould be really user powers. Sould create a imaginary border, and distribute powers clearly.

Yet another question:

I feel really need to jump to java. But I dont really like Java. Its too verbose. I may jump to .NET but I want to continue using Linux. Can be Microsoft glad enough to give rights-to-use to the Mono project so will be __safe__ to learn .NET? I dont want to waste YEARS of learning to .NET then MS banning my servers runtimes.. If MS dont give Mono a happy "good luck!" and friendship, I will not learn .NET

Thanks!

--Tei

# re: Atlas Project

Wednesday, June 29, 2005 7:46 PM by Tim
Ive been toying with AJAX.Net for a while and i have to say i love it, wack an attribute on a function and bam you can call it from JS. Not to mention the feature set available.

While i wouldnt mind a more advanced version im a little sceptical, so far in the .Net framework (and most MS products), bug fixes and features have to wait for a service pack, a few years down the track, leading to ugly hacks to fix stupid problems.

Alex:
I think you'd find Venkman (http://www.hacksrus.com/~ginda/venkman/) excelent for debugging javascript in firefox/mozilla, unless you have tried it, but i dont know how you can say thats not any good.

# re: Atlas Project

Wednesday, June 29, 2005 8:28 PM by Ramon Durães
Thanks !!!!! Scott
ASP.NET NEW GENERATION!
Scott this possible add Calendar Popup, ##Input Mask##
http://www.eworldui.net/CustomControls/CalendarPopupDemo.aspx ??

Thanks

# re: Atlas Project

Wednesday, June 29, 2005 8:34 PM by Ramon Durães
- DBCOMBO ATLAS -
http://www.dbcombo.net/

tks,

Ramon Durães

# re: Atlas Project

Thursday, June 30, 2005 4:15 AM by Paul Glavich
Hi Scott,

You already have some very positive comments re: Atlas, and I also think that this is a *very* important aspect that needs to be factored into general ASP.NET development asap. Integrating "real" client side functionality from the server via Atlas (ie. roles, personalisation etc...) will position ASP.NET on the forefront of an imminent wave (IMHO). Any chance of a "Component download" add-in for V2.0 of ASP.NET instead of waiting for a next release?

# re: Atlas Project

Thursday, June 30, 2005 4:33 AM by Alessandro Petrozzelli
Why not an XForms implementation?

# re: Atlas Project

Thursday, June 30, 2005 10:03 AM by Srikanth
http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples

# re: Atlas Project

Thursday, June 30, 2005 10:13 AM by Pavel Radzivilovsky
Scott,

First of all thanks for the efforts to make our and users' life even happier. However, I have a problem with "You can write applications that use ... without having to be an expert in any of these technologies" because this is simply not true. The first thing to do during debugging is splitting the problem in parts and having a good look at something in the middle (and the DHTML source is the natural first choice for web applications because it's the easiest one to look at). If developer is unable to decode a rather complicated and all-optimized JS code, she just won't be able to debug, and therefore, to develop. In my opinion, it's critical that the resulting Javascript will be easily debuggable and understandable. Besides, understanding JS/DOM/DHTML is not really the problem of developers today when progamming rich client-side web UI. The problem is amount of effort involved in writting big amounts of client-side code with current tools and designing correct interfaces to the server-side.

Not to mention the "thin road through the forest" issue - many times it is hard to make ASP.NET do something too different from what was on the framework's architect's mind. In many cases, one has to make untrivial workarounds. On the controrary to "build these applications without great expertise in client scripting", I think it would be better to provide great libraries rather than great frameworks.

# re: Atlas Project

Thursday, June 30, 2005 11:20 AM by scottgu
Hi Paul,

Our plans are to have a component download that runs on top of ASP.NET V2.0 this fall (and on going) as part of the tech-preview. So you will be able to take advantage of it pm top of Whidbey.

Hope this helps,

Scott

# RossCode.com - Microsoft's Atlas

Thursday, June 30, 2005 12:06 PM by TrackBack
RossCode.com - Microsoft's Atlas

# re: Atlas Project

Thursday, June 30, 2005 1:45 PM by hammett
We have been using Ajax for quite some time in MonoRail (which is a MVC framework for .Net)

http://www.castleproject.org/index.php/MonoRail

# re: Atlas Project

Thursday, June 30, 2005 2:32 PM by dan
nice :)

# re: Atlas Project

Thursday, June 30, 2005 4:00 PM by LukCAD
Hello Scott.
Is it possible to get Atlas betta version for testing?
Sincerely, LukCAD

# re: Atlas Project

Thursday, June 30, 2005 4:31 PM by Michael Schwarz
On my page (http://ajax.schwarz-interactive.de) I have a .NET library for AJAX calls/methods. A lot of developers are searching for such easy use of AJAX in web applications.

# re: Atlas Project

Thursday, June 30, 2005 9:46 PM by PuddlyWumpus
There are now a couple factors contributing to what I see as 1) an explosion of easy-to-use rich-client 3rd party ASP.NET server components and 2) the subsequent irrefutable dominance of ASP.NET as the web development platform of choice. These are: 1) The newly available cheap Visual Studio Web Express Edition and now 2) Atlas. (assuming MS forgoes its reputation as web standards ignoramuses, which it sounds like it is trying to do)

As a programmer I don't care about Atlas as much as I care about how it will allow the proliferation of 3rd party rich-client controls. So instead making Atlas recommendations, I will make tell you what controls I think would be cool to see, and then you can figure out what features are necessary in Atlas to enable their high-level creation.

These are:

1) Server Push. This to me is a killer browser app. Use a single (or pool) of asych hanging XMLHTTP http connections to wait for the next server event, or even better, if possible have IE7 support multipart mimetype to catch up with moz. (see multiple property at http://www.xulplanet.com/references/objref/XMLHttpRequest.html)

2) a generic drag and drop framework. This will allow multiple component vendors to interoperate. (drag and drop is mentioned which is fantastic, just know that 3rd party interoperability should be the goal)

3) an easy way to make controls stateful (persisting to user profile). Make sure it is obvious and high level so that control developers can add this feature as an afterthought.

4) I'm not sure if this has already been implemented in ASP.NET 2.0 but a major drawback of using it in 1.1 (with custom client code) is that if the callback is triggered from a control that resides within a naming container one of 2 things have to happen a) the entire viewstate string needs to be posted back with every piddly callback request or b) the container needs to make sure and bind itself even on postback. I'm assuming this was considered in 2.0 without Atlas, but just in case... ;)

5) An easy and high-level mechanism for matching up the 2 ways to render controls: statically with html on initial pageload and dynamically with DOM on callback. It really sucks to have to implement 2 different rendering methodologies for every control. If I was smarter I'd tell you how to do it. Just know that it is a pain in the ass now.

6) This is an IE7 thing. Allow the current url to be changed without the page reloading to allow bookmarking of dynamically updated pages. Otherwise AJAX corrupts the basic web tenent of 1 url == 1 page. Even more ambitious, allow the use of the back arrow to undo selected callback triggered page changes.

7) Another IE7 thing. Compiled javascript. This would make the javascript files much smaller as well as speed up rendering.

8) Ability to allow user to share data not just from installed apps but also from cache of another website, for such things as cross-website profiles etc. Of course it would prompt the user for permission.

Hope this helps. Keep up the great work.

# Uplevel / downlevel in Visual WebDev 2005

Friday, July 01, 2005 7:50 AM by Tek Boy
This is slightly offtopic, but here goes anyway... will Visual Web Developer 2005 fix the problems I've heard about it treating Firefox et. al. as downlevel browsers?

# re: Atlas Project

Friday, July 01, 2005 8:41 AM by Charlie Farley
I've come a cropper using AJAX in an intranet-environment with IE6.0.2600 and IE6.0.2800 clients when accessing a W2K IIS6 server. AJAX requests take ages to return their results. Sometimes they work fine for a few requests and then fail, othertimes they fail immediately.

Using the same (very simple script) on a client machine that previously failed having updated via XP SP2 to IE6.0.2900 works fine.

Using the same script on a previously failing client when served from a W2K IIS5.0 or WinXP IIS5.1 server also works fine.

it's specifically W2K IIS6 and pre-IE6.0.2900 browsers. Infuriating!

# re: Atlas Project

Friday, July 01, 2005 12:24 PM by scottgu
Hi Tek,

ASP.NET 2.0 treats Firefox, Safari and Opera as up-level browsers now.

Hope this helps,

Scott

# re: Atlas Project

Friday, July 01, 2005 12:45 PM by Sjonk
Will Atlas be available only for servers running Windows Server? Or can you have it running from Apache or any other server also?

# re: Atlas Project

Friday, July 01, 2005 2:33 PM by scottgu
Hi Sjonk,

Different pieces of Atlas can be used different places. The core client-side jscript framework could be used with any web-server.

Thanks,

Scott

# re: Atlas Project

Friday, July 01, 2005 4:30 PM by foob
it should be completely transparent: event handlers should be called via XmlHttp and on the server one should be able to write:

button1_OnClick (blah)
{
textbox1.Text = "hello world";
}

and the property changes should be serialized into a message returned (in the XmlHttp response) to the client to update the properties on the page.

# re: Atlas Project

Saturday, July 02, 2005 4:07 PM by LukCAD
Thanks a lot, Michael.
I will soon rebuild all my lybraries to include yours Ajax.dll (5.6.3.4). But say me, is it core of Atlas?
Sincerely, LukCAD

# re: Atlas Project

Monday, July 04, 2005 1:56 AM by MArk Robertson
Please make sure that if you loop requests to the server the memory does not leak. The Web Service behaviour and AJAX were useless for continuously running dhtml applications

# re: Atlas Project

Monday, July 04, 2005 2:48 AM by Srinivas Sampath
Scott,

Great idea. Our application has been doing this sort of thing for over 3 years now and we have built a whole host of libraries to provide the necessary dynamism that we need on the client. Right now, these are limited to IE versions only, but off-late we are getting requests to support other browsers too.

I will be very interested to take part in any Beta programs that you guys are planning to evaluate this model and provide feedback.

# re: Atlas Project

Monday, July 04, 2005 6:33 PM by Faisal
Hello,

Its amazing how people started talking about XMLHTTP after Google unveiled Gmail.

We at Tajseed solutions (http://www.tajseed.com) have been using it since year 2000, in our CMS and rest of our Products/Projects.

A sample of that is search engine we have released almost 6 months ago, which is fully AJAX based, it can be accessed here: http://www.deepy.com

The key advantage of Deepy over standard search engines is that all requests to the server are made behind the scenes without a reload of the page. This allows for asynchronous calls to the web server, so that content can be pre-emptively downloaded enhancing the illusion of speed for the user, and by using AJAX we managed to provide the following features:

* A real-time spell checker which starts working as soon as you start typing keywords in the Search field.

* A textshot viewer option which provides an instant text-only preview of a search result, without having to open a new browser window to see the entire web page content.

* DHTML tabbed paging which shows the entire set of search result pages, allowing you to browse easily and quickly through all the results.

I am glad to know Atlas is addressing Key issues we were facing like controlling browser local cache, Debugging JS code, and cross browser compatibility.

However, there is couple of features I would love to see in this framework:

1-Integrating the AJAX based functions with browser back/forward buttons.
(Currently it's not possible to read browser history, which makes difficult to integrate with browser buttons, and this is serious usability issue)

2-Accessing data on remote domain.
(Its is also not possible unless we change the security settings in IE, or deal with the annoying IE security alert window)

3-Client side HTTP Viewer or debugger for the browser.
(Some thing similar to this tool : http://www.simtec.ltd.uk/)

Thanks

Faisal

# re: Atlas Project

Tuesday, July 05, 2005 11:18 AM by Israel Aece
Hello Scott,

It's possible the next release of the Visual Studio .NET 2005 (November 2005), contain the Atlas incorporated in Web Application Projects?

Thank you very much,

# re: Atlas Project

Tuesday, July 05, 2005 7:17 PM by Peter Bromberg
Boy!
There sure are a lot of people promoting their "wares"! I like Bertrand's work the best, especially the server-side ECMAObject creation - more Service Oriented. In fact, I even "Backported" the callback script interfaces to ASP.NET 1.1. "just for fun". Good work! Looking forward to the preview.

# re: Atlas Project

Wednesday, July 06, 2005 10:04 PM by Kurt Johnson
Ever since the AdaptivePath folks coined AJAX, a lot of us old-time DHTML/XMLTTP programmers have remarked about how funny it was that all this time, we never thought of giving this marriage of technologies a cool nickname.

You mean THAT's what it took to get it noticed?

What about those instantly refreshing HTML objects? What about the disappearance of "white flash" from old-style page re-posts? Where was the love then, we ask?

Oh, well. Better late then never....

# re: Atlas Project

Thursday, July 07, 2005 10:00 AM by Dale Wilbanks
We tried an AJAX approach with a TreeView (asynchronous downloading of tree nodes) a couple of years ago. Unfortunately, we used the MS non supported WebService htc. It turns out, that htc swamped the clients proxy server with many open http connections. When the client maxed out their allowable number of http connections, the WebServices htc quit working. In our experience, BE SURE to test this well with proxy servers and automatically LIMIT the number of open connections so that this limitation is avoided. Most proxy server setups are for typical yahoo style web pages, and are not setup for many simultaneous http requests that AJAX can generate. Just my 2 cents; I'm very glad MS is beginning to support this .Net.

# re: Atlas Project

Friday, July 08, 2005 12:46 PM by Anatole Tartakovsky
Here is another piece of the puzzle - hopefully helpful. Over the last 6 years we created (with IE/.NET under the hood of course) WYSIWYG standalone Studio environment for over a hundred "AJAX" components (http://demo.xmlsp.net:8080/Examples). It allows mix and match conventional DHTML with high-end components (DataWindows, Forms, Grids, Tabs, Trees, lookups, etc.) It is based on IE behaviors, however we can either add plug-in to mozilla to accept HTC in a native format or provide cross-browser layer for the controls to facilitate binding from "agnostic" format.
Main usability issue for us was to support J2EE along with .Net. XML/RPC and such along with WebServices. XML/XSL and DHTML. And so on - with component model for Web designers and IT developers in mind.
There are plenty of companies that have been doing frameworks in the last 6 years. What is seriously missing is the client platform progress to help with the transition. Here are some things we had to do just to keep browser implementations on the same level as client/server ones:
1. Scriptlet engine for IE behaviors to facilitate JavaScript compilations (performance)
2. Pluggable protocol to fix transport problems/missed files/compression bugs in http (reliability and performance)(IE and Mozilla)
3. Patches to Mozilla to give it most of IE API (collections, events on XBLs, onPropertyChange - simplify cross platform coding).
4. PrintTemplate engine to give our sites business level printing facilities

One of the reason why AJAX became possible and such hot topic is the fact that FireFox/Opera foolowed Microsoft lead on HTTPRequest - that made 5% of functionality available in the last 6 years to people in "controlled" environments available to 99% of Web population. IMHO, if companies and communities not collaborate on making another 50%+ of "controlled" technologies available across browsers/servers, we will be involved in battle between XAML / Java Client and Flash/Flex/PDF - and can as well scramble browser efforts now.

Sincerely,
Anatole Tartakovsky
anatolet@teamcti.com

# PowerWEB LiveControls for ASP.NET

Monday, July 11, 2005 9:07 AM by Alex
This sounds quite a bit like the product Dart sells called PowerWEB LiveControls for ASP.NET at www.dart.com. Just thought I would mention that this type of technology with rich UI in ASP.NET is already available.
Thanks,
Alex

# re: Atlas Project

Monday, July 11, 2005 9:20 AM by Klok
Absolutly great.

We still live in a world where we have to dream about having the exe apps abilitys in a web app, but those days migth be nearing its end.

# re: Atlas Project

Tuesday, July 12, 2005 4:30 PM by Simone Chiaretta
Great Scott,
I didn't have the time to read all messages in this post, but providing a set of ajax-enabled web ui components would help a lot.

I mean something like an autocomplete textbox, a dropdownlist loadable by an event and so on...

as a developer I'm seeing that customes what web applications, but want all features of traditional client applications (like the autocomplete, and so on...)

Thanx for the great work.

# re: Atlas Project; it's about time!!!

Tuesday, July 12, 2005 4:31 PM by Marc Ziss
I remember wishing I had the time to implement the asyn calls back in 2000, but it was too hard to sell to clients/bosses from a cost benefit argument; but if there's actually a framework to work with though, that would be something!!! I was hoping for a 2 part solution;
1 for simple bound field/action call backs that would spit all the JS infrastucture code so you could attach a client side event such as keydown on a text box to a serverside function without writing a line of JS (not even an .innertext replace that should all be handled in this model)

and secondly a more advanced model that would lay down some of the plumbing and let you fill in the guts with your own JS so that if you needed to implement custom types of behaviors you wouldn't be locked into the limitations of the 'easy' aforementioned model. I'm glad it's finally happening, we may have elegant UI's on the web yet!!!

# re: Atlas Project

Thursday, July 14, 2005 11:09 AM by Michael Herman (Parallelspace)
How is Atlas going to be integrated into the Office forms server?

Will PSS support ASP.NET applications built with Atlas?

Will PSS support ASP.NET 2.0 Web Parts that incorporate Atlas-based functionality?

# re: Atlas Project

Friday, July 15, 2005 2:57 AM by Marc
Hi Scott, thanks for the info. The ATLAS framework should implement something similar to the AJAX NET library from Michael. I never saw such an easy implementation of AJAX for the .NET Framework. Is there any public beta scheduled?

# re: Atlas Project

Saturday, July 16, 2005 9:15 AM by Sriram
Hi Scott,
I am really excited that Atlas will create a base class library for string manipulation, timers and running tasks.
I have few suggestions:
Javascript is a great language supported by majority of browsers. The only problem is does not have a rich base class library like .NET which makes it hard to create complex Javascripts.
Is it possible for you guys to model the base class library for Javascript similar to .NET base class library. I do understand you cannot the entire .NET base class library. But atleast port the classes that could be used in Javascript
A few classes you can implement in JavaScript would be:
. Dataset,Datatable
. Basic .NET Datatypes
. Collections
. String manipulation


With this base class library, it will make .NET developers a lot easier to create JS scripts and they can use their .NET experience to write complex Javascripts.