← முகப்பு

WinForms மாற்றுகள் ஒப்பீடு

Majorsilence.Forms vs .NET MAUI, Avalonia, Uno Platform, Eto.Forms, WPF மற்றும் Wine — ஒவ்வொன்றும் ஏற்கனவே உள்ள WinForms குறியீட்டுத் தளத்திடம் உண்மையில் என்ன கேட்கிறது.

இந்தப் பக்கம் ஒரு மொழிபெயர்ப்பு. ஆங்கிலப் பதிப்புடன் வேறுபாடு இருந்தால், ஆங்கிலப் பதிப்பே சரியானது. English

உங்களிடம் இயங்கும் ஒரு WinForms பயன்பாடு இருந்து, அது macOS அல்லது Linux-இல் தேவைப்பட்டால், உண்மையான கேள்வி “எந்த UI framework சிறந்தது” என்பதல்ல — “என் ஏற்கனவே உள்ள குறியீட்டில் எவ்வளவு தப்பிப் பிழைக்கும்?” என்பதுதான். கீழே உள்ள ஒவ்வொரு தேர்வும் நல்ல framework தான். அவை உங்கள் குறியீட்டுத் தளத்திடம் மிகவும் வேறுபட்ட அளவுகளைக் கேட்கின்றன, அவ்வளவுதான்.

சுருக்கமாக

தேர்வு UI முன்னுதாரணம் Linux macOS மொபைல் / இணையம் உங்கள் ஏற்கனவே உள்ள WinForms குறியீட்டுக்கு என்ன நடக்கும்
Majorsilence.Forms WinForms (Form, கட்டுப்பாடுகள், நிகழ்வுகள், Designer கோப்புகள்) ஆம் (Avalonia அல்லது GTK 4) ஆம் உலாவி (புதியது), Android மற்றும் iOS (ஆரம்ப நிலை); terminal-உம் தக்கவைக்கப்படுகிறது. namespace மாற்றம் + ஒரு இணக்க அடுக்கு; இயந்திரத்தனமான பகுதியை migrator தானியக்கமாக்குகிறது. Windows-இல் ஏற்கனவே உள்ள WinForms அல்லது WPF பயன்பாட்டுக்குள் ஒரு நேரத்தில் ஒரு கட்டுப்பாடாகவும் ஏற்றுக்கொள்ளலாம், .NET Framework 4.8-இலும் கூட
Avalonia XAML + MVVM ஆம் ஆம் ஆம் XAML views மற்றும் view models ஆக மீண்டும் எழுதப்படுகிறது
Uno Platform WinUI XAML + MVVM ஆம் ஆம் ஆம் WinUI XAML ஆக மீண்டும் எழுதப்படுகிறது
.NET MAUI XAML + MVVM அதிகாரப்பூர்வ ஆதரவு இல்லை ஆம் (Mac Catalyst) ஆம் மீண்டும் எழுதப்படுகிறது, மொபைல்-முதன்மைக் கட்டுப்பாட்டுத் தொகுப்புக்கு ஏற்ப வரம்பும் மாற்றப்படுகிறது
Eto.Forms அதன் சொந்த forms-பாணி .NET API, ஒவ்வொரு OS-க்கும் native widgets ஆம் ஆம் இல்லை Eto-வின் API-க்கு எதிராக மீண்டும் எழுதப்படுகிறது — வடிவில் பழக்கமானது, ஆனால் WinForms உடன் மூலக் குறியீட்டு இணக்கம் இல்லை
WPF XAML + MVVM இல்லை இல்லை இல்லை மீண்டும் எழுதப்படுகிறது, இன்னும் Windows-மட்டும்தான்
Wine எதுவும் இல்லை — Windows binary-ஐயே இயக்குகிறது ஆம் ஆம் இல்லை தொடப்படுவதில்லை, ஆனால் நீங்கள் வழங்குவது native பயன்பாடு அல்ல, போலச்செய்யப்பட்ட (emulated) Windows பயன்பாடு

Majorsilence.Forms இவற்றில் பலவற்றின் மீது கட்டப்பட்டது

