App requirements
[AZURE.IMPORTANT] Azure RemoteApp is being discontinued. Read the announcement for details.
Azure RemoteApp supports streaming 32-bit or 64-bit Windows-based applications from a Windows Server 2012 R2 image. Most existing 32-bit or 64-bit Windows-based applications run "as is" in Azure RemoteApp (Remote Desktop Services or formerly known as Terminal Services) environment. However, there is a difference between running and running well - some applications function correctly and perform well, while others do not. The following information provides guidance for developing applications in a Remote Desktop Services environment and testing to ensure compatibility.
Tip: We're working on creating some working examples of apps for you. You'll see new topics that discuss using Microsoft Access, QuickBooks, and App-V in RemoteApp.
Requirements
These three requirements, if followed, help your application run well in RemoteApp:
- Applications that meet all Certification requirements for Windows desktop apps and adhere to Remote Desktop Services programming guidelines will have complete compatibility with RemoteApp.
- Applications should never store data locally on the image or RemoteApp instances that can be lost. After you create a RemoteApp collection, the instances are cloned and are stateless and should only contain applications. Store data in an external source or within the user's profile.
- Custom images should never contain data that can be lost.
Testing your apps
Use these steps to testing applications:
- Install Windows Server 2012 R2 and your application
- Enable Remote Desktop
- Create two user accounts, UserA and UserB, adding both user accounts to the Remote Desktop security group.
- Check multi-session compatibility by establishing two simultaneous RDS sessions to the PC while launching the application.
- Validate app behavior
Application development guidelines
Use the following guidelines for developing applications for RemoteApp.
Multiple users
- Installing an application for a single user can create problems in a multiuser environment.
- Applications should store user-specific information in user-specific locations, separately from global information that applies to all users.
- RemoteApp uses multiple namespaces for kernel objects; a global namespace is used primarily by services in client/server applications.
- It is not safe to assume that the computer name or the IP address assigned to the computer are associated with a single user because multiple users can be logged on simultaneously to a Remote Desktop Session Host (RD Session Host) server.
Performance
- Disable graphic effects before you add your app to RemoteApp.
- To maximize CPU availability for all users, either disable background tasks or create efficient background tasks that are not resource-intensive.
- You should tune and balance application thread usage for a multiuser, multiprocessor environment.
- To optimize performance, it is good practice for applications to detect whether they are running in a client session.