2009-08-26 100 views

Trả lời

10
  • Để tìm hiểu.
  • Để có (tức là có) kiểm soát tốt hơn sự xuất hiện của chương trình của bạn
  • Để được hưởng lợi từ dữ liệu dễ dàng hơn ràng buộc, gây nên, phong cách

(tôi không thấy gì hỗ trợ DB đã có để làm với it)

49

Một câu trả lời rõ ràng là WPF cung cấp trải nghiệm người dùng phong phú hơn WinForms, cho phép hoạt ảnh ngay cả 3D trong giao diện người dùng chẳng hạn.

Từ góc độ phát triển, nó đi một chặng đường dài để thực thi việc tách giao diện người dùng (trong XAML) khỏi logic nghiệp vụ (trong VB.NET hoặc C#) luôn là điều tốt.

Tìm kiếm của Google cho "WPF vs WinForms" sẽ trả về rất nhiều trang thảo luận vấn đề này. Tôi sẽ không lặp lại tất cả các phát hiện của họ ở đây, nhưng this page tăng một số điểm thú vị:

  1. Databinding trong WPF là vượt trội so với những gì Windows Forms cung cấp.
  2. UI và C# luận lý kinh doanh có thể được sạch sẽ tách ra trong WPF
  3. Storyboard
  4. dữ liệu/kiểm soát mẫu - một cách sạch hơn nhiều so với bất cứ điều gì của Windows Các hình thức có thể cung cấp.
  5. Kiểu - mát mẻ và đơn giản. Dễ dàng tạo kiểu cho tất cả các nút của bạn trong ứng dụng để có cùng giao diện và cảm giác .
  6. Ngay cả khi nhà thiết kế VS bị hỏng, dễ dàng mã XAML.
  7. Ảo hóa giao diện người dùng - Tôi đã có lưới với 100 nghìn hàng, đánh dấu một thị trường chuyển động . Hiệu suất sẽ trở nên đáng sợ nếu không hiển thị trực quan giao diện người dùng miễn phí.
  8. Hỗ trợ 3D.
  9. Không có gì khoa học nhưng phát triển UI nhanh hơn trong WPF - có thể chỉ vì ứng dụng WPF có vẻ lạnh hơn vào cuối
  10. tôi có thể thêm một kinh nghiệm kỹ sư tài để đội của tôi, và không có C# kiến ​​thức ông có thể làm việc kỳ diệu trong Expression Blend và cung cấp cho các ứng dụng thương mại phía trước văn phòng một makeover mà được đảm bảo để giành chiến thắng so với người dùng doanh nghiệp .
+0

Ví dụ của bạn "3D" bị vô hiệu bởi thực tế là WInforms nhận OpenTK/GLControl. Vui lòng xóa nó khỏi danh sách một chiều và thiên vị vô lý của bạn. – Krythic

+0

@Krythic Tôi chỉ trích dẫn một người khác với danh sách đó, vì vậy nó không phải là danh sách "của tôi". Và mọi thứ đã chuyển từ năm 2009 khi tôi đăng câu trả lời này, vì vậy một số khía cạnh nhất định cũng có thể đã thay đổi. – ChrisF

14

WPF là nền tảng hiện tại để phát triển các ứng dụng dành cho máy tính để bàn. Nó là một khung công tác tăng tốc phần cứng hiện đại, tiên tiến để phát triển các ứng dụng duy trì sự phân tách mối quan tâm. Nó hỗ trợ dựng hình nâng cao đồ họa 2D và 3D 2D, cung cấp một phạm vi rộng lớn các khả năng để xây dựng các giao diện người dùng phong phú, tương tác và chất lượng.

Winforms, mặt khác, cung cấp nền tảng cơ bản để phát triển các ứng dụng windows "cổ điển" với giao diện chuẩn của bạn bằng cách sử dụng các điều khiển tiêu chuẩn. Nó không cung cấp các tính năng phong phú, tăng tốc phần cứng, vector 2D và 3D mà WPF cung cấp. Các ứng dụng Winforms có khuynh hướng có sự liên kết lớn hơn nhiều giữa hành vi ứng dụng và giao diện người dùng (xem), trình bày một nền tảng ít linh hoạt hơn để phát triển các ứng dụng.

Vì bạn chọn loại nào, nó hoàn toàn phụ thuộc vào nhu cầu của bạn.Nếu bạn cần đồ họa vector, dựng hình 3D, khả năng tạo giao diện người dùng phong phú, tương tác, hoạt hình, hiện đại và/hoặc muốn duy trì sự tách biệt mối quan tâm, WPF chắc chắn là lựa chọn đúng đắn. Nếu bạn không cần điều đó, và chỉ cần tạo một giao diện người dùng đơn giản để giải quyết một vấn đề đơn giản, winforms sẽ đáp ứng nhu cầu của bạn tốt.

1

Nếu bạn muốn có giao diện người dùng phong phú như hình ảnh được đăng trong số previous question của mình, tôi khuyên bạn nên sử dụng WPF. Ngoài việc làm cho nó dễ dàng hơn để tạo ra một ứng dụng đẹp mắt, nó cũng là công nghệ mà Microsoft sẽ thúc đẩy trong tương lai. Hầu như không có sự phát triển mới cho Winforms.

2

Không ai đề cập đến khả năng kiểm tra tốt hơn của các ứng dụng WPF (nếu chúng được viết đúng cách, ví dụ dựa trên mẫu MVVM).

4

WPF có thể sử dụng tăng tốc phần cứng ở một mức độ nào đó, nhưng dự kiến ​​sẽ cải thiện theo thời gian.

Ngoài ra, vì XAML, bạn có nhiều tùy chọn hơn cho "làm công cụ", khai báo so với chương trình hoặc hỗn hợp cả hai.

Microsoft không còn phát triển tích cực trên winforms nữa, họ đang đẩy mạnh WPF và vì lý do chính đáng.

WPF cho phép thiết kế "thuyết bất khả tri về độ phân giải" dễ dàng hơn nhiều. Để đạt được điều đó trong winforms, nó là lot nhiều công việc hơn.

Mẫu MVVM đã được đề cập trong một trong các nhận xét, điều này cho phép một người thực hiện thử nghiệm không thực hiện so với GUI trên mã của bạn, đó là một chiến thắng lớn.

3

Sự khác biệt quan trọng nhất giữa WinForms và WPF là thực tế trong khi WinForms đơn giản là một lớp trên đầu các điều khiển Windows tiêu chuẩn (ví dụ TextBox), WPF được xây dựng từ đầu và không phụ thuộc vào các điều khiển Windows chuẩn trong hầu hết mọi tình huống. Điều này có vẻ giống như một sự khác biệt tinh tế, nhưng nó thực sự không phải là, mà bạn chắc chắn sẽ nhận thấy nếu bạn đã từng làm việc với một khuôn khổ phụ thuộc vào Win32/WinAPI.

Ví dụ tuyệt vời về điều này là một nút có hình ảnh và văn bản trên đó. Đây không phải là một điều khiển Windows tiêu chuẩn, do đó, WinForms không cung cấp cho bạn khả năng này ra khỏi hộp. Thay vào đó, bạn sẽ phải tự vẽ hình ảnh, triển khai nút của riêng bạn hỗ trợ hình ảnh hoặc sử dụng điều khiển của bên thứ 3. Với WPF, một nút có thể chứa bất cứ thứ gì vì nó chủ yếu là một đường viền với nội dung và các trạng thái khác nhau (ví dụ: bị ảnh hưởng, lơ lửng, ép). Nút WPF là "trông ít", giống như hầu hết các điều khiển WPF khác, có nghĩa là nó có thể chứa một loạt các điều khiển khác bên trong nó. Bạn muốn một nút có hình ảnh và một số văn bản? Chỉ cần đặt một hình ảnh và một điều khiển TextBlock bên trong của nút và bạn đã hoàn tất! Bạn chỉ đơn giản là không có được sự linh hoạt này ngoài các điều khiển WinForms tiêu chuẩn, đó là lý do tại sao có một thị trường lớn để thực hiện khá đơn giản các nút điều khiển như các nút có hình ảnh và vân vân. Hạn chế cho tính linh hoạt này là đôi khi bạn sẽ phải làm việc chăm chỉ hơn để đạt được điều gì đó rất dễ dàng với WinForms, bởi vì nó được tạo ra chỉ cho kịch bản bạn cần nó cho.Ít nhất đó là cách nó cảm thấy trong đầu, nơi bạn thấy mình tạo mẫu để làm cho một ListView với một hình ảnh và một số văn bản liên kết độc đáo, một cái gì đó mà WinForms ListViewItem làm trong một dòng mã. Đây chỉ là một sự khác biệt, nhưng khi bạn làm việc với WPF, bạn sẽ nhận ra rằng đó là lý do cơ bản cho nhiều sự khác biệt - WPF chỉ đơn giản là làm mọi thứ theo cách riêng của nó, cho tốt hơn và cho tệ hơn. Bạn không còn bị ràng buộc để làm những việc theo cách của Windows, nhưng để có được sự linh hoạt như thế này, bạn phải trả thêm một chút công sức khi bạn thực sự chỉ muốn làm mọi thứ theo cách của Windows.

+5

ít nhất là có sự liên kết để trở lại bài báo bạn đã đánh cắp từng từ ... http://www.wpf-tutorial.com/about-wpf/wpf-vs-winforms/ – obe

Các vấn đề liên quan