2008-10-30 27 views
37

我們正在啓動一個新項目,我正在嘗試確定應該採用哪種Wpf-esque開發/部署策略。在我們的例子中,我們正在研究一個相當複雜的商業應用程序,這個應用程序將被100個人(不是1000人)使用,所以我傾向於一次點擊一次的應用程序。我的老闆喜歡Silverlight應用程序的想法,因爲這意味着更容易部署。我們應該跳哪一種方式?Silverlight,Wpf Web應用程序(xbap)還是單擊一次?優點和缺點

答案當然是「取決於」。 那麼每個人的優點和缺點是什麼?

我會啓動球(從artur carvalho一些答案編輯新增)滾動:


的Silverlight

  • 優點

跨瀏覽器
隱而不宣」 t需要完整的框架。
更好地控制用戶。如果你的用戶登錄,你不必擔心激活密鑰或類似的東西。
它適用於Windows和Mac。
您可以輕鬆更新所有用戶應用程序。

  • 缺點

無法與客戶端的文件系統等互動
有較少的功能與完整的WPF(任何人都得到了文檔的差異一個很好的資源?)
單一窗口
單機版相比,


Wpf Web App(xbap)

  • 優點

完全WPF。

  • 缺點

單個瀏覽器
需要完整的框架
無法與客戶端的文件系統進行交互等
單一窗口
單一版本


WPF點擊一次

  • 優點

完全WPF
可以脫機工作
多個窗口
多個版本(CON?到計算機
無停機的低水平部分)
更好的訪問進行維護

  • 缺點

單個瀏覽器
需要完整的框架
稍微(?)難以安裝。

+0

馬克嗨,我好奇關於你正在談論的wpf網絡應用程序。從來沒有聽說過,你能鏈接到一個例子嗎?謝謝 – 2008-10-30 21:11:49

+1

我想他是在談論XBAP。 http://www.xbap.org/ – Ray 2008-10-30 21:25:18

回答

7

首先,我將評估一個網絡客戶端(MVC理想的jQuery +),是否不能做的工作......

假設一個完整的客戶端是必要的:

如果它是一個商業應用程序,要求客戶端,我會傾向於使用完整的框架和ClickOnce;這裏的主要區別(重新部署)是客戶端必須安裝框架 - 但過去,ClickOnce部署非常痛苦。實際上,構建ClickOnce清單比Silverlight等容易得多,因爲IDE將爲您執行幾乎所有的操作;您只需將文件託管在某處(可能是網址;可能是網絡UNC)。

這使您可以在客戶端更多的控制權(和功率),以及一個更大範圍的現有資源的使用(例如,如果你需要,你可以在WPF使用一些傳統的WinForm的代碼表面)。 「需要全面框架」也是最大的好處之一:「有完整的框架」。

你也許應該考慮3.5「客戶端配置文件」設置;不知道這是多麼廣泛的現實......但值得了解。

0

您可以添加在線vs線下辯論常用內容的優缺點。有些項目:

優點

WPF(離線):

  • 更好地訪問計算機的低水平的部分。
  • cpu使用率是本地的,所以你很少有cpu負載問題。
  • 不依賴網絡。
  • 無需停機維護。

的Silverlight(在線):

  • 更好地控制用戶的。如果你的用戶登錄,你不必擔心激活密鑰或類似的東西。
  • 它適用於Windows和Mac。
  • 您可以輕鬆更新所有用戶應用程序。

我簡化了一下,列表中有灰色區域。我只用XBAP修飾,所以我會拋棄一個。在找到職業球員之後,缺點並不難想象。

HTH

0

我會考慮WPF的ClickOnce與同步框架支持(www.msdn.com/sync)。當用戶沒有連接到公司網絡時(這將消除任何基於瀏覽器的部署場景,例如Silverlight和XBAP),這將允許您支持有限的功能。

3

你沒有說這是公司唯一的應用程序還是面向公衆的應用程序。只有這一點會爲你決定。

如果是公司,我會用完整的WPF點擊一次。這會給你一切。 完整的框架不應該是一個問題。這是一次安裝在後臺運行,所以它不是你的決定應該依賴的東西。缺點:它只在Windows上運行,但如果你的公司只有Windows,這應該不是問題。

但是,WPF應用程序可能會佔用資源,因此您需要知道您的所有客戶端計算機是否能夠順利運行WPF應用程序。

如果是Internet應用程序,請使用Silverlight:它在不同的操作系統下運行。

0

