API、框架和中间件有什么区别?

27

API、框架和中间件有什么区别?本质上,它们都为应用程序提供了抽象的低级服务。既然如此,为什么Dot Net被称为一个框架,而Windows API被称为……一个API呢?

5个回答

50

API是Application Programmer Interface(应用程序接口)的缩写。它仅仅是一个术语,指代程序员使用与软件交互的方法。例如,DAO可能有一个save()方法,这个save方法是DAO的API的一部分。在高层次上,您可能有一个将用户添加到系统的功能,这是系统API的一部分。

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

中间件是允许一些被隔离的系统或功能相互交互的软件。因此,如果您有一个网站和一个支付系统,您就可以使用中间件将它们连接起来。


很好的回答,但我想确保我理解了,所以您的意思是API始终是系统的一部分,而中间件则充当不同隔离系统之间的适配器? - aero

22

一个API是一个编程库(或多个库)的接口。它不会强制你按照某种方式进行操作。例如,OpenGL不会限制你所能做的事情。

框架为你提供了一个部分完成的问题解决方案。你需要填写空白以创建所需的内容。这可能加快你的工作进度,但你也会受到框架的限制,例如设计、性能和功能等方面。例如,MFC提供了一种创建UI的方法。它很好地支持对话框,但不支持表单,而且像停靠之类的东西也有限制并且存在错误。Windows Forms是一个更强大的框架(来自Borland Delphi的架构师!),在各个方面都更好:设计、灵活性、工具等等。框架非常好用,直到它们不能做你想要的事情,然后你可能会失去试图绕过它们所节省的大部分时间。

中间件是一个垂直片段。如果你把软件看作是分层的(例如操作系统、硬件抽象、实用程序库等),中间件将垂直地包含许多这些层。它为你的应用程序提供了完整或部分的解决方案。例如,经纪人消息系统或渲染库/引擎。中间件不仅提供基本库,还提供相关工具,如日志记录、调试和性能测量。使用中间件时需要注意DRY原则。因为中间件是一个垂直系统,它可能与你的应用程序的其他部分竞争或重复。


说实话,我认为你应该避免使用框架,因为早晚你会遇到初始系统设计限制的问题。当你在开始时得到高生产力时很容易兴奋,但通常情况下你最终会感到沮丧,特别是当你无法获取源代码或者意识到维护框架所需的突然维护开销时。工具箱方法(例如标准的C库)更加成熟可靠,你知道每个库都负责什么。 - Nick

6

框架实现了一个API。该API将框架客户端与底层框架的实现细节隔离开来。因此(大体上讲),您可以使用Mono或.Net Framework来运行基于共同源代码的程序,因为任一框架的API是相同的。

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


4
API是系统的编程接口。您可以使用它与系统交互,但不应强制在程序中使用任何结构(理想情况下)。
框架规定了编写某些类型应用程序的方式,以减少所需的样板文件数量。它解决了该类型应用程序的一些常见问题。
中间件大多是市场宣传用语。有许多定义,但通常涉及围绕大型框架构建的一些工具。一些商业游戏引擎可以被视为中间件,SOA平台也被称为中间件等。

0

主要区别在于功能的目的。

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

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


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