【问题标题】:How does node.js take part at mobile?node.js 如何参与移动?
【发布时间】:2012-12-18 08:22:53
【问题描述】:

现在我的目标是开始学习使用 node.js 进行开发。

我希望我的问题很清楚 - 当您谈论 node.js 和移动设备时,您的意思是什么?到由 node.js 开发的 web 应用程序,用户通过简单的 web 浏览器或纯移动应用程序(例如带有 java 的 android)和 node.js 以某种方式参与这个过程(如何?)。

我问它是因为我看到Linkedin 开发了一个基于node.js 的移动应用程序,但我不明白他们在哪里集成了node.js - 在Web 应用程序上?安卓应用? iOS 应用程序?对我来说不清楚(我的假设是网络应用程序,但我真的很困惑)。

谢谢。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    Node.js (Node) is a scalable, event-driven I/O environment built on top of Google Chrome's JavaScript runtime—essentially, a server-side implementation of JavaScript. Google V8 actually compiles JavaScript into native machine code prior to execution, resulting in extremely fast runtime performance—something not typically associated with JavaScript. As such, Node enables you to rapidly build network apps that are lightning fast and highly concurrent.

    这真正意味着 Node.js 不是一个将主宰 Web 开发世界的灵丹妙药的新平台。 相反,它是一个满足特定需求的平台。理解这一点是绝对必要的。您绝对不想将 Node.js 用于 CPU 密集型操作;事实上,将它用于繁重的计算几乎会抵消它的所有优势。 Node 真正的亮点在于构建快速、可扩展的网络应用程序,因为它能够以高吞吐量处理大量同时连接,这等同于高可扩展性。

    它的底层工作原理非常有趣。 与传统的网络服务技术相比,传统的网络服务技术每个连接(请求)都会产生一个新线程,占用系统 RAM 并最终在可用 RAM 量,Node.js 在单线程上运行,使用非阻塞 I/O 调用,使其支持支持数万个并发连接

    快速计算:假设每个线程可能附带 2 MB 内存,在具有 8 GB RAM 的系统上运行,我们理论上最多可以有 4000 个并发连接,再加上上下文切换的成本线程。这就是您在传统 Web 服务技术中通常处理的场景。通过避免所有这些,Node.js 实现了超过 1M 并发连接的可扩展性水平

    继续阅读 ..http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js

    黄金时段的公司依赖 Node.js 来提供移动解决方案。

    LinkedIn 是一位杰出的用户。他们的整个移动堆栈都建立在 Node.js 之上。他们从在每台物理机器上运行 15 台服务器和 15 个实例变为仅运行 4 个实例——这可以处理双倍的流量!

    eBay 推出了 ql.io,这是一种用于 HTTP API 的 Web 查询语言,它使用 Node.js 作为运行时堆栈。他们能够调整一个常规的开发人员质量的 Ubuntu 工作站,以处理每个 node.js 进程超过 120,000 个活动连接,每个连接消耗大约 2kB 内存!

    Walmart 重新设计了其移动应用程序以使用 Node.js 并将其 JavaScript 处理推送到服务器。

    阅读更多:http://www.pixelatingbits.com/a-closer-look-at-mobile-app-development-with-node-js/

    【讨论】:

    • 最后的链接似乎死了?
    • 我看到了与您的 You definitely don’t want to use Node.js for CPU-intensive operations 类似的声明。人们如何对CPU intensive operations 进行分类?是不是脚本花费的时间比 big-o n^2 长?还是真的只是分析每个脚本的运行时间并找出瓶颈?
    • 一般来说,任何不是 I/O 的东西都是 CPU。在 node.js 中 I/O 是异步的,所以不是问题。因此,除了 I/O 昂贵之外,我们剩下的一切都是如此。
    【解决方案2】:

    有关 LinkedIn 如何使用 Node.js 技术的文章可在此处找到:
    http://venturebeat.com/2011/08/16/linkedin-node/

    LinkedIn 使用该技术的最大原因是速度快,使用的资源更少。

    由于从 Ruby on Rails 切换到 Node.js,该应用在客户端的速度比其前身快 2 到 10 倍,而在服务器端,它使用的资源只是其中的一小部分


    新的移动应用可能会使用一些浏览器沙盒和原生应用代码。

    “HTML5 Web 应用程序和原生应用程序之间存在着这场战斗。但是我们在原生应用程序中散布了 HTML5,其中基于 Web 的内容表现出色。 HTML5 中难以做到的事情是无限滚动列表,因此我们采用了原生方式。”

    我们的移动网络应用程序的工作方式是全部呈现在浏览器端。

    LinkedIn 选择 Node 的更多理由:

    Blockquote 一个原因是规模。第二个是,如果您查看 Node,它最擅长做的事情就是与其他服务通信。


    希望其中的一些内容有助于回答您的问题。

    【讨论】:

      【解决方案3】:

      他们指的是服务器后端的node.js。

      例如:

      • 具有 node.js 服务器后端的任务管理应用,用于存储任务和约会,并推送警报。
      • 带有 node.js 服务器后端的聊天应用程序,用于路由和传递消息

      【讨论】:

        【解决方案4】:

        NodeJS 是一个服务器后端组件,它响应各种网络请求,但最常见的是 HTTP 请求。对于移动应用程序,它可能用于与数据库交互并解释 JSON HTTP 调用、获取和/或插入数据,并将 JSON 数据返回给移动客户端。

        在大多数情况下,iOS、Android 和移动网络客户端将通过 HTTP 连接到 NodeJS,以通过各种 API 发送 GETPOST 请求。

        NodeJS 还可以与每个平台上可用的各种推送通知系统进行交互,或者使用 SocketIO 之类的东西在客户端和服务器之间提供实时通信。

        【讨论】:

        • 但是你可以发送GET/POST请求与另一个后端组件(例如PHP)并返回JSON数据,那么有什么区别?套接字的优势非常好,但是您可以简单地使用 Android API 内置的套接字函数,所以再次 - 为什么使用 node.js(以及它是如何工作的?)?谢谢你的回答。
        • @Luis “为什么”这个问题你真的应该问 LinkedIn 的团队,但是 node.js 在并发连接方面具有优势,因为它的异步特性,即每个工作线程可以处理比在许多阻塞框架。我认为 tadman 讲得很好。
        • 由于内部使用了异步设计模式,单个 NodeJS 进程通常比单个 PHP 支持的 httpd 进程可以做更多的事情。
        • @tadman 我可以使用带有 SocketIO 的 NodeJS 作为后端来构建聊天 Android 应用吗?
        • @Zookey 没有理由你不能。总的来说,SocketIO 和 Websockets 的优点是两端使用的框架无关紧要,只要它们都使用相同的协议。当您需要更多控制时,像 JSON 或 JSON-RPC 这样简单的东西通常效果最好。
        猜你喜欢
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多