Whidbey

Here is some information I extracted from a web site (UniversalThread.com) regarding the next version of Visual Studio (Whidbey). These are some notes that were taken and posted to a web site by someone who attened some developers convention in Germany around Nov 4-7th, 2003.  I like this because it is concise, but covers a number of key topics.  Remember that this is the next version of Visual Studio.net due to be released in 2004.

Keynote # 3 - Visual Studio "Whidbey"

First, Rainer Becker welcomed all the attendees, which arrived today and provided some information about the last two conference days.

Then he introduced the speaker another time to the audience: Yair Alan Griver  (aka YAG), Visual Studio Data Group Manager at Microsoft, was going to present  the upcoming version of Visual Studio .NET (code named "Whidbey"). This the very  first time that Whidbey was presented in Germany.

YAG welcomed everybody. Then he told us that he is going to present many of  the enhancements, which Microsoft has implemented in the upcoming version of VS.NET. These enhancements were shown at the Microsoft Professional Developers  Conference (PDC) 2003 just one week ago in Los Angeles for the very first time  in public. It is quite remarkable, that YAG did not spare time and efforts to present all of this to a German audience, mostly consisting of ardent VFP fans, which, curious as Foxes tend to be, are eager to enlarge their scope of  professional knowledge.

The version of Whidbey, which YAG was going to use for this session, was early alpha software, but it worked nice, only a few "wrinkles" showed up, but  nothing spectacular and no crash at all. Alan was evidently pleased. "As always", Yag then remarked, "some of the features mentioned may not be in the  final release. Others features not mentioned may."

The Agenda for the keynote

  1. Language enhancements
  2. Development Environment - Core Features
  3. Development Environment - Building applications
  4. Enterprise Support

The Design Goals for Whidbey

  • Personalized productivity
  • Pain point reduction
  • Comprehensive tools
  • Path to the future

And here is the list of the new features and enhancements we learned about today ...

1. Language Enhancements

YAG pointed out that Microsoft is going to satisfy the needs of the language communities with Whidbey and that, of course, Whidbey will provide continued  support for cross-language inheritance, cross-language debugging and full access to the .NET Framework. He went on pointing out that the interoperability between the different programming languages still does not mean that they are not  indistinguishable. The languages are not intended to cover what each other language contains.

1.1 Visual Basic

  • Operator overloading
  • Unsigned data types
  • XML code documentation

1.2 Visual C++

  • POGO - Profile Guided Optimizations
  • Managed Extensions
  • MFC enhancements

1.3 Visual C#

  • Iterators: They will provide an easier way to implement the enumerator design pattern.
  • Anonymous methods

1.4 Visual J#

  • Browser controls
  • Java-language keywords
  • Swing functionality

1.5 Any of the contained languages

  • Generics
  • Partial Types

2. Development Environment Core Features

YAG stressed that all core features of the Whidbey IDE are designed and  developed with the definitive goal to support developers with a more simplified  and powerful IDE. This does not only include the ease of use of all available  tools, wizards and so on, this also includes strong links to the community, which can be used easily. YAG was sorry that he will not be able to show us all  of the new core features, since there are so many of them!

  • Drop regions for easier docking.
    Most of you will know this problem: You  are trying to dock one of the many windows inside the IDE at a certain place,  but you need several tries until you get it there since it is not docking where you want it to be. Here the Drop Regions come to our help. They are small  regions indicating where and how the window you are currently dragging can be dropped. Remark from an attendee: "We want this for VFP!"
  • Community Web Services
    • Maintained on MSDN
    • Accessed via Visual Studio IDE
    • Web services include:
      • Starter Kits
      • Project Templates for new Code Snippets, new My Classes, new Refactoring and Product Updates
  • Extensibility
    • New VB My classes. One major new element of VB.NET are "My Classes". They  are supposed to assist developers in writing code for common scenarios. The "My  classes" are an easy and direct way to use the most important classes of the  .NET framework. In his sample project, YAG explained the concept like so: the MyClasses are like a speed dial in a phone, a direct and easy access to many  parts of the .NET framework. It will be possible to write much less code without a performance loss.
    • New C# code refactoring
    • New Code snippets
    • Customized profiles (includes window layouts, color schemes, key bindings, etc.)
    • Debugger visualizations
    • Additional Starter Kits
  • Documentation and Help.
    YAG spent a considerable amount of time to present a first look of the new Help file features, which will provide a much  more intelligent and supportive information basis to the developer. Navigation in the help file is more task oriented and the search function has improved a  lot. We will be able to set several search options. We have seen one, we will  surely love: "priorize topics with code"! Further more, we will be able to make  comments in the help file that can be saved! I am pretty sure you will like this  feature. This way you can have all information in one place: the help texts, comments and information you have collected from other sources!

3. Development Environment - Building Apps

  • Code Refactoring / Code-focused RAD / Disciplined code restructuring.
    Another important theme for Whidbey are Code Refactoring possibilities. The  idea behind this is "code-focused RAD" and disciplined code restructuring. Alan  showed an example, of what this means for the daily business of the developer: When we are recognizing that we need a piece of code anywhere else for a second  time, we will be able to mark those lines and tell Whidbey to make a new method  in any class out of it. The original code is replaced by a call to the new  method. And note that the IDE is smart enough to find variable names in the code snippet and to use them as parameters in the new method. Of course, the method  call will also contain the correct variable names in its argument list.
  • My Classes for VB
    • Assists programmers in writing code for common scenarios
    • Customizable and extensible
    • Create additional "My" classes
  • Auto-Correct and IntelliSense.
    The Auto-Correct feature will help you to  find and correct code that is not correct. This works like a spell or grammar checker in Word. IntelliSense will be enhanced by introducing filtering, so that only relevant and frequently-used class members are visible.
  • Code Snippets.
    Templates for more complex common code tasks - like  upgrading from Visual Basic 6 are provided.
  • Code Formatting
    • Default options are .NET coding guidelines
    • Applied at file, project, solution level
    • Can be shared with team
  • Windows Applications
    • Ease and safety of Web application deployment
    • Richer user experience
      • New controls
      • Simplified data access (e.g. Drag and Drop of database fields on forms)
      • The Immediate Window for Visual Basic (which is the counterpart of the Visual FoxPro Command Window) will always be available, not only while  debugging.
      • A new "Getting Started" task pane
      • IDE Navigator: similar to ALT+TAB in Windows, but here meant to switch between open IDE windows in a fast way
    • Faster development
      • Fewer lines of code
      • Fewer clicks
      • A new project must not be saved before code can be run.
        This is nice for testing a small piece of code outside your application.
    • Improved performance
      YAG showed some encouraging examples.
  • ASP.NET Web Applications
    • Faster development
      • Simplified data access
      • Reduce ASP.NET code by up to 70%.
        Here YAG showed us how easy it is to implement paging, sorting, etc. for grids.
    • Consistency and appearance
      • Master Pages
      • Themes and skins
    • Improved performance
    • Mobility built in
    • VS.NET comes with a new secure personal web server that can only called from the local host and it installs under a normal user account. So IIS is no longer  needed on the machine you’re developing on.
  • Device-based Applications
    • Target .NET Compact Framework 2.0
      • Smartphone, Win CE .NET 4.2, Pocket PC
      • Telephony
      • MSMQ
      • SMS
    • IDE support for native C++
      • Consistent experience
  • Office Solutions
    • Schema-based Programming Model
    • Extended Office Controls
    • Assembly in document with signature or strong name
    • Server-side document creation
    • Smart Doc framework
  • Data Access
    • Make the 80% data access case easy
    • Find and incorporate data tables much easier
    • Gain more control over data binding
    • Use SmartTags to help guide the programmer
  • XML tools enhancements
    Due to a kind request from Ken Levy - "Ken will  kill me, if I'm not showing you the XML tools" :)
    Alan showed examples of  the XML Tools Ken is currently working on. We saw a very large XML file opening really fast in the editor and an Intellisense list that was only filled with elements that can be used at the cursor position. YAG then pointed out that lines in a stylesheet are compiled in the background while typing. This enables  the IDE to immediately indicate whether the line is valid. He demonstrated that  it is possible to change stylesheet code while previewing it.
    And here's the list of all the presented things:
    • Editing XML documents
      • Validation and IntelliSense from XSD or DTD
      • Custom XSD schema folder for XML validationLanguage
      • Editor style experience for XMLOutlining expand/collapse in XML editor
    • XSD schema inference
      • Create XSD schemas from XML or DTS files
    • Editing and debugging XSLT
      • XSLT language editing with IntelliSense
      • XSLT debugging with language integration!
  • Yukon Integration (the next version of SQL Server)
    Whidbey will support the Yukon project system and we will be able to write Stored Procedures in managed code with the possibility to seamlessly step across T-SQL and managed  code.
  • MS Build
    • Whidbey and Longhorn build engine
    • Documented file format
    • XML-based
    • Scalable, extensible build platform
    • RAD support in Whidbey IDE
  • Debugging
    • Simpler debugger interface
    • Debugger data tips
      This feature assists developers with tips about how he can solve a problem and possible actions to take.
    • Debugger Visualizations
    • View data stored in complex data types (Collections: Tooltips scrollable)
    • Supports built-in .NET Framework types
    • Extensible for user types
  • Upgrade Strategy
    • Seamless upgrade from Visual Studio .NET 2002 and 2003
    • Visual Basic 6.0
      • Improved control migration
      • Support for control arrays
      • Keyword changes
      • App object
      • Form default instance
      • Forms collection

