Thursday, November 6
by Hans-Otto Lochmann and by Armin Neudert
Track .NET
Last year the concept of having several tracks of which each one is about a certain topic had its debut. We already had a .NET track last year, which was very interesting so we are looking forward to the new sessions, which are held by well-known speakers like Kevin McNeish, Rick Strahl and the German speakers Norbert Abb and Manfred Rätzmann. Later on you can read more about several of their sessions done today.
After the more introductory topics at last year’s conference we are now having more advanced topics like how to create web applications, as well as development for smart devices like the Pocket PC. Many of the sessions are not only covering pure .NET, whereas interoperability between .NET and Visual FoxPro is also taken into regard. Things like how to program a smart device is also very interesting to Visual FoxPro developers since they can extend their set of skills with that knowledge.
In only two days, people can get a good overview of very interesting .NET topics in a very compact and efficient way and all this in several sessions from the point of view of a Visual FoxPro developer. In total this track consist of eleven sessions, of which five are held today.
Keynote - 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
- Language enhancements
- Development Environment - Core Features
- Development Environment - Building applications
- 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
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++
- 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 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 Win- 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
Ricks 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 by 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!
Track SQL Server: Beyond SELECT: Advanced Queries for SQL Server
Daniel LeClair, an independent consultant, covered a whole lot of things we can do with SQL Server’s built in programming language T-SQL. He first explained the difference between the way data can be retrieved and manipulated in T-SQL. He pointed out that this works quite similar like we are used to that with Visual FoxPro in some places, but that there is a main difference: In T-SQL you are mainly working with “sets” of data in contrast to VFP, where we are used to access single rows of data. Daniel pointed out, that he is mainly showing us things that are not only applicable to SQL Server 2000, but also in SQL Server 7, so that people still using the older version will have a benefit of his session, whereas some things are limited to MSSQL 2000.
Daniel explained and presented interesting things like the use of dynamic SQL statements, using system tables in queries, using temporary tables and cursors, and other T-SQL capabilities beyond just getting back a result set. Using Cursors, Dynamic SQL Statements, UDFs, the Table Variable Type, CASE statements, Derived tables were covered as well.
Track SQL Server: Extending T-SQL with COM
First, Dan Jurdan, working as a Senior Application Developer for EPS-Software Corp, explained that T-SQL (SQL Server’s built in programming language) has strong limitations when it comes to more complex tasks that are not directly related to data access. Many people have faced this problem (note from the reporter: you can count me to them, as well). However, it is possible to use COM objects, like we can create them with Visual FoxPro, in T-SQL to extend the functionality, Dan pointed out.
He went on, explaining all Stored Procedures that are provided by T-SQL to access COM servers and showing us, what the T-SQL code using these SPs looks like:
- sp_OACreate
- sp_OASetProperty
- sp_OAGetProperty
- sp_OAMethod
- sp_OADestroy
- sp_OAGetErrorInfo
- sp_OAStop
At the end of his session, Dan outlined that we should be careful using COM server calls on a high volume Web server, since using this technology can cause a considerable performance problem. On the other hand, he told us, using COM servers might come in quite handy, when using them on a server that is not that busy all the time, and not too many users are working with.
And another note from the reporter: YAG announced a great new possibility to extend T-SQL in a seamless way with the upcoming new versions of VS.NET and SQL Server. We will then be able to create Stored Procedures with any language included in VS.NET!
The closing session
Well, this is the last session of this year's Frankfurt Conference. Rainer Becker told us that everything went so smoothly this year that he sometimes thought he was unemployed (big laughter in the audience!). Of course, he was busy enough, just not the whole day and longer – only the whole day. He thanked the audience for coming and told the usual stories about how he finally convinced the "chef de cuisine" of the hotel to offer Hamburgers during at least one break. You have to know that the food here is really amazing! You can see some photos of the buffet using the picture archive of this coverage.
As an outlook for next year’s conference, Rainer mentioned that we would have a new track about the “Report Writer”. Please see our report of the Europa keynote, so you can see that we will get so many enhancements so that you really can do a whole track to cover all of them.
Then we got to the usual raffle. All people that filled in evaluation forms now can win a price. Like in every year before, Rainer gave away prices like a Visual MaxFrame Professional package sponsored by Visual Data Solutions handed over by Drew Speedie, a List&Label Report Writer package sponsored by ProLib, two signed Megafox Books and two packages of Visual Extend sponsored by the dFPUG itself and more.