ข้อได้เปรียบของแอพ WPF เทียบกับ Winform สำหรับแอพธุรกิจ? [ปิด]


84

ฉันรู้จัก asp.net และการพัฒนา winform ฉันไม่ใช่นักพัฒนาประเภทที่กระโดดเข้าสู่เทคโนโลยีใหม่เพียงเพราะมันใหม่ ต้องให้ผลประโยชน์พิเศษแก่ฉันเช่นผลผลิตที่สูงขึ้น

อะไรคือข้อดีของ WPF เหนือ Winforms สำหรับแอปธุรกิจล้วน ๆ ฉันไม่สนใจอาหารตาพิเศษภาพเคลื่อนไหวการไล่ระดับสีเอฟเฟกต์การแสดงภาพและอื่น ๆ ที่ WPF มอบให้ แอปธุรกิจมีไว้สำหรับการป้อนข้อมูลการรายงานข้อมูลและอาจมีแผนภูมิและการแสดงรูปภาพแบบคงที่

WPF จะช่วยในแอพเหล่านี้อย่างไร? การผูกข้อมูลที่ดียิ่งขึ้น? WinForm เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้วและฉันชอบที่ฉันสามารถทำทุกอย่างใน Visual Studio เทียบกับ IDE หลายตัวสำหรับ WPF (ตระกูล VS & Blend) นอกจากนี้ฉันคิดว่า WPF ไม่มีการควบคุมการผูกข้อมูลที่สมบูรณ์เหมือนกับคู่ของ Winform (DataGridView..etc) AFAIK Microsoft จะยังคงสนับสนุน Winforms ไปอีกหลายปี

พยายามโน้มน้าวคนอย่างฉันให้เปลี่ยน


1
ฉันคิดว่ามีเหตุผลที่ทรงพลังบางประการที่จะเปลี่ยนไปใช้ WPF ฉันไม่ต้องการที่จะเขียนบล็อกที่ฉันเพิ่งเขียนซ้ำดังนั้นจะใส่ลิงก์ไปที่นี่
Andy Brown

7
นี่เป็นคำถามที่ยอดเยี่ยม ควรเปิดใหม่. ฉันเป็นนักพัฒนา winform ที่เปลี่ยนไปใช้ WPF เส้นโค้งการเรียนรู้เป็นอย่างมาก แต่ WPF คืออนาคตเนื่องจากเป็นภาษาที่เปิดเผยโดยธรรมชาติเช่น HTML Winform ส่วนใหญ่เป็นขั้นตอนซึ่งเหมาะสำหรับอัลกอริทึม แต่มีรายละเอียดมากกว่าสำหรับการแสดง UI ลองคลายซิปไฟล์พิมพ์. XPS คุณจะเห็น WPF xaml ที่นั่น Winform มีข้อ จำกัด มากเกินไป แม้ว่าจะยังใช้งานได้ แต่ WPF "eye-candy" สามารถช่วยลดระดับความเครียดของผู้ใช้ได้ คุณสามารถนำเสนอแถวของระเบียนได้หลายแถวด้วยวิธีที่มีความหมายมากขึ้นนอกเหนือจาก listview หรือ datagrid
Jeson Martajaya

คำตอบ:


101

ฉันรู้จัก asp.net และการพัฒนา winform ฉันไม่ใช่นักพัฒนาประเภทที่กระโดดเข้าสู่เทคโนโลยีใหม่เพียงเพราะมันใหม่ ต้องให้ผลประโยชน์พิเศษแก่ฉันเช่นผลผลิตที่สูงขึ้น

สำหรับทีมของฉัน WPF ได้พิสูจน์แล้วว่าเร็วกว่า WinForms ในการพัฒนาแอปพลิเคชันด้วย เราเพิ่งเปิดตัวแอปขนาดกลางในรอบ 32 วัน เรามีข้อได้เปรียบจากผู้พัฒนา WPF ที่มีประสบการณ์ในทีมและผู้ที่ไม่มีประสบการณ์ซึ่งกระตือรือร้นที่จะเรียนรู้เทคโนโลยี มีขวัญกำลังใจที่ดีและผลผลิตก็น่าประทับใจ

WinForm เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้วและฉันชอบที่ฉันสามารถทำทุกอย่างใน Visual Studio เทียบกับ IDE หลายตัวสำหรับ WPF (ตระกูล VS & Blend)

