[번역] .NET 크로스 플랫폼 UI 프레임 워크를 왜 먼저 두 번 생각해야한다

이제 크로스 플랫폼 응용 프로그램을 개발하는 C # .NET을 사용하는 것은 매우 성숙 프로그램이 아닌 인터페이스 코드의 공유 및 특정 사용자 인터페이스 코드와 각 운영 체제이었다. 이 제도의 장점은 직접 기본 운영 체제 제어 및 타사 컨트롤뿐만 아니라 깊은 통합 및 운영 체제에 사용할 수 있다는 것입니다.

여기에 깊은 통합은 주로 Windows 특정 시스템 기능의 수를 나타냅니다 :

  • 윈도우 트레이

  • 윈도우 점프 목록

  • Windows 시스템 테마

또한 그것은 iOS의 네이티브 슬라이드와 같은 모바일 플랫폼의 일부 기능을 포함하고 있습니다.

운영 체제, 다른 프로그램은 일반적으로 기본 컨트롤을 사용하기 때문에 프로그램이 같은 기술을 사용하는 경우에만 때문에, 그것은 매우 잘 일치 될 수 있습니다. 이것은 모든 인터페이스 개발 계약 일반 준수합니다. 애플은 인터페이스 디자인 가이드 라인을 설명했다 참조하는 개발자 .

전체 화면 게임 프로그램은 일반적으로 본 계약을 준수 할 필요가 없습니다. 같은 리얼 플레이어, QQ, 그러나이 규칙에도 반대와 같은 다른 프로그램. 개인보기는 전문화에 참여하지 않으려한다는 것입니다.

다른 운영 체제에서 다음,이 옵션을 사용하기로 결정한다면, 당신은 다른 인터페이스 프레임 워크를 배울 필요가있다 :

  • 윈도우 : 윈도우 폼 

  • 맥 OS : Xamarin.Mac (코코아 패키지) 

  • 리눅스 : GTK # (GTK +를 캡슐화)

  • 아이폰 OS : Xamarin.iOS (패키지 CocoaTouch)

  • 안드로이드 : Xamarin.Android (패키지 안드로이드 UI)

그것은 주목할 가치가있다 :

Windows 플랫폼은 전체 인터페이스 디자인을 변경 겪고, 미래의 표준 인터페이스 프레임 워크는 UWP해야한다. WPF는 기술의 마이크로 소프트의 공식 지원하지만, 그러나, 그리고 윈폼에 비해 여전히 자체를 그리는 기본 인터페이스 프레임 워크로 간주 될 수 없다.

여러 가지 이유가 MonoMac는 버려진 참조 .

QtSharp와 다른 프레임 워크는 매우 성숙되지 않습니다.

시장에 많은 성공적인 프로젝트는이 프로그램의 수혜자이다. 다음은 몇 가지 예입니다 :

  • 내쇼날 인스트루먼트의 LabVIEW 공식 웹 사이트의 아이폰 OS 플랫폼에서 사용 Xamarin.iOS 주소의 모바일 버전은 Windows 플랫폼, 윈도우 폼 (이 구체적으로 확인되지 않은)를 사용합니다.

  • 플라스틱 SCM의 공식 웹 사이트 리눅스 플랫폼 GTK에 #은 윈도우에서 윈도우 폼을 사용하여, 맥 OS에서 Xamarin.Mac를 사용합니다.

  • iCircuit 공식 웹 사이트 맥 OS Xamarin.Mac에서는 윈도우와 윈도우 폰에 마이크로 소프트 기술을 사용하여, 아이폰 OS, 안드로이드 Xamarin.Android 사용 Xamarin.iOS를 사용합니다.

그러나 프로그래머가 자신의 작업을 단순화하기 위해, 크로스 플랫폼 UI 프레임 워크를 사용할 수 있도록하려면 항상있다. 따라서이 문서는 일부 크로스 플랫폼 UI 프레임 워크는 이미 참조를 위해 존재에 대해 설명합니다. 하지만 그들은 다음의 세 가지 디자인 아이디어에 사용되는 일반적으로 다양하지만, :

  • 자신이 완전히 그려 제어 서로 다른 운영 체제에서 시스템 제어의 효과를 시뮬레이션합니다.

  • 운영체제의 표시를 실현할 시뮬레이션에서 다른 운영 체제에서, 기본 프레임이다.

  • 추상적 인 디자인, 네이티브 런타임에 매핑을 제어합니다.

유니티 / 일부일처

