Migrated to Microsoft Azure

Thanks to the data accident happened last night with my previous hosting provider, I finally decided to embrace Microsoft Azure as my new hosting provider. I thought the price of Azure Websites would be way more expensive than traditional hosting services, but it turned out that was not true, especially when you were looking for a reliable hosting service with a responsive management console. In fact, although there are so many items that Microsoft Azure can charge you (see http://azure.microsoft.com/en-us/pricing/overview/), hosting a website with Azure Websites is likely of the same price as traditional hosting services, as long as you are not misled by the “Unlimited Everything” claim made by those services – resources cost money, and if you do need “unlimited” storage, those hosting services will no doubt kill your website and throw you an email saying that you are consuming too many resources blah blah blah.

For those who are also interested in knowing/learning/using Azure, here is a keynote presented by Brad Calder on ASPLOS 2014: http://www.cs.utah.edu/asplos14/keynote1.html, talking about some interesting stuff inside Azure. Brad Calder is currently leading the development of Azure Storage at Microsoft.

Microsoft announced .NET Native

Microsoft announced .NET Native at //BUILD 2014. .NET Native compiles MSIL programs to native machine code for performance benefits. The current released developer preview enables native code generation for Windows Store apps on ARM and x64 architectures. It is claimed to speed up the app start-up time by 60%, and use a smaller memory footprint.

Compared to the long-existing NGEN tool (ngen.exe), the new .NET Native allows MSIL programs to totally get rid of .NET Framework, whose size is usually tens to hundreds of megabytes. In a nutshell, the major difference is that .NET Native analyzes and extracts the transitive closure of all dependent .NET libraries and statically links them to the program. An optimized CLR runtime (MRT.dll, only hundreds of kilobytes) is also provided for fast start-up and memory management.

It is good to see that Microsoft has made substantial efforts to improve both developer and end-user experiences. More than ten years ago, Microsoft announced its “.NET Strategy” to provide developers an elegant platform for rapid multi-platform development. After years’ evolution, developers have been able to use the same set of programming languages and tools with similar programming interfaces to build apps for desktops, phones, tablets, and many more other devices. “Write once, run anywhere” has become a semi-standard, and greatly eased the cross-platform development.

On the other hand, nowadays various types of devices start running Windows with .NET Framework. The highly diversified hardware and software raise the bar of performance requirements. End-users expect more responsive and performant apps even on resource-limited devices, but managed apps are not running as fast as native apps by the nature of JIT and CLR. Microsoft has to be more developer-friendly to encourage developers contributing to the Windows ecosystem, and at the same time, satisfying users’ expectation is another tricky task. .NET Native is no doubt a crucial and affirmative step for improving user experiences across multiple devices without adding extra burden to developers.

For more information about .NET Native, please visit http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx and http://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native.