คุณคิดว่าตัวเองเป็นคนเขียนโค้ดด้วยมือหรือเป็นคนเขียนโค้ดแบบลากแล้ววาง? หากคุณคิดว่าตัวเองเป็นนักลากและหยดการครอบตัดเครื่องมือ WPF ในปัจจุบันอาจไม่เหมาะสำหรับคุณ อาจจะรอ Visual Studio 2010? ฉันทำงานเกือบเฉพาะใน XAML WPF'ers ส่วนใหญ่อาจยอมรับว่านี่เป็นวิธีที่มีประสิทธิภาพที่สุดในการสร้างแอปพลิเคชัน WPF ในขณะนี้ แต่แล้วฉันก็สร้าง HTML ด้วยมือด้วยดังนั้นฉันจึงรู้สึกเป็นธรรมชาติสำหรับฉัน ...

อะไรคือข้อดีของ WPF เหนือ Winforms สำหรับแอปธุรกิจล้วน ๆ ฉันไม่สนใจอาหารตาพิเศษภาพเคลื่อนไหวการไล่ระดับสีเอฟเฟกต์การแสดงภาพและอื่น ๆ ที่ WPF มอบให้

ฉันเคยคิดแบบนี้ แต่ฉันเพิ่งพัฒนาแอปพลิเคชันทางธุรกิจซึ่งมีการไล่ระดับสีภาพเคลื่อนไหวพื้นฐานและเอฟเฟกต์ ฟีเจอร์แฟนซีเหล่านี้ถูกเพิ่มเข้ามาเพื่อปรับปรุงประสบการณ์ของผู้ใช้ เหตุใดแอปธุรกิจจึงควรเป็น Battleship Grey เหตุใดจึงใช้ไม่ได้? จริงอยู่มันไม่ใช่สีการไล่ระดับสีภาพเคลื่อนไหวที่ทำให้แอปธุรกิจใช้งานได้ แต่การใช้เอฟเฟกต์เหล่านี้สามารถช่วยประสบการณ์ของผู้ใช้ได้และนี่คือสิ่งที่สำคัญสำหรับฉัน ฉันสามารถทำทุกอย่างที่ทำในแอป WPF ใน WinForms ได้ - มันจะใช้เวลานานกว่านี้มาก

การผูกข้อมูลที่ดียิ่งขึ้น?

การสนับสนุน databinding อย่างแท้จริงนั้นยอดเยี่ยมมาก เป็นฟีเจอร์ที่ฉันชอบมากที่สุดในแพลตฟอร์ม ลองดูCheatsheet Databinding ที่ยอดเยี่ยมนี้

พยายามโน้มน้าวคนอย่างฉันให้เปลี่ยน

ฉันตัดสินใจแล้วว่าจะไม่พยายามโน้มน้าวให้ใครเปลี่ยนมาใช้ WPF นักพัฒนาที่ฉันพยายาม "โน้มน้าว" (นักพัฒนา Winforms ที่มีประสบการณ์ทั้งหมด) มักจะมีปัญหากับแพลตฟอร์ม พวกเขาไม่ได้ลงทุนในเทคโนโลยีนี้ พวกเขาไม่ "เข้าใจ" ฉันขอแนะนำให้ผู้คนตรวจสอบเทคโนโลยีเพื่อดูว่าเหมาะสมกับพวกเขาในฐานะนักพัฒนาหรือไม่ เส้นโค้งการเรียนรู้เป็นอย่างมาก หากคุณเรียนรู้จากหนังสือโปรดดูโพสต์ SO นี้สำหรับบทวิจารณ์เล็ก ๆ เกี่ยวกับหนังสือ WPF หากคุณเรียนรู้จากวิดีโอตรวจสอบวิดีโอ windowsclient.net WPF หากคุณเรียนรู้จากตัวอย่างลองดูสิ่งนี้หรือสิ่งนี้โพสต์ ลืมทุกสิ่งที่คุณรู้เกี่ยวกับ WinForms WPF ดูเหมือนจะใกล้เคียงกับ ASP มากกว่า WinForms สร้างแอปพลิเคชันตัวอย่าง ดูว่าเหมาะสำหรับคุณและทีมของคุณหรือไม่

