it-swarm-id.com

WPF vs WinForms - perspektif programmer Delphi?

Saya telah membaca sebagian besar utas tentang WPF vs WinForms dan saya menemukan diri saya terjebak dalam ambivalensi malang yang dapat Anda alami ketika memutuskan antara teknologi sebelumnya yang sudah dicoba dan benar (Winforms), dan itu penerusnya (WPF).

Saya seorang programmer veteran Delphi bertahun-tahun yang akhirnya membuat lompatan ke C #. Rekan programer Delphi saya di luar sana akan mengerti bahwa saya senang mengetahui bahwa Anders Hejlsberg, dari ketenaran Delphi, adalah arsitek di balik C #. Saya memiliki kecanduan yang kuat untuk komponen khusus VCL Delphi, terutama yang terlibat dalam membuat Wizards multi-langkah dan komponen yang bertindak sebagai wadah untuk komponen anak.

Dengan latar belakang itu, saya berharap Anda yang beralih dari Delphi ke C # dapat membantu saya dengan keputusan WinForms vs WPF saya untuk menulis aplikasi awal saya. Catatan, saya sangat tidak sabar ketika melakukan pengkodean dan hal-hal seperti dukungan debugger otomatis lengkap dan lengkap yang lengkap dapat membuat atau menghancurkan proyek untuk saya, termasuk dapat menemukan informasi yang tersedia tentang fitur API dan panggilan dan terlebih lagi, solusi untuk bug .

Utas dan komentar SO pada rentang tanggal awal 2009 memberi saya perhatian besar terhadap WPF ketika sampai pada frustrasi potensial yang dapat merusak kode pengembangan C # UI saya. Di sisi lain, menghabiskan banyak waktu mempelajari teknologi API yang, bahkan jika tidak ditinggalkan, akan segera diganti (WinForms), sama-sama mengganggu dan saya menemukan dukungan GPU di WPF yang menggoda.

Karena itu ambivalensi saya. Karena saya belum belajar teknologi baik namun saya memiliki kesempatan langka untuk mendapatkan awal yang baru dan tidak harus menghadapi kurva "unlearning" besar saya telah melihat orang menyebutkan dalam berbagai utas ketika seorang programmer WinForms membuat pindah ke WPF. Di sisi lain, jika menggunakan WPF hanya akan terlalu membuat frustrasi atau memiliki konsekuensi negatif utama lainnya untuk pengembang RADyang tidak sabar seperti saya, maka saya akan tetap menggunakan WinForms hingga WPF mencapai tingkat dukungan yang sama dan kemudahan penggunaan. Untuk memberi Anda contoh konkret dalam psikologi saya sebagai seorang programmer, saya menggunakan VB dan kemudian Delphi untuk sepenuhnya menghindari rasa sakit yang sama sekali terhadap pengkodean dengan MFC, perpustakaan Windows UI yang diderita banyak pengembang saat mengembangkan awal Aplikasi Windows. Saya tidak pernah menyesali keberuntungan saya karena menghindari MFC.

Juga menyenangkan untuk mengetahui apakah Anders Hejlsberg memiliki andil dalam arsitektur WPF dan/atau WinForms, dan jika ada perbedaan dalam visi kreatif dan kemudahan penggunaan yang terkandung dalam basis kode. Akhirnya, untuk programmer Delphi lagi, beri tahu saya berapa banyak "IDE schock" yang saya gunakan ketika menggunakan WPF yang bertentangan dengan WinForms, terutama ketika datang ke dukungan debugger. Setiap komentar pasar kerja yang diperbarui untuk 2011 akan dihargai juga.

38
Robert Oschler

Jika Anda memiliki latar belakang Delphi, Anda akan kecewa dengan WinForms. Anda akan mencoba melakukan hal-hal yang mudah di VCL, hanya untuk menemukan bahwa mereka sangat sulit, atau bahkan tidak mungkin. WPF akan jauh lebih sedikit membatasi.

Sebagai contoh, berikut adalah beberapa batasan WinForms yang telah kami alami:

  • WinForms tidak memiliki apa pun yang sebanding dengan TAction, jadi jika Anda terbiasa mengkodekan dengan tindakan, berbagi teks dan ikon yang sama antara item menu dan tombol toolbar dan menu klik kanan, memusatkan logika yang memungkinkan Anda, dan memperbarui keadaan yang diaktifkan di latar belakang dengan OnUpdate ... Anda akan membenci WinForms, di mana Anda harus melakukan semua itu dengan cara yang keras dan rawan kesalahan.
  • WinForms 'lama (.NET 1.0 vintage) MainMenu tidak mendukung gambar di sebelah item menu, dan yang baru (diperkenalkan dalam. NET 2.0) MenuStrip adalah penuh dengan bug bahwa Microsoft menolak untuk fix (karena perbaikan bug mungkin merusak kompatibilitas ke belakang).
  • Banyak kontrol, mis. TreeView, sangat kurang sempurna dibandingkan dengan rekan-rekan VCL-nya (lambat sekali, tidak ada undian pemilik, banyak opsi kustomisasi hilang, dll.)
  • Tidak ada yang menyerupai komunitas pengembang kontrol pihak ketiga yang semarak di Delphi. Ada pustaka kontrol kualitas di luar sana, tetapi Anda membayarnya - penawaran gratis seperti VirtualTreeView tidak tersedia untuk WinForms.

