Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

PDC in Brief

0.00/5 (No votes)
13 Jul 2000 1  
Notes from Microsoft's Launch of .NET at PDC 2000.

Microsoft PDC 2000 in brief

Microsoft PDC 2000 is over and I'd have to say it was a lot of fun. I got to meet some very cool guys including Don Box, Jeff Prosise, George Sheppard, Matt Pietrek, and many, many other amazing people. I also met a bunch of the Microsoft team in and out of the conference and they are a bunch of really fun people. Seeing the enthusiasm these guys have for their 3 years of work is great. There is a real sense of relief that they can now talk about the stuff that has previously been under NDA. Watching these guys and girls present the new technology and seeing the smiles of delight as the crowd breaks out into spontaneous appluase in the middle of talks was just wonderful.

A poignant comment I got from one of the attendees during one of these talks was "I just wish the DOJ could be here to see this". I really don't want to sound like a Microsoft zealot, but these guys really love what they do, and are immensely proud of what they have achieved - and so they should be. Kraken!

Here's a brief rundown of each day's events.

Monday

Microsoft announced further details of Visual Studio 7.0 and their .NET strategy. .NET will encompass a whole variety of new technologies including the much talked about Visual Studio.NET, SOAP, ADO+, ASP+ etc. The entire focus of the new technologies is to make development quicker, simpler, more scalable, and less error prone. Languages such as C++, C#, VB, COBOL etc will all have equal footing in this new paradigm, in that you can develop a class
in one language, and inherit this functionality in another. Imagine debugging your code and as you step through the call stack you change from ASP+ to VB to C# - all within the same context.

There will be only one IDE for all languages, sharing common tools and objects and allowing mixed language projects like never before. The common language runtime (CLR) will provide an environment in which all languages are treated equally, and by concentrating their best compiler guys into developing this framework, they have achieved extremely high performance levels. Expect a slight dip in performance of, say, C++ running in CLR, but expect major gains in other languages such as ASP. Basically you just use whatever language you want - the performance will be the same. There wil be an extremely fine level of control in security (down to which methods an application can run!) and the application and the runtime environment are able to discuss and negotiate an appropriate level of access.

The VS IDE itself will be fully extensible and customisable like never before. There will be huge increase in the interfaces exposed that will allow not only customisation of the IDE's command bars, editor and dialogs, but also of the Help system, debugger and About Box.

Visual Studio 7.0 will be beta tested in a similar way to Windows 2000. Microsoft will not say when it will be ready - they want us to tell them when it will be ripe. By working with partners developing real-world apps MS will be able to get feedback and see exactly where and how to improve the product. Though there was a fair amount of dodging of the question, MS estimates that it will be ready sometime early next year.

Tuesday

More on .NET and Visual Studio.

Essentially .NET will mean that websites are no longer isolated islands of information used only by clients to pull information down via a browser. Using Web Services, sites will be able to communicate with one another to provide the user with a range of services and information limited only by web developers' ingenuity. This server-to-server, server-to-client communication can be extended to encompass client-to-client communication as is seen in apps such as Napster.

For example, a website may offer online shopping. By having the website communicate with, say, a courier's website, you would be able to use a single site to order your items and check delivery schedules and track your order through a single point of call.

Building Block Web Services such as an Authentication Service ("Passport") or a Calender management Service would also be available online for websites to use. Clients would not use these building blocks directly, instead they would be used by websites to carry out common tasks.

Extending our example above we could envision the online store using the Passport service to authentic your payment details, and the courier site checking your calendar details to ensure that it delivers your goods at a time that is convenient to you.

  • .NET encompasses 4 main points:
  • Tools such as Visual Studio .NET
  • .NET enterprise servers that support SOAP and XML
  • .NET Building Block services (eg Passport)
  • .NET device software for items such as PocketPCs and WAP phones

.NET relies on the Common Language Runtime (CLR) that allows any .NET language to run. This includes common base libraries so all .NET languages have access to the same functionality, inbuilt SOAP and COM support, are object oriented and allow seamless integration and extension down to the code level.

.NET will make COM development extremely simple by removing the need for components to register themselves. GUIDs will be a thing of the past, replaced by a human readable hierarchical naming system. IDL will no longer be needed because CLR implicitly understands .NET languages. HRESULTS and function return values will also no longer be needed because all languages will use structured exception handling. Yes - try and catch in VB! AddRef/Release will no longer be needed, and the CoCreate... functions will be replaced by a simple new. DLL Hell will be gone. No more registering, no more version conflicts. You can install and delete your components at will, with no lingering registry entries or problems. You can run multiple versions of a DLL on the same machine - or even have the same app run different versions at the same time.

Garbage collection is a necessity, and one that has been given a lot of attention. While it may be hard to give up your homegrown memory management routines, the garbage collection system in place is extremely efficient.

Compilation modes: While there is a lot of uncertainty about having to run C# and C++ through the CLR, there are also compilation modes that allow you to compile to native code immediately. You can still write code that runs as fast as ever! Also, CLR is not an interpreter. Your code will be compiled to byte code and then either compiled to native code at installation time, or compiled dynamically as its functions are needed. That's right - everything runs as native code.

Tuesday continued...

Languages:

