-
-
Nice wrap-up and perspective from Jesse Ezell on the Flash vs. Silverlight theme. I'm relatively new (to say the least...) to Flash; and have a more Silverlight-oriented background but I'd spend my two cents in favor of one of the Jesse's statements:
The only thing Flash has going for it from my perspective is adoption
As usual, time will tell.
-
-
Final days to reserve your seat in Amsterdam, DevDays, June 15 for a full day of rich AJAX stuff. You'll get a free (and signed :))copy of "Introducing ASP.NET AJAX", from MS Press.
I'll talk about programming and architecting: partial rendering, services, good & bad, architecture, options, patterns, commercial frameworks, migration.
Amsterdam is not the only stop of my personal AJAX tour across Europe. I'll also have a stop in Bulgaria (Sofia, July 4-5) and Austria (Wien, July 11-13). More details on these soon.
-
-
I'm on the way planning books for ASP.NET Orcas.
Although the Orcas release has lost along the way some of the rumored features--it looks to me as it's more date-driven than feature-driven--for ASP.NET developers it still has a full bag of goodies.
A new release of my Programming ASP.NET Core Reference book is being planned as I write this for late 2007 or (very) early 2008. Broadly speaking, it will have the following additions:
-
Completely rewritten chapter on Visual Studio
-
New chapter on LINQ and chapters on data binding revised
-
Chapter on server controls will be revised to cover new controls in Orcas
-
New chapter on WCF
-
Two new chapters on AJAX (partial rendering and services)
-
New chapter on Silverlight
The page count should grow from 700 up to approx 1000.
Great. Now I do have a QUESTION for you.
Looking ahead, it seems that even a relatively delimited technology like ASP.NET is getting too big to be covered in a single book. If I had to plan a SINGLE book for ASP.NET (Orcas and beyond), I can hardly plan less than 2000 pages for it. Which is definitely too much.
I split my ASP.NET 2.0 book in two parts--Core and Advanced. Maybe that's not the ideal way of splitting contents.
For this reason, in a kind of book factory project, I welcome your feedback about the following points:
-
A single BIG book vs. many smaller books
-
An encyclopedia model for an otherwise TOO BIG book
-
A delta model--get a book once and have it updated through additional chapters
-
What kind of approach you would like to be applied to split content? Task-oriented, broad topics, alphabetical order, other?
Thank YOU
-
-
With AJAX, Web applications may have a lifecycle similar to desktop applications. The user interacts with the user interface, a JavaScript event handler captures the DOM event and executes some code. At the end of the code, some data is generated to update the GUI. In this context, the code that expresses the required logic can either be local to the page (JavaScript) or remote (in a service). Is there a way to monitor the task? Is there a way to stop the task in case of need?
In Windows applications, a Cancel button to stop tasks in progress is nothing new. But in Web applications?
ASP.NET AJAX Extensions provides the UpdateProgress control to define a template that is displayed during a postback. This template can incorporate a Cancel button. There are a few limitations, though.
-
The UpdateProgress control works only with the partial rendering model. It doesn't work if you implement the task through a remote service.
-
The UpdateProgress control doesn't display dynamic information such as the time left.
-
You are offered an object model to cancel the ongoing task. But what you can really cancel is the socket through which the client receives results. No stop message is ever passed on to the remote task.
An emerging AJAX pattern can help--the Progress Indicator. The idea is that you design the remote task to access a data store periodically during its lifecycle. The task will write its current state to the store and will retrieve from there any messages the client sent. An additional client-side service will poll the data store and read the task's state. This information will then be rendered graphically in a dynamic panel or through a progress bar. Likewise, when the user cancels the task, a new message is placed in the store to stop the task.
Once the task receives the request to stop has to make a decision--aborting, rolling back, or perhaps compensating.
For more details and source code, check out my upcoming Cutting Edge columns on MSDN Magazine, July and August 2007.
-
-
The Microsoft AJAX Client library serves you a so rich JavaScript language that it doesn't even look like a script language. In this regard, it makes it almost natural to think new functionalities in terms of classes. For example, random numbers. Here's a quick class to mimick the behavior of the managed Random class:
//
// Samples.Random ::
// Generates random numbers
//
// Define the namespace of the class
Type.registerNamespace('Samples');
// Constructor
Samples.Random = function Samples$Random()
{
Samples.Random.initializeBase(this);
}
// Method to generate a random number
function Samples$Random$getNumber(minNumber, maxNumber) {
var num = minNumber + Math.floor(Math.random() * maxNumber);
return num;
}
// Class prototype
Samples.Random.prototype =
{
getNumber: Samples$Random$getNumber
}
// Register the new class
Samples.Random.registerClass('Samples.Random');
// Get a static instance of the class
Samples.Random._staticInstance = new Samples.Random();
// Define static global members
Samples.Random.getNumber = function(minNumber, maxNumber)
{
return Samples.Random._staticInstance.getNumber(minNumber, maxNumber);
}
Basically, you go through the following steps:
- Declare the namespace you want the class to fall in.
- Add the class constructor. It's actually a function as there's no class keyword in JS, so you might want to look at it as a function that initializes the "class". By using the initializeBase method you can invoke the constructor on any base class.
- Define as many members as needed to implement methods and properties. Note that a property always needs a pair of get/set methods. Ideally, you define "internal" function for each of the members you plan to expose. You can create these functions as anonymous or named. Named functions are preferable because it helps the VS "Orcas" debugger.
- Define the prototype of the class--that is the "official" list of members of the class. In the prototype, you bind public names to internal functions/properties.
- Add the class to the AJAX library. At this time, you can specify any base class and any interface the class implements.
- You're done. Unless, you want to make the class operate as a singleton. (Just for performance reasons.) In this case, you create the single instance of the class and list static members to be invoked on that.
Everything in the prototype can be extended in derived classes.
NOTE:: I've used this class in my Cutting Edge column, July 2007, for MSDN Magazine.
NOTE:: This is NOT the ONLY way of creating new objects in JS. This is only the prototype-model as implemented and recommended by the MS AJAX library.
-
-
I'm going to have a June rich of speaking events, starting with the TechEd USA in Orlando where I'm down for the following breakout sessions:
- 200:: Design, Host, and Deploy Workflows in Multi-Tier Applications
- 300:: Top 10 Controls and Extenders in the AJAX Control Toolkit
- 400:: Under the Hood of ASP.NET AJAX Partial Rendering
After presenting about AJAX Architectures at the Software Architect show in London (June 12), I'll fly to Amsterdam for Microsoft DevDays. Two full days of great technical contents. I'll have a few sessions there but a full post-con workshop on ASP.NET AJAX. You can read all the details here. It's going to happen on June 15.
Save your seat or, better yet, join today and claim your full conference package with DevDays AND post-con.
BTW: there's also a superb SQL Server post-con workshop run by Bob Beauchemin.
PS: If you attend the ASP.NET AJAX workshop you'll get (free of charge) a copy of my latest MS Press book, "Introducing Microsoft ASP.NET AJAX".
See you there