I attended the MSDN Developer's Conference in Dallas on 1/26/09 - here are some random thoughts on things I learned:
Windows Azure
Windows Azure (pronounced like "as you're walking by the window") was described as "an operating system for the cloud". The basic idea is that you will create an "Azure-aware" web site or application and deploy it to "the cloud" - any one of a worldwide network of huge data centers being built by Microsoft. You won't have control over exactly where or how things are deployed, all you do is configure the type of service level that your application requires... things like number of processors, number of instances (for fail over and load balancing), etc.
Windows Azure Services will provide abstractions for various .NET services (access control, workflow, service bus), SQL Server data services, and Windows Live Services that you can use in your applications.
The great thing about Azure is that you will be able to start small easily scale your applications as your needs grow. Need another server to support your site? Simply change your Azure configuration and your site will be replicated and load balanced to another server instance automatically! No need to purchase, install, and maintain another server on your premises or lease another machine with your service provider. This will be a huge benefit to small companies and startups that simply don't have the cash or in-house expertise to setup and maintain 24/7 production servers.
It will be interesting to watch the progress of Azure. We were told the development team would like to have something ready to go by the end of the year, but there are many questions left to answer and technical challenges to overcome. Many of the questions asked had to do with performance and security - definitely big concerns when you begin to outsource your application hosting. No pricing model is available yet either other than to say that you would be paying for usage - kind of like you do for electricity. You need more power and it's available, but you only pay for what you use. Whether that means you are paying for CPU cycles, application instances, bandwidth, memory, disk space or some combination of all the above is TBD.
Oslo
From the Oslo Developer's Center:
"Oslo" is the code name for the Microsoft's next generation application development platform. The goal of "Oslo" is to provide a 10x productivity gain across the application lifecycle (design, development, and management). "Oslo" leverages domain-specific models, languages and tools to achieve this goal.
Oslo looks to be a huge project that is still really in its infancy. The idea is to consolidate the many ways in which we represent "models" into a single, unified language currently named "M". M syntactically looks similar to C#, but is used for defining sets of data. Models and "model instances" are stored in the Oslo repository (currently SQL Server) and can be executed by one or more "runtimes".
So what the heck are "models", "model instances", and "runtimes"? Look at it this way... a "model" (think the HTML standard) defines the rules and grammar for all "model instances" (think specific web pages) and a model instance can be executed by a "runtime" (think browser). Or maybe the C# language (model), a C# program (model instance) and the C# compiler (runtime). When taken in the general sense, there are many examples of this "model/model instance/runtime" concept.
Oslo may be the "next big thing" down the road, but it's on my back burner for now.
Silverlight 3.0
I also saw some demos of features to be included in the next release of Silverlight, version 3.0, and they rocked. The demos were coming fast and furious so I gave up on taking notes, but it looks like the focus will be on much increased productivity for Silverlight developers. More controls, built in data validation tools, and "automatic" business layers which eliminate the need for creating separate services and proxies for communication between the client and the server.
The demos made me want to start working with the next version of Silverlight today! It seems to make developing Silverlight applications much easier and I think will help speed adoption of Silverlight as a viable platform for more business development projects.
The F# Language
F# is a functional programming language for .NET which will be included as a "first class citizen" along side of C# and VB in the next version of Visual Studio.
Although the learning curve of adjusting to a functional way of programming will probably keep F# from becoming the language of choice for many programmers, it should definitely find its niche in the world of multi-threaded applications. As multiple CPUs become more and more prevalent, demand for software to take advantage of them will increase. F#'s use of immutable types and built in support for asynchronous methods are ideal for eliminating many of the errors that plague multi-threaded applications. Since F# is a .NET language, once compiled it is simply MSIL code and as such is callable from C# and VB programs. I see the use of F# in the future for developing libraries for the expressed purpose of optimizing parallel processing, while developers can still use more familiar languages for the majority of their development work.
F# is another argument in favor of polyglot programming!
Summary
The MSDN Developer Conference was advertised as "bringing PDC to you". It was a great idea, and helps to get the word out on what's coming for those who can't make it to PDC. Let's hope Microsoft does it in Dallas again next year!
And by the way, the food was outstanding.
- Ken