API、框架和中间件有啥区别? [关闭]

Posted

技术标签:

【中文标题】API、框架和中间件有啥区别? [关闭]【英文标题】:What is the difference between an API, a framework and middleware? [closed]API、框架和中间件有什么区别? [关闭] 【发布时间】:2011-04-25 11:50:24 【问题描述】:

API、框架和中间件有什么区别?本质上,它们都为应用程序提供抽象的低级服务。在那种情况下,为什么 dot net 被称为框架,而 windows API 被称为,嗯……一个 API?

【问题讨论】:

【参考方案1】:

API 是一个应用程序接口。它只是一个术语,指的是程序员用来与软件交互的方法。例如,DAO 可能有一个 save() 方法。 Save 是 DAO API 的一部分。在较高级别上,您可能具有将用户添加到系统功能。这是系统 API 的一部分。

框架是一个工具或一组工具。例如,Spring 是一个框架,可以管理您的控制反转、依赖注入,并提供漂亮的模板以使您的生活更轻松。您通过其 API 使用 Spring。

中间件是允许一堆孤立的系统或功能进行交互的软件。所以如果你有一个网站和一个支付系统,你可以使用中间件来连接。

【讨论】:

好答案,但我想确保我理解,所以您的意思是 API 始终是系统的一部分,而中间件充当不同隔离系统之间的适配器?【参考方案2】:

API编程库(或库)的接口。它不会强加给你做任何事情的方式。例如。 OpenGL 不限制你可以用它做什么。

框架为您提供部分完成的问题解决方案。你填空来做你想要的。这可能会加速你正在做的事情,但你也受到框架的限制,例如。设计、性能、功能。 -- 例如MFC 提供了一种创建 UI 的方法。它很好地支持对话框,但不支持表单,并且诸如停靠之类的东西受到限制并且包含错​​误。 Windows Forms 是一个功能更强大的框架(来自 Borland Delphi 的架构师!),它在各个方面都更好:设计、灵活性、工具等。框架很棒,直到它们不做你想让他们做的事情,然后你可能会浪费您在尝试解决这些问题时获得的大部分时间。

中间件是一个垂直切片。如果您将软件视为分层的(例如操作系统、硬件抽象、实用程序库等),则中间件垂直整合了许多这些层。它为您的应用程序中的某个区域提供了完整或部分的解决方案。例如。代理消息传递系统或渲染库/引擎。中间件不仅提供基本库,还提供相关工具,如日志记录、调试和性能测量。使用中间件时必须注意的一件事是DRY 原则。因为中间件是垂直系统,它可能会竞争或复制您应用程序的其他部分。

【讨论】:

FWIW 通常我认为你应该避免使用框架,因为迟早你会遇到初始系统的设计限制。当你一开始就获得良好的生产力时很容易感到兴奋,但通常你最终会感到沮丧,尤其是当你无法获得源代码时,或者你意识到必须维护的突然维护开销当你修改它的框架。工具箱方法(例如标准 C 库)更受尝试和信任,并且您知道每个库负责什么。【参考方案3】:

框架实现 API。 API 将框架客户端与底层框架的实现细节隔离开来。因此(广义而言)您可以使用 Mono 或 .Net Framework 来运行基于通用源代码的程序,因为这两个框架的 API 是相同的。

中间件通常是专门用于进程间通信的框架。

【讨论】:

【参考方案4】:

API 是系统的编程接口。您可以使用它与系统交互,但不会强制在程序中使用任何结构(理想情况下)。

一个框架,规定了您编写某些类型的应用程序的方式,以减少所需的样板数量。它解决了它的类型的应用程序的一些常见问题。

中间件主要是市场营销。有很多定义,但通常涉及一个大框架,并围绕它构建一些工具。一些商业游戏引擎可以被认为是中间件,SOA平台也被称为中间件等。

【讨论】:

【参考方案5】:

主要区别在于功能的用途。

API 旨在解决特定领域中的某些特定问题。它包含必要的数据结构、类、方法、接口等。 如 ADO.net API 提供连接 Microsoft SQL Server 的功能。

一个旨在帮助开发人员开发可重用、可扩展的软件应用程序的框架。一个框架没有像 API 这样的特定功能,但它的各种功能都由 API 公开。 例如,ADO.net 是 .net 框架的一个 API,用于访问数据服务。 一个框架有编译器、程序、类库、运行时。可以添加插件。

【讨论】:

以上是关于API、框架和中间件有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

API 网关和 ESB 有啥区别?

12、express 和 koa 有啥关系,有啥区别(高薪常问)

Scala 中间件选择之间有啥区别?

减速器和中间件有啥区别?

Connect/Express 中的“session”和“cookieSession”中间件有啥区别?

文档中间件、模型中间件、聚合中间件、查询中间件有啥区别?