Pages

Saturday, 12 January 2019

Differences Between Xamarin.Forms vs. Xamarin.Native

Xamarin also enables development teams to create mobile user interfaces with a shared codebase with Xamarin.Forms.

Xamarin.Forms is a cross-platform UI toolkit that allows developers to easily create native user interface layouts that can be shared across Android, iOS, and Windows Phone.
 
Xamarin.Forms offers mobile developers more than 40 cross-platform controls and layouts to build a single UI layer for iOS, Android, or Windows devices. The tool enables teams and the automated UI testing tools they use to test all their mobile devices and configurations in one test execution.
If you're new to the mobile testing world, testing on applications based on Xamarin.Forms will make the transition far easier. Here are five reasons why testing on Xamarin.Forms versus Xamarin.Native applications can benefit you and your team.
  1. Minimum Viable Products: If you need to build out a minimum viable product that demands launching on both iOS and Android devices, and you need to save as much development or testing cost as possible, using Xamarin.Forms is a great asset. Xamarin.Forms allows teams to quickly build out a basic application with tight budgets.

  2. Time for Testing Cycles: The efficiency gain of Xamarin can help get an app to market more quickly. Because you do not need to develop specifically to native UI frameworks, this will allow you to reuse your code across platforms and naturally, get your apps to market faster. Although, Xamarin.Native may execute faster than Xamarin.Forms, other factors such as being able to share the same test scripts and because code sharing is larger, time to delivery will inherently, be faster as well.

  3. Cross Platform Testing: One of the biggest, yet sometimes overlooked, benefits of using Xamarin for multi-platform apps is that, with a single code base, the process of testing, updating and maintaining those applications over time is simplified. This is especially true of Xamarin.Forms. When much of the UI is also shared, that means feature updates are easier to update and test.

  4. Testing Experience: Each mobile platform has their own way of developing a UI on their platform, requiring teams to build apps in completely different ways. Many advanced mobile testers are familiar with specific Android, iOS, or Windows frameworks; however, many testers today are more experienced in .NET. If your development or testing team has minimal mobile expertise, you do not have to learn all native UI frameworks with Xamarin.Forms to know what to test.

  5. Test Script Sharing: For when you you want to practice test reuse. Xamarin.Forms also allows you to practice best practices like code sharing and test reusability easily for UI testing needs. By reducing the possibility for duplicate code, mobile testing is simplified and easier to maintain, and therefore, debug and resolve issues.

Xamarin.iOS and Xamarin.Android: What are they?

The Xamarin framework is based on the concepts and tools of the Mono open source project. The company itself was founded by the engineers who developed Mono. Thier toolset includes C# compiler, implementation environment, Common Language Runtime, and .NET libraries. The goal of Xamarin creators was to make deploying C# applications to operating systems and platforms other than desktop Windows possible. For this, the framework is equipped with various platform-specific compilers. Their outputs result in the efficient applications (their performance does not rely on the technical specs of the browser rendering engine) that have direct access to native APIs.
The actual platform functionality is implemented using Xamarin.iOS and Xamarin.Android. These are the C# object libraries that give developers access to iOS SDK and the Android SDK, respectively. They wrap the APIs, native for these mobile platforms, allowing accessing the required functions through the standard C# toolkit. In fact, in Xamarin developers employ the same action algorithms as in the case of working in native languages.

Experienced developers note that about 75-80% of the codebase can be reused between native app versions--which is very important in the backend development.

Xamarin.Forms: What are its Capabilities?

Xamarin.Forms is a complete array of instruments for the creation of cross-platform software. It works on top of the Xamarin.iOS and Xamarin.Android libraries and allows writing front ends in C# and XAML and may even share this code between implementations. Applications created with Xamarin.Forms are fully endowed with all the characteristics inherent to the best cross-platform solutions. In particular, they allow developers to save time and money (about 80-95% of the code is cross-platform, the remaining 5-20% contain commands to establish connections with native APIs).

