Windows GUI: WPF hoặc WinRT (2015+)


94

Tôi đang cố gắng tìm hiểu tổng quan về các công nghệ khác nhau, để sử dụng khi xây dựng GUI trong Windows World.

Đối với bối cảnh, tôi đang xây dựng một trò chơi nhiều người chơi nền tảng 2d nhỏ. (Chỉ nhằm mục đích học tập ..)

Giáo viên của tôi nói rằng ông ấy nghĩ rằng WPF là con đường đúng đắn để đi, nhưng có vẻ như ông ấy chỉ so sánh nó với Windows Forms.

Hiểu rõ hơn của tôi là, ở đây vào năm 2015, Windows Forms đã hoàn toàn chết?

Trong câu hỏi xếp chồng khác này, họ nói rằng WinRT + XAML dành cho tòa nhà Metro GUI (Cửa sổ 8 xếp thứ!) Và có vẻ như WPF là thứ chỉ được sử dụng cho máy tính để bàn trong Window 7/8 và có liên quan gần đến Silverlight ..

Windows 8 Runtime (ứng dụng WinRT / Windows Store / Windows 10 Universal App) so với Silverlight và WPF như thế nào?

  • Màn hình nền là nơi chứa các ứng dụng cũ (màu đỏ. WFP).
  • Lớp ứng dụng mới, ứng dụng Metro, có thể được xây dựng theo một số cách, bao gồm VB.NET, C # hoặc C ++. Ba tùy chọn ngôn ngữ này có thể sử dụng XAML để xây dựng giao diện người dùng. Giải pháp thay thế là sử dụng JavaScript / HTML5 / CSS để phát triển cả giao diện người dùng và mã ứng dụng.

Câu hỏi thực sự của tôi là: Không có MỘT cách tốt nào để xây dựng GUI trong Thế giới cửa sổ?

Và nếu không, công nghệ nào nên sử dụng trên Window 7, Window 8 (Desktop và Metro), Window Phone, (Và Windows 10!), Và thậm chí cả x-box ..

Có phải nó với các công nghệ khác nhau để được so sánh theo cách này?

Bạn nghĩ điều gì là đúng đắn để đầu tư thời gian vào?


5
"WPF hay WinRT?". Tìm hiểu cả hai, WPF cho máy tính để bàn, Windows Runtime cho thiết bị di động. Những công nghệ này có nhiều điểm chung, giống như XAML và một khuôn khổ rất giống nhau. Bạn thậm chí có thể viết mã hỗ trợ cả hai nền tảng, dưới dạng Thư viện Lớp di động.
Clemens

2
@Clemens Phần cuối cùng có một chút sai lệch. Thư viện .NET chuẩn phải được xây dựng lại / nhắm mục tiêu để hoạt động với các ứng dụng WinRT, có thể yêu cầu thay đổi mã cho một số lớp nhất định.
BradleyDotNET

3
Windows Forms không hoàn toàn chết nhưng bạn có thể không muốn sử dụng nó trừ khi bạn đã quen với nó.
Casey

2
Theo tôi, mục tiêu "luôn cập nhật trong Windows GUI" của bạn khá có hại. Có rất ít tương lai cho điều này đối với các nhà phát triển trung bình trong dài hạn. MS đã thay đổi các công cụ của mình cho GUI rất nhiều lần trong khi JavaScript và HTML5 vẫn tiếp tục phát triển. Nếu bạn đang phát triển để kiếm sống, hãy quên tất cả những thứ khác. Một số ngoại lệ cho điều này, nếu bạn đang làm việc cho MS hoặc nhà cung cấp GUI bên thứ 3 hoặc sẵn sàng gặp khó khăn trong việc duy trì mã cũ.
NoChance

3
Ngay cả MFC cũng không chết hoàn toàn và Win32 cũng vậy. Nhưng MFC cho một trò chơi là những gì một kẻ điên sẽ chọn
Lothar

Câu trả lời:


132

