user-interface - vue - 前端pwa




你如何決定一個項目應該是基於網絡的還是基於桌面的? (7)

以前,你已經寫了一個桌面應用程序,因為工具更好,你會寫得更快。 人們曾經想要網絡應用程序,但總是以桌面為代價。

現在事情是不一樣的,你可以快速,輕鬆地寫一個web服務,所以沒有理由不去網頁。

基於網絡的優點是靈活性,可擴展性和易於部署。 它不會像桌面應用程序那樣具有響應能力,但如果你考慮一下你的設計,這不是一個問題。

我無法決定是否要將我的項目設置為基於Web的(如在Web應用程序中),基於桌面的(桌面應用程序)或可以同步或連接到雲的桌面應用程序。

我不知道是否有其他人會對這個應用程序有興趣,這只是為了我,所以我傾向於桌面應用程序。 如果出於某種原因,我完成了它,釋放它,並且人們真的喜歡它,我可能會看到將它同步到雲中(想想V2)。 但我不確定做出如此激烈的改變是多麼的困難,而且我也不想因為在我開始這個項目之前做出了一個糟糕的選擇而做出一些毫無用處的事情。

有沒有這方面的指導? 任何經驗法則或最佳實踐? 任何個人經驗?

如果語言很重要的話,我只是想著Java,因為我對它很滿意,而且很容易讓我和我的朋友分享,以便測試,如果我被卡住了,需要別人的幫助。


到目前為止,還沒有列出兩個重要的問題:

  • 第一個版本是否有任何需要低級訪問硬件的功能?
  • 未來的版本是否有任何需要低級訪問硬件的特性?

回答第一個問題是相當容易的,但給第二個問題一些想法可以為你節省一些頭痛的道路。


如果這是一個應用程序使用我的多個用戶,共享數據,你可能會想要一個服務器無論如何。 在這種情況下,我會傾向於一個Web應用程序。 否則,您已經在桌面和服務器之間同步數據的複雜性。


我主要基於我的選擇在GUI上。 如果圖形用戶界面變得複雜,並且(需要快速或者需要花費很多時間來處理),那麼我將使用桌面。 如果它很簡單,並且一直有小數據集一起工作,我將與Web一起去。

我曾經開發過一個作為網絡應用程序的應用程序,顯然它更適合桌面應用程序。 這是一個巨大的失敗。 我不知道客戶怎麼忍受,因為我當然不會用它。 桌面版本(花了6個月的時間重寫)將Web版本從水中吹走。

這就是說,我已經看到了一些不錯的網絡應用程序。


我會說大多數應用程序應該是基於桌面的。 優點是更快,更流暢的應用程序。

您應該只創建一個Web應用程序,如果有明顯的好處,比如從任何地方訪問。 (如果這是您的應用程序所必需的)。

Web應用程序的缺點也可能是它依賴於開發人員,如果你不再支持所有的用戶(如果你有的話)不能再使用它了。 此外,用戶有可能不願意在線存儲他們的數據。

最終取決於你想寫什麼樣的應用程序。 即使您將其創建為桌面應用程序,您以後也可以將其重寫為Web。 通常2.0版本的軟件需要幾乎完全重寫。


我的默認選擇是使用網頁解決方案,因為它更容易部署,而且通常是多平台的。 我唯一一次使用winforms應用程序的時候,是有緊迫的安全性,性能或功能問題,需要它。


我通常會問幾個問題:

  • 它甚至可以在網上完成? 我之前並沒有涉及一個圖像編輯組件,而必須是一個網絡應用程序。 要做到這一點非常痛苦,桌面應用程序本來是一個更好的選擇。
  • 我需要從任何地方訪問它嗎? 是的,你可以把它裝在一個拇指驅動器,但網絡在這種情況下更可行。
  • 會有多個用戶嗎? 這可能會走,但“長尾巴”的東西通常意味著網絡。
  • 你想用什麼技術? 最新和最好的WPF為基礎的用戶界面? 桌面(是啊,銀光,我們不要去那裡好嗎?)。 Django或其他人的腦死愚蠢容易的用戶管理? 網頁。
  • 如果它是一個網絡應用程序,你將需要擔心像SQL注入,XSS等常見的攻擊載體? 桌面應用程序也有自己的問題,但往往有較少的曝光。
  • 資源密集程度如何? 10個用戶是否會損害Web服務器的性能?
  • 在桌面上進行版本控制可能會很麻煩,而對於web應用程序,每個人都在同一個版本上。 這可以咬你,看到新的Facebook用戶回推。

編輯:

  • 成本也是一個因素。 具有數據庫後端的Web應用程序通常意味著一個Web服務器。 如果你想堅持,比如微軟的堆棧,你將需要SQL Server的許可證,可以得到昂貴的。 開源更便宜,但在所有情況下可能不是一個選項。 “服務”桌面應用程序通常更便宜。






web-applications