是否有必要使用基于HTTP的客户端/服务器通信进行应用程序开发?

时间:2014-04-12 12:04:20

标签: android servlets

我想在Android上使用MySQL制作应用程序。

我是新来的,所以我首先看到很多其他的应用程序设计。我发现有一点是,如果他们必须使用数据库,他们经常使用RESTful设计,为客户端/服务器端通信定义一些HTTP协议API。然后,还有许多事情要做,例如:将资源映射到url,发送/接收doGet,doPost,..请求。

但我不明白。这是一个应用程序开发,而不是Web开发。为什么他们必须使应用程序像网络一样?如果我不想使用phoneGap,HTML5,那种基于HTML的开发,我想写一个原生应用。我仍然想在我的代码中分离客户端和服务器端,我的服务器端可以与MySQL通信,我的客户端将它显示给用户,并且它们都是用java编写的。因为他们都是java,所以我有一个本土的想法:

"为什么我不直接从我的客户端调用我的服务器端代码?"

由于它全部在应用上运行,因此没有必要将其映射到用户可以访问的网址。但正如我所观察到的,大多数人都不这样做。所以我想知道为什么他们不按照我的想法制作他们的应用程序?这是为了安全吗?或者减少调试难度?或者稍后扩展到iOS等其他平台?

我想知道为什么他们选择基于HTTP的客户端/服务器通信。

1 个答案:

答案 0 :(得分:0)

这不仅仅是关于安全性,因为无论哪种方式,您都要将外部Socket设置为目的地,还因为您之间没有本地通信方式app和MySQL。这种方式最常见的方法是使用Web服务,您可以在其中使用您喜欢的语言(PHP,Python ...)实现HTTP服务器,这些代码将处理您的客户和流程提出的请求他们因此。该第三方脚本将与数据库通信。

如果您最终选择此方法并且您担心安全问题,我会选择一些非对称加密算法TLS,您可以使用公钥加密邮件并在其中解密服务器端有私钥。

您可以毫无顾虑地共享公钥,您可以简单地嵌入到您的代码中,但您也可以将它放在您的网络服务器中,并让您的客户在每次连接时下载它。这样,如果有一天你改变它(例如,由于Heartbleed情况),他们总是拥有当前的公钥;否则,如果您在代码中对公钥进行硬编码,则需要更新您的应用。

一些有用的链接: