It starts with a common kernel across all these devices, and it moves it up the stack. Sure, there are still differences and unique features for each platform, and Microsoft handles that by ensuring that those features are defined in extensions. Each extension has a metadata file that contains the API definitions for those extensions. Those metadata files exist on all the platforms. This is what allows Visual Studio to compile an application even if the actual APIs aren’t available, and this is what allows applications to run on the devices without those APIs. This also allows Microsoft to add platforms easily without having to change Visual Studio.
Universal Windows applications use XAML as the main language for developing user interfaces. I have been using XAML since it was introduced and have seen it evolve over time. I was interested in seeing what they have been doing to make developing XAML applications better.
Back in the day, you had to have two tools when developing XAML: Visual Studio for coding, and Expression Blend for designing. The idea was that developers would use Visual Studio and designers would use Blend. They would work in the same solution, alleviating the need for developers to have to try to implement the designer’s vision. Most organizations never got this workflow to pan out, and developers found themselves switching between environments.
In Visual Studio 2013, Microsoft started shifting some of the functionality into Visual Studio. It dropped Expression from the name and included Blend in the installation. This continued in Visual Studio 2015. Microsoft hasn’t completely migrated all the functionality over to Visual Studio, though. Blend is still the best tool to build animations and handle state management, and Microsoft has continued to advance it. Some of the highlights are:
- A sleek new look resembling Visual Studio that improves the workflow between the two products
- XAML IntelliSense
- Basic debugging capabilities
- A peek in XAML, which allows you to view and edit XAML controls and resources within the context in which they are used
- An improved file reload experience to minimize workflow interruptions as you work on your projects in both Blend and Visual Studio
- Custom window layouts that can be synchronized across machines that have Blend installed
- Better Solution Explorer and source-control support
- Support for NuGet
Microsoft still comes up a little short when it comes to XAML development. It stems from having a few different XAML platforms in varying states of maturity. It all started with WPF, and then Silverlight came along, and then Windows 8 and now Windows 10.
Features from each incarnation have made their way into the XAML framework. Originally Microsoft had plans to converge its different XAML platforms, but it never quite got there. One of the features that is sorely lacking is XAML debugging. Silverlight XAML allowed you to debug data bindings, a feature that hasn’t made it to other XAML frameworks. As Windows 10 is Microsoft’s future, we can only hope that XAML will improve. The changes that Windows 10 has brought about are too numerous to list. In fact there are more than 20 hours of content on Microsoft Virtual Academy if you are interested in learning more.
XAML is not the only UI technology to see vast improvements in Visual Studio 2015. ASP.NET has improved as well. First and foremost, ASP.NET is one of the frameworks that Microsoft has seen fit to open-source. The ASP.NET team has been extremely transparent about its development process, to the point that the team has been holding weekly standups that anyone can attend (virtually). A lot of the changes that they have implemented center on embracing the open-source developer. They realize that not everyone wants to use the ASP.NET stack to develop.
In ASP.NET 5, they have completely restructured the project template. When doing Web development, you tend to have a variety of files that don’t belong on your Web server. Another developer task is to minimize file size in order to optimize page load times.
One of the tricks for accomplishing this is to use Content Delivery Networks (CDNs). These servers cache resources around the world, allowing users to access resources closer to them. Developers still need local copies to develop against, but they won’t want to deploy these copies with the rest of the site.