디자인 : 완전히 자신을 그릴 (표준 제어 개념이 없지만)

운영 체제 : 데스크톱 및 (등 게임 단말기 포함) 모바일 장치

디스플레이 : 운영 체제가 중요하지 않습니다

노사정 제어 : 언급하지 않기

모두 게임 엔진이다. 크로스 플랫폼 응용 프로그램을 설계하는 데 사용할해야하는 것은 기술적으로 가능하지만이 있기 때문에 어떤 운영 체제, 같은 것들을 제어하지 완벽하게 그려 자신을 필요로하므로 비 게임 애플리케이션의 개발, 어려움은 여전히 ​​존재한다. 운영 체제와 통합의 깊이, 더 많은 문제에 관해서는.

GTK 번호

디자인 : Linux 기본 프레임에서 다른 운영 체제에서 시뮬레이션을 실행할 수 있습니다.

운영 체제 : 데스크탑

디스플레이 : Linux의 긴밀한 통합

노사정 컨트롤 :이 일부 있지만, 매우 활성화되지 제공

GTK 本来就是一个针对桌面程序开发的跨平台界面框架,所以 GTK# 封装之后也是很好用的。然而,它在非 Linux 操作系统上的显示效果是很差的(比如 Windows 上和系统主题很不搭)。

MonoDevelop 是采用 GTK# 的 IDE。当微软/Xamarin 将它改造为 Visual Studio for Mac 时,很多界面部分就已经换成了系统原生的 Xamarin.Mac 了。

Windows Forms

设计思想:在 Windows 上是原生框架,在其他操作系统上也能模拟运行。

操作系统:桌面

显示效果:Windows 上深度集成

这是绝大部分 C# 程序员入门时学习的界面框架,能够快速集成 Windows 各种控件。虽然也支持 Windows CE 移动平台,但是基本没什么用。Mono 从2.0版本开始将它迁移到 Linux 等操作系统。Plastic SCM 最初也是使用 Mono Windows Forms 将自己的 Windows 客户端迁移到其他操作系统。但是 Mono 的实现在很多细节上并不完美,还需要很大精力去改进。Plastic SCM 后期就放弃了跨平台 Windows Forms 这条路。

Windows Forms 在 Windows 平台拥有大量第三方控件,而这些控件基本都不支持 Linux 等操作系统。尽管最近微软开始将 System.Drawing 变成一个跨平台技术,也使得官方的 Windows Forms 有可能成为一个跨平台界面方案,但是在非 Windows 平台的显示效果如何抑或是三方市场会不会跟随都还未知。

가장 중요한 것은, 원래 데스크탑 용으로 설계된 윈도우 폼, 그것은 잘 모바일 플랫폼을 지원 할 수 없다. 일찍이 MonoTouch는, 모노 Windows Forms의 팀은 아이폰 OS 플랫폼 UI 프레임 워크가 될 것이라고 생각했던 초기 개발 단계로 관련 기사 . 물론, 그들은 마침내 현명 대신 천연 코코아 터치 패키지 프로그램을 사용하는 아이디어를 떨어졌다.

WPF / Avalonia / UWP

디자인 아이디어 : 내 자신에 완전히립니다.

운영 체제 : 데스크탑 (UWP 지원 윈도우 모바일, Avalonia 모바일 지원이)

디스플레이 : Windows에서 깊은 통합

노사정 컨트롤 : Windows 플랫폼의 많은

UWP WPF 및 Microsoft 공식 기술이며, Avalonia의 공식 웹 사이트는 크로스 플랫폼 기술이 유사한 디자인을 시도해보십시오.

이 크로스 플랫폼과 같은 WPF 기술이 기술적으로 가능 있도록하고 완전히 크로스 플랫폼 (데스크톱 및 모바일 장치)가 델파이 FireMonkey WPF UI 프레임 워크와 같은 많은,하지만 문제는 많다.

Microsoft는 WPF 및 시스템 (테마의 여러 ​​세트 포함)의 통합을 개선 할 수있는 방법을 많이 가지고 있지만,하지만 항상 기본 윈도우 폼처럼 보이지 않았다. UWP 결국 기본 틀이 될 것이다, 그래서 물론, 윈도우 10의 시작 부분에서, 마이크로 소프트는 단순히 시스템이 프로그램과 함께 제공 개발하기 위해 UWP를 사용합니다.

Xamarin.Forms

디자인 : 기본 컨트롤 매핑.