Có rất nhiều ở đây, nhưng đây là:

  • Windows Forms (Winforms) đã chết ? Không. Nó vẫn được hỗ trợ tích cực. Điều đó nói lên rằng nó là một công nghệ khủng khiếp để làm việc (ít nhất một khi bạn biết sự kỳ diệu của WPF)
  • Nếu bạn muốn xây dựng một ứng dụng dành cho máy tính để bàn (cổ điển, không phải Metro) đẹp mắt, được thiết kế tốt , WPF là câu trả lời theo thuật ngữ .NET thuần túy. Bạn có thể sử dụng các API WinRT (chẳng hạn như các lớp socket của chúng) nhưng bạn không thể chạy chúng trên các hệ điều hành trước Windows 8. Giao diện người dùng vẫn là WPF.
  • Ứng dụng WinRT dành cho Windows 8 Store (chúng cũng có sẵn trong Windows 10 Store). Bạn không thể sử dụng WPF ở đây hoặc WinRT trên máy tính để bàn, vì vậy nơi bạn triển khai sẽ xác định những gì bạn sử dụng. Bạn hiểu đúng về các ngôn ngữ / công nghệ có sẵn.
  • Windows Phone 8 (hiện không được dùng nữa) sử dụng thời gian chạy đã sửa đổi của WinRT (điều này đã thay đổi trong Windows 10). Đối với Win8 / WP8, bạn có thể sử dụng các ứng dụng "Universal" để chia sẻ hầu hết mã giữa ứng dụng WinRT chuẩn và ứng dụng windows phone.
  • Windows 10 sử dụng Nền tảng Windows chung (UWP) dựa trên .NET Core. Mã được phát triển cho Windows 10 cũng có thể được sử dụng trên Xbox One, Windows Phone 10 và HoloLens. WPF vẫn dành cho các ứng dụng máy tính để bàn "tiêu chuẩn".
  • XBox rất khó. XNA đã biến mất và Microsoft dường như sẽ rời xa nội dung do cộng đồng tạo ra cho nền tảng này. Điều đó nói rằng, Unity3D có thể triển khai tới XBox và tôi tin rằng phát triển DirectX (C ++) tiêu chuẩn phù hợp với nó. Các ứng dụng Universal Windows Platform cũng có thể được triển khai trên Xbox One và đây dường như là chiến lược của Microsoft trong tương lai.

Đối với những gì cần dành thời gian, điều đó phụ thuộc vào những gì bạn đang nhắm mục tiêu :). Học WPF / UWP + XAML sẽ mang lại cho bạn rất nhiều lợi ích nếu bạn muốn duy trì "hiện tại" trong phát triển .NET GUI, vì vậy đó là những gì tôi sẽ làm. WPF có hầu hết các tính năng, vì vậy bằng cách bắt đầu ở đó, bạn chỉ cần tìm giải pháp thay thế cho những gì còn thiếu trong UWP (hoặc bất kỳ công nghệ dựa trên XAML nào khác).

Nếu bạn làm điều đó, hãy đảm bảo học mẫu MVVM (Model-View-View Model). Nó hoạt động thực sự tốt với các công nghệ dựa trên XAML và cho phép bạn chia sẻ nhiều logic giữa các ứng dụng WPF và UWP của bạn. Logic tương tự cũng có thể được sử dụng nếu cuối cùng bạn phát triển các ứng dụng Xamarin cho iOS / Android, v.v.

Lưu ý rằng để phát triển trò chơi thực sự , bạn sẽ muốn có một khung trò chơi thực tế (như Unity3D hoặc thậm chí XNA). Bạn có thể làm điều đó trong WPF và đó là lựa chọn tốt hơn Winforms, nhưng cả hai đều không thực sự dành cho trò chơi.


Cảm ơn câu trả lời của tôi, tôi có trò chơi nhỏ bắt đầu với XNA, vì vậy tôi rất tiếc khi biết rằng họ sẽ xóa nó. Nhưng tôi đang mong chờ xem Windows 10 sẽ mang lại cho chúng ta những gì.
Alf Nielsen

@AlfNielsen Tôi không chắc khi nào thì hết hỗ trợ, nhưng có vẻ như họ sẽ không sớm cập nhật.
BradleyDotNET