Each language is on an equal footing with every other language. Each language shares the common base classes in the CLR and can perform the same tasks, with the same security, with the same performance. C# is what C++ must evolve to in order for the language to fit into this model. You sacrifice the luxury of handling your own memory management in exchange for a watertight simplified development environment. Microsoft is keenly aware of the performance issues and has done the comparisons. You really shouldn't see much of a change. The byte code their VC++ compiler spits out is damn fast - I am entirely confident that they have been as diligent - if not more - in ensuring that C# is as much of a speed demon.

While it all looks very cool there were a number of glitches with the demos that were presented, which was a pity.

VB.NET

There is no longer a VBRUN DLL. VB is run directly by the CLR or compiled to native code. VB gets classes, inheritance, polymorphism, Structured exception handling, overloading, and optional strong typing. VBScript becomes full VB, and there will only be one form of assignment (no Let/Set).

VC++.NET

VC++.NET introduces managed extensions that enable your apps to run in the .NET framework. There are a few minimal extensions to the ANSI standard that (prefixed by __ as required by ANSI) that facilitate a move into the .NET world. Even so, by simply recompiling your current code in the new compiler your app will work without touching a single line of code. By recompiling you get the benefits of zero-impact installs (ie install/delete at will, no registration, run concurrent versions etc). You can also mix and match your standard C++ code with code that relies on garbage collection.

ASP+

ASP+ is something you have to see to appreciate. Write your pages using an object model in any language you like with a minimum of code and using drag and drop development. HTML Controls such as buttons, lists etc are no longer simply client side constructs. These controls are actually run on the server as objects and have their own methods and events. When they run on the server, their output is HTML that can be displayed on the client. For simple controls like buttons there will be a simple HTML output such as <INPUT TYPE="submit".... For more complicated controls such as calendars etc it will be more complicated HTML depending on the client. These controls will automatically adjust their output to suit the client, so you can write a single ASP+ page that will work on IE5.5, Netscape4, or even a WAP enable mobile phone. As a web developer I felt like giving the guys at Microsoft a big sloppy kiss for this. Oh yeah! Seeing a website that had just been developed and tested on a W2K box be viewed via a WAP phone without a single change to the ASP+ code was sensational.

These controls have their own events, and store state. So instead of writing convoluted script to ensure that a dropdown list always has the current selection actually selected, it just automatically happens. Instead of writing mixed HTML and script to generate your pages, you tag your controls as RUNAT=SERVER and write event handlers for the controls that can be pre compiled.

ASP will no longer be interpreted - it will be run as native code!

Microsoft ported Microsoft's search site to ASP+, and did it in 1/3 of the time, with significantly less lines of code, and it now runs twice as fast. I'm extremely excited about ASP+.

COBOL

Will someone please explain why every second reference to a language includes a reference to COBOL? It's kind of weird seeing MS parade not only next generation languages, but next generation concepts, yet also spend so much time talking up COBOL.

Wednesday

The highlight of today was the keynote speach by Bill Gates. Crowds were big with a bit of a rush to get decent seats.

The talk was more visionary than technical. This was good in that it bought the entire .NET stategy into focus and showed that Microsofts ideas are not something that will happen overnight, but will evolve over the coming years to create a more cooperative network of data sharing and processing.

The Austin Powers impersonation by Bill - complete with crushed velvet suit and teeth was a stunner.

Details on Whistler were announced: it will be the first operating system to take advantange of web services. For example, with a simple click of an icon you will be able to store files on a web based storage center. Expect this in the second half of 2001.

Blackcomb was also mentioned and it here that the major update to W2K will happen. The UI will be extensively upgraded with the advent of sentence recognition, an information agent to help organise and deal with your data requirements, plus a few other tittilating comments that were very sparse on detail. Even with this change, there will be no changes to the programming model. .NET is here for at least the next few weeks.

Windows 2000 64bit preview addition is now available today, and Internet Explorer 5.5 was released on the net, and handed out on CD. As well as this, we all received a bunch of CD's with Visual Studio 7.0 tech preview. Can't wait to find a spare hard drive to install this baby!

Breakout sessions on the .NET technologies consumed the rest of the day. Visual Studio was showcased and looks great - but there was still a disturbing number of problems while speakers were giving walk-through demos. It's a tech preview I guess, but even so...

Thursday

C++ managed extensions:


These extensions allow you to mix and match managed code and data with unmanaged code and data. "Managed" means that the runtime envoronment manages issues such as garbage collection. You can mix and max code that uses garbage collection and code that doesn't. It's very cool. The extensions also make COM development ultra simple. Microsoft have realised that writing and consuming COM servers sometimes has too much messing around and not enough focus on business logic. This will end.

There is a new "using" keyword that is a combination of #include and #import. Just "use" a DLL and everything is there ready for you to use. Too easy!

The big this is the concept of "It Just Works". Compile your old apps into the .NET framework using a simple compiler switch and it all just works.

Performance figures were quoted using the latest pre-beta. Using managed code and data resulted in roughly a 10% loss in performance overall (in some cases an improvement) - but they still haven't finished optimising the compiler code so expect far better figures than this.

More ASP+

ASP+ rules. It will seriously make web development fun and easy. I'll have to write this all up in an article since there is just too much to talk about here.

GDI+

Basically an extension of the GDI. It has a whole bunch of new image manipulation functions in built, as well as shading, gradient and texture fills etc. Evolutionary, not revolutionary. Still cool though.

C#

Will have to write up this separately too. This is a seriously fun language.

The IDE

Heaps of new functionality, and as mentioned before there is now only one IDE across all languages. Still a little flaky in pre beta but productivity improvements are definitely there.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here