2

我正在使用瘦客户端架构开发一个 Android 应用程序。

客户端的一些基本用例是:

  • 授权用户
  • 等待用户输入一些数据
  • 将用户输入发送到服务器

服务器的职责是处理数据并发回结果。我使用 java 及其套接字 api 编写了一个功能原型服务器来验证应用程序的可行性。现在我正在考虑发布这个应用程序,显然套接字对我的应用程序来说不是一个好主意,因为它是 java 在网络通信方面提供的最低级别的 api,当我扩展这个项目以容纳数百个用户时可能会发生很多错误。由于这是我第一次计划发布应用程序,我真的想从以前开发过此类应用程序的人那里获得一些帮助,请告知您将使用的技术。我正在考虑tomcat,这在实践中可以接受吗?

我的应用程序的一个限制是服务器必须能够轻松执行 java 代码,因为我编写的处理部分是用 java 编写的,并且它使用了其他开发人员编写的十几个其他 jar 文件。

4

2 回答 2

1

授权用户

您可以为此使用OAuth 。

等待用户输入一些数据

Android 有许多不同的输入选项,从 EditText 到 Checkbox 再到 RadioButtons 等。查看 Android API,那里有很多关于这些东西的教程。

将用户输入发送到服务器

我建议不要为你的应用程序构建一个 RESTful API,而不是套接字,你应该看看DropWizard。它是基于java的,我发现它很容易使用。

扩展该项目以容纳数百名用户

简单的回答:把所有东西都放在亚马逊的弹性云上,如果服务器的资源耗尽,那么亚马逊会自动添加一台额外的机器来应对,如果不再需要机器,就会删除它们。

于 2013-04-29T09:38:37.197 回答
1

没有您的应用程序做什么以及您的功能和非功能要求的详细信息。几乎可以为您提供建议。所以我将把自己限制在笼统的范围内。

  • 套接字级编程本质上不是错误的。它(在某些方面)更难,但您可以编写可靠的套接字代码。

  • 使用更高级别的协议和抽象可以简化事情,让您更快地实现更大更复杂的系统。但前提是抽象/协议与您实际尝试做的相匹配。(例如,HTTP 不适合点对点系统。)

  • 更高级别的协议和框架也有性能损失......与“精益和平均”较低级别的实现相比。

  • 最后,HTTP(特别是)具有无处不在的优势。浏览器支持它,并且有很多服务器端和类似的工具。安全人员最有可能让它通过防火墙。


您所询问的具体事情都可以通过多种方式完成。从可扩展性的角度来看,有些方法更好。但真正的可扩展性需要良好的设计和努力工作,而不是选择“正确”的技术。

如果不了解您的实际问题,我们无法告诉您 Tomcat 是否是一个好的(或足够好的)选择。

于 2013-04-29T10:45:28.053 回答