Вопрос

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

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

Спасибо!

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

Это было полезно?

Решение

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

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

Другие советы

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

Библиотека:

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

Структура:

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

SDK - пакет:

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

Итак:

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

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

  • Вы вызываете функции SDK.
  • Фреймворк вызывает ваши функции.

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

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

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

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

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

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

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

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

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

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

Платформа Microsoft Framework вместо этого обязательна, если вы хотите запустить .СЕТЕВЫЕ приложения на компьютере.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top