2
Có vẻ như VS sẽ hỗ trợ đầy đủ cho Unity, vì vậy hãy mong đợi khi dự đoán điều đó! :)
BK

2
Tốc độ kết xuất WPF bằng cách sử dụng các lớp WPF như Visual là rất kinh khủng đối với trò chơi hoặc bất kỳ thứ gì thời gian thực.
Winger Sendon

2
@WingerSendon Nhìn vào RenderTransform, Viewport3Dvà những thứ tương tự. Chúng được tăng tốc phần cứng.
BradleyDotNET

26

Đó là một chủ đề khá cũ, nhưng giống như tôi đã tìm thấy điều này thông qua google (không quan tâm), có thể ai đó cũng có thể truy cập vào đây. Đây là một câu hỏi được hỏi đi hỏi lại bởi các lập trình viên mới. Vì vậy, tôi cũng muốn trả lời một số điều, bây giờ Windows 10 đã chính thức được phát hành.

Thứ nhất, người ta không nên bắt đầu với Windows Forms nữa. Đó là công nghệ hoàn thiện nhất cho đến thời điểm hiện tại, nhưng sẽ không có bất kỳ sự phát triển nào của Windows Forms nữa, nó chỉ đang trong giai đoạn bảo trì. WPF được phát triển tích cực (lần cuối tôi đọc). Nhưng giờ đây, các Ứng dụng Windows Universal (WinRT một) không còn cần được sử dụng ở chế độ toàn màn hình nữa và có thể được sử dụng ở chế độ cửa sổ giống như các ứng dụng dành cho máy tính để bàn khác (WPF & WinForms). Điều này làm tăng khả năng sử dụng của chúng rất nhiều trên các máy tính không phải máy tính bảng. Tôi tin rằng đây cũng sẽ là tương lai cho các ứng dụng dành cho máy tính để bàn. Mặc dù, phần mềm WPF là ứng dụng máy tính để bàn truyền thống (không có quyền, chỉ có UAC). Dù bằng cách nào, bất kể bạn học phát triển WPF hay WinRT (sử dụng .Net), bạn sẽ phải học cả hai. Cả hai đều là XAML + C # (hoặc một số ngôn ngữ .Net khác). Tôi chỉ mới học WPF khi WinRT ra mắt với Windows 8. Tôi cảm thấy như ở nhà, chỉ có một số thay đổi nhỏ mà bạn sẽ sớm làm quen với nó. Tuy nhiên, không chắc chắn về kịch bản MVVM (liên kết dữ liệu) trong WinRT. Tôi vẫn đang tự học khía cạnh đó của WPF.

Window 10 vừa ra mắt. Windows 8 / 8.1 không đạt được nhiều thành công như Windows 7. Vì vậy, nếu bạn muốn xây dựng một ứng dụng có nhiều đối tượng hơn, bạn nên sử dụng WPF ngay bây giờ. Nhưng trong tương lai gần, WinRT sẽ là con đường để đi.

Đối với câu hỏi của bạn, "công nghệ nào nên sử dụng trên Window 7 , Window 8 (Desktop và Metro), Window Phone, (Và Windows 10!), Và thậm chí cả x-box.", Câu trả lời duy nhất là Windows Universal Apps. Đây là lý do chính xác mà khung này được phát triển. Một công nghệ được sử dụng để phát triển ứng dụng cho tất cả các thiết bị. Máy tính để bàn, Máy tính bảng, Điện thoại (bao gồm cả Android sử dụng Xamarin đi kèm với Visual Studio 2015), Xbox và IoT (Internet of Things).


19
Universal Apps dường như không hoạt động trên Windows7 hoặc Windows8. "Ứng dụng toàn cầu" chỉ "phổ biến" cho các thiết bị Win10.
Dragontamer5788

Xamarin vẫn là thứ riêng của nó (không có Ứng dụng phổ thông) và tôi không chắc họ cũng có thể triển khai lên Xbox.
BradleyDotNET

2
@PrateekJain: KHÔNG chạy các ứng dụng UWP trên Windows 8: stackoverflow.com/a/30317960/199364
ToolmakerSteve

6
WinForms vẫn tuyệt vời cho các GUI nhanh chóng và bẩn thỉu - WPF rất tốt, nhưng yêu cầu nhiều mã soạn sẵn (và đường cong học tập dốc) để sử dụng "chính xác", ngay cả khi không có MVVM. Thật tệ là WPF không có khả năng RAD thực sự - và XAML thì quá dài dòng .
Dai

1
Đối với tất cả các thiết bị của ass của tôi. Đó là microsoft nói một lần nữa ở mức tốt nhất. Giống như ngày xưa khi họ gọi nó là đa nền tảng vì nó chạy trên Windows95 và Windows2000. Điều khác là tôi không bao giờ muốn các ứng dụng Máy tính để bàn có cùng kích thước xấu xí của các nút và đặc biệt là các cây và danh sách mà tôi phải sử dụng để chạm. Trước khi không có UWP cho tôi
Lothar

23

Tôi sẽ cố gắng trả lời chỉ một câu hỏi của bạn:

Windows Forms đã hoàn toàn chết?

Không, công nghệ Windows biểu mẫu vẫn chưa chết. tôi sẽ nói cho bạn tại sao. WPF và XAML là công nghệ rất toàn diện và phức tạp và bạn có thể xây dựng giao diện người dùng rất đẹp. Nhưng! Công nghệ này đòi hỏi kiến ​​thức sâu rộng. Đối với bố cục cơ bản, bạn không cần quá nhiều kiến ​​thức, nhưng đối với một số bố cục nâng cao, bạn nên có kiến ​​thức sâu và khi tôi bắt đầu với công nghệ này và đã dành nhiều thời gian tìm kiếm một số mẹo trên google. Vì vậy, khi tôi cần một số Biểu mẫu đơn giản để người dùng nhập liệu, tôi luôn chọn công nghệ Windows Forms rất đơn giản và dễ hiểu. Đây cũng là lý do tại sao công nghệ này rất thành công khi ra thế giới. Khi bắt đầu với WPF, bạn cũng cần biết mẫu thiết kế MVVM là gì và một số lập trình viên chưa có kinh nghiệm sẽ nhầm lẫn với điều đó.


3
Đây là câu trả lời yêu thích của tôi. Đối với các ứng dụng nhỏ, tôi sử dụng Windows Forms vì nó rất nhanh chóng và dễ dàng. Đối với mã sản xuất phức tạp, tôi sử dụng C ++ (với WTL) và .NET bước bên hoàn toàn.
Robinson,

8
Đối với người đọc không quen thuộc với WPF, một số làm rõ - đối với các bố cục ứng dụng cơ bản, WPF đòi hỏi nhiều hơn hoặc ít hơn cùng một lượng nỗ lực để thực hiện. Mẫu ứng dụng VS WPF mặc định cung cấp điểm bắt đầu giống như WinForms. MVVM không bắt buộc phải làm việc với WPF nhưng thực sự sử dụng Binding mà không có bất kỳ khung MVVM nào cũng dễ dàng cho các ứng dụng đơn giản. WPF gần gũi hơn về mặt công nghệ với WinRT và UWP, vì vậy hãy vì lợi ích của riêng bạn, giả sử rằng Windows Forms đã chết vì bất cứ điều gì khác ngoài việc duy trì các ứng dụng cũ.
quá

3
Winforms là lựa chọn tuyệt vời để xây dựng ứng dụng "bảng điều khiển" thời đại mới. Ví dụ: điều khiển tab cực kỳ cơ bản với một loạt các nút và thông tin nhập của người dùng giúp hiển thị hiệu quả những gì thường là một ứng dụng bảng điều khiển.
cuộn

16