இது பொதுவாகத் தவறாகப் புரிந்துகொள்ளப்படுவதால் தெளிவாகச் சொல்வது நல்லது: Majorsilence.Forms, Avalonia, Uno Platform அல்லது GTK உடன் போட்டியிடவில்லை. அது அவற்றைப் பயன்படுத்துகிறது. ஒவ்வொரு கட்டுப்பாடும் Majorsilence.Forms தானே SkiaSharp மூலம் வரைகிறது; அடியில் உள்ள ஹோஸ்ட் — இயல்புநிலையாக Avalonia, அல்லது Uno, அல்லது gir.core வழியாக ஒரு உண்மையான GTK 4 சாளரம் — சாளரத்தை உருவாக்கி, message loop-ஐ இயக்கி, Skia surface-ஐக் காட்டுகிறது. Windows-இல் அதே கட்டுப்பாடுகளை உண்மையான System.Windows.Forms அல்லது WPF சாளரங்களும் ஹோஸ்ட் செய்யலாம்; அதுவே படிப்படியான, இருந்த இடத்திலேயே நடக்கும் இடம்பெயர்த்தலைச் சாத்தியமாக்குகிறது. தளப் பின்தளங்கள் பாருங்கள்.

எனவே தேர்வு “Majorsilence.Forms அல்லது Avalonia” அல்ல. அது இதுதான்: Avalonia-வின் XAML-ஐ நேரடியாக எழுதுகிறீர்களா, அல்லது WinForms-ஐயே தொடர்ந்து எழுதி Avalonia-வை (அல்லது GTK 4, அல்லது Uno-வை) அடிக்கட்டமைப்பாக இருக்க விடுகிறீர்களா?

ஒவ்வொரு தேர்வாக

.NET MAUI

Xamarin.Forms-க்கு Microsoft-இன் அதிகாரப்பூர்வ பல்தள வாரிசு; பெரும்பாலான தேடல் முடிவுகள் தரும் பதிலும் இதுதான். புதிய மொபைல்-மற்றும்-desktop பயன்பாட்டுக்கு இது வலுவான தேர்வு.

ஏற்கனவே உள்ள WinForms LOB பயன்பாட்டுக்கு இது பொதுவாக மிகக் கடினமான பாதை: அதிகாரப்பூர்வ Linux ஆதரவு இல்லை, கட்டுப்பாட்டுத் தொகுப்பு மொபைல்-முதன்மையானது (DataGridView-க்குச் சமமானது இல்லை, வேறுபட்ட சாளர மற்றும் உரையாடல் சாளர மாதிரி), ஒவ்வொரு திரையும் உங்கள் WinForms குறியீட்டில் நிச்சயமாக இல்லாத ஒரு view-model அடுக்குடன் XAML-இல் மீண்டும் கட்டப்படுகிறது. *.Designer.cs கோப்புகளை அர்த்தமுள்ள வகையில் மீண்டும் பயன்படுத்த முடியாது.

Avalonia

முதிர்ந்த, உண்மையிலேயே பல்தளமான XAML framework — desktop, மொபைல் மற்றும் WebAssembly — சிறந்த Linux ஆதரவு மற்றும் Skia renderer உடன். நவீன XAML அடுக்கு வேண்டும், UI அடுக்கை மீண்டும் எழுதத் தயார் என்றால், இதுவே மிக வலுவான பொதுவான பதில்; Majorsilence.Forms இயங்கும் இயல்புநிலை ஹோஸ்டும் இதுதான்.

கவனிக்கவும்: Avalonia-வின் வணிகத் தயாரிப்பான XPF என்பது WPF-க்கான இணக்க அடுக்கு, WinForms-க்கு அல்ல; அது ஒரு System.Windows.Forms குறியீட்டுத் தளத்துக்கு உதவாது.

Uno Platform

WinUI/UWP XAML API-ஐ desktop, மொபைல் மற்றும் WebAssembly முழுவதும் செயல்படுத்துகிறது; மிகப் பரந்த எட்டல் மற்றும் வலுவான கருவிகளுடன். Avalonia போன்றதே முடிவின் வடிவமும்: சிறந்த இலக்கு, WinForms-இலிருந்து முழு UI மீண்டும் எழுதுதல். உங்கள் நிறுவனம் ஏற்கனவே இதில் முதலீடு செய்திருந்தால், இது Majorsilence.Forms பின்தளமாகவும் கிடைக்கிறது.