WPF sedikit lebih sederhana dalam beberapa hal daripada WinForms, tetapi jauh lebih fleksibel.

  • Anda menginginkan sesuatu seperti TAction? WPF memiliki ICommand, yang sama kaya dengan yang biasa Anda gunakan (tapi pastikan Anda membaca artikel MVVM Josh Smith - biasanya Anda harus mengaktifkan/menonaktifkan perintah Anda secara manual ketika keadaan berubah, tetapi versinya secara otomatis mengeluarkan kode Anda yang aktif di latar belakang seperti yang biasa Anda lakukan dengan OnUpdate).
  • Anda ingin gambar pada menu? Itu dibangun di (dan tempat di dekat kereta di WinForms).
  • WinForms meninggalkan undian pemilik pada beberapa kontrol penting, tetapi jika Anda menggunakan WPF sebagai gantinya, Anda tidak perlu undian pemilik - jika Anda ingin node TreeView Anda memiliki teks hitam diikuti oleh angka biru di dalam tanda kurung, Anda cukup memasukkannya ke dalam DataTemplate Anda dan berfungsi, tidak diperlukan kode draw-owner yang jelek.
  • Anda ingin kontrol pihak ketiga? Dalam banyak kasus, Anda tidak membutuhkannya, karena Anda dapat memperluas apa yang ada dalam cara WinForms dan, ya, pengembang VCL hanya bisa bermimpi.

WPF memiliki kurva belajar yang sangat curam, tetapi jika Anda mengambil buku yang bagus (misalnya " WPF 4 Unleashed "), itu akan membantu Anda mengatasi yang terburuk - dan Anda akan menjadi senang bekerja dengan kerangka kerja yang tidak akan menahan Anda seperti WinForms.

21
Joe White

Saya biasanya sangat terkejut dengan orang-orang yang mengatakan bahwa mereka tidak memiliki pengalaman yang baik dengan WPF. Saya seorang pengembang yang beralih dari C++/MFC ke C #/WinForms ke C #/WPF. Transisi dari WinForms ke WPF tidak mudah karena mempelajari XAML tidak terlalu mudah tetapi begitu Anda mendapatkannya, ini adalah teknologi yang luar biasa. Saya, untuk satu, tidak bisa kembali ke WinForms. WPF sangat luar biasa.

Hal lain yang mengganggu saya adalah bagaimana orang biasanya mengasosiasikan WPF dengan UI saja. Ini memang 100 kali lebih baik daripada WinForms menurut saya dalam kemudahan desain UI, tetapi ada banyak alasan lain Anda akan senang menggunakan WPF:

  1. UI, tentu saja.
  2. Binding Sihir biasa. Fitur paling kuat setelah UI. Aplikasi LOB paling diuntungkan dari ini.
  3. Perintah.
  4. Pemisahan masalah. Desainer bekerja pada desain, program programmer.
  5. Properti terlampir. Anda dapat memperluas fungsionalitas kontrol pihak ketiga tanpa kode sumber (meskipun titik ini dapat menjadi bagian dari poin pertama).
  6. Transisi mudah ke Silverlight (Keduanya web & WP7)

Anda mungkin tidak setuju dengan saya tentang poin terakhir sebagai alasan bagi Anda untuk belajar WPF, tetapi jika Anda bertanya kepada saya, itu adalah salah satu yang terbesar. Anda belajar WPF, Anda dapat dengan mudah beralih ke Silverlight. Silverlight tumbuh besar, dan ini juga merupakan teknologi yang luar biasa.

Dan alasan terbesarnya adalah, ini adalah masa depan. Mungkin digabung dengan Silverlight tetapi keterampilannya akan tetap sama.

Jadi, saya akan sangat menyarankan Anda untuk menggunakan WPF.

13
Yogesh

Jelas WPF adalah cara untuk berpikir di masa depan. Menguasai itu sulit, tetapi platform ini dirancang dengan sangat baik dan fleksibel.

Beberapa baris saran:

  • Mulai dengan mudah: Jangan mencoba menerapkan proyek pertama Anda hanya dengan menggunakan MVVM atau animasi mewah. Mulai dengan jendela, tombol, dan daftar.
  • Manfaatkan DataBinding.
  • Beli buku WPF Unleashed oleh Adam Nathan.
5
Eduardo Molteni

Pertama-tama saya harus mencatat bahwa saya sebagian besar adalah pengembang asp.net, meskipun saya telah menggunakan banyak winforms sebelumnya. Beralih ke WPF tidak sebesar yang Anda buat (imo) setelah sekitar satu minggu (lebih dari 40 jam), sebagian besar adalah sifat kedua lagi.

