About the Client
Our client operates in the cyber-security industry to prevent cyber-attacks by securing passwords, protecting endpoints, and controlling application access. They are one of the world’s fastest-growing IT security companies and offer their customers cloud or on-premise software solutions that can be easily implemented. The client developed a server that stores employee personal identifiable information which makes such data confidential in nature.
The client sells their solution to their clients who need to be able to access the information stored on the server. The data needed to be accessed from two operating systems, MacOS and Windows.
Building Cross-Platform app with Xamarin
The choice of Xamarin was a very good one since it allowed us to make about 80% of the code reusable for both platforms. We also used MVVMCross as a framework, to create even more cross-platform components. By using this technology, we were able to implement all components including view models as cross-platform C# code. In fact, the only native aspect is the UI itself. We were able to integrate the OSX version with the native FreeRDP client which allowed the user to access remote Windows machines through the RDP client running inside the app on MacOS natively.
Technical Challenges that Needed to Be Solved
In order to create the cross-platform app, we needed to combine two technologies that traditionally are incompatible: the Windows remote desktop protocol Free RDP for MacOS and Xamarin. Both of these technologies needed to coexist inside the cross-platform app. In order to make sure that we could integrate an open-source framework inside Xamarin, we had to dig deep into the code and account for the tiniest possible changes that would allow both of them to function correctly.
Benefits Delivered for the Client
One of the biggest benefits we were able to provide the client was a significant reduction in development costs and time to market. Since there was no need to develop two separate applications we were able to cut the price of development in half. Consequently, this also allowed us to deliver the final project a lot faster. Also, we were able to provide sameness and uniformity to make sure that the overall look and feel of the app is maintained across both platforms.
The cross-platform application looked and felt the same on both Windows and MacOS. The reason we were able to provide such uniformity is that we utilized the same codebase for both.