對於那裏有經驗的WPFers,WPF,Silverlight和Silverlight OOB應用程序和組件的可重用性如何?那裏有多少重疊?WPF,Silverlight和Silverlight OOB應用程序的可互換性/可重用性?
例如,我可以編寫一個應用程序,並以上述三種方式輕鬆部署它嗎?
理想情況下,我想盡可能少編寫代碼,並且可以靈活地在一系列場景中進行部署,可能會根據部署情況啓用某些功能。 WPF系列技術似乎是偶然觀察者的一個很好的起點..但它是真的嗎?
對於那裏有經驗的WPFers,WPF,Silverlight和Silverlight OOB應用程序和組件的可重用性如何?那裏有多少重疊?WPF,Silverlight和Silverlight OOB應用程序的可互換性/可重用性?
例如,我可以編寫一個應用程序,並以上述三種方式輕鬆部署它嗎?
理想情況下,我想盡可能少編寫代碼,並且可以靈活地在一系列場景中進行部署,可能會根據部署情況啓用某些功能。 WPF系列技術似乎是偶然觀察者的一個很好的起點..但它是真的嗎?
答案的簡化版本是:
1. Silverlight大致是WPF的一個子集。
2.瀏覽器應用程序和Silverlight中的Silverlight OOB應用程序在完全相同的框架上運行。這只是一個部署差異。
3.一些OOB應用程序可以安裝爲「可信」應用程序,並且比瀏覽器應用程序具有更寬鬆的安全限制。
將WPF應用程序移植到Silverlight可能會非常困難,因爲WPF應用程序很可能會使用.NET框架的許多功能,這些功能在Silverlight應用程序可用框架的較小子集中不可用。這是你可能想要避免的。
將Silverlight應用程序移植到WPF可能會容易得多。這仍然是一個挑戰,因爲Silverlight中的功能不在WPF中(儘管不如反向)。除了功能增量外,運行Silverlight/WPF應用程序的實際框架也不同,因此在移植期間,您可能會遇到兩者之間的一定行爲差異。
Silverlight和Silverlight OOB應用程序在相同的框架上運行。在兩個地方都可以有完全相同的應用程序二進制文件。大多數情況下,他們的行爲是一致的。有些區別:瀏覽器內應用程序可以依靠瀏覽器功能,例如訪問html dom,調用javascript等.OOB應用程序不會在瀏覽器中運行,所以顯然這不適用。另外,如果我們正在處理一個「可信」的OOB應用程序,它可以在瀏覽器中出於安全原因阻止某些事情(例如COM互操作)。
如果你想創建一個在所有三個地方運行的應用程序,我的建議是開始構建應用程序作爲瀏覽器中的自包含的Silverlight應用程序,即它不依賴於網頁是託管它,幷包含xap軟件包內的所有必要資源(而不是依賴它們位於Web服務器上的軟件包旁邊)。將這樣一個應用程序移植到Silverlight OOB應用程序將會很簡單 - 幾乎只需在Visual Studio中選中一個框並完成即可。將它移植到WPF將是一項重要的工作,但它會比其他方式好得多。
明智的答案,謝謝。你知道一個很好的概述,強調Silverlight和WPF之間的區別(即「痛苦」點)嗎? – flesh 2010-10-09 09:09:37