什么是平台和框架的区别?

13
有一些关于这个问题的主题和网络帖子在Stack Overflow上:

然而,它们都没有真正帮助我理解像Rails、Django或Laravel这样的框架和Node.JS或Meteor这样的平台在实际中有什么区别。

以下是我对框架和平台的理解:

  • 框架:Rails、Django 或 Laravel。
  • 平台:Node.JS 或 Meteor。

在上述例子中,究竟是什么让框架与平台不同?


可能是什么是框架和平台的区别的重复问题。 - Quentin
正如我在问题中提到的那样,另一个问题并没有解决完全相同的问题(角度不同)。 - Thibaud Clement
嗨@Thibaud Clement。我投票选择“保持关闭”,不是因为“可能的重复”,而是因为它主要是基于个人意见(如果有机会,我也会对其他情况采取同样的做法)。 - Tiago Martins Peres
我的观点是:Django是一个框架(类似于库)。但Nextcloud是一个平台。在平台上,您可以安装插件而无需触及源代码。 - guettli
1个回答

19

框架

框架可以比作骨架,需要连接一些肌肉和组织。这些程序化的肌肉通常由特定的应用程序提供,其链接并使用了骨架的部分。因此,实际工作,即填补空缺和连接各个部分,是由应用程序完成的。

在编程中,框架使程序员能够专注于面临的实际任务,而不是浪费时间重新发明轮子。通常,框架与一组预定义的函数和类一起提供。例如,在使用Spring(Java)或Symfony(PHP)时,程序员不需要过多考虑持久性、路由和会话管理等问题,因为这些工作由标准化的框架组件完成。

平台

另一方面,平台提供运行应用程序所需的硬件和软件工具 - 无论是独立程序还是建立在框架之上的程序。大多数情况下,它采用“平台即服务”(PaaS)模式,这意味着平台软件自身的代码基础不被分布或许可。相反,它是云中运行的托管解决方案的一部分,可以通过API或GUI访问。

通常,平台被构建为可扩展的多租户系统,可以同时提供许多用户的访问,从而利用规模经济来能够以合理的价格提供服务。然后,开发人员可以使用像force.com或Google App Engine这样的平台来构建和运行他们自己的应用程序。在许多情况下,这些应用程序比独立程序更轻量级,因为大部分业务逻辑都包含在平台中。

来源https://commercetools.com/blog/2015/11/19/framework-vs-platform.html


1
非常感谢您的解释和链接。 - Thibaud Clement
假设一个团队构建了一个入门解决方案(使用工作流工具),可以为X类型的客户提供入门服务。如果它能够托管其他Z类型的客户,这些客户将使用工作流工具进行不同的用例分析,那么我们可以说这个应用程序是一个平台吗?现有的解决方案将提供共享服务,如电子邮件、通知等。 - Metalhead
2
在我的观点下,@metalhead,这完全取决于需要多少工作来适应另一组客户。如果你可以基本上重复使用基础设施,并进行轻微的更改以适应它,那么你很可能可以称之为平台。实际上,你要做的就是将该平台“扩展”以响应更多的客户需求。这确实是一个常见的过程,在这个过程中,一个小平台变得更大,并需要适应新的需求。如果目标是向利益相关者展示这一点,一个好的做法是估计这些变化的时间和成本。 - Llogari Casas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接