我正在開發一個Android應用程序,它將數據存儲在通常的SQLite數據庫中。我必須將這些數據公開給我的應用程序組件(活動和服務)和其他應用程序。如何在Android設備內創建類似於RESTful WS的內容供內部使用?
不幸的是,我必須在將這些數據存儲到數據庫之前以及在將它們從數據庫中取出之前,以各種複雜的方式操作這些數據。我必須編輯字段,彙總來自多行或多列的數據等等。那就是:我必須執行典型的「數據按摩」,您可以通過許多商業智能程序和許多統計數據看到它們。
這意味着SQLite數據庫本身太少。我必須做更多簡單的CRUD。
內容提供者似乎也不是解決方案。典型的Android CP實現了一個非常類似於標準CRUD的接口,更重要的是,它總是返回一個遊標(按行和列組織的臨時數據表)。它看起來非常像我的需要的一個非常薄的SQL數據庫環繞。我仍然需要了解,如果我可以將自己的業務邏輯放入CP本身,如果我可以擴展外部CP接口(「content:...」),並且天氣可以被認爲是一種良好實踐。
也許一個Android服務可能會給我一種公開我的功能的方法,並且我可以將SQLite DB(或包含SQLIte DB的CP)嵌入到服務中。我仍然需要了解這是否可以成爲解決方案,以及如何。
我真正需要的,最有可能的,將是這樣一個RESTful Web服務:
- 一個SQL數據庫,用於存儲隨後的數據,在我的「東西」
- 的接口,接受核心動詞(GET,PUT,POST等)和單數/複數名稱(「People」,「John Doe」等),並返回「objects」(不一定是「Java Objects」),它們可能只是JSON或XML文件/流)。這個界面將是外部唯一可見的圖層。
- 在中間,我的「業務邏輯」用於操作數據。
當然,標準CP與RESTful WS非常相似,很可能是我的問題的解決方案。我不明白CP是否足夠靈活。例如,它看起來像一個CP只能接受類似於GET/PUT的請求,並且它不能返回除遊標以外的任何其他內容。
那麼,你會用什麼來將非只是CRUD功能和非 - 基本數據公開給你的應用程序的各個部分(活動)和其他應用程序?
只是一個Android內容提供者(可能會在CP本身內部編寫業務邏輯)?
一個包裝SQL DB(或者甚至包裝CP)的Android服務?
還有什麼?
哪個架構最優雅(「可保存」,「可擴展」,「靈活」,「打開」)?爲此,是否存在任何「最佳實踐」?
您的意見/建議?
我很困惑這些話題...... :-) – AlexBottoni