[Translation] .NET cross-platform UI framework and why you should first think twice

Now use C # to develop cross-platform applications has been very mature program, the share of non-interface code, and each operating system with a specific user interface code. The advantage of this scheme is that you can directly use the native operating system controls and third-party controls, but also to deep integration and operating systems.

Deep integration here mainly refers to the number of Windows-specific system features:

  • Windows tray

  • Windows Jump List

  • Windows system theme

Also it includes some of the features of the mobile platform, such as iOS native slide.

Because the operating system other programs generally use native controls, so only when your program uses the same technology, it can very well be consistent. This is a general compliance with all interface development agreement. Apple has detailed interface design guidelines for developers to reference .

Full-screen game program in general, do not need to comply with this agreement. Other programs, such as RealPlayer, QQ, but also contrary to this convention. Personal view is that, try not to engage in specialization.

So if you decide to use this option, then on a different operating system, you need to learn a different interface framework:

  • Windows:Windows Forms 

  • macOS: Xamarin.Mac (the Cocoa Package) 

  • Linux: GTK # (encapsulated GTK +)

  • iOS: Xamarin.iOS (Package CocoaTouch)

  • Android: Xamarin.Android (Package Android UI)

It is worth noting:

Windows platform is undergoing change the overall interface design, the future standard interface framework should be UWP. Although WPF is Microsoft's official support of the technology, however, and compared to WinForms, it still draws its own, can not be considered a native interface framework.

MonoMac been abandoned for various reasons see .

QtSharp and other frameworks are not very mature.

Many successful projects on the market are the beneficiaries of this program. Here are a few examples:

  • National Instruments LabView official website use Xamarin.iOS in iOS platform mobile version of the address , use the Windows platform, Windows Forms (this is not specifically identified).

  • Plastic SCM official website on Linux platform GTK #, use Xamarin.Mac in macOS, using Windows Forms on Windows.

  • iCircuit official website in macOS Xamarin.Mac, use Xamarin.iOS in iOS, Xamarin.Android use in Android, using Microsoft technology in the Windows and Windows Phone.

But there are always programmers want to be able to use cross-platform UI framework, to simplify their work. Therefore, this article also describes some cross-platform UI framework already exists for reference. Although they vary, but generally are used in a three design ideas in the following:

  • Control yourself completely drawn, simulate the effect of system control on different operating systems.

  • On an operating system is a native frame, on the other operating systems by simulating achieve the display.

  • Abstract design, controls mapped to the native runtime.

Unity / monogamous

Design: completely draw their own (though there is no standard controls concept)

Operating system: desktop and mobile devices (including game terminal, etc.)

Display: the operating system does not matter

Tripartite control: not to mention

Both are game engine. Have to use them to design cross-platform application is technically feasible, but because there is no operating system controls things like, needs its own fully drawn, so the development of non-gaming applications, the difficulty is still there. As for the operating system and the depth of integration, even more trouble.

GTK#

Design: On Linux native frame, on the other operating systems can run the simulation.

Operating System: Desktop

Display: deep integration on Linux

Tripartite Controls: There are some, but not very active provider

GTK has always been one for the desktop application development framework for cross-platform interface, so after GTK # is also very easy to use package. However, it would appear on a non-Linux operating system is poor (for example, on a Windows system theme and very dissonant).

MonoDevelop GTK # is the use of the IDE. When Microsoft / Xamarin will transform it into Visual Studio for Mac, many interface elements have been replaced Xamarin.Mac the native system.

Windows Forms

Design: On Windows native frame, on the other operating systems can run the simulation.

Operating System: Desktop

Display: deep integration on Windows

This is most of the time learning C # programmer entry interface framework, it can be quickly integrated Windows various controls. Although support for Windows CE mobile platform, but basically useless. Mono version 2.0 from the start migrating it to Linux and other operating systems. Plastic SCM is the first to use Mono Windows Forms will end migrate their Windows clients to other operating systems. But the Mono implementation is not perfect in many details, but also requires a lot of effort to improve. Plastic SCM late to give up cross-platform Windows Forms road.

Windows Forms in the Windows platform has a large number of third-party controls, which are the basic controls do not support Linux and other operating systems. Although Microsoft recently began System.Drawing will become a cross-platform technology, but also makes the official Windows Forms likely to become a cross-platform interface program, but how to display non-Windows platform, or is the market will follow a tripartite still unknown .

Most importantly, Windows Forms originally designed for the desktop, it can not well supported mobile platforms. As early as the initial development phase MonoTouch, Mono Windows Forms team had thought would become iOS platform UI framework related articles . Of course, they finally wisely dropped the idea, instead of using a native Cocoa Touch package program.

WPF/Avalonia/UWP

Design idea: draw completely on my own.

Operating System: Desktop (UWP support Windows Mobile, Avalonia have mobile support)

