Android 客户端应用程序中“数据层”的最佳实践

     2023-02-24     162

关键词:

【中文标题】Android 客户端应用程序中“数据层”的最佳实践【英文标题】:best practices for "data layer" in android client apps 【发布时间】:2012-11-01 13:24:19 【问题描述】:

这是一个设计/最佳实践问题..

我是 android 开发新手,对网络/移动解决方案基本上是新手。

那么,我的问题是 - 在组织从远程服务器获取数据的 android 应用程序结构时的最佳做法是什么?

对服务器的请求应该进入一个与服务器进行通信的类(获取和发布请求),还是应该将我的请求视为数据源,这意味着每个数据类都自己管理它?

或者我应该有更多的抽象级别 - 一个用于获取数据,另一个用于使用某些接口但不知道源数据来自何处的模型?

我很好奇经验丰富的 Android 开发人员如何处理这些设计问题...

【问题讨论】:

【参考方案1】:

Virgil Dobjanschi presentation 是如前所述的一个很好的资源,它基本上告诉您从后台服务运行您的请求,这样活动就不会被破坏,并尽早将您的数据存储在数据库中。

更多技术细节,我的做法是将应用分为三个组件:

1- 封装 HTTP 请求和响应处理的库(使用 ApacheHTTP),它可以处理简单的请求/响应和可能涉及 cookie(可能是登录所必需的)和修改 HTTP 标头的高级功能。

2- Marshal/Unmarsha 层,在这里我解析服务器数据(例如 XML 或 JSON)并将其转换为我的应用程序的其余部分将处理的对象(即模型)。

3- 持久层。

根据 Dobjanschi 的介绍,我通常让数据请求在服务中运行而不是在活动内的线程工作者中。

【讨论】:

这是很棒的视频,谢谢!现在,我正在尝试实现它,特别是模式 B (activity-> contentProvider -> ServiceHelper -> Service -> Rest -> Processor),现在我很难弄清楚应该如何完成。我不明白这项服务的粒度是什么,例如,如果我有我的模型对象或名为 User、UserDetails、City、Category 等的数据库表......我是否应该为所有“数据类型”提供这些类,还是专业的? 比如我应该有UserProcessor、CategoryProcessor(等)、UserService、CategoryService(等)UserContentProvide、CategoryContentProvider(等)吗?【参考方案2】:

使用本次 Google I/O 演讲中介绍的 3 种模型之一。它为您提供建议,帮助您完成应用架构定义的整个过程。它还可以防止你犯初学者常犯的常见错误:

http://www.youtube.com/watch?v=xHXn3Kg2IQE

这篇文章也将帮助你:

Need sample Android REST Client project which implements Virgil Dobjanschi REST implementation pattern

【讨论】:

在 winforms 和 web 应用程序之间共享数据层和模型层的最佳方法

】在winforms和web应用程序之间共享数据层和模型层的最佳方法【英文标题】:Bestapproachforsharingdatalayerandmodellayerbetweenwinformsandwebapp【发布时间】:2012-08-2902:51:02【问题描述】:我目前正在为一家公司开发ERP解决方案。要求如下:... 查看详情

Android Socket.IO 保持连接活跃的最佳实践

...ve【发布时间】:2014-06-0713:05:38【问题描述】:我的Android应用程序正在使用AndroidAsync库通过Socket.IO客户端连接到Node.js服务器。套接字客户端是通过服务建立的。应用打开时,套接字需要保持打开/连接状态应用未打开时 查看详情

在 Android 应用程序中实现客户端 <-> 服务器 <-> 数据库架构的最佳方式?

】在Android应用程序中实现客户端<->服务器<->数据库架构的最佳方式?【英文标题】:BestwaytoimplementClient<->Server<->DatabasearchitectureinanAndroidapplication?【发布时间】:2011-01-1609:33:46【问题描述】:我正在制作一个Andr... 查看详情

在 perl 中启动客户端服务器编程的最佳方法?

...14:26:33【问题描述】:我需要用perl编写一个客户端服务器应用程序。许多客户端将发送请求并将通过服务器进行处理。开发此类客户端服务器应用程序的最佳方法是什么。我在网上搜索并发现LWP和IO::Socket是可能的竞争者。处理... 查看详情

客户端应用程序在 C# 中查找本地网络上的服务器的最佳方法是啥?

】客户端应用程序在C#中查找本地网络上的服务器的最佳方法是啥?【英文标题】:WhatisthebestwayforaclientapptofindaserveronalocalnetworkinC#?客户端应用程序在C#中查找本地网络上的服务器的最佳方法是什么?【发布时间】:2010-09-1715:34:42... 查看详情

