首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里运行复杂算法?服务器端还是客户端?

在哪里运行复杂算法?服务器端还是客户端?
EN

Stack Overflow用户
提问于 2017-01-03 09:06:48
回答 6查看 2.2K关注 0票数 10

我正在尝试开发一个包含大量用户数据库的社交网络android应用程序。我对Android应用程序开发非常陌生,并试图理解应用程序开发背后的概念。我正在使用以下技术:

1) MYSQL + PHP () 2) Android (RESTful )

在应用程序中,我必须运行一些复杂的算法来对用户进行排序,从存储在云服务器中的数据库中收集来自不同表的数据。

我的问题是“在哪里运行这个算法?”我是否应该用PHP编写代码,使算法在服务器端运行,然后将这些数据发送给客户端(或)是否应该使用从服务器收集的数据用JAVA (Android )编写代码。

在这两种情况下,我的应用程序的性能会有什么不同?

编辑:谢谢你的回复。

我对异步任务和多线程有了一些想法。

我对此产生了怀疑,因为排名对我所有的用户来说都是常见的,这是有区别的。如果我将raking算法放在服务器端,即使结果对所有用户都一样,相同的算法必须运行几次(例如,如果有10000个用户,相同的算法在服务器端运行10000次)。但如果我真的把客户放在一边,我可能会克服这一切的。但需要专家解决这个问题。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-01-03 09:34:09

这个问题可能有些基于意见,但我认为有一些设计规则可以作为指导方针:

  • 当计算需要大量数据时,尽可能接近数据。这通常发生在数据库本身上。传输大量数据是资源密集型的,而不是通过慢速链接(例如服务器和客户端之间的链接)的好主意。
  • 如果计算需要处理私有数据,则还设置了数据可用于计算目的的范围。不显示客户端中的数据并不是私有数据的保护!
  • 当计算是资源密集型时,可以缓存,对许多用户有效,甚至可以预先计算,在服务器上执行并缓存结果。
  • 如果计算所需的数据很少,但需要大量的计算,那么问问自己,服务器是否能够很好地扩展到支持所有发出并发请求的客户端。让客户端计算这样的操作可以带来更稳定的整体性能,尽管客户机的资源有限(现在仍然是可用的!)
票数 5
EN

Stack Overflow用户

发布于 2017-01-03 09:24:07

总是建议在服务器端运行算法,因为将业务逻辑放入客户端应用程序会对应用程序的安全性造成威胁。另一方面,它降低了应用程序的性能,由于长期运行的任务,不能接受良好的用户体验,如果您以后创建了多个平台,如web、iOS等,您必须再次完全浪费相同的逻辑,对吗?放到服务器端的算法中,调用Rest。

票数 4
EN

Stack Overflow用户

发布于 2017-01-03 09:35:55

这取决于您所说的Complex是什么意思。

如果复杂,意味着大量的数学和计算等等,而不是大量的数据。

我可能会在客户身上这么做。将渴望计算的进程移到客户端可以极大地提高您的总体响应能力。您正在有效地使用您的客户端作为一个计算引擎,这通常是一件好事。

如果复杂,意味着大量的数据被分析,很少涉及实际的数学。

您应该将大量的数据移动保持在最小的距离。尽可能接近您的DB服务器。如果可以的话,将其中的一些放在数据库本身中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41439889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档