Skip to main content

Azure RemoteApp (Day 26 of 31)

List of all posts from this series:

Short Description 
Azure RemoteApp gives us the possibility to use Microsoft RemoteApp functionality over Azure infrastructure. A part of services available on Remote Desktop can be used using Azure RemoteApp.

Main Features 
You are not limited anymore on your on-premises storage. You can use as much space you need when you are using Azure RemoteApp.
The hardware limitation generated by your infrastructure is removed. You can use as many resources you need.
Global Reach 
From any point of the glob users can connect to RemoteApp over Azure infrastructure over a secure and reliable channel.
Cross Platform
Users can connect to RemoteApp using any operating system from Windows to iOS to Mac OS and Android.
Hybrid Collections
Allow users to use resources that are hosted on Azure and on-premises backend. In this way you can store resources and data in different locations, based on you needs.
For this kind of connection you will need a Virtual Network between Azure infrastructure and on-premises backend.
Cloud Collection
All the programs and data related to this programs are hosted on Azure.
Office 365 ProPlus or Office 2013 Preinstalled
 Office is preinstalled and ready to be used by all Azure RemoteApp users.
On-premises Active Directory integration
Azure RemoteApp can be integrated with your own AD. In this way users can be managed very easily.
Custom Template Image
If you need custom RemoteApp installed you need to create a custom template image. This can be used to support custom LoB (Line of Business) applications.
Almost all applications that are working with on-premises version of RemoteApp will work with Azure RemoteApp.
Peripheral devices
All peripheral devices like USB, printers or clipboard sharing are supported when you are using Azure Remote App.
In this moment there are two authentication methods supported using Microsoft Accounts and Azure Active Directory.
Windows Embedded
You should be aware that not all versions of Windows Embedded are supported. The fallowing versions of Windows Embedded are supported:

  • Windows Embedded Standard 7 SP1 
  • Windows Embedded 8.1 Industry
  • Windows Embedded POSReady7 
  • Windows Embedded Thin PC 

The only limitations that I can see in this moment is related to Hybrid Collections that requires a Virtual Networked Connection between Azure and your on-premises systems.

Applicable Use Cases 
Below you can find some uses when I would use Azure Remote App.
Remote access to application
I would use Azure Remote App when uses need access to different application remotely.
Custom LoB
When users needs to access LoB application that are complicated to configure.
Multiple versions of programs
Having on the same machine multiple versions of a program can create a lot of issues. Using Azure Remote App this problem can be very easily mitigated.
Hoteling Workspaces
When your company have users that don’t have their own workspaces, Azure RemoteApp can help users to have their own workspaces with all application that are needed.
Remote Desktop Protocol supported
The standard Remote Desktop Protocol is supported by Azure Remote App.

Code Sample 

Pros and Cons 

  • Scalable
  • No hardware dependencies
  • Supports on-premises Active Directory integration 


When you calculate the costs of Azure RemoteApp you need to take into account the following:

  • Type of applications you will run
  • Storage size (per user)
  • Number of hours

Azure RemoApp can be a good solutions for companies that don’t have a dedicated PC for employees or for companies that need to let users to access LoB application from any place from the globe. This is a service that can be used by any company, from the small one to the big one.


Popular posts from this blog

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine:
threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration:

TeamCity.NET 4.51EF 6.0.2VS2013
It seems that there …

Entity Framework (EF) TransactionScope vs Database.BeginTransaction

In today blog post we will talk a little about a new feature that is available on EF6+ related to Transactions.
Until now, when we had to use transaction we used ‘TransactionScope’. It works great and I would say that is something that is now in our blood.
using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (SqlConnection conn = new SqlConnection("...")) { conn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = ... sqlCommand.ExecuteNonQuery(); ... } scope.Complete(); } Starting with EF6.0 we have a new way to work with transactions. The new approach is based on Database.BeginTransaction(), Database.Rollback(), Database.Commit(). Yes, no more TransactionScope.
In the followi…

GET call of REST API that contains '/'-slash character in the value of a parameter

Let’s assume that we have the following scenario: I have a public HTTP endpoint and I need to post some content using GET command. One of the parameters contains special characters like “\” and “/”. If the endpoint is an ApiController than you may have problems if you encode the parameter using the http encoder.
using (var httpClient = new HttpClient()) { httpClient.BaseAddress = baseUrl; Task<HttpResponseMessage> response = httpClient.GetAsync(string.Format("api/foo/{0}", "qwert/qwerqwer"))); response.Wait(); response.Result.EnsureSuccessStatusCode(); } One possible solution would be to encode the query parameter using UrlTokenEncode method of HttpServerUtility class and GetBytes method ofUTF8. In this way you would get the array of bytes of the parameter and encode them as a url token.
The following code show to you how you could write the encode and decode methods.