在服务器应用程序中处理中断信号的最佳方法?

】在服务器应用程序中处理中断信号的最佳方法?【英文标题】:Bestwaytohandleaninterruptsignalinserverapp?【发布时间】:2014-04-2921:00:57【问题描述】:在服务器应用程序的无限循环中处理中断信号的最佳方法是什么?我开发了简单的F... 查看详情

应用架构指南全新发布

作者/开发者关系工程师ManuelVicenteVivo随着Android应用规模不断扩大,适当使用架构设计代码变得十分重要,以此实现应用扩展,改善其质量和稳健性,并让其更易于测试。应用架构定义了应用各部分之间的界限和每... 查看详情

在并发应用程序中使用 HTTP 客户端的最佳方式

】在并发应用程序中使用HTTP客户端的最佳方式【英文标题】:BestwaytouseHTTPclientinaconcurrentapplication【发布时间】:2016-08-1421:42:57【问题描述】:首先我将描述我的情况。我必须从我的应用程序向多个API发出HTTPS请求,并且它们应... 查看详情

不是吧,都2022年了你别说你还不会springmvc基本应用(代码片段)

...架构。表现层:也就是我们常说的web层。它负责接收客户端请求,向客户端响应结果。表现层包括展示层和控制层:控制层负责接受请求,展示层负责结果的展示。表现层依赖业务层,接收到客户端请求一般... 查看详情

在 3 层系统中正确抽象数据库层?

...间】:2011-02-0213:47:09【问题描述】:我正在创建一个3层应用程序。基本上是这样Client->(通过可选的服务器到做一个瘦客户端)->业务逻辑->数据库层并且基本上做到了,这样就不会有任何跳过。因此,我希望所有SQL查询等... 查看详情

使用 JavaScript 在客户端过滤项目、隐藏或从 DOM 中删除的最佳实践?

...个相对较大的项目数据集(几千个项目),我想通过在Web应用程序中应用多个过滤器客户端进行导航。应用过滤逻辑本身不是问题,问题是使用 查看详情

dao设计模式

 1DAO设计模式简介DAO(数据访问对象)的主要功能是数据操作;在程序开发的结构中属于数据层的操作;程序开发的标准架构如下:客户层、显示层、业务层和数据层分别介绍如下:  客户层:现在都采用B/S开发架构,一... 查看详情

在 android 应用程序中访问 youtube 视频的最佳选择? [复制]

】在android应用程序中访问youtube视频的最佳选择?[复制]【英文标题】:Bestoptiontoaccessyoutubevideosinandroidapplication?[duplicate]【发布时间】:2012-03-2312:47:23【问题描述】:可能重复:AndroidYouTubeappPlayVideoIntent我将实现访问youtube视频的... 查看详情

delphixeandroidmssqlservicesdatasnap哪个好

...窗体的名称。手动启动该应用服务程序。(3)新建Android客户端程序新建一个android客户端程序,在工程中增加一个TDataModule模块,用于放置与应用服务器的连接和数据,在模块窗体上放置TSQLConnection、TDSPProviderConnection、TClientDataSe... 查看详情

在 Android 应用程序中加密大量文本数据的最佳方法?

】在Android应用程序中加密大量文本数据的最佳方法?【英文标题】:BestwaytoencryptlargeamountsoftextdatainAndroidapplication?【发布时间】:2016-07-1717:08:33【问题描述】:我有一个正在开发的Android应用程序,其中包含大量基于文本的数据... 查看详情

将 Django 模型中的保存方法覆盖为使用 celery 异步的最佳实践

...014:06:14【问题描述】:我正在构建一个云系统,我有两个应用程序,包含完整功能的服务器应用程序和仅包含输入法的客户端应用程序,所以我在客户分支中安装客户端应用程序作为本地应用程序,我想在 查看详情

Wear OS 上 Firebase 授权的最佳实践

...41【问题描述】:我正在WearOS上为连接到Android设备的随附应用程序实现一个firebase实时数据库,我想知道在佩戴手表上验证用户身份的最佳做法是什么。在小屏幕上输入电子邮件和密码不是很方便。是否可以通过Wearos数据层传递F... 查看详情

dao设计模式

  DAO(DataAccessObject,数据访问对象)的主要功能是数据操作。使用DAO设计模式来封装数据库持久层的所有操作(CRUD:增删改查),使低级的数据逻辑和高级的业务分离,达到解耦和的目的。在程序的标准开发架构中属于数据... 查看详情