운영 체제 : 모바일 플랫폼 (데스크톱 지원하려고 시작했다)

디스플레이 : 항상 깊이와 기본 시스템 통합

노사정 제어 : 신속한 개발

자 마린은 크로스 플랫폼 모바일 애플리케이션 처음이 기술을 개발하지만, 최근은 (GTK #으로 WPF 개발 및 통합하는) 같은 맥 OS와 같은 데스크톱 시나리오를 시작했다.

그리고 완전히 다른 내 자신의 렌더링 기술에 디자인에 사용 Xamarin.Forms 절차 추상적 컨트롤입니다 점이다. 버튼 디자인 시간 제어 목록, 등, 실행할 수있는 기본 운영 체제의 버튼, 목록 및 기타 컨트롤에 매핑됩니다. 그래서 디스플레이에서,이 기술의 최고입니다.

更为重要的是,Xamarin.Forms 新版本已经支持直接嵌入原生控件,也支持原生程序嵌入 Xamarin.Forms 界面,为开发者带来更多的灵活性。

但是这个技术暂时也是有局限的,就是它的控件都还是为移动应用设计。假如你的目标是设计一个 Office 或者 Visual Studio 那样的标准桌面应用,那么就会遇到困难。好在也不是所有场景我们都需要那么复杂的界面。

现在已经有很多第三方为 Xamarin.Forms 提供控件:

越来越多三方的加入也使得这个技术更加活跃。

xwt/Eto.Forms

设计思想:原生控件映射。

操作系统:桌面(开始尝试移动支持)

显示效果:总是和原生系统深度集成

三方控件:暂时不多

这两个技术都和 Xamarin.Forms 相似,但是它们都是从桌面平台开始的。

xwt 官方网站 是 Mono 项目的一部分。我个人认为它启发了 Xamarin.Forms 的设计。Eto.Forms 官方网站 相对比较新,而且开始进入移动平台。

这两个框架会不会最后到达 Xamarin.Forms 的热度还有待观察。

 

原文作者:Lex Li

原文地址:The Story About .NET Cross Platform UI Frameworks

作者:楚人Leo

出处:https://www.cnblogs.com/leolion/p/7144896.html

版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

 
 

现在用 C# 来开发跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码。这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统深度集成。

这里的深度集成主要是指一些 Windows 专有的系统特性:

  • Windows 托盘

  • Windows 跳转列表

  • Windows 系统主题

也包括一些移动平台的特性,例如 iOS 的原生滑动。

由于操作系统上其他程序一般都使用原生控件,于是只有当你的程序采用同样技术时,它才能很好地保持一致。这是一个大家一般遵守的界面开发约定。苹果公司有详细的界面设计准则,供开发者参考

游戏程序一般全屏,也不需要遵守这个约定。其他程序,例如 RealPlayer、QQ,也是违背这种约定。个人观点是,尽量不要搞特殊化。

因此如果你决定采用这个方案,那么在不同的操作系统上你需要学习不同的界面框架:

  • Windows:Windows Forms 

  • macOS:Xamarin.Mac(封装 Cocoa) 

  • Linux:GTK#(封装 GTK+)

  • iOS:Xamarin.iOS(封装 CocoaTouch)

  • Android:Xamarin.Android(封装 Android UI)

值得注意的是:

Windows 平台正在经历整体界面设计的变化,未来标准的界面框架应该是 UWP。WPF 虽然也是微软官方支持的技术,但是和 WinForms 相比,它依然是自己绘制,算不上原生界面框架。

MonoMac 因为各种原因已经废弃 参见

QtSharp 等框架都不太成熟。

市场上很多成功的项目都是这个方案的受益者。下面举几个例子:

  • 내쇼날 인스트루먼트의 LabVIEW 공식 웹 사이트의 아이폰 OS 플랫폼에서 사용 Xamarin.iOS 주소의 모바일 버전은 Windows 플랫폼, 윈도우 폼 (이 구체적으로 확인되지 않은)를 사용합니다.

  • 플라스틱 SCM의 공식 웹 사이트 리눅스 플랫폼 GTK에 #은 윈도우에서 윈도우 폼을 사용하여, 맥 OS에서 Xamarin.Mac를 사용합니다.

  • iCircuit 공식 웹 사이트 맥 OS Xamarin.Mac에서는 윈도우와 윈도우 폰에 마이크로 소프트 기술을 사용하여, 아이폰 OS, 안드로이드 Xamarin.Android 사용 Xamarin.iOS를 사용합니다.

그러나 프로그래머가 자신의 작업을 단순화하기 위해, 크로스 플랫폼 UI 프레임 워크를 사용할 수 있도록하려면 항상있다. 따라서이 문서는 일부 크로스 플랫폼 UI 프레임 워크는 이미 참조를 위해 존재에 대해 설명합니다. 하지만 그들은 다음의 세 가지 디자인 아이디어에 사용되는 일반적으로 다양하지만, :

  • 자신이 완전히 그려 제어 서로 다른 운영 체제에서 시스템 제어의 효과를 시뮬레이션합니다.

  • 운영체제의 표시를 실현할 시뮬레이션에서 다른 운영 체제에서, 기본 프레임이다.

  • 추상적 인 디자인, 네이티브 런타임에 매핑을 제어합니다.

유니티 / 일부일처

디자인 : 완전히 자신을 그릴 (표준 제어 개념이 없지만)

운영 체제 : 데스크톱 및 (등 게임 단말기 포함) 모바일 장치

디스플레이 : 운영 체제가 중요하지 않습니다

노사정 제어 : 언급하지 않기

모두 게임 엔진이다. 크로스 플랫폼 응용 프로그램을 설계하는 데 사용할해야하는 것은 기술적으로 가능하지만이 있기 때문에 어떤 운영 체제, 같은 것들을 제어하지 완벽하게 그려 자신을 필요로하므로 비 게임 애플리케이션의 개발, 어려움은 여전히 ​​존재한다. 운영 체제와 통합의 깊이, 더 많은 문제에 관해서는.

GTK 번호

디자인 : Linux 기본 프레임에서 다른 운영 체제에서 시뮬레이션을 실행할 수 있습니다.

운영 체제 : 데스크탑

디스플레이 : Linux의 긴밀한 통합

노사정 컨트롤 :이 일부 있지만, 매우 활성화되지 제공

GTK 번호도 패키지를 사용하는 것은 매우 쉽습니다 후 그래서 GTK는 항상 크로스 플랫폼 인터페이스의 데스크톱 응용 프로그램 개발 프레임 워크의 하나가되었습니다. 그러나, 비 Linux 운영 체제에서 나타나는 것은 좋지 않습니다 (예를 들어, Windows 시스템 테마와 매우 부조화에).

MonoDevelop GTK 번호는 IDE를 사용하는 것입니다. 마이크로 소프트 / 자 마린 Mac 용 비주얼 스튜디오로 변환 할 때, 많은 인터페이스 요소 Xamarin.Mac에게 기본 시스템을 대체되었습니다.

윈도우 폼

디자인 : 윈도우 기본 프레임에서 다른 운영 체제에서 시뮬레이션을 실행할 수 있습니다.

운영 체제 : 데스크탑

디스플레이 : Windows에서 깊은 통합

이 시간 학습 C # 프로그래머의 입력 인터페이스 프레임 워크의 대부분은 신속하게 통합 할 수있는 Windows 다양한 컨트롤입니다. 윈도우 CE 모바일 플랫폼하지만, 기본적으로 쓸모 지원하지만. 리눅스와 다른 운영 체제로 마이그레이션 시작부터 모노 버전 2.0. 플라스틱 SCM은 다른 운영 시스템에 자신의 윈도우 클라이언트를 마이그레이션 종료됩니다 모노 윈도우 폼을 사용하는 것이 처음이다. 그러나 모노 구현은 많은 세부에서 완벽하지뿐만 아니라 개선하기 위해 많은 노력을 필요로한다. 플라스틱 SCM 늦게 Windows가 길을 양식 크로스 플랫폼을 포기합니다.

Windows 플랫폼에서 Windows Forms의 리눅스 및 기타 운영 체제를 지원하지 않는 기본 컨트롤입니다 타사 컨트롤의 다수가 있습니다. 마이크로 소프트는 최근에 시작하지만 System.Drawing는 크로스 플랫폼 기술이 될뿐만 아니라 크로스 플랫폼 인터페이스 프로그램이 될 가능성이 공식 윈도우 폼을 만드는,하지만 어떻게 비 Windows 플랫폼을 표시하거나, 시장은 여전히 ​​알 수없는 삼자을 따를 것입니다 것입니다 .

가장 중요한 것은, 원래 데스크탑 용으로 설계된 윈도우 폼, 그것은 잘 모바일 플랫폼을 지원 할 수 없다. 일찍이 MonoTouch는, 모노 Windows Forms의 팀은 아이폰 OS 플랫폼 UI 프레임 워크가 될 것이라고 생각했던 초기 개발 단계로 관련 기사 . 물론, 그들은 마침내 현명 대신 천연 코코아 터치 패키지 프로그램을 사용하는 아이디어를 떨어졌다.

WPF / Avalonia / UWP

디자인 아이디어 : 내 자신에 완전히립니다.

운영 체제 : 데스크탑 (UWP 지원 윈도우 모바일, Avalonia 모바일 지원이)

디스플레이 : Windows에서 깊은 통합

노사정 컨트롤 : Windows 플랫폼의 많은

UWP WPF 및 Microsoft 공식 기술이며, Avalonia의 공식 웹 사이트는 크로스 플랫폼 기술이 유사한 디자인을 시도해보십시오.

이 크로스 플랫폼과 같은 WPF 기술이 기술적으로 가능 있도록하고 완전히 크로스 플랫폼 (데스크톱 및 모바일 장치)가 델파이 FireMonkey WPF UI 프레임 워크와 같은 많은,하지만 문제는 많다.

Microsoft는 WPF 및 시스템 (테마의 여러 ​​세트 포함)의 통합을 개선 할 수있는 방법을 많이 가지고 있지만,하지만 항상 기본 윈도우 폼처럼 보이지 않았다. UWP 결국 기본 틀이 될 것이다, 그래서 물론, 윈도우 10의 시작 부분에서, 마이크로 소프트는 단순히 시스템이 프로그램과 함께 제공 개발하기 위해 UWP를 사용합니다.

Xamarin.Forms

디자인 : 기본 컨트롤 매핑.

운영 체제 : 모바일 플랫폼 (데스크톱 지원하려고 시작했다)

디스플레이 : 항상 깊이와 기본 시스템 통합

노사정 제어 : 신속한 개발

자 마린은 크로스 플랫폼 모바일 애플리케이션 처음이 기술을 개발하지만, 최근은 (GTK #으로 WPF 개발 및 통합하는) 같은 맥 OS와 같은 데스크톱 시나리오를 시작했다.

그리고 완전히 다른 내 자신의 렌더링 기술에 디자인에 사용 Xamarin.Forms 절차 추상적 컨트롤입니다 점이다. 버튼 디자인 시간 제어 목록, 등, 실행할 수있는 기본 운영 체제의 버튼, 목록 및 기타 컨트롤에 매핑됩니다. 그래서 디스플레이에서,이 기술의 최고입니다.

기본 컨트롤에 직접 내장을 위해 더 중요한 것은, Xamarin.Forms 새 버전은 지원이 네이티브 프로그램이 Xamarin.Forms 인터페이스, 개발자를위한 유연성이 내장되어 지원합니다.

그러나 그것은 여전히 ​​모바일 애플리케이션을 위해 설계 제어한다, 또한 임시 기술적 한계입니다. 당신의 목표는 표준 데스크톱 응용 프로그램과 같은 사무실 또는 Visual Studio를 설계하는 경우 문제가 발생할 것입니다. 다행히, 모든 장면은 우리 모두가 그렇게 복잡한 인터페이스가 필요합니다.

Xamarin.Forms을 제공하기 위해 이미 많은 타사 컨트롤이 있습니다 :

또한 가입 점점 더 세 당사자 이상이 기술이 더욱 활성화됩니다.

XWT / Eto.Forms

디자인 : 기본 컨트롤 매핑.

운영 체제 : 데스크톱 (지원을 이동하려고 시작)

디스플레이 : 항상 깊이와 기본 시스템 통합

노사정 제어 : 일시적인 것보다 더

두 기술 및 Xamarin.Forms은 유사하지만 데스크탑 플랫폼은 시작에서 그들은 모두 있습니다.

XWT 공식 웹 사이트 모노 프로젝트의 일부입니다. 개인적으로, 나는 그것이 Xamarin.Forms 디자인 영감을 생각합니다. Eto.Forms 공식 웹 사이트는 비교적 새로운, 그리고 모바일 플랫폼을 입력하기 시작했다.

마지막으로 Xamarin.Forms 열을 도달 할 두 프레임 워크는두고 볼 일이다.

 

원래 저자 : 렉스 리

원본 주소 : 스토리 소개 .NET 크로스 플랫폼의 UI 프레임 워크

저자 : 추 레오

추천

출처www.cnblogs.com/bigmango/p/11422154.html