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

只是随机把这个问题在我的脑海中! API,框架和中间件有什么区别? 基本上所有这些都为应用程序提供抽象的低级服务。 在这种情况下,为什么称为框架和Windows API的networking称为好.. API?

一个API是一个应用程序员接口。 它只是一个术语,指的是程序员将用来与软件进行交互的方法。 例如,一个DAO可能有一个save()方法。 保存是DAO API的一部分。 在高层次上,你可能有一个添加用户到系统的功能。 这是系统API的一部分。

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

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

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

框架为您提供部分完成解决方案的问题 。 你填空白做你想要的。 这可能会加速你正在做的事情,但是你也受限于框架的限制,例如设计,性能和功能。 – 例如MFC提供了一种创建UI的方法。 它很好地支持对话,但不支持表单,像对接这样的东西是有限的,并且包含错​​误。 Windows窗体是一个功能更强大的框架(来自Borland Delphi的架构师!),它在各方面都更好:设计,灵活性,工具等等。框架非常棒,直到他们不做你希望他们做的事情,然后你可能会失去大部分尝试解决问题的时间。

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

一个框架实现一个API。 该API将框架客户端从底层框架的实现细节中分离出来。 因此(从广义上讲),可以使用Mono或.Net Framework来运行基于通用源代码的程序,因为这两个框架的API都是相同的。

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

API是系统的编程接口。 你用它来和系统进行交互,但是并不强制你的程序中有任何结构(理想情况下)。

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

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

主要区别是功能的目的。

API是为了解决特定领域的一些特定问题而设计的,它包含了必要的数据结构,类,方法,接口等,比如ADO.net API提供了连接Microsoft SQL server的功能。

一个框架,旨在帮助开发人员可重用,可扩展的软件应用程序。框架没有特定的功能,如API,但其各种功能暴露的API。 比如,ADO.net是一个访问数据服务的.net框架的API。 一个框架有编译器,程序,类库,run-time.it可以添加插件。