Platform overviews
[ This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation ]
The overviews in this section help you understand the platform and how best to develop Universal Windows apps. They go into detail on the basics of the platform, some key programming concepts, and selected depth topics.
Platform basics explains the foundations of the platform, including platform architecture, capabilities, app contracts and more.
Programming concepts provides the core programming concepts in the universal platform, including async programming, threading, and performance.
Device and sensor overviews highlights key concepts when creating apps that use sensors or work with peripherals.
User experience overviews digs deeper into tile templates, content ratings, the DirectX UI framework, and more.
Languages supported
You can use any of the following programming languages to create apps that run on Windows or Windows Phone, or target both with a Universal Windows app:
- C# or C++/CX and XAML
- C++/CX and Microsoft DirectX
- JavaScript and HTML5
Microsoft Visual Studio and Blend fully support designing, developing, and debugging in all of these languages.
App model architecture
Each programming language has a corresponding app model. The app model is a set of files and design patterns that express an implementation architecture. App models are characterized by a number of features, like the app's entry point in code, the file layout in the solution, and the presentation technology.
Entry points
The app's entry point is the function or method that the system calls to start running your app's code. The entry point depends on the programming language. By default, the Visual Studio project templates define the app model architectures, which are shown in the following tables. You have considerable freedom to customize these defaults, but only advanced developers should attempt this.
This table shows the entry points and their default file locations for each app model.
App model | Entry point | File location |
---|---|---|
JavaScript | onactivated function | default.js in js folder |
C#/Visual Basic | OnLaunched method | App.xaml.cs / App.xaml.vb |
C++/CX with XAML | OnLaunched method | App.xaml.cpp |
C++/CX with Microsoft Direct3D | main function | Direct3DApp1.cpp |
Presentation technologies
The app model's presentation technology defines the look and feel of the app. You can create Windows Runtime apps by using three distinct technologies: XAML, HTML5, and DirectX. This table shows the programming languages that you can use with particular presentation technologies.
Programming language | Presentation technology |
---|---|
C#/Visual Basic | XAML |
JavaScript | HTML5 |
C++/CX | XAML, DirectX, and XAML/DirectX interop |
Assets
Required assets for Windows Store apps are four images, named Logo.png, SmallLogo.png, SplashScreen.png, and StoreLogo.png.
App model | Location of assets |
---|---|
JavaScript | images folder |
C#/Visual Basic | Assets folder |
C++/CX with XAML | Assets folder |
C++/CX with Direct3D | Assets folder |
Asynchronous programming
App model | Asynchronous |
---|---|
JavaScript | Common JS Promises/A |
C#/Visual Basic | async/await keywords |
C++/CX | task class / IAsyncOperation |
Creating components
You can factor your code into reusable components for your Store apps, which are named Windows Runtime components. There are specific interface requirements that Windows Runtime components must adhere to. You can create Windows Runtime components by using C#, Visual Basic, or C++/CX app models, but not JavaScript. For JavaScript, you create reusable modules by factoring code into files that you include in different projects.
You can't create standalone, reusable software libraries for distribution in the Windows Store. Your reusable libraries must ship with an app.
For more info, see Creating Windows Runtime components.
Packaging and deployment
Package your apps for deployment by using the manifest designer in Visual Studio. The manifest designer provides a simple user interface for changing settings in the app manifest file, which is named Package.appxmanifest. This procedure is the same for all app models.
For more info, see App packages and deployment.