Architecture 如何设计meteor智能包以透明地将应用程序分为不同的实例?

Architecture 如何设计meteor智能包以透明地将应用程序分为不同的实例?,architecture,package,meteor,meteorite,Architecture,Package,Meteor,Meteorite,对于那些非常熟悉Meteor建筑的人来说,这是一个问题 我正在尝试设计一个智能软件包,可以透明地运行流星应用程序的几个“副本”。也就是说,给定一个现有的Meteor应用程序和几个预定义的用户组,该软件包可以半自动地“隔离”应用程序-以的方式运行它,对于每个用户组,似乎只有那些用户在使用该应用程序 我知道此功能可以为任何应用程序定制。然而,考虑到Meteor的集合的使用,我正在寻找一种最简单的方式,让智能软件包在任何现有应用程序之上提供此功能。因此,它应或多或少满足以下要求: 它应该和普通的Me

对于那些非常熟悉Meteor建筑的人来说,这是一个问题

我正在尝试设计一个智能软件包,可以透明地运行流星应用程序的几个“副本”。也就是说,给定一个现有的Meteor应用程序和几个预定义的用户组,该软件包可以半自动地“隔离”应用程序-以的方式运行它,对于每个用户组,似乎只有那些用户在使用该应用程序

我知道此功能可以为任何应用程序定制。然而,考虑到Meteor的
集合的使用,我正在寻找一种最简单的方式,让智能软件包在任何现有应用程序之上提供此功能。因此,它应或多或少满足以下要求:

  • 它应该和普通的Meteor应用程序一样高效
  • 将现有Meteor应用程序转换为使用此系统需要的代码修改最少
  • 该软件包不必修改或覆盖Meteor,并且相对来说是未来的证明
以下是我考虑过的解决此问题的一些方法和相应的缺点:

  • 使用常规Meteor应用程序的所有集合,并使用表示用户所在组的附加id标记每个文档。每个用户的发布/订阅仅提取具有相同组id的文档
  • 覆盖Meteor.Collection(或实现一个相同的界面),使其了解这些不同的组,并且从客户端的角度来看,它的行为就像当前用户的组是整个应用程序一样
我在这里寻找一个真正了解流星系统的人的好主意。我如何设计这一功能,使绝大多数Meteor应用程序可以轻松转换为使用它(即避免非常脆弱的疯狂黑客攻击),同时又能在Meteor上直接高效地实现


(如果你是纽约地区的流星大师,我很乐意带你出去吃饭讨论这个问题!)

我已经把我在这个问题上的研究成果放到了流星智能软件包中。它满足了我在问题中提到的所有要求。有关更多详细信息,请参阅文档和说明

因为我已经在实践中使用了它,所以代码非常稳定,并且有一组很好的测试。欢迎发表评论和意见

使用此功能的软件包示例如下:


你找到这个问题的好答案了吗?或者甚至在实践中试过?@tuomassalo我自己也在做一个;在接下来的几个月里,您将看到一个功能更加完善的实现。嗨,Andrew,这看起来真的很酷,谢谢您的努力。我正试图完全理解对集合进行分区的概念。你认为这是一个类似Slack的分区方式吗?比如说,一个web应用程序,在这里你可以设置自己的自定义域,然后让用户加入到特定的域中?或者是一个有学校网络的网络应用程序(其中一个是哈佛大学),那里只有拥有特定电子邮件地址的人(example@hardvard.edu)可以连接吗?您将如何处理这种类型的体系结构?如果你有什么想法,我很乐意和你谈谈!这绝对是一个轻量级的分区系统,我可能不会用它来分区一个包含大量数据的大型系统,这些数据实际上不需要在同一台服务器上运行,等等。好的,谢谢。如果你有时间的话,我很想听听你的想法。