4. Enterprise

  • Expanded VSIP
    • Deeper integration
    • Common services
  • Visual Designers for Service Oriented Applications

As we have seen, Whidbey will be an exciting new release of Visual Studio  .NET with a whole lot of new features and enhancements!

Track: .NET: Business Objects With ADO.NET

Manfred Rätzmann first introduced himself. An interesting point in his  biography is a book he wrote about software testing a year ago.

While explaining what Business  Objects are he mentioned that we should take care that they are designed in a  way so they can be used under all common circumstances to ensure that we  consider most of the scenarios we might face in the future:

  • In a Fat Client application
  • In a web application
  • In a web service
  • In batch processes

After giving a brief introduction on Business Objects in general (this session was a more advanced one), Manfred then introduced a so called Business Object Manager class. It is responsible for every job that has to deal with multiple instances of the same Business Object. This way the Business Objects  have a good level of encapsulation and are very lightweight. Then he gave an  example for two common tasks so we all know whether a certain job should be done by a Business Object itself or by a manager class. A client business object could be able to give the sum of open accounts for one client, but it may not  create a query result that tells you all the turnovers for all or some of the clients in your database. A Business Object Manager class can also create new instances of a Business Object or save changes of existing ones.

He then explained his Service Provider class, which is quite the same as a Business Process class, besides the fact, that Manfed’s class is only  responsible for processes where different business objects are involved. When only instances of the same Business Object class are involved, the Business  Object Manager would be the right place to code these kinds of things into.

We then saw the implementation of the model using the C# language. Manfred explained how he coded all the things he was teaching us in theory before. He showed us how flexible his approach is, by switching the data source for his  demo from a Visual FoxPro database that was accessed using the VFP OLEDB  provider to a SQL Server database which was directly accessed via the SQLServerAdapter.

Manfred mentioned during his session that he already created implementations of the presented model in Visual FoxPro, .NET and Delphi successfully. So we can see, it is universal as it should be, since it is "just” a model and has (nearly) nothing to do with its implementation that comes later. Of course, you  always have to take some things of the programming tool you are doing the  implementation with into account (e.g. strong typing), so the model really fits.

Track: .NET: Architecting for the .NET Event Model

Like always Kevin McNeish’s session started with a funny part, instead of the  actual topic. This time we were able to see a small video sequence of Rick Strahl laughing for over two minutes. I will leave it to your imagination to  figure out what happened in the room during those two minutes :)

Afterwards Kevin started with an introduction to the .NET Event Model and  pointed out that the design of it is based on the Subject-Observer Pattern we  all know. We saw the regular code we need to bind controls to data in .NET. Then he explained the goal of getting this done in a Visual FoxPro way, what means  that we only need to fill in a DataBind property instead of writing multiple  lines of code.

In order to get this done he started  with a clear and detailed explanation of all necessary steps for creating events  in .NET:

  • Creating the event
  • Creating the Delegate
  • Defining Parameter Objects
  • Defining the method that fires the event
  • Defining the eventhandler method
  • Registering the handler with the event

Especially the way he explained this quite complicated concept of delegates  helped attendees to get one of the major hard to understand parts of .NET  programming into their minds.

After being through all steps Kevin pointed out what can be done with these  events:

  • Establish a relationship between Business Objects: Business Objects can send out events to inform the observers (listeners) when anything interesting happens  in the object.
  • End user configuration security: The ability to do the application security  setup in running forms using custom events to tell every secure control to  switch into security mode and back again. This is working in Windows- and WebForms applications!

And for sure, the session goal having intelligent data binding in Windows- and WebForms was achieved with the result of being able to simply set one  property and the databinding is done.

We got a good demo on all of these topics and Kevin showed how he implemented  all of this in Mere Mortals .NET.

Track: .NET: Introduction to multithreading

Rick Strahl's session started with a  detailed part, explaining what multithreading is and where you would want to use  it. Besides obvious examples like server or monitoring applications he also pointed out things like keeping the user interface "responsive" and the ability to interrupt operations.

