2009-10-07 43 views
9

Gần đây tôi bắt đầu sử dụng WCF, và tôi đã rất ấn tượng, rất nhiều, vì vậy tôi tự hỏi về việc nhận được nhiều hơn vào WPF, nhưng kinh nghiệm ban đầu của tôi với XAML không phải là tuyệt vời, khoảng 1 năm trước đây.Những lợi ích chính khi tham gia WPF là gì?

Mọi thứ được cải thiện, là việc phân phối trình duyệt thực sự độc lập (có thể chạy trên các trình duyệt khác ngoài IE).

Năng suất phát triển có tăng lên, phân tách mã/ui tốt hơn không? Liệu nó đòi hỏi phải học silverlight?

Nếu bạn đã có trải nghiệm thực tế với WPF, vui lòng nêu rõ sự ủng hộ và chống đối của bạn.

+0

Bạn có yêu cầu cụ thể về Silverlight không? Hay về XBAP? hoặc các ứng dụng máy tính để bàn WPF? –

+0

WPF không dành cho trình duyệt dành cho máy tính để bàn, Silverlight chạy trong trình duyệt, cả hai đều sử dụng XAML cho giao diện người dùng. – CSharpAtl

Trả lời

12

Đầu tiên:

WPF là 100% trình duyệt độc lập, vì WPF không chạy trong trình duyệt.

XBAP (hiện không còn được dùng nữa) và Silverlight chạy trong trình duyệt, nhưng cả hai đều là tập hợp con của WPF.

Thứ hai:

Lợi ích chính của WPF là bản chất thứ bậc của các cấu trúc giao diện, bạn có thể tạo ra. Nếu bạn đã từng thực hiện lập trình ASP.NET, WPF là một động thái tự nhiên hơn WinForms.

Tính năng gắn kết trong WPF khác, nhưng tốt hơn, IMO.

Tóm lại: XAML và sự phức tạp của nó là một đường cong học tập lớn, và WPF và XAML đi rất nhiều trong tay. Nhưng một khi bạn hiểu những điều cơ bản và có thể bắt đầu xây dựng các GUI cơ bản với nó, bạn sẽ không bao giờ muốn sử dụng lại WinForms nữa.

Về ưu và khuyết điểm, tôi muốn nói chỉ con thực cho WPF là đường cong học tập lớn. Nó có thể làm mọi thứ mà WinForms có thể thực hiện từ quan điểm .NET và dễ sử dụng hơn (một khi bạn hiểu nó) hơn WinForms. Nơi duy nhất nó có thể là "thiếu" là trong thao tác GDI + trực tiếp, nhưng có thể bạn sẽ muốn tránh điều đó bất cứ khi nào có thể. Nếu nó trở nên cần thiết trong một dự án WPF, chỉ cần tạo một điều khiển WinForms và lưu trữ nó trong WPF. Không phải là giải pháp thanh lịch nhất, nhưng nó có thể hoàn thành công việc.

+0

Vì vậy, điều này thay thế giao diện winform cổ điển clunky? Và tất cả điều này có thể được thực hiện với VS2008? –

+0

@JL: Có. Mặc dù bạn vẫn có thể làm các giao diện "xám xịt" với WPF (và nó rất dễ dàng, IMO) bạn có thể làm được nhiều hơn rất nhiều. Thêm vào đó, bạn có được một sự phân tách lớn các mối quan tâm được xây dựng trong cấu trúc của WPF, một cái gì đó bạn sẽ không nhận được với WinForms. – Randolpho

2

Tôi có kinh nghiệm thực sự với WPF, nhưng không phải với WinForms. Tôi đã sử dụng WPF trong 8 tháng nay, và tôi thấy vui, dễ học, khó làm chủ. Các ràng buộc, lệnh & phong cách đó là các tính năng cơ bản nhất của WPF IMO, rất dễ học và sử dụng. Tôi biết các lệnh và phong cách không có trong WinForms, ràng buộc, nhưng như Randolpho nói, nó khác.

Ngoài ra WPF sử dụng DirectX để vẽ đồ họa của nó ngay bây giờ GDI hoặc GDI +, điều này cũng mang lại sự linh hoạt hơn nhiều trong việc vẽ đồ họa 2D tiên tiến hoặc thậm chí đồ họa 3D. Cũng vì nó nằm trên đầu DirectX, GPU được sử dụng để vẽ tất cả đồ họa thay vì CPU (như GDI), vì vậy theo cách nào đó, bạn đang sử dụng ít năng lượng xử lý hơn từ CPU.

+0

+1 để đề cập đến DirectX thay vì GDI. WPF không sử dụng GDI/+ ở tất cả, trong khi WinForms dày đặc kết thúc tốt đẹp GDI/+. – Randolpho

+0

Cảm ơn, tôi nghĩ rằng đó là một sự khác biệt cốt lõi từ WinForms, hãy thử làm một số rendering 3D với WinForms = P lol – Carlo

+0

Chắc chắn là một sự khác biệt cốt lõi. Nhưng không nhất thiết cho dựng hình 3D; nhiều hơn cho bản vẽ dựa trên * vector *. WPF thực sự là tốt nhất bằng cách sử dụng 2d rendering thông qua DirectDraw, vv – Randolpho