Bây giờ là tháng 4 năm 2016 và vẫn chưa có câu trả lời rõ ràng cho điều này. Chúng tôi đang phát triển một ứng dụng máy tính để bàn giám sát hiệu suất thời gian thực rất hiện đại có thể hiển thị nhiều biểu đồ và màn hình, trộn lẫn với văn bản và nhiều đồ họa khác. Ứng dụng của chúng tôi là C #, WPF với .NET Framework 4.5.2 nhưng chúng tôi vẫn đang viết một số thành phần sử dụng WinForms và GDI + để có được hiệu suất có thể chấp nhận được. Chúng tôi chưa đạt được điều đó với WPF. Chúng tôi thậm chí đã phát triển một vài màn hình trong ứng dụng với DirectX nhưng điều đó làm tăng thêm nhiều độ phức tạp mà chỉ một vài người trong nhóm có thể hỗ trợ. Sự đơn giản và tốc độ thuần túy mà chúng ta có thể nhận được từ việc lưu trữ một màn hình WinForms trong WPF và tốc độ của GDI + mang lại cho chúng ta những gì chúng ta cần với cấu trúc View / ViewModel thuần túy cùng với việc phải đối phó với các vấn đề không phận khác nhau. Ứng dụng của chúng tôi khá đặc biệt và tôi muốn loại bỏ WinForms hoàn toàn nhưng rất tiếc điều này vẫn chưa thể thực hiện được trong trường hợp của chúng tôi. Để có hiệu suất thuần túy, bạn sẽ cần phải sử dụng DirectX hoặc WinForms.


1
Tôi sẽ cung cấp cho bạn rằng một số thứ hoạt động hiệu quả hơn trong WinForms. Có những thứ khác (đặc biệt là hình ảnh động) mà điều ngược lại là đúng. Đúng là, chuyển sang DirectX thẳng có lẽ sẽ tốt hơn nhưng không ai muốn làm điều này như bạn đã chỉ ra.
BradleyDotNET

1
Sau WinRT, tôi quyết định bắt đầu tìm kiếm nơi khác. Khách hàng của tôi và tôi không thể phụ thuộc quá nhiều vào những gì Microsoft muốn vì nó ảnh hưởng đến lợi nhuận của tôi và khách hàng của tôi. Bây giờ tôi đang xem xét một ứng dụng tự lưu trữ sử dụng máy chủ web cục bộ để phân phát cục bộ các trang ứng dụng tới trình duyệt của người dùng hoặc điều khiển trình duyệt nhúng trong ứng dụng WinForm / WPF. Điều này đơn giản hóa việc phát triển, đưa tôi đến gần hơn với khả năng tương thích đa nền tảng và rõ ràng là giảm chi phí.
TheLegendaryCopyCoder

6

Hai xu của tôi ... nếu bạn muốn có các ứng dụng toàn cầu thực sự, nghĩa là các chương trình có thể chạy trên BẤT KỲ hệ điều hành máy tính để bàn nào kể cả Windows, WinForms vẫn là con đường để đi. Chỉ cần đảm bảo rằng bạn luôn tương thích CLR và bạn có thể triển khai trên Mac và Linux thông qua Mono. Một lợi ích rất lớn. XAML có thể rất tuyệt, nhưng nó sẽ không được chuyển sang các hệ điều hành khác.

Cá nhân tôi thấy mô hình kinh doanh hộp cát (cát lún?) UWP đáng sợ; nó chống lại sự cởi mở mà Windows đã có ngay từ đầu.


4

Tôi đã làm việc với các công nghệ của Microsoft hơn 10 năm. Điều quan trọng nhất tôi học được là không chỉ lắng nghe những gì Microsoft đang cung cấp cho bạn. Khi Microsoft nói điều này là tương lai, nó có 50% khả năng đã sai. Microsoft chắc chắn sẽ làm những gì tốt nhất có thể để quảng bá các sản phẩm mà họ đã đầu tư vào, nhưng điều đó không có nghĩa là bạn nên làm theo. Xem điều gì xảy ra với WCF và Silverlight.

Mặc dù WPF là một nền tảng rất tốt để học, nó có một đường cong học tập rất lớn. Tôi không nghĩ rằng bất kỳ nhà phát triển nào có khả năng lập trình dưới 5 năm có thể làm đúng WPF.

Bằng cách làm theo mẫu MVVM, bạn sẽ thấy rằng làm một điều gì đó tương đối dễ dàng trong WinForm có thể trở nên rất khó khăn trong WPF. Như tô màu một ô dựa trên một số điều kiện sau khi cập nhật hoặc cuộn một hàng trong dạng xem và tô sáng nó.

