SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
itcampro@ itcamp13# Premium conference on Microsoft technologies
Windows Runtime (WinRT)
deep dive
Raffaele Rialdi
@raffaeler
raffaeler@vevy.com http://www.iamraf.net
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileHuge thanks to our sponsors!
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileSpot the difference
Using a pure .NET library
Using a Windows Runtime native library projected in .NET
<!DOCTYPE html>
<html>
<head>
<title>IAmRaf - Home Page</title>
<meta name="description"
content="Raffaele Rialdi home page" />
…
using System.Net.Http;
...
using (var client = new HttpClient())
{
var res = await client.GetStringAsync(
"http://www.iamraf.net");
// ...
}
using Windows.Web.Syndication;
...
var client = new SyndicationClient();
var feed = await client.RetrieveFeedAsync(
new Uri("http://www.iamraf.net/rss"));
var firstItem = feed.Items.FirstOrDefault();
var content = firstItem.Summary.Text;
The new Windows start screen 8 shows a number of tiles that may look
like a revamped version of the old shortcuts:
But appearances can be deceptive and tiles are not shortcuts and they
do not launch directly the application process.
The crucial point is that Windows Runtime (WinRT) is the laye...
itcampro@ itcamp13# Premium conference on Microsoft technologies
COMPONENTS UNDER THE
HOOD
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileClassic C++ polimorphism is static
• Polimorphism is possible only if class definitions are known
– It must be done at compile time because C++ provides no
binary contract
class myBase
{
public:
virtual void Foo() { …}
virtual void Bar() { … }
};
class myDerived : public
myBase
{
public:
void Foo() override { … }
void Bar() override { … }
};
vTable
myBase::Foo
myBase::Bar
VTable
myDerived::Foo
myDerived::Bar
Patched at compile time!
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileInter-assembly Inheritance (.NET "trick")
Assembly 1
public class mybase
{
public virtual void Foo() { }
public void Bar() { }
}
Assembly 2
public class myderived : mybase
{
public override void Foo() { }
public void Qux() { }
}
MethodTable
ToString
Equals
GetHashCode
Finalize
Foo
Bar
Qux
MethodTable
ToString
Equals
GetHashCode
Finalize
Foo
Bar
System.Object
Patched at runtime!
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• We need a binary contract
– Metadata to define the Type System
– Runtime to manage the runtime behavior
Solution: metadata and runtime
MethodTable
AddRef
Release
QueryInterface
GetIids
GetRuntimeClassN
ame
GetTrustLevel
Foo
Bar
Qux
IUnknown
IInspectable
IMyBase
IMyDerived
1. Dynamic interface discovery
• IUnknown.QueryInterface is the
runtime equivalent of a cast
or
• IInspectable.GetIids
(javascript only)
2. New rule: cannot derive any
component with the
exception of XAML controls
• Reason? Versioning!
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileModeling by interface
• Why? Because Modeling by interface is simpler!
• Interfaces are the public surface of the
component
– Identified by an IID (Guid)
– Can be marked as “exclusiveto” for a specific
component
• The class implementing the interface
– Identified by the namespace.nome string
– Class is “hidden” and never visible
• Can only be riched with the use of interface
• C++ can bypass the interface for perf reasons
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
Code is always accessed by interface!
Projections make interfaces appear like they were classes
The "new" operation is fake
var client = new SyndicationClient();
ComPtr<ISyndicationClient> spClient;
auto classId = HStringReference(
RuntimeClass_Windows_Web_Syndication_SyndicationClient).Get();
hr = ActivateInstance(classId, &spClient);
if(FAILED(hr))
return PrintError(hr);
HRESULT hr;
ComPtr<IActivationFactory> spFactory;
auto classId = HStringReference(
RuntimeClass_Windows_Web_Syndication_SyndicationClient).Get();
hr = GetActivationFactory(classId, &spFactory);
if(FAILED(hr)) return PrintError(hr);
ComPtr<ISyndicationClient> spSyndicationClient;
hr = spActivationFactory->ActivateInstance(&spSyndicationClient);
if(FAILED(hr)) return PrintError(hr);
The long way
(C++ and WRL Library)
The short way
(C++ and WRL Library)
The C++ projection
(C++/CX)
auto client = ref new SyndicationClient();
C# projection
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• How can static methods exists if the surface is
only exposed by interfaces?
• COM did not support static methods
• WinRT do support them
– But static methods cannot be part of an interface!
• Solution: statics are instance methods of the
factory
– The interface exposing the static methods is
automatically generated by the compiler
• Projections make them appear as if they were
part of the class
Static methods
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• QueryInterface
– Discover interfaces in a component
• IUnknown: AddRef e Release
– Managing the lifecycle
• Circular References risk
– WeakReference is the solution
– SDKs/ Projections create the WeakRef for us
Component lifecycle
A B
Root
Parent
Parent
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• Make use of the WinRT metadata to map:
– Base types (int, double, string, …)
– Complex types
• INotifyPropertyChanged, collections, ...
• Extension methods for non-mappable types
– Streams, Storage, Async
• Make use of the CCW and RCW as it was in
COM
• Native HRESULTS are converted into
Exceptions and vice-versa
.NET projection
itcampro@ itcamp13# Premium conference on Microsoft technologies
DEMO: SPYCOMPONENT
itcampro@ itcamp13# Premium conference on Microsoft technologies
THE VIEW ARCHITECTURE
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• The main function 
– It's always there
• The message pump
– It's there too
• One single thread allowed to interact with
the UI
– Nothing changed here too
• But …
Once upon a time …
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• Once started the App becomes a component
– Like the old COM exe server
• OS and Apps interact via Contracts
– They are interfaces with new high level IPC
• The UI sits on DirectX
– Pure DX with C++
– Mixed XAML and DX with C++
– Pure XAML with C++ and .NET
– HTML with Javascript
Infrastructure differences
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileThe view lifecycle
WinRT App
IFramework
ViewSource
IFramework
View
main
CoreApplication.Run
create
CreateView
create
Initialize
SetWindow
Load
Run
Uninitialize
User
interaction
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• Needed because components cannot always
be accessed by any thread
• Apartment is a group of one or more threads
who can legally invoke a component
– MTA: total threads freedom and better perf
– STA: one single thread at a time
• calls are enqueued to avoid concurrency
– ASTA: new STA which avoid re-entrancy
• used for the primary UI thread in Win8 Apps
• Marshaling is minimized because of the new
"Agile" concept
Threading model: Apartments
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• Most of the WinRT library is marked as
"both"
– compatbile with MTA and (A)STA
• XAML is "both" but at runtime enforce to be
called by ASTA only
• Share target Contract are opened in a
different ASTA!
– One of the primary sources of bugs in
Windows Store Applications
• Be careful to use the correct Dispatcher
Threading and library
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileThreading, Async and Dispatcher
• Languages offer async support in different
flavors
– Async/Await (.NET)
– Promise (C++, Js)
• Async use the SynchronizationContext to find
the primary thread where the callback will be
executed
• If you call Dispacher.Invoke by yourself
– Pay attention: every ASTA has a different
Dispatcher
itcampro@ itcamp13# Premium conference on Microsoft technologies
SECURITY!
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileAppContainer restrictions
• Limitations derived from Low Integrity Level
• API restrictions:
– Limited Win32 API and COM Interfaces
– .NET Windows Store Profile subset
• Some WinRT components are brokered
– Capabilities are as a sort of "privilege elevation"
obtained with Brokered objects
– Contracts are a modern IPC mechanism
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
MobileRuntime Security Broker
Kernel services
WinRT
Runtime
Security Broker
Filtered COM / Win32 APIs Full COM / Win32
Comp.
Device
access
Picker
Host …
Comp.
Brokered UIAppContainer
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• How to avoid capabilities forgery?
– Native code has full power in its own process
• Assigned SIDs
– One SID to identify the application
– One SID for every requested capability
Capabilities under the hood
Compile time
Windows
Store
Package Package
Code
signing
Package
Runtime
execution
Manifest
SID
assignement
itcampro@ itcamp13# Premium conference on Microsoft technologies
Development &
Mobile
• WinRT expose the OS in an OOP fashion
• Projections hide most of the complexity
• C++ and WRL are a good way to explore
what is behind
• Understanding the platform details can be of
great help while developing
Takeaways
itcampro@ itcamp13# Premium conference on Microsoft technologies
Q & A
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

Intro to Microsoft.NET
Intro to Microsoft.NET Intro to Microsoft.NET
Intro to Microsoft.NET rchakra
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET FrameworkANURAG SINGH
 
.Net framework
.Net framework.Net framework
.Net frameworkArun Pal
 
C++ in Windows Phone Apps - Overview
C++ in Windows Phone Apps - OverviewC++ in Windows Phone Apps - Overview
C++ in Windows Phone Apps - OverviewMirco Vanini
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineAbdelrahman Hosny
 
Data-First Online Functional Programming with F# (Adam Granicz)
Data-First Online Functional Programming with F# (Adam Granicz)Data-First Online Functional Programming with F# (Adam Granicz)
Data-First Online Functional Programming with F# (Adam Granicz)ITCamp
 
Java vs .net
Java vs .netJava vs .net
Java vs .netTech_MX
 
Microsoft dot net framework
Microsoft dot net frameworkMicrosoft dot net framework
Microsoft dot net frameworkAshish Verma
 
.NET Framework Overview
.NET Framework Overview.NET Framework Overview
.NET Framework OverviewDoncho Minkov
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSITCamp
 
Introduction to Bitreactive
Introduction to BitreactiveIntroduction to Bitreactive
Introduction to BitreactiveGhassen Chaieb
 

Was ist angesagt? (17)

Intro to Microsoft.NET
Intro to Microsoft.NET Intro to Microsoft.NET
Intro to Microsoft.NET
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET Framework
 
.Net framework
.Net framework.Net framework
.Net framework
 
C++ in Windows Phone Apps - Overview
C++ in Windows Phone Apps - OverviewC++ in Windows Phone Apps - Overview
C++ in Windows Phone Apps - Overview
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual Machine
 
Java vs .net (beginners)
Java vs .net (beginners)Java vs .net (beginners)
Java vs .net (beginners)
 
Data-First Online Functional Programming with F# (Adam Granicz)
Data-First Online Functional Programming with F# (Adam Granicz)Data-First Online Functional Programming with F# (Adam Granicz)
Data-First Online Functional Programming with F# (Adam Granicz)
 
Java vs .net
Java vs .netJava vs .net
Java vs .net
 
Microsoft dot net framework
Microsoft dot net frameworkMicrosoft dot net framework
Microsoft dot net framework
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 
.NET Framework Overview
.NET Framework Overview.NET Framework Overview
.NET Framework Overview
 
Lets Auto It
Lets Auto ItLets Auto It
Lets Auto It
 
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JSMihai Tataran - Building Windows 8 Applications with HTML5 and JS
Mihai Tataran - Building Windows 8 Applications with HTML5 and JS
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
Introduction to Bitreactive
Introduction to BitreactiveIntroduction to Bitreactive
Introduction to Bitreactive
 
Net framework
Net frameworkNet framework
Net framework
 
.Net framework
.Net framework.Net framework
.Net framework
 

Andere mochten auch

ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp
 
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp
 
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1ITCamp
 
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challenge
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challengeITCamp 2012 - Mihai Nadas - Tackling the single sign-on challenge
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challengeITCamp
 
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for me
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for meITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for me
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for meITCamp
 
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012ITCamp
 
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the Ugly
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the UglyITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the Ugly
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the UglyITCamp
 
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just Began
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just BeganITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just Began
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just BeganITCamp
 
ITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interopITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interopITCamp
 
Live Presentation Transformation From Boring to Effective - Boris Hristov
Live Presentation Transformation From Boring to Effective - Boris HristovLive Presentation Transformation From Boring to Effective - Boris Hristov
Live Presentation Transformation From Boring to Effective - Boris HristovITCamp
 
Azure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangAzure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangITCamp
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuITCamp
 
Building Your First SPA with Aurelia and MVC 6 - Mihai Coros
Building Your First SPA with Aurelia and MVC 6 - Mihai CorosBuilding Your First SPA with Aurelia and MVC 6 - Mihai Coros
Building Your First SPA with Aurelia and MVC 6 - Mihai CorosITCamp
 
Creating Web and Mobile Apps with Angular 2 - George Saadeh
Creating Web and Mobile Apps with Angular 2 - George SaadehCreating Web and Mobile Apps with Angular 2 - George Saadeh
Creating Web and Mobile Apps with Angular 2 - George SaadehITCamp
 
What's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerWhat's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerITCamp
 
Presentation Indoor Video Advertising in Chisinau
Presentation Indoor Video Advertising in ChisinauPresentation Indoor Video Advertising in Chisinau
Presentation Indoor Video Advertising in ChisinauPavel Sidorenco
 
White oak siding 888 778 0212
White oak siding 888 778 0212White oak siding 888 778 0212
White oak siding 888 778 0212hansons0588
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)IJERD Editor
 

Andere mochten auch (20)

ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - KeynoteITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
ITCamp 2011 - Mihai Tataran, Tudor Damian - Keynote
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
 
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
 
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1
ITCamp 2013 - Adrian Stoian - Whats new in ConfigMgr 2012 SP1
 
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challenge
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challengeITCamp 2012 - Mihai Nadas - Tackling the single sign-on challenge
ITCamp 2012 - Mihai Nadas - Tackling the single sign-on challenge
 
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for me
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for meITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for me
ITCamp 2013 - Tiberiu Covaci & Sorin Stan - IASA Romania, what’s in it for me
 
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012
ITCamp 2011 - Adrian Stoian - System Center Configuration Manager 2012
 
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the Ugly
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the UglyITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the Ugly
ITCamp 2011 - Tudor Damian - Private Cloud, the Good, the Bad and the Ugly
 
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just Began
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just BeganITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just Began
ITCamp 2013 - Tobiasz Koprowski - 2AM A Disaster Just Began
 
ITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interopITCamp 2011 - Mihai Nadas - Windows Azure interop
ITCamp 2011 - Mihai Nadas - Windows Azure interop
 
Live Presentation Transformation From Boring to Effective - Boris Hristov
Live Presentation Transformation From Boring to Effective - Boris HristovLive Presentation Transformation From Boring to Effective - Boris Hristov
Live Presentation Transformation From Boring to Effective - Boris Hristov
 
Azure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangAzure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex Mang
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan Rusu
 
Building Your First SPA with Aurelia and MVC 6 - Mihai Coros
Building Your First SPA with Aurelia and MVC 6 - Mihai CorosBuilding Your First SPA with Aurelia and MVC 6 - Mihai Coros
Building Your First SPA with Aurelia and MVC 6 - Mihai Coros
 
Creating Web and Mobile Apps with Angular 2 - George Saadeh
Creating Web and Mobile Apps with Angular 2 - George SaadehCreating Web and Mobile Apps with Angular 2 - George Saadeh
Creating Web and Mobile Apps with Angular 2 - George Saadeh
 
What's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerWhat's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas Maurer
 
