Подтвердить что ты не робот

Рамки против SDK

В чем разница между каркасом и SDK? Возьмем, к примеру, SDK платформы MS и платформу .NET. Оба имеют API, оба скрывают свою внутреннюю работу, и обе обеспечивают функциональность, которая может быть быстро или легко доступна в противном случае (другими словами, они служат реальной цели).

И какая разница? Является ли это прежде всего маркетинговой игрой семантики или существуют ли реальные различия в том, как разработчики должны взаимодействовать с программным обеспечением (и, наоборот, как разработчики могут ожидать, что программное обеспечение будет себя вести)? Ожидается ли, что уровень выше или ниже уровня другого, и т.д.?

Спасибо!

EDIT: этот вопрос относится к SDK и фреймворкам в целом, а не только к упомянутым выше.

4b9b3361

Ответ 1

Ожидается, что SDK предложит инструменты для программирования против определенного системного ресурса или функции. Рамка не обязательно (хотя .NET предлагает целый набор инструментов, таких как компиляторы и т.д.), Но они обязательны для работы в любом случае).

Итак, вы можете разработать Framework, состоящий исключительно из библиотек, но если вы его назовете SDK, вам следует предложить что-то для поддержки разработки.

Ответ 2

Я просто скопирую из Википедии:

Библиотека:

Библиотека представляет собой набор подпрограмм или классов, используемых для разработки программного обеспечения. Библиотеки содержат код и данные, которые предоставляют услуги независимым программам. Это позволяет совместно использовать код и данные и изменять их модульным способом.

Структура:

Программная среда в компьютерном программировании представляет собой абстракцию, в которой общий код, предоставляющий общие функции, может быть выборочно переопределен или специализирован с помощью кода пользователя, предоставляющего определенные функции. Рамки аналогичны библиотекам программного обеспечения, поскольку они представляют собой повторно используемые абстракции кода, завернутые в хорошо определенный API. Однако, в отличие от библиотек, общий программный поток управления не диктуется вызывающим, а фреймворком. Эта инверсия управления является отличительной особенностью рамок программного обеспечения.

SDK:

Комплект разработки программного обеспечения (SDK или "devkit" ), как правило, представляет собой набор средств разработки, который позволяет разработчику программного обеспечения создавать приложения для определенного программного пакета, программной среды, аппаратной платформы, компьютерной системы, консоли видеоигр, операционной системы, или аналогичную платформу. Это может быть что-то простое, как интерфейс прикладного программирования в виде некоторых файлов для интерфейса к конкретному языку программирования или включать сложное аппаратное обеспечение для связи с определенной встроенной системой. Общие инструменты включают вспомогательные средства для отладки и другие утилиты, часто представленные в среде IDE. SDK также часто включают примерный код и вспомогательные технические примечания или другую вспомогательную документацию, чтобы помочь прояснить точки из основного справочного материала.

Итак:

  • Библиотека - это код, который вызывает ваше приложение.
  • Framework - это приложение или библиотека, которые почти готовы. Вы просто заполняете некоторые пробелы своим кодом, который вызывает инфраструктура.
  • SDK - это более крупная концепция, поскольку она может включать библиотеки, фреймворки, документацию, инструменты и т.д.
  • .NET действительно больше похож на платформу, а не на программную среду.

Ответ 3

В двух словах разница заключается в следующем:

  • Вы вызываете функции SDK.
  • Структура вызывает ваши функции.

SDK похож на набор инструментов с большим количеством инструментов, и вы выбираете, какие из них вы используете и как. У вас есть контроль, но также много решений. Это довольно низкий уровень.

Рамка принимает множество решений для вас, поэтому вам не нужно изобретать колесо; Это скорее "заполнение пробелов". Меньшая свобода, но вы сохраняете много времени и, вероятно, избегаете некоторых ошибок.

В частном случае платформы .NET он также ссылается на файлы времени выполнения, необходимые для запуска приложений, использующих его, но это не так, как это слово используется в контексте программирования...

Ответ 4

Microsoft SDK может быть использован разработчиком для создания своих программ. Обычно конечным пользователям это не нужно.

Microsoft Framework вместо этого обязательна, если вы хотите запустить приложение .NET на компьютере.

Ответ 5

Это серая область, но Frameworks, как правило, представляют собой библиотеки, которые вы кодируете, SDK часто имеет дополнительные инструменты, которые помогут вам получить больше от Framework. Хорошим примером является SDK.NET Framework, который вы устанавливаете отдельно, в SDK есть дополнительные инструменты, такие как ildasm, cordb, которые на самом деле не являются частью структуры.

Ответ 6

Я был лидером на Zend Framework через его выпуск 1.0. Мы часто получали комментарии, что это не "каркас" в том смысле, в котором ожидали разработчики, - они сказали, что это скорее библиотека классов.

Они ожидали, что структура больше похожа на набор классов, которые должны использоваться вместе для их работы. Рамки могут также включать в себя набор соглашений о кодировании, которые позволят вам упорядочить свой код определенным образом. Кроме того, структура может налагать соглашения об именах для ваших классов и объектов базы данных. И, наконец, инструменты генерации кода.

Zend Framework был разработан так, чтобы быть свободно связанным, поэтому вы можете использовать любой из классов автономно, если хотите. Он наложил несколько условных обозначений на ваш код или вашу базу данных. И мы намеревались разрабатывать генераторы кода, но еще не реализовали их.

Но я все еще чувствовал, что Zend Framework квалифицируется как фреймворк, а не SDK, другим способом: каркас расширяемый. Он разработан как набор объектно-ориентированных базовых классов, и предполагаемое использование заключается в том, что разработчики либо extend эти классы, либо пишут простые классы плагинов, чтобы добавить функциональность.

Традиционный SDK не расширяется. Вы просто вызываете методы API в предоставленных классах, они делают то, что делают, и вы имеете дело с результатом. Любая настройка зависит от использования API и того, как вы используете результаты.

Ответ 7

Библиотека классов предоставляет классы, которые обычно используют одну и ту же грубую область приложения (математика, рендеринг), но предназначены для использования в основном независимо друг от друга.

Структура предоставляет классы, которые вместе образуют основу для приложения, которое вы расширяете и расширяете.

В SDK содержится все, что вам нужно для использования технологии, предоставляемой SDK. Он часто содержит документацию, образцы и инструменты наряду с фактическим содержимым ядра, которое может быть каркасом или библиотекой классов или даже чем-то совершенно другим.

Ответ 8

В одном сравнении вы могли бы сказать:
Library → Framework → SDK
Структура состоит из нескольких библиотек, а также некоторых инструментов (компиляторов и т.д.) И не предназначена для конкретной платформы. Для платформы может быть несколько рамок, разработанных для каждой цели. SDK предлагает вам фреймворки и все остальное, что вам нужно для разработки программного обеспечения для конкретной платформы.