約翰,
那麼它聽起來像你有一些工作在你前面!當您有一個現有的基於Web的應用程序時,有兩種基本方法可讓您的應用程序在任何特定設備上可用:您可以:(1)編寫一個本機應用程序,實現您想要支持的每個設備所需的功能,或者(2)爲現有應用程序編寫基於Web的「包裝器」,並將內容以HTML/CSS的形式提供給相同的設備。
選項1:建立你想支持
至於第一種方法的每個平臺的原生應用,好處是可以很大。通過使用每個設備的原生框架,您可以充分利用每個設備的最佳功能和靈活性。您的應用視圖也可以呈現得更快,因爲您將從服務器獲取的數據是用於填充視圖的數據(即,根本不需要加載圖像,HTML模板或CSS文件)。
這種方法的缺點是它固有地要求每個設備都有自己的應用程序。因此,如果您支持Web應用程序,iPhone應用程序,Android應用程序和黑莓應用程序,這意味着您有4個完全獨立的代碼庫來維護。如果你在你的網絡應用程序中添加某種新功能(你大概會在某些時候會這樣做),你還必須在另外三個獨立的代碼庫中實現這個新功能。鑑於這些設備可能具有不同的交互模式,這可能會帶來挑戰。此處的另一個缺點可能是分發(即,您可能需要根據您想要分發應用程序的方式,針對iPhone應用商店進行審查過程)。這也意味着你必須學習的數量要大得多,因爲每個設備都有自己的API集和編程「哲學」。
選項2:編寫你的應用程序基於Web的「包裝」(也許使用一個庫)
這種方法也有益處很大。首先,如果您使用的框架如PhoneGap或Sencha Touch或Rhomobile,最大的好處是您理論上只編寫一次「移動應用程序」代碼,並且可以在該框架支持的每個設備上運行。與爲三個平臺編寫原生應用程序相比,這是少得多的工作。
這裏的缺點如下。這種方法作爲設備瀏覽器中的網站運行,因此您無法訪問每個設備的所有功能。 iOS和Android API中的所有優秀內容都將無法提供給您。您在本地存儲方面的限制也有所限制,但這可能不是您給予您的網絡應用程序非常關注的問題。另一個缺點是用這種方式將會有更多的帶寬需求,因爲您提供的所有HTML,圖像和CSS都是原本應用不需要的。根據用戶的數量和頁面的複雜程度,這可能對您而言非常重要。這裏的另一個缺點是你不能全屏(例如在Mobile Safari中iPhone的底部總是有一個工具欄)。
普遍關注
一兩件事,有關我讀你的問題是你的要求清單。重現功能並連接到遠程數據存儲是您可以使用本機和基於Web的移動應用程序完成的任務。但是「保留拖放功能」不是。例如,使用iPhone,您可以使用UITableViewCell中的句柄來提供重新排列列表的方式,但全插入式拖放並非真正適合移動設備的用戶交互模型。你可能不得不重新考慮這一點。
「提供與Web應用程序相當或更好的豐富用戶體驗」的要求也有點令人不安。雖然基於手機的應用程序可以真正簡化方法來獲取和操作數據,但請記住,您正在設計一個幾平方英寸的屏幕。用21英寸高清寬屏顯示器以有組織的方式提供同樣寬度的信息實際上是不可能的。
請記住,您正在爲移動設計,因此您希望利用可用的平臺但請記住,你正在處理小屏幕和有限的交互方法(觸摸,滑動和手勢)
我的建議是,如果這是你第一次在這,你想支持所有這些設備,並且您已經有了網絡方面的經驗,我會建議您採用方案2並使用上述框架之一。這將是最簡單的方式開始,並且您不會有任何截然不同的概念,必須學習。
祝你好運!