簡體   English   中英

使用Windows窗體技能編程Silverlight / WPF

[英]Programming Silverlight/WPF with Windows Forms skills

用Windows Forms技能編程Silverlight / WPF到什么程度?

以類似於Windows窗體的樣式開發內部應用程序的程度如何?


我的問題的背景是我申請需要Silverlight的職位,我試圖爭辯說我的Windows Forms經驗應該足以滿足內部應用程序的要求。

我知道Silverlight / WPF提供了更多功能,但主要是用於像Web一樣的“花哨”東西,還有通過MVVM模式提高SoC的可能性。

是的,你絕對可以開始使用WPF / SL,你的WinForms體驗會有所幫助,但我不同意它就足夠了。

有趣的是,目前在WPF中工作的大多數開發人員基本上都來自WinForms背景(根據我的經驗),他們中的大多數人認為WPF與WinForms並沒有太大差別,他們嘗試使用相同的問題解決技術,概念和方法來開發WPF應用程序。 ; 這是所有問題開始的地方。

我建議你先閱讀一本WPF / SL書 (至少上半部分)然后在你使用WPF / SL應用程序時嘗試使用新概念( XAMLBindingCommandsDependencyPropertyStylesTriggers等)。解決您遇到的每一個問題( 即使您可以輕松地以舊方式解決/實施 )。

有些人可能不同意這一點,但我看到我的朋友以WinForms方式實現幾乎所有內容(在WPF中),后來抱怨內存泄漏,性能等。

如果我正在組建一個項目並且有人向我爭辯說他會成為一名優秀的WPF開發人員,因為他擁有豐富的WinForms經驗,他收到回電的幾率很低。 特別是如果他說一下WPF提供的東西“主要是為了'花哨'的東西,就像網絡一樣。”

這告訴我的是,“我已經閱讀了你正在使用的這項技術並且沒有使用它的經驗,但這對我已經形成了關於它的意見沒有任何障礙,你將不得不改變它。”

我會說,如果你有豐富的WinForms經驗,你應該能夠輕松地轉向SL / WPF; 雖然,我不會說你現在有能力開發SL / WPF應用程序,至少沒有對XAML,依賴屬性以及這些平台的其他特性有基本的了解。

我建議你看看Pete Brown的帖子“ 開始Silverlight和WPF開發人員需要知道的10件事 ”, 以了解從哪里開始的一些想法。 我還推薦他的書Silverlight 4 in Action ,從頭開始實際構建這些技能。

我要說的是,獨立開發應用程序和作為熟悉Silverlight / WPF的團隊的一部分工作之間存在很大差異。 您可以通過拖放設計UI,使用可視化設計器分配屬性,然后在基於XAML的框架中編寫所需的所有代碼,並且幾乎沒有注意到它與您使用的Winforms體驗之間的區別至。 毫無疑問,與熟悉WPF / Silverlight世界中已成為標准的所有概念和模式的其他人合作的過程是:綁定,命令,樣式,依賴屬性等。如果您的工作需要要與他們集成,如果忽略兩個平台的差異,你就會遇到問題。

這並不意味着Winforms體驗毫無用處。 所有邏輯仍然存在,所有相同的服務器端代碼仍然需要編寫,並且可能有六個其他地方,您正在使用的UI類型至少無關緊要。 也許了解Silverlight或WPF的最佳方法是有一個真正的項目可以使用,您可以輕松地使一些新想法與您習慣的一些邏輯相同。

很多問題都歸結為程序員的素質,無論你有什么經驗。 當然,如果我想要有人維護現有的WPF應用程序,我想要一個具有這種經驗的程序員,但我很樂意接受一個寫好Winforms代碼的人,並且如果我想要的話,我願意學習一個新的范例。開發新的應用程序或組建一個全新的團隊。

在大多數需要Silverlight / WPF程序員的情況下,認為Winforms體驗“足夠好”是錯誤的,就像我需要經驗豐富的C#程序員一樣,C ++體驗不夠“好”。 從概念上講 ,存在足夠的差異,你需要表現出至少願意進行范式轉換,並且可能對新技術的核心概念有所了解。 也就是說,良好的代碼是良好的代碼,我不認為任何人都應該因為缺乏特定技術的經驗而被解雇。

您的第一個wpf應用程序將不可避免地像winforms應用程序。 就我而言,這樣做是可以的。 但是如果他們發現你在沒有使用MVVM的情況下制作了30個對話框應用程序,就會有人會殺了你:)
無論如何......你有第一個WPF項目要完成......你最終可能會像winforms一樣編碼(代碼背后很重)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM