Фреймворк - это группа классов, интерфейсов и другого предварительно скомпилированного кода, на основе которого или с помощью которого могут быть построены приложения.
API является публичным лицом фреймворка.Хорошо спроектированная инфраструктура предоставляет только те классы, интерфейсы и т. Д., Которые необходимы для ее использования.Код, который поддерживает работу платформы, но не является обязательным для пользователей платформы, хранится внутри сборок / библиотек платформы.Это делает публичное лицо фреймворка небольшим и способствует «яме успеха» или качеству фреймворка, который упрощает правильные действия.
(я привожу пример из мира .NET) Класс SqlConnection используется для подключения к экземпляру Sql Server.Его общедоступный API довольно прост:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
Однако этот класс зависит от примерно 200 методов в рамках System.Data (в данном случае, сборка ), 3/4 из которых являются внутренними и не являются частью общедоступного API System.Data .Поскольку API фреймворка остается простым, становится легко использовать SqlConnection правильно.Если бы пользователю требовалось иметь дело с SqlConnectionFactory , SqlDebugContext , DbConnectionPoolGroup или любым другим внутренним классом, требуемым классом SqlConnection, это стало бы экспоненциально сложнееправильно использовать SqlConnection.Поскольку API предоставляет только небольшой процент структуры, проще создавать и использовать соединение.