Bagaimanapun saya yakin Anders Hejlsberg adalah salah satu arsitek di balik WPF, setidaknya menurut penerbit buku ini->

Sebagai salah satu arsitek di balik WPF, Chris Anderson dengan terampil menjelaskan tidak hanya 'bagaimana', tetapi juga 'mengapa.' Buku ini adalah sumber yang bagus bagi siapa pun yang ingin memahami prinsip-prinsip desain dan praktik terbaik WPF. "–Anders Hejlsberg, rekan teknis, Microsoft Corporation

http://www.Amazon.com/Essential-Windows-Presentation-Foundation-WPF/dp/0321374479

4
Spooks

Winforms hampir identik dengan pengembangan Delphi. Dan, tentu saja, ada alasan untuk itu. Sama seperti model objek Delphi/Object Pascal sangat memengaruhi C #, demikian pula sistem formulir memengaruhi Winforms.

WPF tampaknya menjadi arah yang dituju; telah dikatakan bahwa (cantik!) VS2010 UI berbasis WPF, tidak seperti generasi sebelumnya yang dibangun di WinForms.

Jika Anda ingin tetap berada di zona nyaman Anda, ikuti winforms. Jika Anda ingin terjebak pada yang terbaru & terhebat, benamkan diri Anda di WPF.

2
3Dave

Saya bukan programmer Delphi, tapi ya saya telah bekerja pada WinForm (berat) dan WPF (kurang dari sedang). Saya setuju dengan Anda sampai batas tertentu pada tingkat frustrasi untuk seseorang yang akan beralih dari WinForm ke WPF karena saya sendiri berada dalam situasi itu, tetapi hanya sampai saya terbiasa. Pelajari dan lihat betapa indah dan fleksibelnya WPF dibandingkan dengan WinForm. Ini memiliki kurva belajar yang berat, setidaknya untuk seseorang yang berasal dari latar belakang Delphi, dan bukan Winform. Bagi Anda, itu pasti layak bergerak ke arah WPF daripada WinForm, dan nilainya waktu.

Anda mungkin ingin melihat tautan di bawah ini untuk memulai dengan:

2
Kumar

Saya telah melakukan beberapa pekerjaan Windows Forms (kebanyakan di Pocket PCs), ditambah beberapa lingkungan non-NET lainnya yang menggunakan prinsip yang sama. Ketika saya pindah ke WPF sekitar tiga tahun yang lalu, selama beberapa bulan pertama saya bersumpah. Akhirnya itu hanya "diklik" dan saya belum melihat ke belakang - sebenarnya saya akan kecewa jika proyek saya berikutnya mengharuskan saya untuk kembali ke Formulir Windows.

Terakhir kali Formulir Windows diperbarui pada tahun 2005 (VS 2005.) Masih ada di sana tetapi tidak lagi ditingkatkan oleh Microsoft. WPF adalah anak baru di blok untuk aplikasi desktop, jadi jika Anda akan pindah ke platform .NET menggunakan alat MS, maka saya akan mengatakan itu adalah taruhan yang aman. Beberapa orang Mendorong Silverlight sebagai solusi desktop, tetapi ketika saya melihatnya sebagai suatu kemungkinan, saya menemukan itu memiliki terlalu banyak keterbatasan (yang mungkin masuk akal dalam konteks web, tetapi tidak begitu banyak pada desktop.)

Intinya: Ada kurva belajar yang curam, dan saya masih mempelajarinya. Tapi itu semua sepadan. Sangat menyenangkan.

1
MetalMikester

Jika Anda akan menulis aplikasi baru dari awal, menggunakan WinForms akan menjadi kesalahan. Ini pada dasarnya mati dari perspektif investasi. Microsoft akan mempertahankannya untuk waktu yang lama, tetapi Anda tidak akan mendapatkan fitur baru, atau dukungan baru, dll. WPF adalah arah yang jelas untuk aplikasi desktop untuk masa depan pada platform MS.

Dari perspektif karir, Anda juga jauh lebih baik mengetahui WPF vs WinForms. Untuk alasan yang sama di atas. Juga, Anda akan memiliki pengetahuan yang baik tentang belajar Silverlight. Ada satu ton tumpang tindih antara kedua platform tersebut.

Dan akhirnya, WPF lebih menyenangkan. Dan lebih kuat.

Kurva pembelajaran lebih curam, saya berikan itu. Tetapi pada akhirnya lebih bermanfaat.

1
RationalGeek

Satu pertimbangan tambahan yang harus disebutkan adalah bahwa ada tidak ada rencana untuk dukungan WPF di mono . Saya menyadari Anda tidak menyatakan minat pada dukungan lintas platform (mono), tetapi mungkin ada peluang untuk ini di masa depan Anda (jika Anda menggunakan Winforms). Agaknya, dukungan untuk WPF dalam mono (atau serupa) akan datang.

sunting: Seperti tautan yang saya berikan, dan komentar Gulshan menyoroti, Moonlight adalah upaya open-source yang dipimpin oleh tim mono untuk memberikan dukungan Silverlight lintas-platform .

0
Argalatyr