如果你不需要所有的WPF我會嘗試在Silvelight中先做這個然後你可以更容易地切換到WPF,如果你以後需要它。

在這裏,我認爲它適用「少即是多」的原則:確實,使用WPF你有更多的選擇,並且可以訪問用戶計算機,但隨着時間的推移,這最終可能比幫助更成爲一個問題。例如,想一想在使用大量「用戶計算機」資源的應用程序中,您可能需要從Windows XP更改爲Vista的更改次數!

0

Mark,對於XBAP說'單一瀏覽器'時,你是什麼意思?例如,XBAP可以與Firefox一起工作。它的確需要.NET框架,我們不可能在任何地方很快(如果有的話)在Mono中使用WPF,所以你被Windows困住了,這是正確的。

1

的利弊

  1. 的Silverlight插件意味着開發者可以針對基於瀏覽器的應用程序的單一,一致的運行,而不是對付的不同版本的多個瀏覽器的複雜性。儘管Adobe Systems的Flash具有相同的優勢,但您仍然可以獲得視頻和多媒體效果,這些效果對於純HTML和JavaScript來說很難或不可能。
  2. 在不部署.NET運行庫的情況下執行.NET代碼。 Silverlight插件的確包含了一個精簡的.NET運行庫,但用戶無需處理大量下載和Windows安裝程序的複雜性,而只需下載4MB左右的小文件,所有這些操作都在瀏覽器中處理。以我目前的經驗來看,安裝非常流暢和簡單。
  3. 性能很有希望。 Silverlight在這個質數計算器中表現良好,毫無疑問,它將JIT編譯爲本機代碼,儘管它可能無法比較好地呈現圖形。
  4. 對Moonlight的支持意味着將會有Silverlight的官方開源實現,從而減輕專有方面。
  5. Silverlight直接解釋XAML,而Adobe的XML GUI語言MXML在編譯時轉換爲SWF。實際上,XAML頁面作爲資源包含在用於部署Silverlight應用程序的已編譯的.XAP二進制文件中。 .XAP文件只是一個具有不同擴展名的ZIP。這也意味着搜索引擎可以在Silverlight應用程序中索引文本,就像他們在Flash中一樣。
  6. 第三方組件供應商已經很好地使用Silverlight附加組件。例如,Infragistics,ComponentOne和DevExpress。
  7. 讓您的.NET代碼跨平臺。隨着Mac在各地涌現,將Visual Basic或C#代碼遷移到基於瀏覽器的跨平臺Silverlight客戶端的能力將越來越有用。顯然這隻適用於現有的.NET開發人員 - 我想這是Silverlight的主要市場,但它是一個很大的市場。這同樣適用於下一點:
  8. 使用Visual Studio。微軟的IDE是一個成熟且廣受歡迎的開發環境,因爲它也是ASP.NET的工具,所以您可以將它用於服務器端代碼以及Silverlight客戶端。對於那些不熟悉Visual Studio的人,Silverlight SDK也支持命令行編譯。
  9. 選擇你的語言。對於多語言的支持自從.NET開始就已經是.NET的一部分,並且在Silverlight 2.0中擁有.NET運行庫意味着您可以在C#,Visual Basic中編寫您的客戶端邏輯,或者感謝動態語言運行時(DLR)Iron Ruby或鐵蟒。
  10. 獨立存儲爲Silverlight應用程序提供了本地文件訪問權限,但僅限於特定於應用程序的受保護位置,爲獲得此益處提供了一種相對安全的方式。

利弊

  1. 如果蘋果甚至不會允許Flash在iPhone上,還有什麼機會是存在的Silverlight?
  2. Silverlight遲到了。 Flash是成熟的,值得信賴和無處不在的。 Silverlight 2只能在秋季推出(我們希望)。這是我們關心的版本 - 包括.NET運行時版本的版本 - 並且仍然缺少對移動設備(即使Windows Mobile)的支持,雖然這在稍後的某個未指定的日期中會得到承諾。
  3. 設計工具是Expression Blend和Expression Design - 但誰使用它們?設計界使用Adobe PhotoShop。
  4. 儘管Expression Blend和Visual Studio之間的解決方案兼容性聽起來不錯,但它實際上是一個麻煩,它必須使用兩個獨立的工具,特別是在當前測試版中存在不兼容的情況下。
  5. 不支持流行的H.264視頻編解碼器。相反,Silverlight的高清視頻必須位於VC-1中,這種情況並不常見。
  6. 這是推廣專有技術而不是開放標準的另一個努力。
  7. 是的,Linux將通過Moonlight支持,但是什麼時候? Linux實施可能總會落後於Windows和Mac版本。
  8. Silverlight支持SOAP Web服務或REST,前提是您不使用PUT或DELETE,但沒有像Adobe的ActionScript消息格式(AMF)這樣的優化二進制協議,這可能意味着某些情況下的性能降低。
  9. Silverlight是一個純瀏覽器解決方案,而Flash可以使用Adobe Integrated Runtime(AIR)爲桌面部署。話雖如此,是的,我看到了這一點。
  10. 你必須在Windows上開發。對於Expression設計工具而言,這尤其是個問題,因爲設計人員擁有不成比例的大量Mac。
