Native Apps At The Client & Cloud

Srinivasan Sundara Rajan

Subscribe to Srinivasan Sundara Rajan: eMailAlertsEmail Alerts
Get Srinivasan Sundara Rajan: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Article

Enterprise Client Strategy, Windows 10 & Beyond

Windows 10, Xamarin & Universal Apps

Enterprise Client Landscape
For several years enterprises were given some easy options when it came to client strategy.

  • Since the exit of mainframe terminals, most enterprises have successfully deployed Microsoft Windows-based desktops as their clients
  • Most enterprises adopted web-based applications, where by the desktop clients helped more in connecting to the applications through the browser and executing them
  • Client Server strategy is still utilized for specific applications like Office Productivity applications, emails and some multimedia-centric applications.

With the above strategies, enterprises never really worried about the programming platform and architecture of client-side applications. During the mainframe era it was all COBOL and server-side architecture and later it was all Java, C# and other multi-tiered architectures. For a brief period some of the 4GL platforms like PowerBuilder, Delphi, VB6, and Oracle Forms played a role in client strategy and they gradually ran out of steam.

Cloud/Client Architecture Opportunities and Challenges
As per Gartner , in the cloud/client architecture, the client is a rich application running on an Internet-connected device, and the server is a set of application services hosted in an increasingly elastically scalable cloud computing platform. The cloud is the control point and system of record and applications can span multiple client devices.

This means multiple factors like,

  • Shifting of preference toward Cloud/Client architecture
  • More demanding end users who wanted rich user experience and high performance
  • Enterprises changing their policies towards BYOD

Pushes the enterprises towards the new model of computing where the Client devices have to be fully thought of and delivered as per the needs of end users.

There are a lot of benefits for enterprises in adopting the Cloud/Client architecture.

Reduction of the Server Footprint
There is always a need for enterprises to reduce their excessive data center footprint and become more optimal. While the cloud platform enables enterprises to adapt to on-demand usage, they continue to process for client needs. The earlier era web frameworks like ASP, JSP, Servlet, etc., have all spent lot of server-side energies taking care of the needs of the clients. However the Cloud/Client strategy shifts much of the processing needs from the server to client. Think of a enterprise which encourages BYOD in their IT strategy, this means enterprises no longer spending their energy for doing some client specific processing which can be better handled in the client itself.

Think of an agent who wanted to provide the best quotes to the customers with the usage of a calculation model that performs a CPU-intensive calculation and come up with a quote, in the earlier era the entire processing is done on the server utilizing the data center resources. However, in the Cloud/Client architecture the model can be pushed to the client with the appropriate metadata and parameters and the entire processing is done from the client without occupying server resources.

Apart from this there are obvious benefits like improving the efficiency of end users, enabling knowledge workers and bringing new business models.

But this approach does comes with several challenges for the enterprises.

No Unified Platform of Desktop & Mobile Devices
Desktop computing will continue to exist in the enterprise and no enterprise can afford to discount them in their future client strategy and till now they did not have a unified approach for both desktop and mobile devices.

No Convergence Between Mobile Devices
It is in the best interest of mobile device original manufacturers to distinguish their device in terms of usability features that will provide them the much needed differentiation in the market. This means in the short term (or probably never) there will be no convergence of user interface features of mobile devices. This makes enterprises worry about a unified strategy among various mobile devices.

Enterprises Cannot Afford Throwaway Code
Enterprise class code has to live long and has to be maintainable over a period. If we look at the history, COBOL lived for more than 40 years and continue to be maintained, Java, PLSQL, VB, SQL,C++ languages do have a long history at least 20+ years and they continue to be used. However, suddenly enterprises have to live with the choice of HTML5 & JavaScript as their programming platform of choice for clients. This may be fine for a few quick enablers and go-to-market applications; however; enterprises needed a solid client platform strategy.

However, all is not bad for enterprises and there are a few directions that enterprises can adopt to come up with a robust client strategy that will not only help them to span devices and also enable the creation of applications that are long living and easy to maintain.

Windows 10 & Universal Apps
Windows 10 is an upoperating system from Microsoft Corporation for servers, desktop PCs, laptops, tablets, phones, and other connected-devices (i.e., Internet of Things). Windows 10 'skips' Windows 9 for its name for various reasons, including it being such a big update that it moves beyond just a single number upgrade.

Microsoft introduced the universal apps model in April, enabling developers to reuse the bulk of their code when porting an app between phones, tablets, PCs, and the Xbox One. As per this universal apps context, develop once for all Windows devices using a unified Windows runtime and VS tools that allow you to both support experiences unique to a device in XAML, HTML, and DirectX, and share the code that supports those experiences across all devices using C++, C#, or JavaScript. When your work is finished you can you can produce the app packages that you will submit to the Windows Store and Windows Phone Store with a single action to get your app out to customers on any Windows device.

As evident from the above post, Microsoft provides the fullest support for developing universal apps using the modern objected-oriented high-level language in the form of C#, which means that the code can be developed using the proven object-oriented methodologies while the resulting application is fully maintainable.

Extending to Other Devices Using Xamarin
While the above concept of universal apps will help enterprises have a single code base in C# across desktops, Windows phones and other Windows devices, what about non-Microsoft mobile platforms especially the Apple iOS and Android platforms. We have a good solution in the form of Xamarin. With Xamarin, you write your apps entirely in C#, sharing the same code on iOS, Android, Windows, Mac and more. Xamarin apps are built with standard, native user interface controls. Apps not only look the way the end user expects, they behave that way too. Xamarin apps leverage platform-specific hardware acceleration, and are compiled for native performance. Use the same language, APIs and data structures to share an average of 75% of app code across all mobile development platforms. Build user interfaces with Xamarin.Forms and share nearly 100%.

Xamarin.Forms allows you to build native user interfaces for iOS, Android and Windows Phone using 100% shared C#. Xamarin.Forms includes more than 40 controls and layouts, which are mapped to native controls at runtime.

By adopting Windows 10, Universal Apps and Xamarin, an enterprise can follow a unified client strategy based on objected-oriented, strong typed programming language C# while writing applications across devices in a single code base. This approach should be worthwhile for enterprises considering the long-term maintenance needs than adopting the weekly typed language or other interpreted scripting frameworks.

Extending to the Back End as a Service Platform
The above discussions can help enterprises position C# as a unified language and platform for developing universal applications; however, as per the Cloud/Client strategy each client application requires a cloud service to augment it. There are always multiple choices for enterprises to develop server-side services. But there also enterprises have a few choices to enable a unified platform across all tiers.

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. Here also C# is the language of choice when it comes to developing Back end services.

Summary
Enterprises are moving toward cloud/client computing; however there are lot of choices in terms of JavaScript frameworks, HTML5 and other options. Enterprises would be better off in adopting a unified client strategy which is built on a high level object oriented language like C# and hence the above mentioned strategy of using Windows 10 based universal apps and extending them Xamarin will be of interest to enterprises.

More Stories By Srinivasan Sundara Rajan

Highly passionate about utilizing Digital Technologies to enable next generation enterprise. Believes in enterprise transformation through the Natives (Cloud Native & Mobile Native).