เนื่องจากคุณมีทักษะหลายอย่าง (ทักษะ asp.net/winform) คุณอาจเห็นข้อได้เปรียบของการเพิ่มทักษะใน WPF เนื่องจากมีความเกี่ยวข้องอย่างใกล้ชิดกับ Silverlight Silverlight เติมเต็มช่องว่างระหว่างแอปพลิเคชันไคลเอนต์และเว็บแอปพลิเคชันที่หลากหลาย

โดยส่วนตัวแล้วฉันรู้สึกว่า WPF เป็นเทคโนโลยีฝั่งไคลเอ็นต์ที่ดีที่สุดสำหรับเฟรมเวิร์ก. NET และโดยทั่วไปจะหลีกเลี่ยงการพัฒนาใน WinForms สำหรับการทำงานในอนาคต YMMV

ขอให้โชคดีกับการตัดสินใจของคุณ


10
การตอบสนองที่ยอดเยี่ยม Brad - บริษัท ของเรากำลังดิ้นรนกับการตัดสินใจนี้ การสังเกตของคุณได้รับการพิจารณาอย่างดีและสอดคล้องกับสิ่งที่เราได้เห็นจนถึงตอนนี้ เรายังไม่ได้ตัดสินใจ แต่ย่อหน้า Battleship Grey ของคุณสะท้อนถึงเราอย่างมากเนื่องจากเราได้เห็นผลกระทบของ UI ที่ดูดีต่อยอดขาย ขอขอบคุณที่สละเวลาเขียนคำตอบที่ยอดเยี่ยม
gidmanma

3
มีความแตกต่างอย่างมากระหว่างการมีนักพัฒนา WPF ที่มีประสบการณ์เพียงคนเดียวในทีมและไม่มีเลย จับคู่กับช่วงการเรียนรู้ที่สูงชันและหากคุณกำลังทำธุรกิจอยู่คุณจะไม่ประสบความสำเร็จเลย ในความเป็นจริง WPF นั้นยอดเยี่ยมมากถ้าคุณมีใครสักคนคอยแนะนำคุณและไม่มากนักหากคุณกำลังเรียนรู้ในขณะที่คุณไป และถ้าเป็นเช่นนั้นเตรียมตัวให้พร้อมสำหรับการปรับโครงสร้างใหม่
Sergey Akopov

3
+1 - "เหตุใดแอปธุรกิจจึงควรเป็น Battleship Gray" - เห็นด้วยอย่างยิ่ง!
Samuel Slade

5
-1 หากเหตุผลเดียวที่จะย้ายไปยัง WPF ขึ้นอยู่กับความสามารถในการสร้างการไล่ระดับสีและเปลี่ยนกล่องโต้ตอบแอปพลิเคชันของคุณจาก "เรือรบสีเทา" คุณต้องเรียนรู้วิธีใช้ WinForms จริงๆ
deegee

1
+1 คำตอบแบบเต็ม ลิงค์ windowsclient.net วิดีโอ WPF ไม่ทำงานใครรู้ว่าจะหาได้ที่ไหน
Damien

11

ฉันมีประสบการณ์ winforms ค่อนข้างน้อยและเล่นกับ WPF เพียงเล็กน้อย แต่ฉันขายแล้ว

ทำไม?

  • มีความยืดหยุ่นมากขึ้น หากคุณต้องการทำอะไรที่ไม่ได้มาตรฐานในรูปแบบ winforms ความเจ็บปวดและความทุกข์ก็ตามมา แต่ใน WPF นั้นง่ายมาก

  • การเชื่อมต่อฐานข้อมูลที่ดีขึ้นมาก

  • พัฒนาได้ง่ายขึ้น (เมื่อคุณเข้าใจแนวคิดหลักแล้วซึ่งจะต้องใช้เวลาสักพัก)


4

เมื่อฉันเริ่มดู WPF ฉันถือว่าเป็น "Winforms with Vector Graphics" และวิ่งตรงเข้าไปที่ด้านข้างของหน้าผาแห่งการเรียนรู้ วิธีที่เหมาะสมในการเปลี่ยนจาก WinForms เป็น WPF คือการใช้ยาเสพติดชนิดใดก็ตามที่คุณสามารถวางมือได้อย่างกล้าหาญเพื่อที่จะลืมทุกสิ่งที่คุณรู้จากนั้นเริ่มจากศูนย์