Display: deep integration on Windows

Tripartite Controls: Windows platform lot

UWP WPF and Microsoft are official technology, and Avalonia official website try a similar design to become a cross-platform technology.

There is a lot like Delphi FireMonkey WPF UI framework has been completely cross-platform (desktop and mobile devices), so WPF technologies like to cross-platform is technically feasible, but the challenges are many.

Although Microsoft has a lot of ways to improve integration (including several sets of themes) WPF and systems, but it did not always show like a native Windows Forms. Of course, from the beginning of Windows 10, Microsoft simply use the UWP to develop the system comes with the program, so UWP will eventually become the primary framework.

Xamarin.Forms

Design: native control mapping.

Operating system: mobile platforms (started trying to desktop support)

Display: Always depth and native system integration

Tripartite control: rapid development

Xamarin to develop this technology, initially for cross-platform mobile applications, but recently it has begun to the desktop scenarios, such as macOS (WPF development and integration are in GTK #).

And completely on my own rendering technology different is that, Xamarin.Forms procedures used in the design is an abstract control. Button design time, control lists, etc., will be mapped to the native operating system's buttons, lists, and other controls to run. So from the display, this is the best of a technology.

More importantly, Xamarin.Forms new version has support for embedded directly into the native controls, also supports native program is embedded Xamarin.Forms interface, more flexibility for developers.

But this is also a temporary technical limitations, it is still controls designed for mobile applications. If your goal is to design an Office or Visual Studio as a standard desktop application, it will encounter difficulties. Fortunately, not all scenes we all need so complicated interface.

There are already many third-party controls to provide Xamarin.Forms:

More and more of the three parties to join also makes this technology more active.

xwt / Eto.Forms

Design: native control mapping.

Operating System: Desktop (start trying to move support)

Display: Always depth and native system integration

Tripartite control: no more than temporary

Both technical and Xamarin.Forms are similar, but they are all from the desktop platform began.

xwt official website is part of the Mono project. Personally, I think it inspired Xamarin.Forms design. Eto.Forms official website is relatively new, and began to enter the mobile platform.

Both frameworks will finally reach Xamarin.Forms heat remains to be seen.

 

Original author: Lex Li

Original Address: at The Story the About the .NET Cross Platform the UI Frameworks

Author: Chu Leo

Source: https://www.cnblogs.com/leolion/p/7144896.html

Copyright: This site uses " CC BY 4.0 " Creative Commons agreement, reproduced in the article clearly indicate the position of the author and source.

 
 

Now use C # to develop cross-platform applications has been very mature program, the share of non-interface code, and each operating system with a specific user interface code. The advantage of this scheme is that you can directly use the native operating system controls and third-party controls, but also to deep integration and operating systems.

Deep integration here mainly refers to the number of Windows-specific system features:

  • Windows tray

  • Windows Jump List

  • Windows system theme

Also it includes some of the features of the mobile platform, such as iOS native slide.

Because the operating system other programs generally use native controls, so only when your program uses the same technology, it can very well be consistent. This is a general compliance with all interface development agreement. Apple has detailed interface design guidelines for developers to reference .

Full-screen game program in general, do not need to comply with this agreement. Other programs, such as RealPlayer, QQ, but also contrary to this convention. Personal view is that, try not to engage in specialization.

So if you decide to use this option, then on a different operating system, you need to learn a different interface framework:

  • Windows:Windows Forms 

  • macOS: Xamarin.Mac (the Cocoa Package) 

  • Linux: GTK # (encapsulated GTK +)

  • iOS: Xamarin.iOS (Package CocoaTouch)

  • Android: Xamarin.Android (Package Android UI)

It is worth noting:

Windows platform is undergoing change the overall interface design, the future standard interface framework should be UWP. Although WPF is Microsoft's official support of the technology, however, and compared to WinForms, it still draws its own, can not be considered a native interface framework.

MonoMac been abandoned for various reasons see .

QtSharp and other frameworks are not very mature.

Many successful projects on the market are the beneficiaries of this program. Here are a few examples:

  • National Instruments LabView official website use Xamarin.iOS in iOS platform mobile version of the address , use the Windows platform, Windows Forms (this is not specifically identified).

  • Plastic SCM official website on Linux platform GTK #, use Xamarin.Mac in macOS, using Windows Forms on Windows.

  • iCircuit official website in macOS Xamarin.Mac, use Xamarin.iOS in iOS, Xamarin.Android use in Android, using Microsoft technology in the Windows and Windows Phone.

But there are always programmers want to be able to use cross-platform UI framework, to simplify their work. Therefore, this article also describes some cross-platform UI framework already exists for reference. Although they vary, but generally are used in a three design ideas in the following:

  • Control yourself completely drawn, simulate the effect of system control on different operating systems.

  • On an operating system is a native frame, on the other operating systems by simulating achieve the display.

  • Abstract design, controls mapped to the native runtime.

Unity / monogamous

Design: completely draw their own (though there is no standard controls concept)

Operating system: desktop and mobile devices (including game terminal, etc.)

Display: the operating system does not matter

Tripartite control: not to mention

Both are game engine. Have to use them to design cross-platform application is technically feasible, but because there is no operating system controls things like, needs its own fully drawn, so the development of non-gaming applications, the difficulty is still there. As for the operating system and the depth of integration, even more trouble.

GTK#

Design: On Linux native frame, on the other operating systems can run the simulation.

Operating System: Desktop

Display: deep integration on Linux

Tripartite Controls: There are some, but not very active provider

GTK has always been one for the desktop application development framework for cross-platform interface, so after GTK # is also very easy to use package. However, it would appear on a non-Linux operating system is poor (for example, on a Windows system theme and very dissonant).

MonoDevelop GTK # is the use of the IDE. When Microsoft / Xamarin will transform it into Visual Studio for Mac, many interface elements have been replaced Xamarin.Mac the native system.

Windows Forms

Design: On Windows native frame, on the other operating systems can run the simulation.

Operating System: Desktop

Display: deep integration on Windows

This is most of the time learning C # programmer entry interface framework, it can be quickly integrated Windows various controls. Although support for Windows CE mobile platform, but basically useless. Mono version 2.0 from the start migrating it to Linux and other operating systems. Plastic SCM is the first to use Mono Windows Forms will end migrate their Windows clients to other operating systems. But the Mono implementation is not perfect in many details, but also requires a lot of effort to improve. Plastic SCM late to give up cross-platform Windows Forms road.

Windows Forms in the Windows platform has a large number of third-party controls, which are the basic controls do not support Linux and other operating systems. Although Microsoft recently began System.Drawing will become a cross-platform technology, but also makes the official Windows Forms likely to become a cross-platform interface program, but how to display non-Windows platform, or is the market will follow a tripartite still unknown .

Most importantly, Windows Forms originally designed for the desktop, it can not well supported mobile platforms. As early as the initial development phase MonoTouch, Mono Windows Forms team had thought would become iOS platform UI framework related articles . Of course, they finally wisely dropped the idea, instead of using a native Cocoa Touch package program.

WPF/Avalonia/UWP

Design idea: draw completely on my own.

Operating System: Desktop (UWP support Windows Mobile, Avalonia have mobile support)

Display: deep integration on Windows

Tripartite Controls: Windows platform lot

UWP WPF and Microsoft are official technology, and Avalonia official website try a similar design to become a cross-platform technology.

There is a lot like Delphi FireMonkey WPF UI framework has been completely cross-platform (desktop and mobile devices), so WPF technologies like to cross-platform is technically feasible, but the challenges are many.

Although Microsoft has a lot of ways to improve integration (including several sets of themes) WPF and systems, but it did not always show like a native Windows Forms. Of course, from the beginning of Windows 10, Microsoft simply use the UWP to develop the system comes with the program, so UWP will eventually become the primary framework.

Xamarin.Forms

Design: native control mapping.

Operating system: mobile platforms (started trying to desktop support)

Display: Always depth and native system integration

Tripartite control: rapid development

Xamarin to develop this technology, initially for cross-platform mobile applications, but recently it has begun to the desktop scenarios, such as macOS (WPF development and integration are in GTK #).

And completely on my own rendering technology different is that, Xamarin.Forms procedures used in the design is an abstract control. Button design time, control lists, etc., will be mapped to the native operating system's buttons, lists, and other controls to run. So from the display, this is the best of a technology.

More importantly, Xamarin.Forms new version has support for embedded directly into the native controls, also supports native program is embedded Xamarin.Forms interface, more flexibility for developers.

But this is also a temporary technical limitations, it is still controls designed for mobile applications. If your goal is to design an Office or Visual Studio as a standard desktop application, it will encounter difficulties. Fortunately, not all scenes we all need so complicated interface.

There are already many third-party controls to provide Xamarin.Forms:

More and more of the three parties to join also makes this technology more active.

xwt / Eto.Forms

Design: native control mapping.

Operating System: Desktop (start trying to move support)

Display: Always depth and native system integration

Tripartite control: no more than temporary

Both technical and Xamarin.Forms are similar, but they are all from the desktop platform began.

xwt official website is part of the Mono project. Personally, I think it inspired Xamarin.Forms design. Eto.Forms official website is relatively new, and began to enter the mobile platform.

Both frameworks will finally reach Xamarin.Forms heat remains to be seen.

 

Original author: Lex Li

Original Address: at The Story the About the .NET Cross Platform the UI Frameworks

Author: Chu Leo

Guess you like

Origin www.cnblogs.com/bigmango/p/11422154.html
Recommended