【问题标题】:Meteor on the Frontend, Express on the Backend (NodeJS)前端的 Meteor,后端的 Express (NodeJS)
【发布时间】:2012-12-30 04:11:08
【问题描述】:

对于一个希望 Meteor 在前端应用程序上提供“实时”“反应性”并有一个作业处理后端(类似于 Kue)的网站,前端应用程序显然受益于 Meteor。后端处理不需要 Meteor 的反应性,除了在管理 UI 中的实时报告。

我知道 Meteor 是一个完整的堆栈,可以处理前端和后端。当我在我的问题中陈述前端时,它与为用户提供 UI 相关的一切,所以前端应用程序将包括客户端 HTML/CSS/Javascript 和服务器端节点/数据库。通过后端,我指的是像 Kue/Gearman 这样的工作队列中的数据处理

问题:您将如何构建这样一个网站?

前端是 Meteor 支持的服务器(或节点实例),后端是带有 Kue/Redis 的 Express 服务器?还是 2 台单独的 Meteor 服务器,一台用于前端,一台用于后端?还是 1 台 Meteor 服务器同时用于前端和后端处理?

您推荐的理由是什么?谢谢! :)

【问题讨论】:

    标签: javascript node.js express meteor derbyjs


    【解决方案1】:

    通过后端,我指的是像 Kue/Gearman 这样的作业队列中的数据处理

    因为这听起来像是一个与“前端”分离的规则/处理引擎,它提供“客户端 HTML/CSS/Javascript”和“服务器端节点/数据库”,我认为很可能满足您的需求是一个 DDP client,它可以订阅流星服务器端发布并相应地排队作业(使用 Kue 等引擎)。

    这样的客户端可以在自己的环境中完全独立于 Meteor 应用程序。这样,您仍然可以利用您在 Meteor 中寻求的所有反应性优势,同时使用更成熟的处理工具来处理独立于 UI 运行的基于队列的作业。借助 DDP 客户端,您还可以通过订阅重新连接到 UI,以便在作业完成时通知客户端。

    这是一个节点 DDP 客户端,可能会很有帮助。 https://github.com/oortcloud/node-ddp-client

    希望这会有所帮助!

    【讨论】:

    • 感谢您的回复。我在这里有点困惑:为什么你有运行 Kue 并处理作业的“后端”,还运行 DDP 客户端来订阅“前端”流星出版物? “后端”是否应该通知“前端”应用程序更改(如作业失败/完成)? (我重读了您的帖子,并认为这是由挂钩完成的)
    • 我的想法是用户使用“前端”应用程序定义一个作业,通过POST请求传递给“后端”服务器。 “后端”接收到这个POST 请求,将其添加到作业队列中,在适当的时候处理作业,并将其标记为完成。作业的完成应触发对可能仍在“前端”应用程序页面上的用户的“反应性”更新。如果“前端”应用程序想要检查属于用户的所有作业的状态,是否应该直接访问 Redis/Kue 数据库?还是通过“后端”间接访问它们?
    • 好问题。澄清一下:您可以将所有数据存储在 Meteor 环境中的 mongo 集合中(我们讨论中的“前端”);那么你的“后端”——拥有自己的 DDP 客户端——只是使用“前端”支持的集合通过 DDP 编排其处理的作业引擎——无论是订阅集合更改还是远程调用 Meteor.methods 以获取“对 UI 的响应式更新。 “前端”遵循 Meteor 约定,应该忽略“后端”处理器,尽管它们共享相同的 mongo db。
    • DDP 完全取代了两个环境之间的常规通信......“前端”根本不应该 POST 到“后端”。 “前端”在不知道工作如何处理的情况下愉快地嗡嗡作响; “后端”仅通过 DDP 更改 mongodb 集合,一旦集合通过 DDP 客户端在外部更改,UI 反应性编排完全由流星框架处理。
    猜你喜欢
    • 2021-12-22
    • 2019-09-16
    • 2015-10-15
    • 2021-12-15
    • 2020-08-27
    • 2021-06-16
    • 2018-04-21
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多