网络应用架构

Networking app architecture

我正在构建一个类似于 facebook 应用程序的 android 应用程序,旨在显示存储在数据库中的各种信息。 我在服务器端使用 REST API,它 returns 基于各种 POST 请求的响应,带有 facebook 令牌身份验证。

在客户端,我使用 volley 库来处理网络请求。我已经尝试了很多可能性,但我正在寻找与服务器通信的最优雅的方式,并且由于这是一个微不足道的案例,我想你可以帮我解决这个问题...

因为我总是检查 fb 令牌,并发出类似的 POST 请求,我考虑添加一个 Connexion objet,它在提示执行时创建一个 volley 请求(POST 参数.. .);方法,并在响应到达时调用回调方法。

但我正在努力决定是否应该创建一个 SessionManager 对象(是否为 Singleton?),它可以处理来自会话相关响应(例如检查登录、登录...)的所有数据,可能基于代码(例如,每种类型的响应都出现错误 5xx),并执行意图。

我应该在每个 activity 中处理这些响应,并在那里执行意图。知道他们可能会重复。 简而言之,我正在寻找一种最佳实践,以在应用程序必须处理常见响应时应用,例如,不太常见的响应。 保留活动中的所有逻辑?创建对象 ? 不要犹豫 post 你对这个问题的看法!

非常感谢。

编辑:结束时使用 Connexion 对象处理所有请求(使用截击)。至于意图,我将所有逻辑都保留在活动中并且没有使用其他控制器。结果并不难看。主要是因为我使用了进行身份验证的辅助路由,所以如果你是一个邪恶的黑客,服务器总是会返回一个大错误。

首先,我不是在使用 Volley,而是在使用 Apache HttpClient,不过这对于您的问题应该无关紧要。 在您的活动中使用处理 Post 请求的代码是一个糟糕的解决方案。看: Single Responsibility Principle

不过,您创建 SessionManager 的想法非常好。您可以在 SessionManager 中处理所有内容,而不必在 Activity 中操心。此外,您应该添加 classes 用于与管理会话不同的目的。如果您从特定用户那里获得所有朋友,您应该创建一个 FriendsController 或 FriendsManager。

处理答案也可以在一个 class 中完成。我假设您从 API 收到 JSON 作为回应。创建一个接受响应的 class 和 return 一个 JSON 对象。

虽然它远非完美,但请随时查看我的应用程序。我目前正在学习 Android / Java 所以它可能不像人们想象的那么完美。处理 POST 的 classes 称为 YYYController 而不是 Manager。但这只是我使用的命名约定: My Android Project

您的调用可以 return 一个枚举,您可以在其中存储不同的回调类型:

class Enum Callbacks {
    SUCCESS,
    CREATED,
    UNPROCESSABLE_ENTITY
}

在您的应用程序中,您可以像这样使用它们:

Callbacks response = SessionManager.login();
if (response == Callbacks.SUCCESS) {
    //your login logic here
}