API、框架和中间件有什么区别?本质上,它们都为应用程序提供了抽象的低级服务。既然如此,为什么Dot Net被称为一个框架,而Windows API被称为……一个API呢?
API、框架和中间件有什么区别?本质上,它们都为应用程序提供了抽象的低级服务。既然如此,为什么Dot Net被称为一个框架,而Windows API被称为……一个API呢?
API是Application Programmer Interface(应用程序接口)的缩写。它仅仅是一个术语,指代程序员使用与软件交互的方法。例如,DAO可能有一个save()方法,这个save方法是DAO的API的一部分。在高层次上,您可能有一个将用户添加到系统的功能,这是系统API的一部分。
框架是一个工具或一组工具。例如,Spring是一个框架,可以管理您的控制反转、依赖注入,并提供漂亮的模板使您的生活更轻松。您通过其API使用Spring。
中间件是允许一些被隔离的系统或功能相互交互的软件。因此,如果您有一个网站和一个支付系统,您就可以使用中间件将它们连接起来。
一个API是一个编程库(或多个库)的接口。它不会强制你按照某种方式进行操作。例如,OpenGL不会限制你所能做的事情。
框架为你提供了一个部分完成的问题解决方案。你需要填写空白以创建所需的内容。这可能加快你的工作进度,但你也会受到框架的限制,例如设计、性能和功能等方面。例如,MFC提供了一种创建UI的方法。它很好地支持对话框,但不支持表单,而且像停靠之类的东西也有限制并且存在错误。Windows Forms是一个更强大的框架(来自Borland Delphi的架构师!),在各个方面都更好:设计、灵活性、工具等等。框架非常好用,直到它们不能做你想要的事情,然后你可能会失去试图绕过它们所节省的大部分时间。
中间件是一个垂直片段。如果你把软件看作是分层的(例如操作系统、硬件抽象、实用程序库等),中间件将垂直地包含许多这些层。它为你的应用程序提供了完整或部分的解决方案。例如,经纪人消息系统或渲染库/引擎。中间件不仅提供基本库,还提供相关工具,如日志记录、调试和性能测量。使用中间件时需要注意DRY原则。因为中间件是一个垂直系统,它可能与你的应用程序的其他部分竞争或重复。
框架实现了一个API。该API将框架客户端与底层框架的实现细节隔离开来。因此(大体上讲),您可以使用Mono或.Net Framework来运行基于共同源代码的程序,因为任一框架的API是相同的。
中间件通常是专门用于进程间通信的框架。
主要区别在于功能的目的。
API旨在解决特定领域中的某些具体问题。它包含必要的数据结构、类、方法、接口等。例如,ADO.net API提供了连接Microsoft SQL Server的功能。
框架旨在帮助开发人员构建可重用、可扩展的软件应用程序。框架没有像API那样的特定功能,但其各种功能通过API公开。例如,ADO.net是.NET框架的API,用于访问数据服务。框架具有编译器、程序、类库、运行时,可以添加插件。