After that, Rick described some of the problems that exist and have to be  solved when using multithreading. A closer look to the way multithreading works  in .NET was the next step in his session. He showed us how easy it is to create  and use threads and what different possibilities, e.g. multithreading with delegates exist.

Good real life examples like sending mail in the background without meanwhile  blocking the user interface helped to understand the technique and the code you  need to implement.

Many tips and good hints for solving problems in multithreading environment  followed this presentation and the session ended with a demo of a WebMonitor  application and a few explanations about debugging in multithreading  environments.

And who didn’t get everything the first time has the chance to re-read it in his 26 pages of session notes included in the conference binder.

To be continued on Friday ... 

Friday, November 7

by Hans-Otto Lochmann and Armin Neudert

Track .NET

Today the .NET track that started yesterday continued with six more sessions.

Track .NET: An ASP.NET Web Shop for free - experiences from the  development of the upcoming dFPUG web shop

Norbert Abb, one of the owners of Wizards & Builders, showed a web shop application and explained its  development using the upcoming dFPUG web shop as an example. The application is based on ASP.NET. He not only talked about the design and implementation, he  also provided detailed information about deployment and maintenance issues.

Norbert pointed out, that we not necessarily need Visual Studio .NET in order  to develop an ASP.NET application, since Microsoft also supplies a free tool called WebMatrix. So the web shop application Norbert was going to show can be customized with a free tool, but furthermore it is also based on source code that is available freely. The sample web shop application is called IBuySpy, which you can download from the Internet.

The data for the sample is originally for MSDE or SQL Server but Norbert showed that you could also use a VFP database for the shop data. Actually the dFPUG shop works with VFP data. The source and the VFP data for the IBuySpy sample is included on the conference website so you don’t need MSDE or SQL  Server. You can stick with VFP.

Norbert also showed us a possibility to get demo web space for ASP.NET pages with access to SQL Server for free from Microsoft on www.webmatrixhosting.net.  That was something many people did not know before!

Whidbey: IDE features for building ASP.NET applications
After  lunch, I attended this session on the new IDE features of Visual Studio Whidbey.  Here’s a quick run down:
IIS is supported but not required
A build in development Web server is included
The FrontPage extension are supported but  not required
A project can be directory based
You can edit and test a  single file without opening the whole project
Publishing is easier thanks to a nice deployment tool
Intellisense is everywhere
The editor outlines the code
The designer NEVER modifies your HTML code
The editor can validate the HTML against common  browsers (IE, Netscape, Opera) and display warning if the HTML doesn’t comply The user controls are rendered on the design surface
Build page let you compile and test a single page in a project
Fully compiled sites

That last feature is worth talking about. Whidbey let you fully compile an entire site to native code. This will eliminate the performance hit that the  first user of a Web page gets. What’s amazing is that even though the aspx pages  are still required, once compiled with this option, they contain nothing, not even a single line of HTML code. Everything reside in the DLLs. I can’t wait to explore this feature.

Programming with Master Pages, Themes/Skins and Navigation Controls in ASP.NET Whidbey
This session covered new features that are real time savers. You can design a master page that other pages can inherit. Let say you have a design that have a top banner, navigation in the left and a footer at the  bottom. You design your master and then you tell your pages that you want to use  this master. VoilĂ , instant reuse!
You can also design themes to change the display of your pages. The speaker demonstrated this feature by building a baby store Web site. When you would choose boy in the preferences section, the site would be displayed in blue. When you chose girl, the site turned to, guess what? pink and this, just by changing the theme at run time.

Programming ADO.NET in Whidbey
I attended this talk on ADO.NET to see what’s new with data  access. For those worried about another major paradigm shift in data access, don’t worry, the changes are incremental. The good news is that if your code  works now, it will work in Whidbey !
New in Whidbey is asynchronous data  access with new methods like BeginOpen, EndOpen, BeginExecute and EndExecute. This will help building client apps that don’t block the UI while executing long queries.
You will also be able to batch the updates resulting in better performance because the DataAdapter current Update method does a round trip per  row.
The DataSet is now faster when used with .NET Remoting because it  supports binary serialization.
MDAC is no longer required when you deploy your applications.
Paging is easier with simple methods.
You will be able to have multiple active DataReaders.
Data base classes will be available to provide API independence. These new classes (DbConnection, DbCommand) are not attached to any particular provider (SQL Server, ODBC).

 

 

[Home] [Contacts] [Events] [Links] [Contests] [Other stuff] [Volunteers]