What to Choose and When?

And now let us compare Xamarin Forms vs Xamarin Native and find out which option, and in which situation, it is better to choose.



Why Xamarin Native?

Despite the fact that Xamarin Native approach is more resource-intensive, it is still chosen in the vast majority of cases (this is a reason why it is also called the traditional approach). Let us clarify the reasons to choose this approach:
  • The future application employs a large number of interactive elements and dynamically updated content. Cross-platform applications are much less efficient in performance than native ones, so in the comparison of Xamarin Forms vs Xamarin Native performance, apps created with the latter are notably more efficient. This fact can negatively affect the user experience when it comes to creating applications with capacitive graphics, as well as, with numerous interactive elements (for example, in the case of gaming software) with Forms. Thus, you simply have no choice but to resort to the traditional approach. In this case, the entire front end for each platform will be made using native routines and the rendering speed will not give you any problems.

  • There is a need to provide the smallest possible app size. These days, the leading mobile software developers are waging a kind of "cold war" on the size of software products they create. It is not just that "small" applications load faster. Modern people are trying to capture as many moments from their life as possible with photographs and videos. This means that if some of them for some personal reasons (for example, to provide additional privacy) do not decide to use the cloud to store media files, then most of the smartphone storage will quickly get occupied and little space is left for applications. Due to the fact that, when working with Xamarin.Forms, a fairly large amount of code has an abstract implementation, the size of the resulting application would be notably larger than "almost native" one, which can be obtained with Xamarin.iOS and Xamarin.Android. That is why Xamarin Native's approach is more desirable, if the future application would be rather capacitive.

  • The UI of the application should feel as native as possible. When creating a user interface for a specific platform, there is no question that it should follow the platform design guidelines. The two most common mobile platforms - Android and iOS - have fundamental differences in design. These two mobile OS's differ significantly in the presentation of navigation elements, action bars, toolbars, buttons, instant notifications, etc. If the created software product will use these elements, building them with Xamarin.Forms would be quite hard. Therefore, in this case, the choice in favor of Xamarin Native is obvious.

Why Xamarin.Forms?

Despite numerous advantages, the Xamarin Native approach is not always the best choice. Below we will describe in which cases using Xamarin.Forms would be more appropriate:

  • Little experience of development team in the creation of the mobile software. If the decision to use Xamarin for mobile development was mainly due to the fact that the development team decided to master a new niche (which means that they do not have a reliable knowledge of working with mobile platforms), it would be better to start with Xamarin.Forms. In this case, almost 90% of the time allocated to work on a new project will not be something new and rather would look like the usual process of developing software in C#.

  • Limited timeframe and budget. The money and time required to develop a mobile application are two key points that most concern the product owners. Mobile development is a process that requires serious financial and time investments. Consequently, the planning should be treated very thoughtfully. In particular, if we are talking about a project that needs to be implemented as soon as possible (for example, if an MVP is created), or if the customer has limited funds, Xamarin.Forms here will be the only possible way out of the situation (note that this does not mean that the product will be of poor quality).

  • The simplicity of scaling and further maintenance. When 80-95% of the code is common between platforms to which an application would be deployed, such software is much easier to maintain and scale. This fact is an undeniable advantage for those customers who plan to further refine the functional and, in general, somehow transform their solution (again, in the case of MVP, Xamarin.Forms is an ideal choice).
All in all, on top of all the mentioned above, the Forms technology is constantly in the state of rapid development, has a well-structured documentation, and a large community that even provides readymade components.
If your solution is expected to feature standard or almost standard user interface, which is a sufficient enough option in most cases, and not to require the highest possible performance, Xamarin.Forms will be the best choice of the developmental framework.

Code sharing with Xamarin.Native is possible as well, leading testers to be able to share test scripts as well, but for UI testing, Xamarin.Forms adds more sharing than Xamarin.Native.

No comments:

Post a Comment