Tất nhiên bạn có thể nói rằng bạn không cần phải làm MVVM. Chỉ cần đặt mã của bạn vào mã phía sau và làm cho nó hoạt động. Có, điều đó sẽ hoạt động, nhưng lợi ích của việc sử dụng WPF là gì? Tại sao không chỉ sử dụng Win Form?


1
Tôi sẽ đồng ý rằng WPF có một đường cong học tập mạnh mẽ, nhưng một khi bạn vượt qua được điều đó, đơn giản là sẽ không quay lại WinForms ... bao giờ.
Krythic

4

Đây là một chủ đề cũ nhưng là một chủ đề quan trọng với tiến trình hiện tại của .NET framework, các tính năng của c # và sự tập trung ngày càng tăng vào c # như một lựa chọn phát triển trò chơi.

WPF gần như không bao giờ được chọn làm nền tảng trò chơi ac # trên thực tế. Các vấn đề về không phận WPF khiến mọi người sợ hãi nhanh chóng. Tôi không nghĩ rằng nhiều (nếu có) các tựa game lớn hoặc công cụ trò chơi phát trực tuyến chính hỗ trợ WPF làm nền tảng mục tiêu do điều này. Tuy nhiên, WPF tạo ra một nền tảng tuyệt vời cho các trình khởi chạy trò chơi!

WinForms, mặc dù hiện đang ở chế độ bảo trì, vẫn sẽ là một lựa chọn hợp lệ trong nhiều năm tới. Nó đã được kiểm tra thời gian và ổn định. Từ những gì tôi đã thấy, ngay cả trong năm 2017, WinForms vẫn là nền tảng phổ biến nhất được chọn để phát triển trò chơi dựa trên c #.

Xem xét dữ liệu Khảo sát Phần cứng Steam bạn có thể thấy rằng tại thời điểm viết câu trả lời này (tháng 7 năm 2017), Windows 10 64-bit hiện là nền tảng chơi game PC thống trị với 50% thị phần, tiếp theo là Windows 7 64-bit với 32%. và Windows 8.1 64-bit ở mức gần 7%. Thị phần của tất cả các nền tảng hệ điều hành khác rất nhỏ nên hầu như không đáng để cân nhắc bất cứ thứ gì khác ngoài ba nền tảng này.

Với hiện trạng chơi game trên PC, WinForms là mẫu số chung nhất để nhắm đến cả 3 nền tảng PC hàng đầu. Nhìn về tương lai, UWP sẽ là nền tảng mục tiêu tốt nhất để phát triển game c # khi Windows 7 và 8 mất thị phần đáng kể vào tay Windows 10, trừ khi có một nền tảng mới thay thế nó. Vì vậy, đó chỉ là những con số.

Nếu lựa chọn dựa trên mức độ tương thích tốt nhất trên mỗi nền tảng hệ điều hành thay vì hỗ trợ thị phần tối đa, các lựa chọn sẽ giống như sau:

  • Windows 10: UWP
  • Windows 8.1: WinRT hoặc Windows Store
  • Windows 7: WinForms

Hầu hết các câu trả lời khác xoay quanh việc phát triển ứng dụng windows tiêu chuẩn nhưng phát triển trò chơi là một lĩnh vực rất khác và các yếu tố khác nhau sẽ ảnh hưởng đến lựa chọn của bạn, chẳng hạn như hệ điều hành mục tiêu và những gì bạn lựa chọn API đồ họa hoặc công cụ trò chơi thực sự hỗ trợ tốt nhất.


Trong khi quan điểm về gamedev đang xen kẽ nhau, tôi không hiểu tại sao bạn lại chọn một khung GUI cho gamedev, nơi bạn có công cụ trò chơi đầy đủ tính năng cho C # như Unity. Chỉ có một số trò chơi tôi thấy với GUI cổ điển trong đó dành cho phiên bản dữ liệu trò chơi (như chỉnh sửa bản đồ / tài sản)
Uwy

2
Vì lý do tương tự mà họ chọn công cụ trò chơi: Việc tạo và quản lý một cửa sổ gốc một cách hiệu quả từ mã được quản lý của riêng bạn là khá nhiều công việc.
Mike Johnson

