API - это интерфейс для библиотеки программирования (или библиотек). Это не навязывает вам способ что-либо делать. Например. OpenGL не ограничивает то, что вы можете с ним делать.
A framework предоставляет вам готовое решение части проблемы . Вы заполняете пробелы, чтобы сделать то, что вы хотите. Это может ускорить то, что вы делаете, но вы также ограничены ограничениями фреймворка, например, дизайн, производительность, функциональность. - Например, MFC предоставил способ создания пользовательских интерфейсов. Он хорошо поддерживал диалоги, но не формы, а такие вещи, как стыковка, были ограничены и содержали ошибки. Windows Forms - это гораздо более эффективный фреймворк (от архитектора Borland Delphi!), Который лучше во всех отношениях: дизайн, flexiblitiy, инструменты и т. Д. Фреймворки хороши, пока они не делают то, что вы от них хотите, а затем может потерять большую часть времени, которое вы получили, пытаясь обойти их.
Промежуточное программное обеспечение представляет собой вертикальный срез . Если вы рассматриваете программное обеспечение как многоуровневое (например, ОС, аппаратные абстракции, служебные библиотеки и т. Д.), Промежуточное программное обеспечение включает многие из этих слоев по вертикали . Он предоставляет полное или частичное решение для области в вашем приложении. Например. брокерская система обмена сообщениями или рендеринг библиотеки / движка. Промежуточное ПО предоставляет не только базовую библиотеку, но и сопутствующие инструменты, такие как ведение журнала, отладка и измерение производительности. При использовании промежуточного программного обеспечения следует соблюдать осторожность при использовании принципа DRY . Поскольку промежуточное программное обеспечение является вертикальной системой, оно может конкурировать или дублировать другие части вашего приложения.