2. It’s been 8 months since we last
met.
There’s enough new technology
from Microsoft to fill three
conferences.
Azure .NET Mobile C++
3. New Azure Features
Azure File
Service
API
Management
Automation
Remote App
Hybrid
Connections
Redis Cache
Service
Azure .NET Mobile C++
Related session: Microsoft Cloud, Monday 9:00am
4. Major Azure Updates
Web Sites
• Java support
• Backup and restore
• Staged publishing
Virtual Machines
• Chef and Puppet
agents
• A8 and A9 compute
instances
Mobile Services
• .NET backend
• Offline sync
• Sencha touch
support
• Xamarin support
Storage
• Read-only geo-
redundant storage
• Import/export
service
Azure .NET Mobile C++
Related session: Microsoft Cloud, Monday 9:00am
5. .NET Native
Precompiles .NET apps to optimized native code
Uses the C++ optimizing compiler backend
End result does not depend on the .NET
Framework installation
C# code
IL
assembly
.ildll
Native
.exe/.dll
csc ilc nutsi
CoreFX MRT
.NET Native Toolchain
Azure .NET Mobile C++
6. RyuJIT
RyuJIT is a rewrite of the CLR JIT compiler
Better throughput and code quality
Currently in CTP4
Azure .NET Mobile C++
Source: Microsoft .NET Team Blog
7. Microsoft.Bcl.Simd
Modern processors can issue 4-8 integer/fp
operations per cycle; RyuJIT supports it
int ArithmeticSeriesSumSimd(int n) {
Vector4f vsums = new Vector4f(0, 0, 0, 0);
Vector4f viter = new Vector4f(1, 2, 3, 4);
Vector4f vstep = new Vector4f(4, 4, 4, 4);
for (int i = 1; i <= n / 4; ++i) {
vsums = vsums + viter; // ADDPS
viter = viter + vstep; // ADDPS
}
return (int)(vsums.W + vsums.X + vsums.Y + vsums.Z);
}
Azure .NET Mobile C++
32-bit float 32-bit float 32-bit float 32-bit float
32-bit float 32-bit float 32-bit float 32-bit float
32-bit float 32-bit float 32-bit float 32-bit float
XMM0
XMM1
XMM0
8. Roslyn and C# 6.0
Roslyn is coming, in the meantime many new
C# 6.0 features were publicly revealed
And Roslyn went open source!
var salaries = new Dictionary<string, int> {
["Kate"] = 1200,
["Dave"] = 1100
};
if (int.TryParse(1700, out var result)) {
Console.WriteLine(result);
}
customer?.Address?.AddressLine[0]?.Print();
Azure .NET Mobile C++
Dictionary
initializer
Declaration
expression
Null
propagation
9. More C# 6.0 Features
using System.Math;
class Point(int x, int y) {
public int X { get; set; } = x;
public int Y { get; set; } = y;
public double Magnitude => Sqrt(X*X + Y*Y);
}
try {
Parallel.ForEach(...);
} catch (AggregateException ex) if (ex.Count > 1) {
...
}
Azure .NET Mobile C++
Using static
membersPrimary
constructor
Auto-property
initializers
Expression
member
Exception filter
10. ASP.NET vNext
Redesigned
ASP.NET
stack (MVC
6)
Cloud-
optimized
.NET (11MB)
available
through
NuGet
Multiple
side-by-side
versions of
.NET
Live refresh
of edited
code
through
Roslyn
Open
source and
cross-
platform
Related session: Introducing ASP.NET vNext, Tuesday 1:30pm
Azure .NET Mobile C++
11. Universal Apps
Windows Phone 8.1 is sufficiently converged
with WinRT to allow most code and UI to be
shared
Universal app templates in Visual Studio (still creates
two projects and shared files)
Azure .NET Mobile C++
Related session: Developing XAML Apps for Multiple Devices, Tuesday 1:30pm
12. Cordova Tools for Visual Studio
Bringing Cordova tools
for mobile apps into
Visual Studio
Multi-device hybrid app
templates
Azure .NET Mobile C++
Related workshop: Building Mobile Web Apps with jQuery Mobile and PhoneGap,
Wednesday
13. Xamarin Partnership
Xamarin allows building iOS and Android apps
in C# and Visual Studio
Xamarin Forms beta announced with shared UI
controls in addition to business logic
Azure .NET Mobile C++
Related session: C# Everywhere: Introduction to Xamarin, Tuesday 2:35pm
14. C++ Conformance and Library
Updates
C++ 14 is done, C++ 17 work is underway
Largest focus is on libraries: file system*, networking,
concurrency*, parallel STL*
* Previews available on CodePlex/Visual Studio “14” CTP
Azure .NET Mobile C++
Related workshop: Making the Most of C++ 11/14, Wednesday/Thursday
15. This Is, Or Could Be, C++
async optional<string> translate_async(string term);
async auto translate(vector<string> terms)
{
decltype(terms) results;
for (auto term : terms)
{
auto translated = await translate_async(term);
results.push_back(translated ? translated : "N/A"s);
}
parallel_sort(results.begin(), results.end());
return results;
}
Azure .NET Mobile C++
Related workshop: Making the Most of C++ 11/14, Wednesday/Thursday