4

Nếu bạn đang phát triển trong trình duyệt, có thể bạn muốn sử dụng Silverlight. Nó tương tự như WPF, nhưng độc lập với trình duyệt và đạt được nhiều lực kéo về mặt sử dụng, cũng như rất nhiều sự chú ý từ Microsoft. (Ví dụ, các dịch vụ RIA mới là khá tốt đẹp, cho các ứng dụng kinh doanh.)

Cả WPF và Silverlight cung cấp nhiều lợi ích giống nhau khi so sánh với các công nghệ cũ để phát triển giao diện người dùng, chẳng hạn như Windows Forms.

  • Tính năng gắn kết trong WPF và Silverlight rất mạnh mẽ và rất linh hoạt. Điều này có thể tăng tốc độ phát triển và cung cấp mức độ an toàn khó tạo trước đó.
  • Phát triển giao diện người dùng, mặc dù khác nhau, linh hoạt hơn nhiều. Việc tách bản trình bày khỏi hành vi trong WPF và Silverlight khiến việc tạo mã UI rất dễ dàng, rất nhanh chóng.
  • Giao diện chỉ huy mới, kết hợp với DataTemplates, cho phép phát triển dễ dàng hơn nhiều theo cách rất linh hoạt, có thể kiểm tra và bảo trì (bằng cách sử dụng mẫu MVVM).

Tất cả những điều này dẫn đến sự phát triển lâu dài hơn rất nhiều, một khi bạn vượt qua đường cong học tập, theo ý kiến ​​của tôi.

4

Nhược điểm

  1. WPF không phải là quá dễ dàng để tìm hiểu.

  2. WPF vẫn còn trẻ. Để cung cấp một ví dụ: Để sử dụng điều khiển lưới dữ liệu, bạn phải tải xuống bộ công cụ WPF không được hỗ trợ. Silverlight 3 bây giờ hỗ trợ mạng lưới dữ liệu nguyên bản và tôi khá chắc chắn rằng VS 2010 sẽ có lưới dữ liệu cuộn vào WPF. Nhưng phải mất thời gian để trưởng thành.

  3. Như với bất kỳ công nghệ nào không phải lúc nào cũng tin tưởng các mẫu. Tôi đã nhìn thấy một số XAML khá xấu trong tự nhiên (thậm chí từ Microsoft).

Ưu

  1. Giao diện người dùng được khai báo thể hiện dưới dạng một hệ thống các đối tượng đại diện trong XAML thay vì trong một thiết kế trực quan mà chỉ cho phép tương tác qua chuột. (Visual Studio và Expression Blend cũng có một nhà thiết kế trực quan hoạt động trên đỉnh XAML.)

  2. Điều khiển tính năng thành bảng bố cục linh hoạt và kéo tài liệu từ điển cho phép bạn tạo giao diện người dùng thông thạo nhất quán và đẹp mắt. Thêm vào đó, bạn có các công cụ để tạo ra trải nghiệm người dùng thực sự tuyệt vời đang làm.)

  3. Điều khiển bao gồm bố cục và hành vi. Bạn có thể thay thế hoàn toàn bố cục và vẫn giữ hành vi. Điều này nâng cao hơn nhiều so với nút được tạo chủ sở hữu hoặc hộp danh sách có hình ảnh.

  4. Hỗ trợ mạnh mẽ cho ràng buộc dữ liệu giúp dễ dàng tách logic ứng dụng thành các lớp có thể quản lý được. Không bao giờ một lần nữa bạn sẽ phải chuyển đổi một bit giao diện người dùng bên trong một đối tượng mô hình miền.

  5. Mô hình kết xuất trong WPF không phải là mô hình GDI mà phương thức OnPaint của bạn được gọi để vẽ một khu vực cụ thể của cửa sổ. Thay vào đó bạn thêm các phần tử vào một đồ thị cảnh (thường được biểu diễn trong XAML), sau đó được kết xuất bằng DirectX. Theo nhiều cách, đây là một mô hình tốt hơn nhiều.

Tôi ấn tượng bởi thiết kế tổng thể của WPF, và trong ý kiến ​​của tôi, các nhà thiết kế của WPF thực sự là những người thông minh đã làm rất tốt. Nhưng làm việc với WPF vẫn có thể là một trải nghiệm bực mình vì bạn không tìm ra giải pháp "thích hợp" cho vấn đề của bạn hoặc vì một số khía cạnh của WPF đơn giản là gây phiền nhiễu (như khi bạn muốn tùy chỉnh một phần nhỏ của một built-in kiểm soát và đột nhiên phải đối mặt với việc sửa đổi một mẫu kiểm soát khổng lồ).

Như bạn có thể đã tìm ra lúc này WPF không phải là Silverlight. Thay vào đó Silverlight là một phiên bản "nhẹ" của WPF trong trình duyệt. Vì Silverlight hơi phức tạp nên đây thực sự là một điểm khởi đầu rất tốt để có được một số trải nghiệm XAML nếu bạn không ngại viết một ứng dụng trình duyệt sandbox thay vì một ứng dụng máy tính để bàn.

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