1

PRO對ASP。NET Web窗體

  1. 沒有ViewState中或 「驚喜垃圾」 o這個適用於Silverlight的爲好。 Silverlight爲最終用戶帶來了「桌面」體驗,並且沒有Silverlight中使用的ViewState。
  2. 更快的服務器端&客戶端 o根據您對Silverlight的看法,Silverlight在客戶端/服務器端速度更快。 Silverlight是在Silverlight的.NET子系統中編譯的。您可以訪問多線程,LINQ,複雜的數據結構等。與ASP.NET或AJAX/JavaScript應用程序的性能相比,它的性能提高了一倍,因爲客戶端執行和一些通常在服務器BLL中處理的項目可以降低到客戶端
  3. 多個相關視圖的簡化模型 o Silverlight支持完全分離數據和UI。通過創建單獨的視圖進一步說一個Silverlight的另一個消費者是非常強大的。你可以在Silverlight中應用相同的MVC/MVP模式,並達到這個抽象級別。 Jason提到了能夠爲iPhone創建獨立視圖的示例,只有View組件必須更改。這適用於Silverlight以及不同的事情。例如,我有我想要移植到SharePoint的大型Silverlight應用程序。我可以爲SharePoint創建一個「更小的視圖」,因此它更適合用戶界面。此外,Silverlight Mobile現在正在進行私人測試。我會假設同樣非常強大的抽象級別也適用於爲您的Silverlight應用程序創建「移動視圖」。
  4. 單元測試 o Silverlight也包含單元測試框架。它可以在這裏下載:http://code.msdn.microsoft.com/silverlightut/
  5. 如果你沒有運行IIS的挑戰7 o如果你沒有在IIS 6或IIS 7或Apache上運行,Silverlight不關心。這是Silverlight比ASP.NET MVC有優勢的一個特性。
  6. 客戶端緩存 o在ASP.NET Web窗體或MVC中,您正在服務器上進行緩存。 Silverlight允許你通過隔離存儲器(如果需要可以增加到數百兆)在客戶端緩存。這使得應用程序可以超速運行而不會讓託管服務器陷入困境。

CON外與ASP.NET Web窗體

  1. 很難現有代碼 ØSilverlight的轉換是一個完全不同的編程平臺比任何ASP.NET的WebForms或MVC。不僅許多代碼不會轉換,您還必須考慮客戶端層,並且在大多數情況下,如果要替換現有ASP.NET網站中的大型模塊,則需要完整的重新架構。
  2. 不是開箱即用的最好的搜索引擎 谷歌幾個月前開始搜索SWF文件並將其添加到搜索引擎中。我認爲Silverlight在這裏可能還有一段路要走。您可以爲Silverlight做些什麼SEO是描述元數據標籤的基本技巧。
  3. 數據訪問 o Silverlight中的數據訪問僅限於Web服務/ WCF/ADO.NET數據服務。您無法通過ADO.NET或存儲過程直接調用數據庫。
  4. 安全性 o Silverlight在客戶機上運行。然後,很多你的網站都在互聯網上瘋狂漫遊。此外,某些數據訪問技術不支持完整的WS *標準安全性。因此,除了基於證書的傳輸安全之外,您要麼編寫很多自己的管道代碼,要麼等待下一次修訂。XAML代碼幾乎不安全;很多應用程序在他們的用戶界面中都沒有知識產權在Silverlight中,可以很容易地使用Silverlight Spy進行逆向工程。就本質而言,Silverlight比ASP.NET MVC應用程序稍微安全一些。很明顯,你會想在加密/混淆你的Silverlight程序集之前讓它們在野外。
1

1 Silverlight可以訪問來自主機頁面的DOM來
2.託管頁面可以訪問Silverlight部分。
這是一個大+ Silverlight的

但所有其他限制哭WPF/Windows的窗體使用ClickOnce
文件訪問,單擊鼠標右鍵,便於DB訪問