อย่างจริงจัง - มันสะอาดและง่ายกว่ามากถ้าคุณใช้รูปแบบเช่น Model-View-ViewModel อ่านเพิ่มเติมได้ที่The Orbifold , ชุดข้อความGoogle GroupsและChannel9

เมื่อถึงจุดหนึ่งคุณจะมีความศักดิ์สิทธิ์และเริ่มต้นการค้นหาทุกอย่าง code-behind ของคุณจะไม่มากไปกว่าการเรียก InitializeComponent ()


4

ขอบคุณสำหรับโพสต์ บริษัท ของฉันมีเวลามากมายในการลงทุนใน WinForms ฉันนึกไม่ถึงว่าจะมีแอปพลิเคชั่นขนาดกลางออกมาภายใน 32 วัน ระยะเวลาการรับรองของเราคือเดือนที่สิ้นสุดและรอบการเปิดตัวในบางครั้งทุกปีหรือนานกว่านั้น (แม้ว่าจะยึดติดกับปรัชญาการพัฒนา Agile มากที่สุดก็ตาม) นั่นคือลักษณะของแอปพลิเคชันที่เราพัฒนา

ฉันเพิ่งเล่นกับ WPF เป็นครั้งแรกและพบว่าฉันสามารถได้รับประโยชน์บางอย่างจาก WPF ใน WinForms โดยใช้ ElementHost ฉันขยาย WPF TextBox จากนั้นรวมคลาสเพิ่มเติมของฉันไว้ใน Win Forms UserControl และตอนนี้มีแอป WinForms โดยใช้กล่องข้อความ WPF นั้นพร้อมด้วยการรองรับการตรวจสอบการสะกด

ฉันประทับใจที่เห็น Microsoft คิดเช่นนี้ (โฮสติ้ง WPF ใน WinForms และในทางกลับกัน) เนื่องจากฉันไม่เห็น บริษัท ของฉันย้ายไปยัง WPF จริงๆเว้นแต่เราจะสามารถเปลี่ยนเป็นระยะเวลานานได้ มีการลงทุนใน WinForms มากเกินไปเพื่อเริ่มต้นใหม่ จากประสบการณ์ล่าสุดของฉันฉันอาจเริ่มพูดคุยกับนักพัฒนาคนอื่น ๆ เกี่ยวกับประสบการณ์ล่าสุดของฉันและดูว่าความคิดของพวกเขาคืออะไร ฉันคิดว่า WPF จะใช้เวลาพอสมควรในการทำความคุ้นเคยและดูเหมือนว่าจะสอดคล้องกับความคิดเห็นอื่น ๆ




0

ลองนึกภาพว่าคุณสามารถใช้ UI (XAML) เดียวกันจากหน้า ASP.NET/(Silverlight) กับแอปเดสก์ท็อปของคุณได้หรือไม่ คุณจะสร้างมันเพียงครั้งเดียว แต่เชื่อมต่อกับอย่างใดอย่างหนึ่ง .... นั่นคือหนึ่งในเจตนาของ WPF / XAML ... เราอยู่ที่นั่นจริงๆหรือยัง? ยังไม่ได้ แต่เข้าใกล้


4
การพยายามใช้ UI เดียวกันใน Silverlight และแอปเดสก์ท็อปเป็นหนึ่งในสิ่งที่ฟังดูดีในทางทฤษฎี แต่ในทางปฏิบัติฉันคิดว่าจะนำไปสู่ ​​UI ที่เส็งเคร็งบนทั้งสองแพลตฟอร์ม
Orion Edwards

ใช่การทับซ้อนระหว่าง WPF และ Silverlight2 มีขนาดใหญ่ แต่ไม่เพียงพอที่จะทำให้โค้ดของคุณพกพาได้ ความแตกต่างในความสามารถในการผูกจะ จำกัด การพัฒนา WPF ของคุณมากเกินไป
geofftnz

1
ฉันบอกว่าเรายังไม่ค่อยอยู่ตรงนั้น ... แต่นั่นคือเจตนาสูงสุด
Webjedi

geofftnz: คุณหมายถึง จำกัดการพัฒนาSilverlightหรือเปล่า?
Abdu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.