AddThis Social Bookmark Button

Print

What Is Being Unveiled at the PDC this Year?

by Shawn Wildermuth
10/27/2003

This week, Microsoft is holding their periodic developer conference, the Professional Developers Conference, in Los Angeles. Much like most PDCs, this event is a time to unveil their new plans for software across their developer products. Hopefully, this article will help you associate the codenames with the content. In the coming weeks, you will hear these codenames being bandied about from every media outlet. Here is an overview of the big topics:

Codename "Whidbey"

Whidbey is the new .NET Framework and Visual Studio .NET combination. This release can be thought of as the first real maturation of the platform. Here is an overview of the changes:

Generics

Depending on where you came from to get to .NET, generics are either a godsend or an annoying over-complication. Generics are simply a way to templatize code:

public class Foo<T> {

  public Foo(T a) {
    _innerArg = a;
  }

  T _innerArg;

}

// Create a couple Foos
Foo<string> sfoo = new Foo<string>("hello");
Foo<int> ifoo = new Foo<int>(123);

Related Reading

Mastering Visual Studio .NET
By Ian Griffiths, Jon Flanders, Chris Sells

The concept here is to create a class that can contain or handle a variety of different types in some uniform way. The most obvious of these are collection classes. In early articles that discussed generics, it was always assumed that they would be a C#-specific feature, but generics are in the CLR. This means that all languages could support generics. In Whidbey, both C# and VB.NET will support generics.

The same code in VB.NET would look like:

Public Class Foo(Of T)

  Public Sub New(ByVal arg As T)
    _inner = arg
  End Sub


  Dim _inner As T

End Class

' Create a couple Foos
Dim sfoo As Foo(Of String)
Dim ifoo As Foo(Of Int32)

C# Changes

Even though generics didn't become a C#-only feature, C# did get a couple of perks on its own:

  • Partial classes: Allows classes to be split up into multiple physical files:
    //class1.cs
    public partial class PartialClass	{
    	public PartialClass()	{
    	}
    }
    
    // class2.cs
    public partial class PartialClass	{
      public void ShowMe() {
        Console.WriteLine("hello");
      }
    }
  • Iterators: A stronger way to develop ways to iterate over your own collections by defining a way to handle foreach in a more straightforward way.
    public class MyList {
      ArrayList _list;
    	public object foreach() {
    	  foreach( object o in _list) {
    		  yield o;
    		}
    	}
    }
  • Anonymous methods: Allows the creation of inline methods. Very useful in handling events:
    
    listbox.DoubleClick += new EventHandler(sender, e) {
      MessageBox.Show(listbox.SelectedItem.ToString());
    }

VB.NET Changes

Most of the changes in VB.NET are about making it more appealing to VB developers. These include:

  • C#-like documentation: A new commenting system that works much like the C# counterpoint to allow self-documenting code.
  • Edit-and-continue:They have finally re-enabled the VB-like edit-and-continue way of developing. How I wish C# would get this; but for now, it's a VB.NET-only feature.

ASP.NET v2

While old-style ASP.NET will continue to work, ASP.NET v2 has attempted to learn a lot from the last few years of ASP.NET:

  • More controls: A large number of controls have been added for all sorts of ASP.NET work.
  • Master Page System: Provides a way to create a master page with other pages that derive from it in a more normal way than ASP.NET does today. Allows the master page to show the developers what sections of the page they are able to change.
  • ASP-style development: Out of the box, developers can develop ASP.NET sites with automatic compilation -- no more hacking a solution file to make this happen. It will be supported implicitly.
  • Built-in support for personalization: Most new controls support personalization by individual users by default. Since most of the web sites out there need this, Microsoft seems to be listening.

Windows Forms Changes

While Windows Forms changes are more evolutionary than revolutionary, Microsoft has spent a lot of energy on making No-Touch Deployment much more natural. They've added features for creating bootstrap installs and easy deployment to IIS servers to support this.

Data-Related Changes

There has been a lot of work in the areas of dealing with data in the .NET Framework. In very brief detail, these are:

  • ObjectSpaces: This much-vaunted project is finally seeing the light of day. This project allows you to create a mapping between a set of classes and a database store, so that all of the serialization to the database is handled in a seamless way.
  • DbTables: In order to bridge the ADO and .NET worlds, Microsoft has created a set of classes called DbTables that are more general use single resultset objects. In other words, more like disconnected ADO recordsets. Under the covers, these were implemented with ADO.NET so that they are not just a cheap port of ADO or some other bastardization.
  • New XML stack: There have been a number of improvements across the XML stack to add features and standards that did not exist at the time of the 1.1 writing. There are also expectations of performance improvement, especially in the new transformation (XSLT) engine.

Visual Studio .NET v.Next

The new Visual Studio .NET includes a large number of changes to improve the productivity of users. These include:

  • Visually docking windows: No more being caught up in the purgatory of trying to get your windows in the IDE to dock where you like.
  • Better debugging: The debugger now handles collections much better than before. In addition, walking through code will automatically skip code that isn't yours. No more hitting some framework or x86 code that is sandwiched in between two calls that you are debugging.

Codename "Yukon"

Yukon is the new version of SQL Server that will ship near or at the same time as Whidbey. The changes for Yukon include:

The CLR Inside

The CLR is now hosted inside of SQL Server. This allows you to write stored procedures, functions, user-defined types, aggregates, and extended triggers. This also means that you can do ADO.NET work inside of the database with a new managed provider for querying the database from within the SQL Server process.

The New XML Type

XML has graduated to a real type in Yukon. You can define schemas and store XML in specific columns. You can also add XML-specific indexes to your tables to allow you to index parts of XML documents for easier searches.

Service Broker

The purpose of the Service Broker is to handle asynchronous database work. It is akin to have MSMQ integrated into the SQL Server. You can simply push work onto the Service Broker to allow some non-time-sensitive work to happen when the SQL Server has time.

MARS

Women may be from Venus, but queries can now be from MARS. MARS stands for Multiple Active Result Sets and is meant to allow multiple active result sets within the scope of a single transaction. There is support for this in ADO.NET, as well as support for it in the Yukon engine.

Codename "Longhorn"

Further out than Whidbey and Yukon is Longhorn, the next release of a desktop operating system. Longhorn consists of a number of new systems:

"Avalon"

A new rich client API that allows you to define user interfaces with a markup language called XAML. XAML supports tags that more or less map to existing Windows Forms controls. For example, a simple XAML page that shows a single button would be:

<Border 
    xmlns="http://schemas.microsoft.com/2003/xaml"
		xmlns:def="Definition"
		Background="Blue">
  <Button Width="150px" Height="24px">Ok</Button>
</Border>

"Indigo"

Indigo represents a maturation of web services. Indigo is the next generation tool for developing web service applications. Indigo has taken a completely different approach than the WebMethod work in the 1.x Framework. It attempts to treat web services as a set of network protocols with a real network stack that can be plugged into. Indigo will support (by default) all of the WS-I specs that have been addressed in a somewhat piecemeal fashion.

WinFS

WinFS is the file system that you've heard whispered about for years. (Anyone else remember that this was part of Cairo?) WinFS is essentially a SQL Server store that works locally and somewhat transparently. Files, contacts, images, media, etc. will all be stored in WinFS to provide a more transparent way to handle data of all sorts. The promise is that searching for related pieces of data should be make easier by allowing these objects in different types of applications to be more easily linked together.

Conclusion

Most of what is discussed at this year's PDC is for the future. I would guess (yes, guess ... I have not been given any information from Microsoft about this) that the Yukon/Whidbey releases will happen in 2004, with Longhorn being sometime after that (e.g., 2005 or 2006). I have glazed over many of the details as I have been only given a taste by the pre-conference literature. In the coming weeks we will be running more and more about what these releases actually mean to you, the working developer.

Shawn Wildermuth is the founder of ADOGuy.com and is the author of "Pragmatic ADO.NET" for Addison-Wesley.


Return to ONDotnet.com