3

WinRT đã có trên máy tính để bàn trong một thời gian dài, tôi đang viết WinRT, chạy trên bàn của tôi. Và trong Windows 10, các ứng dụng đó sẽ hỗ trợ các vị trí không gắn đế (được mở cửa sổ như truyền thống bạn có thể biết).

Tôi sẽ không giới thiệu WinForms hoặc WPF cho bất kỳ ai bắt đầu từ hôm nay. Họ nên học WinRT / XAML là chủ yếu. Và học một số Win32 / .net khi họ cần, tùy thuộc vào ngôn ngữ họ chọn ..

"Họ nói WinRT + XAML dành cho tòa nhà Metro GUI (Cửa sổ 8 xếp thứ!)" - Đây là một sự trừu tượng quá mức, nó vô dụng. WinRT là một thời gian chạy, giống như Win32, nó không chỉ dành cho GUI, vì vậy những gì họ "nói" là hoàn chỉnh BS. XAML là một lớp giao diện người dùng (giống như XAML trong WPF) nhưng nói là Metro GUI thì cũng sai, không còn cái gọi là Metro GUI nữa. XAML là Lớp giao diện người dùng Windows. Và "Windows 8 xếp thứ!" thể hiện tầm nhìn đường hầm của một số người nhất định. Nó sẽ giống như tôi nói Win32 là một thứ menu bắt đầu. Bạn có thể thấy câu nói đó vô lý như thế nào.


8
Để làm rõ tuyên bố ban đầu của tôi, WinRT không thể được sử dụng để tạo ứng dụng máy tính để bàn "truyền thống". Vì lý do đó, trong số những lý do khác, có rất nhiều lý do để học WPF (WinForms, không quá nhiều). Nếu không có gì khác, bạn sẽ học WinRT một cách hiệu quả cùng một lúc (như tôi ghi chú trong câu trả lời của mình). Ngoài ra, chúng ta đang ở gần điểm các ứng dụng WinRT thống trị thị trường (đặc biệt là dòng ứng dụng dành cho doanh nghiệp). WPF vẫn có giá trị vô cùng lớn.
BradleyDotNET

7
Nếu WinRT không gắn liền với việc xây dựng các ứng dụng toàn màn hình, bạn có thể cho tôi biết cách bạn có thể sử dụng nó để tạo một ứng dụng có cửa sổ chạy trên bất kỳ phiên bản Windows nào được phát hành thực sự không? Hoặc làm thế nào để sử dụng nó để viết một ứng dụng chạy trên hơn 10% máy tính Windows (tức là Windows 7 và XP)? Tôi đoán rằng hầu hết các nhà phát triển muốn có thể nhắm mục tiêu hơn 10% người dùng Windows. Cho đến khi Windows 8 hoặc 10 có được một lượng lớn thị phần, WPF vẫn sẽ cần thiết cho nhiều ứng dụng. WinRT có thể là một lớp thời gian chạy, nhưng điều đó không thay đổi thực tế là nó không thể truy cập nhiều thứ (đầy đủ) mà Win32 có thể.
John Colanduoni

1
@JohnColanduoni như anh ấy đã nói, đối với bất kỳ ai bắt đầu từ hôm nay (14 tháng 3) WinRT là con đường để đi, win10 đã và đang miễn phí dưới dạng bản cập nhật trong vài tháng nay, và sẽ có trong vài tháng nữa, vì vậy có, win10 đang lấy một thị phần rất lớn. Vâng, không phải ai cũng chuyển sang win10, nhưng cũng cách đây vài ngày, chúng tôi phát hiện ra rằng một sân bay ở Pháp vẫn sử dụng win3.1
John Demetriou

