Saya mencoba untuk mendapatkan gambaran umum tentang teknologi yang berbeda, untuk digunakan saat membangun GUI di Windows World.
Untuk konteksnya, saya sedang membangun sebuah game multiplayer platform 2d. (Hanya untuk tujuan pembelajaran ..)
Guru saya mengatakan bahwa menurutnya WPF adalah cara yang tepat, tetapi tampaknya dia hanya membandingkannya dengan Formulir Windows.
Pemahaman saya adalah, bahwa di tahun 2015 ini, Formulir Windows benar-benar mati?
Dalam pertanyaan stackover lainnya, mereka mengatakan WinRT + XAML adalah untuk gedung Metro GUI (hal ubin Window 8!), Dan tampaknya WPF adalah sesuatu yang digunakan hanya untuk desktop di Window 7/8 dan terkait erat dengan Silverlight ..
- Desktop adalah tempat tinggal aplikasi lama (merah. WFP).
- Aplikasi kelas baru, aplikasi Metro, dapat dibangun dengan berbagai cara, termasuk dengan VB.NET, C # atau C ++. Ketiga opsi bahasa ini dapat menggunakan XAML untuk membangun UI. Alternatifnya adalah menggunakan JavaScript / HTML5 / CSS untuk pengembangan UI dan kode aplikasi.
Pertanyaan saya yang sebenarnya adalah: Bukankah ada SATU cara yang baik untuk membangun GUI di Window World?
Dan jika tidak, teknologi mana yang harus digunakan di Window 7, Window 8 (Desktop dan Metro), Window Phone, (Dan Windows 10!), Dan bahkan x-box ..
Apakah dengan teknologi yang berbeda dibandingkan dengan cara ini?
Menurut Anda, apa hal yang tepat untuk menginvestasikan waktu?
sumber
Jawaban:
Ada banyak hal di sini, tapi begini:
Sejauh apa untuk menghabiskan waktu, itu tergantung pada apa yang Anda targetkan :). Mempelajari WPF / UWP + XAML akan memberi Anda banyak manfaat jika Anda ingin tetap "terkini" dalam pengembangan GUI .NET, jadi itulah yang akan saya lakukan. WPF memiliki fitur paling banyak, jadi dengan memulai dari sana Anda hanya perlu mencari solusi untuk apa yang hilang di UWP (atau teknologi berbasis XAML lainnya).
Jika Anda melakukannya, pastikan untuk mempelajari pola MVVM (Model-View-View Model). Ini bekerja sangat baik dengan teknologi berbasis XAML, dan memungkinkan Anda untuk berbagi banyak logika antara aplikasi WPF dan UWP Anda. Logika yang sama juga dapat digunakan jika Anda akhirnya mengembangkan aplikasi Xamarin untuk iOS / Android, dll.
Perhatikan bahwa untuk pengembangan game yang sebenarnya , Anda menginginkan kerangka kerja game yang sebenarnya (seperti Unity3D atau bahkan XNA). Anda dapat melakukannya di WPF, dan itu adalah pilihan yang lebih baik daripada Winforms, tetapi keduanya tidak dimaksudkan untuk game.
sumber
RenderTransform
,Viewport3D
dan sejenisnya. Mereka adalah akselerasi perangkat keras.Ini adalah utas yang cukup lama, tetapi seperti saya menemukan ini melalui google (karena tertarik), mungkin orang lain juga dapat menjangkau di sini. Ini adalah pertanyaan yang sering ditanyakan oleh programmer baru. Jadi saya ingin menjawab beberapa hal juga, sekarang Windows 10 dirilis secara resmi.
Pertama, seseorang tidak boleh memulai dengan Formulir Windows lagi. Ini adalah teknologi paling matang untuk saat ini, tetapi tidak akan ada pengembangan Windows Forms lebih lanjut, ini hanya dalam tahap pemeliharaan sekarang. WPF secara aktif dikembangkan (terakhir saya baca). Tetapi sekarang, Aplikasi Universal Windows (WinRT satu) tidak lagi perlu digunakan dalam layar penuh, dan dapat digunakan dalam mode berjendela seperti aplikasi desktop lainnya (WPF & WinForms). Ini sangat meningkatkan kegunaannya pada komputer non-tablet. Saya yakin ini juga akan menjadi masa depan untuk aplikasi desktop. Meskipun, perangkat lunak WPF adalah aplikasi desktop tradisional (tanpa izin, hanya UAC). Apa pun itu, tidak peduli Anda mempelajari pengembangan WPF atau WinRT (menggunakan .Net), Anda akan mempelajari keduanya. Keduanya adalah XAML + C # (atau bahasa .Net lainnya). Saya baru saja belajar WPF ketika WinRT keluar dengan Windows 8. Saya merasa seperti di rumah sendiri, hanya sedikit perubahan kecil yang Anda akan segera terbiasa. Tidak yakin tentang skenario MVVM (pengikatan data) di WinRT. Saya sendiri masih mempelajari aspek WPF itu.
Window 10 baru saja diluncurkan. Windows 8 / 8.1 tidak melihat kesuksesan sebanyak Windows 7. Jadi jika Anda ingin membangun aplikasi yang memiliki audiens yang lebih luas, Anda harus menggunakan WPF untuk saat ini. Namun dalam waktu dekat, WinRT akan menjadi cara yang tepat.
Untuk pertanyaan Anda, "teknologi mana yang harus digunakan di
Window 7, Window 8 (Desktop dan Metro), Window Phone, (Dan Windows 10!), Dan bahkan x-box.", Jawabannya adalah Windows Universal Apps. Inilah alasan pasti mengapa kerangka kerja ini dikembangkan. Satu teknologi yang akan digunakan untuk mengembangkan aplikasi untuk semua perangkat. Desktop, Tablet, Ponsel (termasuk Android yang menggunakan Xamarin yang dibundel dengan Visual Studio 2015), Xbox, dan IoT (Internet of Things).sumber
Saya akan mencoba menjawab hanya satu dari pertanyaan Anda:
Apakah Formulir Windows benar-benar mati?
Tidak, teknologi bentuk Windows tidak mati. Saya akan memberi tahu Anda alasannya. WPF dan XAML adalah teknologi yang sangat komprehensif dan kompleks dan Anda dapat membangun UI yang sangat bagus. Tapi! Teknologi ini membutuhkan pengetahuan yang mendalam. Untuk tata letak dasar, Anda tidak memerlukan begitu banyak pengetahuan, tetapi untuk beberapa tata letak lanjutan Anda harus memiliki pengetahuan yang mendalam dan ketika saya mulai dengan teknologi ini dan menghabiskan banyak waktu mencari beberapa tip di google. Jadi ketika saya membutuhkan beberapa Formulir sederhana untuk input pengguna, saya selalu memilih teknologi Windows Forms yang sangat sederhana dan mudah. Ini juga alasan mengapa teknologi ini sangat sukses ketika datang ke dunia. Saat Anda memulai dengan WPF, Anda juga perlu tahu apa itu pola desain MVVM dan beberapa programmer yang tidak berpengalaman bingung dengan itu.
sumber
Sekarang sudah April 2016 dan masih belum ada jawaban yang jelas untuk ini. Kami sedang mengembangkan aplikasi desktop pemantauan kinerja waktu nyata yang sangat modern yang harus merender beberapa bagan dan tampilan, bercampur dengan teks dan berbagai grafik lainnya. Aplikasi kami adalah C #, WPF dengan .NET Framework 4.5.2 tetapi kami masih menulis beberapa komponen menggunakan WinForms dan GDI + untuk mendapatkan kinerja yang dapat diterima. Kami hanya belum mencapainya dengan WPF. Kami bahkan telah mengembangkan beberapa tampilan dalam aplikasi dengan DirectX tetapi itu menambahkan banyak kerumitan yang hanya dapat didukung oleh beberapa tim. Kesederhanaan dan kecepatan murni yang bisa kita dapatkan dari hosting tampilan WinForms dalam WPF dan kecepatan GDI + memberi kita apa yang kita butuhkan dengan mahalnya struktur View / ViewModel murni dan harus berurusan dengan berbagai masalah ruang udara. Aplikasi kami cukup ahli dan saya ingin menyingkirkan WinForms sama sekali, tetapi sayangnya hal ini belum memungkinkan dalam kasus kami. Untuk performa murni, Anda harus menggunakan DirectX atau WinForms.
sumber
Dua sen saya ... jika Anda menginginkan aplikasi universal sejati, yang berarti program yang dapat berjalan di sistem operasi desktop APA PUN termasuk Windows, WinForms masih merupakan cara yang tepat. Pastikan Anda tetap kompatibel dengan CLR, dan Anda dapat menerapkan di Mac dan Linux melalui Mono. Manfaat yang sangat besar. XAML mungkin keren, tetapi tidak akan di-porting ke sistem operasi lain.
Menurut saya pribadi, model bisnis UWP sandbox (quicksanded?) Menakutkan; itu melawan keterbukaan yang telah dipertahankan Windows sejak awal.
sumber
Saya telah bekerja dengan teknologi Microsoft selama 10 tahun. Hal terpenting yang saya pelajari adalah tidak hanya mendengarkan apa yang ditawarkan Microsoft kepada Anda. Saat Microsoft mengatakan ini adalah masa depan, ada kemungkinan 50% untuk melakukan kesalahan. Microsoft pasti akan melakukan yang terbaik yang mereka bisa untuk mempromosikan produk yang telah mereka investasikan, tetapi itu tidak berarti Anda harus mengikuti. Lihat apa yang terjadi pada WCF dan Silverlight.
Meskipun WPF adalah platform yang sangat bagus untuk dipelajari, ia memiliki kurva belajar yang sangat besar. Saya tidak berpikir pengembang mana pun dengan pengalaman pemrograman kurang dari 5 tahun dapat melakukan WPF dengan benar.
Dengan mengikuti pola MVVM, Anda akan menemukan bahwa melakukan sesuatu yang relatif mudah di WinForm bisa menjadi sangat menantang di WPF. Seperti mewarnai sel berdasarkan beberapa kondisi setelah pembaruan, atau gulir baris dalam tampilan dan sorot.
Tentu saja Anda dapat mengatakan bahwa Anda tidak perlu melakukan MVVM. Letakkan saja kode Anda di belakang kode dan buat berfungsi. Ya itu akan berhasil, tapi apa gunanya menggunakan WPF? Mengapa tidak menggunakan Formulir Menang saja?
sumber
Ini adalah utas lama tetapi utas penting dengan kemajuan kerangka .NET saat ini, fitur c #, dan peningkatan fokus pada c # sebagai pilihan pengembangan game.
WPF hampir tidak pernah dipilih sebagai platform game ac # dalam semua kejujuran. Masalah wilayah udara WPF membuat orang takut dengan cukup cepat. Saya tidak berpikir banyak (jika ada) judul utama atau mesin permainan arus utama mendukung WPF sebagai platform target baik karena ini. WPF menjadi platform yang bagus untuk peluncur game!
WinForms, sementara sekarang dalam mode pemeliharaan, masih akan menjadi pilihan yang valid untuk tahun-tahun mendatang. Sudah teruji waktu dan stabil. Dari apa yang saya lihat, bahkan di tahun 2017, WinForms masih menjadi platform paling umum yang dipilih untuk pengembangan game berbasis c #.
Melihat data Survei Perangkat Keras Steam Anda dapat melihat bahwa pada saat menulis jawaban ini (Juli 2017), Windows 10 64-bit sekarang mendominasi platform game PC dengan pangsa pasar 50%, diikuti oleh Windows 7 64-bit pada 32% dan Windows 8.1 64-bit hampir 7%. Semua pangsa pasar platform OS lainnya sangat kecil sehingga hampir tidak layak untuk mempertimbangkan apa pun selain ketiganya.
Dengan kondisi game PC saat ini, WinForms adalah penyebut paling umum yang menargetkan semua 3 platform PC teratas. Melihat ke masa depan, UWP akan menjadi platform target terbaik untuk pengembangan game c # karena Windows 7 dan 8 kehilangan pangsa pasar yang signifikan ke Windows 10, kecuali ada platform baru yang menggantikannya. Jadi itu hanya berdasarkan angka.
Jika memilih berdasarkan tingkat kompatibilitas terbaik per platform OS daripada mendukung pangsa pasar maksimum, pilihannya akan lebih seperti:
Sebagian besar jawaban lain berpusat di sekitar pengembangan aplikasi windows standar tetapi pengembangan game adalah ranah yang sangat berbeda dan faktor yang berbeda akan memengaruhi pilihan Anda, seperti OS target dan pilihan API grafis atau mesin game apa yang paling Anda dukung.
sumber
WinRT telah ada di desktop untuk waktu yang lama, saya menulis WinRT, yang berjalan di atas meja saya. Dan di bawah Windows 10, aplikasi tersebut akan mendukung lokasi non-dok (berjendela seperti yang mungkin Anda kenal secara tradisional).
Saya tidak akan merekomendasikan WinForms atau WPF kepada siapa pun yang memulai hari ini. Mereka harus mempelajari WinRT / XAML terutama. Dan pelajari beberapa Win32 / .net saat mereka membutuhkannya, bergantung pada bahasa pilihan mereka ..
"mereka mengatakan WinRT + XAML adalah untuk gedung Metro GUI (hal ubin Jendela 8!)" - Ini adalah abstraksi yang berlebihan, sehingga tidak berguna. WinRT adalah runtime, seperti Win32, ini bukan hanya untuk GUI, jadi apa yang "mereka katakan" adalah BS lengkap. XAML adalah lapisan UI (seperti XAML di WPF) tetapi untuk mengatakan itu Metro GUI juga salah, tidak ada yang namanya Metro GUI lagi. XAML adalah Lapisan UI Windows. Dan "ubin Windows 8!" adalah ekspresif dari visi terowongan orang-orang tertentu. Ini akan seperti saya mengatakan Win32 adalah menu start. Anda bisa melihat betapa konyolnya pernyataan itu.
sumber
Saya mengalami pertanyaan ini sekitar satu tahun yang lalu. Saya menyimpulkan bahwa XAML, WPF atau WinRT adalah lingkungan pengembangan yang benar untuk memulai.
Saya sangat merekomendasikan penggunaan .Net Framework untuk lapisan data (termasuk Layanan Web dan lapisan RESTful (JSON)) dan HTML5 / CSS3 murni serta Javascript untuk lapisan presentasi web Anda.
Di dalam Windows 10 Anda dapat mengintegrasikan aplikasi web apa pun sebagai aplikasi metro di luar kotak.
WinRT, XAML, WPF dan hal-hal ms serupa hanya berjalan di windows dan memiliki banyak batasan.
Jadi setelah satu tahun saya masih sangat senang dengan keputusan saya untuk tidak menggunakan WinRT atau XAML untuk proyek baru saya.
sumber