Eto.Forms

இந்தத் திட்டத்துக்கு வெளியே உணர்வில் இதற்கு மிக நெருக்கமானது: XAML-க்குப் பதிலாக forms-மற்றும்-கட்டுப்பாடுகள் API கொண்ட, ஒவ்வொரு தளத்தின் native widgets-உடன் (Windows-இல் WinForms, macOS-இல் Cocoa, Linux-இல் GTK) இணைக்கும் ஒரு பல்தள .NET UI நூலகம். ஒவ்வொரு OS-க்கும் native தோற்றம் உண்மையான நன்மை.

ஆனால் அதன் API அதற்கே உரியது — Eto.Forms.Form என்பது System.Windows.Forms.Form அல்ல, layout ஆயத்தொலைவு/anchor-அடிப்படையில் அல்லாமல் container-அடிப்படையிலானது, ஏற்கனவே உள்ள designer கோப்புகளுக்கு வழி இல்லை. பழக்கமான பாணியில் நீங்கள் மீண்டும் எழுதுகிறீர்கள். Majorsilence.Forms-க்கு இப்போது அதற்கென ஒரு GTK 4 பின்தளம் இருந்தாலும் அந்த ஒப்பீடு இன்னும் பொருந்தும்: Eto தனது கட்டுப்பாடுகளை GTK widgets மீது பொருத்துகிறது; Majorsilence.Forms GTK சாளரத்தையும் உள்ளீட்டு loop-ஐயும் ஹோஸ்டாக மட்டுமே பயன்படுத்தி, தனது சொந்த WinForms-வடிவக் கட்டுப்பாடுகளைத் தொடர்ந்து தானே வரைகிறது.

Mono-வின் System.Windows.Forms

Mono ஒரு WinForms மறுசெயலாக்கத்தை வெளியிட்டது; அதனால்தான் பழைய forum உரையாடல்களில் “WinForms Linux-இல் வேலை செய்கிறது” என்று காணப்படுகிறது. அது .NET Framework காலத்தை இலக்காகக் கொண்டது, நவீன .NET-க்கு ஒருபோதும் கொண்டு செல்லப்படவில்லை, இன்று புதிய port-க்கு ஏற்ற இலக்கு அல்ல.

Wine

Wine உங்கள் மாற்றப்படாத Windows binary-ஐ Linux மற்றும் macOS-இல் இயக்குகிறது. உங்கள் குறியீட்டில் எதுவும் மாறுவதில்லை; அது உண்மையிலேயே கவர்ச்சிகரமானது — அதை ஆதரிக்க வேண்டி வரும் வரை: நீங்கள் ஒரு Windows பயன்பாட்டையும் ஓர் இணக்க runtime-ஐயும் சேர்த்து வழங்குகிறீர்கள், Wine-இன் Win32/GDI+ உள்ளடக்கம் எவ்வளவோ அதைச் சுமக்கிறீர்கள், ஹோஸ்ட் OS உடனான ஒருங்கிணைப்பு தோராயமானது, installers மற்றும் updates சிக்கலாகின்றன. அது ஒரு deployment சுற்றுவழி, தள உத்தி அல்ல.

WPF-இலேயே இருத்தல்

WPF ஒரு நல்ல framework, WinForms-இலிருந்து கருத்தியல் ரீதியாகச் சிறிய படி மட்டுமே, ஆனால் அது Windows-மட்டும். அது “UI-ஐ நவீனமாக்கு” என்பதைத் தீர்க்கிறது; “macOS மற்றும் Linux-இல் இயக்கு” என்பதைத் தீர்க்கவில்லை. (உங்களிடம் ஏற்கனவே ஒரு WPF shell இருந்து அதற்குள் பல்தளத் திரைகள் வேண்டுமென்றால், சரியாக அதற்கே Majorsilence.Forms-இல் ஒரு WPF ஹோஸ்ட் பின்தளம் உள்ளது — ஆனால் WPF shell தானே Windows-இலேயே இருக்கும்.)

Majorsilence.Forms எப்போது சரியான பதில்

எப்போது அது சரியான பதில் அல்ல

அடுத்து