请原谅我的无知,因为我是一名航空航天工程师,正在一头扎进软件世界。
我正在构建一个 Web 解决方案,允许小型计算机(例如 beagleboard)连接到向这些客户端发送和接收数据的服务器。连接将通过多种类型进行,包括 GPRS/3G/4G。
用户将通过该中央服务器提供的网页与客户端实时交互。该解决方案必须具有良好的可扩展性。
我一直在客户端使用 python,并在 Heroku 的服务器上使用一些简单的 ruby 代码。我还尝试了一些 NodeJS 和 Ruby on Rails。有这么多的选择,我很难只见树木,想知道这些语言将在我的堆栈中发挥什么作用。
感谢您的帮助;我很高兴提供更多详细信息。
最佳答案
这完全取决于您实际想要做什么以及您的要求是什么。
对于这些事情没有真正的“正确”语言,它主要取决于您将在这些语言上使用的框架(因为所有都是通用编程语言)和您的个人偏好/经验。
我无法对 Python 发表太多评论,因为我从未真正尝试过它,但从我所听到/看到的情况来看,它可以用于 Ruby 也可以用于的所有事情,尽管围绕 Python 的社区有点小,因为 Python 正在使用在科学界使用得更多(如果您的应用程序可能正在进行任何 crayz 计算,这可能会很好)。
这将我们引向 Ruby。 Ruby 和 Ruby on Rails 框架主要用于编写 Web 应用程序和服务。 Ruby 是一种非常优雅的编程语言,并且工具非常成熟且易于使用。 Rails 是 Ruby 上的一个框架,它为您提供了一组非常好的工具,特别适合编写数据驱动的 Web 应用程序,从而使 Web 开发变得非常简单。 非常灵活,合作愉快。 然而,目前 Ruby 也存在一些缺点,主要与糟糕的线程有关。
Node.JS 是一种新语言,专注于并行性并支持 Ruby 和 Python 可以做的所有事情,尽管与 Ruby 提供的文档相比,它的文档有所缺乏。它也不是最适合初学者的选择,因为 JavaScript 有很多怪癖,而且面向回调的异步模型也不是最简单的。
也就是说,Node 是非常裸机的,并且可以非常轻松地编写不需要通过 HTTP 工作的任意 TCP/UDP 服务器。事实上,自定义流协议(protocol)或任何自定义协议(protocol)几乎都可以在 Node 中轻松完成。(我不建议您这样做,但也许这对您的任务很重要)。
公平地说,有一些框架可以促进为 Node 编写 Web 应用程序,但这些框架 a) 不像 Rails 或 Django 那么成熟,b) 你必须选择你的框架。
这意味着:Rails 确实提供了许多默认值来指导您(例如,Rails 有一个默认的数据库堆栈,并对其进行了优化),而具有 Express 等框架的 Node 只为您提供了一个简单的 HTTP 服务器,您可以在其中使用必须引入您选择的数据库等...
最后:您询问的所有语言和框架主要用于编写 Web 应用程序。然而,它们都可以用来编写一个使用该服务的客户端 - 这主要取决于一般偏好。
关于python - 概述解决方案堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191410/