Presentation Indoor Video Advertising in Chisinau
Presentation Indoor Video Advertising in ChisinauPresentation Indoor Video Advertising in Chisinau
Presentation Indoor Video Advertising in Chisinau
 
White oak siding 888 778 0212
White oak siding 888 778 0212White oak siding 888 778 0212
White oak siding 888 778 0212
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)
 
Certificado
CertificadoCertificado
Certificado
 

Ähnlich wie ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive

Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...ITCamp
 
Developing for Windows Phone 8.1
Developing for Windows Phone 8.1Developing for Windows Phone 8.1
Developing for Windows Phone 8.1Dan Ardelean
 
Developing for Windows Phone 8.1 (Dan Ardelean)
Developing for Windows Phone 8.1 (Dan Ardelean)Developing for Windows Phone 8.1 (Dan Ardelean)
Developing for Windows Phone 8.1 (Dan Ardelean)ITCamp
 
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance Tools
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance ToolsITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance Tools
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance ToolsITCamp
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalAlessandro Pilotti
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Enea Gabriel
 
Vunvulea radu it camp-ro 2012 - building metro style applications on window...
Vunvulea radu   it camp-ro 2012 - building metro style applications on window...Vunvulea radu   it camp-ro 2012 - building metro style applications on window...
Vunvulea radu it camp-ro 2012 - building metro style applications on window...Radu Vunvulea
 
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRTITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRTITCamp
 
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...ITCamp
 
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitch
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitchITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitch
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitchITCamp
 
Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"Fwdays
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Melania Andrisan (Danciu)
 
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloITCamp
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done rightWekoslav Stefanovski
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net EntwicklerPatric Boscolo
 
.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development명신 김
 
모바일 트렌드와 iOS
모바일 트렌드와 iOS모바일 트렌드와 iOS
모바일 트렌드와 iOSJung Kim
 
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharper
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharperITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharper
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharperITCamp
 

Ähnlich wie ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive (20)

Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
 
Developing for Windows Phone 8.1
Developing for Windows Phone 8.1Developing for Windows Phone 8.1
Developing for Windows Phone 8.1
 
Developing for Windows Phone 8.1 (Dan Ardelean)
Developing for Windows Phone 8.1 (Dan Ardelean)Developing for Windows Phone 8.1 (Dan Ardelean)
Developing for Windows Phone 8.1 (Dan Ardelean)
 
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance Tools
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance ToolsITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance Tools
ITCamp 2013 - Martin Kulov - Demystifying Visual Studio 2012 Performance Tools
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
 
Vunvulea radu it camp-ro 2012 - building metro style applications on window...
Vunvulea radu   it camp-ro 2012 - building metro style applications on window...Vunvulea radu   it camp-ro 2012 - building metro style applications on window...
Vunvulea radu it camp-ro 2012 - building metro style applications on window...
 
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRTITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
 
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...
ITCamp 2012 - Radu Vunvulea - Building metro style applications on Windows 8 ...
 
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitch
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitchITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitch
ITCamp 2013 - Melania Danciu - HTML5 apps with LightSwitch
 
Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017
 
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net Entwickler
 
.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development
 
모바일 트렌드와 iOS
모바일 트렌드와 iOS모바일 트렌드와 iOS
모바일 트렌드와 iOS
 
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharper
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharperITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharper
ITCamp 2013 - Adam Granicz - Developing for W8 with F# and WebSharper
 

Mehr von ITCamp

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...ITCamp
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...ITCamp
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp
 
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp
 

Mehr von ITCamp (20)

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing Skills
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AI
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
 
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian Quality
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive

  • 1. itcampro@ itcamp13# Premium conference on Microsoft technologies Windows Runtime (WinRT) deep dive Raffaele Rialdi @raffaeler raffaeler@vevy.com http://www.iamraf.net
  • 2. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileHuge thanks to our sponsors!
  • 3. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileSpot the difference Using a pure .NET library Using a Windows Runtime native library projected in .NET <!DOCTYPE html> <html> <head> <title>IAmRaf - Home Page</title> <meta name="description" content="Raffaele Rialdi home page" /> … using System.Net.Http; ... using (var client = new HttpClient()) { var res = await client.GetStringAsync( "http://www.iamraf.net"); // ... } using Windows.Web.Syndication; ... var client = new SyndicationClient(); var feed = await client.RetrieveFeedAsync( new Uri("http://www.iamraf.net/rss")); var firstItem = feed.Items.FirstOrDefault(); var content = firstItem.Summary.Text; The new Windows start screen 8 shows a number of tiles that may look like a revamped version of the old shortcuts: But appearances can be deceptive and tiles are not shortcuts and they do not launch directly the application process. The crucial point is that Windows Runtime (WinRT) is the laye...
  • 4. itcampro@ itcamp13# Premium conference on Microsoft technologies COMPONENTS UNDER THE HOOD
  • 5. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileClassic C++ polimorphism is static • Polimorphism is possible only if class definitions are known – It must be done at compile time because C++ provides no binary contract class myBase { public: virtual void Foo() { …} virtual void Bar() { … } }; class myDerived : public myBase { public: void Foo() override { … } void Bar() override { … } }; vTable myBase::Foo myBase::Bar VTable myDerived::Foo myDerived::Bar Patched at compile time!
  • 6. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileInter-assembly Inheritance (.NET "trick") Assembly 1 public class mybase { public virtual void Foo() { } public void Bar() { } } Assembly 2 public class myderived : mybase { public override void Foo() { } public void Qux() { } } MethodTable ToString Equals GetHashCode Finalize Foo Bar Qux MethodTable ToString Equals GetHashCode Finalize Foo Bar System.Object Patched at runtime!
  • 7. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • We need a binary contract – Metadata to define the Type System – Runtime to manage the runtime behavior Solution: metadata and runtime MethodTable AddRef Release QueryInterface GetIids GetRuntimeClassN ame GetTrustLevel Foo Bar Qux IUnknown IInspectable IMyBase IMyDerived 1. Dynamic interface discovery • IUnknown.QueryInterface is the runtime equivalent of a cast or • IInspectable.GetIids (javascript only) 2. New rule: cannot derive any component with the exception of XAML controls • Reason? Versioning!
  • 8. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileModeling by interface • Why? Because Modeling by interface is simpler! • Interfaces are the public surface of the component – Identified by an IID (Guid) – Can be marked as “exclusiveto” for a specific component • The class implementing the interface – Identified by the namespace.nome string – Class is “hidden” and never visible • Can only be riched with the use of interface • C++ can bypass the interface for perf reasons
  • 9. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile Code is always accessed by interface! Projections make interfaces appear like they were classes The "new" operation is fake var client = new SyndicationClient(); ComPtr<ISyndicationClient> spClient; auto classId = HStringReference( RuntimeClass_Windows_Web_Syndication_SyndicationClient).Get(); hr = ActivateInstance(classId, &spClient); if(FAILED(hr)) return PrintError(hr); HRESULT hr; ComPtr<IActivationFactory> spFactory; auto classId = HStringReference( RuntimeClass_Windows_Web_Syndication_SyndicationClient).Get(); hr = GetActivationFactory(classId, &spFactory); if(FAILED(hr)) return PrintError(hr); ComPtr<ISyndicationClient> spSyndicationClient; hr = spActivationFactory->ActivateInstance(&spSyndicationClient); if(FAILED(hr)) return PrintError(hr); The long way (C++ and WRL Library) The short way (C++ and WRL Library) The C++ projection (C++/CX) auto client = ref new SyndicationClient(); C# projection
  • 10. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • How can static methods exists if the surface is only exposed by interfaces? • COM did not support static methods • WinRT do support them – But static methods cannot be part of an interface! • Solution: statics are instance methods of the factory – The interface exposing the static methods is automatically generated by the compiler • Projections make them appear as if they were part of the class Static methods
  • 11. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • QueryInterface – Discover interfaces in a component • IUnknown: AddRef e Release – Managing the lifecycle • Circular References risk – WeakReference is the solution – SDKs/ Projections create the WeakRef for us Component lifecycle A B Root Parent Parent
  • 12. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • Make use of the WinRT metadata to map: – Base types (int, double, string, …) – Complex types • INotifyPropertyChanged, collections, ... • Extension methods for non-mappable types – Streams, Storage, Async • Make use of the CCW and RCW as it was in COM • Native HRESULTS are converted into Exceptions and vice-versa .NET projection
  • 13. itcampro@ itcamp13# Premium conference on Microsoft technologies DEMO: SPYCOMPONENT
  • 14. itcampro@ itcamp13# Premium conference on Microsoft technologies THE VIEW ARCHITECTURE
  • 15. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • The main function  – It's always there • The message pump – It's there too • One single thread allowed to interact with the UI – Nothing changed here too • But … Once upon a time …
  • 16. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • Once started the App becomes a component – Like the old COM exe server • OS and Apps interact via Contracts – They are interfaces with new high level IPC • The UI sits on DirectX – Pure DX with C++ – Mixed XAML and DX with C++ – Pure XAML with C++ and .NET – HTML with Javascript Infrastructure differences
  • 17. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileThe view lifecycle WinRT App IFramework ViewSource IFramework View main CoreApplication.Run create CreateView create Initialize SetWindow Load Run Uninitialize User interaction
  • 18. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • Needed because components cannot always be accessed by any thread • Apartment is a group of one or more threads who can legally invoke a component – MTA: total threads freedom and better perf – STA: one single thread at a time • calls are enqueued to avoid concurrency – ASTA: new STA which avoid re-entrancy • used for the primary UI thread in Win8 Apps • Marshaling is minimized because of the new "Agile" concept Threading model: Apartments
  • 19. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • Most of the WinRT library is marked as "both" – compatbile with MTA and (A)STA • XAML is "both" but at runtime enforce to be called by ASTA only • Share target Contract are opened in a different ASTA! – One of the primary sources of bugs in Windows Store Applications • Be careful to use the correct Dispatcher Threading and library
  • 20. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileThreading, Async and Dispatcher • Languages offer async support in different flavors – Async/Await (.NET) – Promise (C++, Js) • Async use the SynchronizationContext to find the primary thread where the callback will be executed • If you call Dispacher.Invoke by yourself – Pay attention: every ASTA has a different Dispatcher
  • 21. itcampro@ itcamp13# Premium conference on Microsoft technologies SECURITY!
  • 22. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileAppContainer restrictions • Limitations derived from Low Integrity Level • API restrictions: – Limited Win32 API and COM Interfaces – .NET Windows Store Profile subset • Some WinRT components are brokered – Capabilities are as a sort of "privilege elevation" obtained with Brokered objects – Contracts are a modern IPC mechanism
  • 23. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & MobileRuntime Security Broker Kernel services WinRT Runtime Security Broker Filtered COM / Win32 APIs Full COM / Win32 Comp. Device access Picker Host … Comp. Brokered UIAppContainer
  • 24. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • How to avoid capabilities forgery? – Native code has full power in its own process • Assigned SIDs – One SID to identify the application – One SID for every requested capability Capabilities under the hood Compile time Windows Store Package Package Code signing Package Runtime execution Manifest SID assignement
  • 25. itcampro@ itcamp13# Premium conference on Microsoft technologies Development & Mobile • WinRT expose the OS in an OOP fashion • Projections hide most of the complexity • C++ and WRL are a good way to explore what is behind • Understanding the platform details can be of great help while developing Takeaways
  • 26. itcampro@ itcamp13# Premium conference on Microsoft technologies Q & A Thank you!