3
@GavinWilliams Được rồi, đâu là số liệu thống kê của bạn đã đưa Windows 10 chiếm thị phần đáng kể trong bất kỳ phân khúc thị trường nào? Bạn nói rằng các mod đã xóa nhận xét của bạn với một liên kết đến nguồn của bạn, nhưng họ cho phép bạn đưa nhận xét này lên? Tôi không mua cái đó. Tôi đồng ý rằng XP không đáng được hỗ trợ, nhưng các ứng dụng phổ biến của Windows 10 thậm chí còn không hỗ trợ Windows 8.1, chứ đừng nói đến Windows 7. Việc áp dụng không ở đâu cần thiết để biện minh cho các cửa sổ phổ biến và nó đang chậm lại .
John Colanduoni

3
@GavinWilliams Được rồi, hãy bỏ qua rằng 30% nhỏ hơn rất nhiều so với 97% (mức hỗ trợ bạn sẽ nhận được nếu bạn sử dụng WPF) và dữ liệu này chỉ hữu ích cho các lập trình viên trò chơi điện tử. Đối với trò chơi điện tử, khá dễ dàng để nhắm mục tiêu cả hai; trừ khi bạn đang làm một điều gì đó thực sự tầm thường, bạn sẽ muốn sử dụng DirectX / OpenGL, có nghĩa là bạn chỉ cần lưu trữ nó trong một cửa sổ / toàn màn hình. Nếu bạn không muốn sử dụng những thứ đó, bạn thực sự sẽ muốn WPF vì giao diện người dùng của WinRT không cho phép vẽ ở chế độ tức thì mà không có DirectX / OpenGL được lưu trữ (như WPF). Vậy WinRT biện minh cho việc giảm 70% quy mô thị trường thì sao?
John Colanduoni

1

Tôi gặp câu hỏi này một năm trước. Tôi đưa ra kết luận rằng XAML, WPF hay WinRT là môi trường phát triển chính xác để bắt đầu.

Tôi thực sự khuyên bạn nên sử dụng .Net Framework cho lớp dữ liệu (bao gồm Dịch vụ Web và lớp RESTful (JSON)) và HTML5 / CSS3 và Javascript thuần túy cho lớp trình bày web của bạn.

Trong Windows 10, bạn có thể tích hợp bất kỳ ứng dụng web nào dưới dạng ứng dụng tàu điện ngầm.

WinRT, XAML, WPF và những thứ tương tự trên ms chỉ chạy trên windows và có rất nhiều hạn chế.

Vì vậy, sau một năm, tôi vẫn rất hài lòng về quyết định không sử dụng WinRT hoặc XAML cho dự án mới của mình.


3
Bạn đang nói về cái gì Vâng, đó là một lựa chọn tuyệt vời nếu bạn muốn tạo một ứng dụng Web. Nếu bạn muốn tạo một ứng dụng dành cho máy tính để bàn, thì không. Bạn có thể sử dụng Katana và có WebApi được lưu trữ cục bộ và tạo một ứng dụng dành cho máy tính để bàn, điều này tôi đoán sẽ làm cho câu trả lời này phù hợp hơn.
Casey

1
OP đã hỏi về Windows GUI và WPF hoặc Winrt - không phải ứng dụng Web.
ezaspi

6
Ngoài ra, cá nhân tôi thấy những công nghệ nhiều khó khăn hơn để làm việc với (hệ thống không thể hiểu được bố trí, không có kiểm tra thời gian biên dịch trên mã, vv) Các máy tính để bàn là chưa chết :)
BradleyDotNET

1
Tôi đồng ý, HTML là giao diện người dùng chung và cũng nên dành cho máy tính để bàn. Tôi cảm thấy chúng ta cần đơn giản hóa tất cả các khuôn khổ khác nhau này và ngừng giới thiệu ngày càng nhiều hơn và nhiều hơn nữa. Hầu hết nó không cần thiết. Chỉ cần học HTML và ASP, sau đó tự lưu trữ trang web của bạn trong ứng dụng WinForm. Ứng dụng WinForm chứa điều khiển máy chủ web và trình duyệt web của bạn. Kết quả là, bạn tiết kiệm thời gian, bạn tập trung vào việc thành thạo một ngôn ngữ và công nghệ, bạn phát triển nhanh hơn, bạn tiết kiệm tiền cho khách hàng, ứng dụng của bạn là bằng chứng trong tương lai và di động hơn rất nhiều.
TheLegendaryCopyCoder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.