我应该在哪里进行繁重的计算?客户端或服务器端
Where should I make heavy computations ? Client or server side?
我有一个桌面应用程序,用Python制作,带有PyQT和scipy/numpy。该程序的目的是,在给定一些数据的情况下,为微分方程找到最佳参数集。
因此,我们使用 numpy 的数值求解器和优化例程。计算非常容易,但也很快(最长 30 秒),但如果我们使用自定义参数太空探索,可能会变得更长(几个小时)。
下一步是"把它放在云上",这样用户就不必费心如何安装应用程序。因此,我们想要创建一个 Flask 应用程序,使用 d3 或类似的东西显示.js。
我从来没有做过任何JS,所以我想知道什么是最好的架构:
-
用户上传他的数据,它们被发送到服务器上,它执行计算并将它们发回 => 我们可以在服务器上使用 SCIPY/NUMPY,但是同时连接太多可能会关闭一切。
-
用户上传他的数据,它们在客户端用 JavaScript 处理=>服务器上没有更多的问题,但我必须发现一种新的语言并自己实现科学计算(我认为它会比 numpy 的 Fortran 例程更长)
使用/学习JS不是真正的问题,高效使用它更成问题。这是未来修改(计算时间更长,我们希望提供结果聚类......)和开发时间的最佳选择。
你会怎么做?谢谢。
考虑这两种情况:如果计算是客户端的,那么你的客户端就会被加载,客户端计算机(可能只是一部手机或其他什么)的计算能力就会发挥作用,并且站点的其他用户是否同时进行计算并不重要。
另一方面,如果计算是在服务器端完成的,那么你的服务器就会被加载,单用户情况下的计算时间可能更小(因为你的服务器可能比普通客户端计算机更强大),但如果你有很多用户同时访问你的服务器,它会急剧下降。
其他方面也发挥作用:
-
如果在服务器端执行此操作,则应确保在传输参数或结果的过程中不会泄露任何私有数据(因此请使用
https
或类似方法)。 -
在服务器端执行此操作允许以后升级计算能力(可以将任务拆分到多个节点上,以便具有更小的计算时间而具有更高的服务器成本)。
-
在客户端执行此操作可能允许在给定适当的缓存机制的情况下离线执行此操作。
你的问题太宽泛了,而且不够明确,无法给出明确的答案。
- 正在获取客户端计算机上特定目录中的文件名
- Postback与Javascript客户端计算
- 在不使用集合的情况下将服务器端计算返回到客户端
- 使用 JavaScript 或 C# 检查客户端计算机上是否安装了 Java 应用程序(不是 JAVA!)
- 计算具有不同时区的服务器和客户端之间的时差
- 使用 AngularJS 的客户端计算机上的代码安全性
- JavaScript 中客户端计算机上的操作系统
- 如何在客户端计算机上测量 JavaScript 繁重网页的性能
- 在客户端使用 javascript、ajax 或 php 计算填充字段的数量
- 在客户端计算机上打开另一个端口
- 从web应用程序,如何在没有用户交互的情况下在客户端计算机上运行exe
- 计算客户端和服务器之间的网络延迟
- 为什么是事件.在某些客户端计算机上,ClientY始终为负数
- 如何显示没有安装在客户端计算机上而是安装在服务器上的网站字体
- XML搜索或DB搜索/ javascript(客户端)或php(服务器端)计算
- 从Web窗体在客户端计算机上启动MS Word应用程序.(所有浏览器)
- 在asp.net c#中使用javaScript/jquery客户端进行gridview计算
- 我应该在哪里进行繁重的计算?客户端或服务器端
- 使用Javascript客户端计算文本区超链接的最佳方法
- 在客户端计算机上存档文件