Windows software development kit что это

Обновлено: 07.07.2024

Инструменты для разработчиков программного обеспечения от компании Microsoft включает в официальный комплект различные библиотеки, пакеты программ, специальные компиляторы кода и другие не менее важные компоненты. Microsoft Windows SDK – представляет собой пакет различных программ и библиотек, которые необходимы для разработчика пишущего программы для ОС Windows. Помимо установки по умолчанию вместе с установкой операционной системы, его можно устанавливать и вместе с программой для разработки Visual Studio. На сайте можно скачать официальный web-инсталлятор пакета, который скачивается и устанавливается через интернет с официального сайта, автоматически определяя именно Ваш тип и версию операционной системы.

Коротко о главном

Короткая аббревиатура заключает в себе длинные слова — Software Development Kit (или набор программ разработчика). Многие думают, что можно любую программу для разработок софта назвать SDK, что это, например, компилятор Паскаля или Делфи. Однако, как и книгу нельзя судить по обложке, так и продукт — по его названию. SDK — это набор, расширяющий функционал программы, игры, комплекса продуктов, он дает возможность создать свою программу, уровень или дополнение, однако только с использованием наработок исходного.

Три кита SDK

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

Вторая часть — документация. Причем описано в ней все коротко, лаконично и просто. Она включает в себя Tutorial (пошаговое обучение в стиле «Сотворение мира за шесть простых шагов») и Reference — раздел, предоставляемый в виде справочника о том, что может быть сделано при помощи SDK.

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

Есть такие люди, которые ленятся прочесть даже короткий Tutorial. А этого и не требуется! Возьмите пример, отредактируйте его, подгоните под свои критерии — и новый компонент программы уже готов.

sdk что это

Microsoft представила Windows 10 SDK и пролила свет на некоторые новшества

Microsoft представила предварительную версию официального набора инструментов разработчиков Windows 10. SDK (Software Development Kit) позволяет разработчикам создавать программы, используя все преимущества, API и новшества грядущей операционной системы. Например, появится возможность создания универсальных WinRT-приложений, которые смогут исполняться на ПК, планшетах, смартфонах и даже на Xbox One.


Одновременно был выпущен набор инструментов для создания эффективных и качественных драйверов аппаратной периферии с поддержкой последних возможностей Windows 10 — Windows Driver Kit (WDK). Заинтересованные разработчики могут скачать Windows 10 SDK и WDK с официального сайта.


Одним из ключевых новшеств Windows 10 SDK является инструмент Adaptive UX, который упрощает создание интерфейсов универсальных приложений и оптимизирован как для пользователей систем с клавиатурой и мышью, так и для владельцев сенсорных устройств вроде смартфонов и планшетов. Adaptive UX позволяет создавать интерфейс, который умеет подстраиваться как к небольшим экранам смартфонов, так и к дисплеям настольных ПК.


Кроме того, множество новых элементов управления в пользовательском интерфейсе Windows 10 во время работы умеют определять, каким способом пользователь взаимодействует с приложением, и соответствующим образом подстраиваются (например, на гибридном ноутбуке при нажатии пальцем на экран целевые области будут больше, чем при работе мышью).



Кроме того, в Windows 10, в том числе в мобильной версии для смартфонов и ARM-планшетов, появится новая платформа DirectInk. С её помощью разработчики смогут буквально несколькими строчками кода добавить в свои приложения поддержку перьевого ввода и распознавания рукописного текста. Microsoft считает, что расширение возможностей ОС в области естественных интерфейсов — очень важная область новаций.

Устройства Windows 10 будут выпускаться в самых разнообразных форматах и размерах, многие из них позволят рисовать на экране. Грядущая ОС наделена встроенной поддержкой нового оборудования для рукописного ввода с низкими задержками, в том числе на смартфонах. Кроме того, DirectInk поддерживает чувствительное к силе нажатия оборудование и улучшает распознавание случайных прикосновений ладонью при удерживании устройства.

Кстати, компания продолжает оптимизировать интерфейс Windows 10 для смартфонов — скриншот из недавней презентации WinHec говорит о том, что в панель Action Centre будут добавлены две новые удобные функции — вызов фонарика и инструмент Quicknote для быстрого добавления новых заметок.


От простого к сложному

После всего вышесказанного у читателя может возникнуть вопрос: «SDK — что это? Набор программ, которые не представляют интереса для настоящего разработчика и нужны только пользователям для мелкого баловства?» Отвечаем: все SDK могут быть условно разделены на две группы.

К первой нужно отнести комплекты для создания самостоятельных игр и программ. Самым хорошим примером будет DirectX, без которого сегодня не работает ни один компьютер с ОС Windows. Однако простым пользователям предоставляют только рабочие компоненты, необходимые для запуска приложений, созданных с использованием этого SDK. Для программистов же компания Microsoft предоставляет бесплатный комплекс DirectX SDK, который является компонентом более мощного продукта — Windows SDK. В нем содержатся все файлы, которые необходимы для написания нового приложения или компьютерной игры: библиотеки СИ++, компиляторы, многостраничная документация.

К подобным решениям можно отнести и Android SDK — программный комплекс, созданный для разработки приложений для смартфонов. При этом не нужно вникать в тонкости работы акселерометра или сенсора, функции уже добавлены в комплект.


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

Вывод

  1. Windows SDK AddOn — компонент для программистов.
  2. Для обычных юзеров не представляет никакой ценности.
  3. Теоритически можно удалить. Но возможно он нужен для работы каких-то программ, учитывая небольшой размер — советую оставить его.

«Узнай что такое аддоны!»

Написанный гайд больше всего подойдет новичкам которые только начали играть в World of Warcraft, но даже старые игроки смогут узнать что-то новое.

Для начала спрашивается! «А что такое Аддоны?»

Ну для начала скажем что Аддоны состоят из двух типов:
А)
В случае WoW — это дополнение к игровому интерфейсу (модификация). Разработчики игры дали нам возможность изменять весь игровой интерфейс: Изменить панели, кнопки и их расположение как вам угодно, удобство для выполнения квестов и прохождения подземелья/рейда. Так же можно увидеть, кто из игроков вашей Гильдии может создать предмет и какие реагенты для этого нужны, выведения конкретной информации в чат гильдии или на свой экран.
Б)
В другом случае игры – это дополнение к игре, которые выходят крайне редко! На данный момент в течение 5лет было выпущено два дополнения «Burning Crusade, Wrath of The Lich King», на сегодняшний день выпускается третье дополнение «Cataclysm». Другими словами добавление новых рас, классов, профессий, мобов, материков, НПС и другие всякие вещи.
Много новичков World of Warcraft сталкиваются с проблемой, «Какие аддоны использовать при прокачивания персонажа и после…»
Проще всего для нас удобно найти сайт посвященной игре (World of Warcraft) где возможно скачать те самые аддоны. Сайт который добивается высокой посещаемости, не будет делать всё в кучу, а разделит на доступные вам категории.
А)
При прокачивания персонажа – вам потребуется категория «Карты/Профессии», если вы хотите ощутить прекрасный мир игры в области PVE(игрок против монстров). Примерные аддоны:

Последняя версия не всегда лучшая

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


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

Виртуальные машины для веб-разработчиков

Чтобы разработчики веб-приложений могли тестировать свои продукты для их идеальной работы в окнах браузеров Internet Explorer и Edge, Microsoft любезно предлагает им воспользоваться готовыми виртуальными машинами для разных гипервизоров, с разными версиями ознакомительных Windows и браузерами на их борту:

• Win7 с Internet Explorer 8, 9, 10, 11; • Win8.1 с Internet Explorer 11; • Win10 с Microsoft Edge.

Поставляются такие машины в формате их рабочих файлов для гипервизоров:

• Hyper-V; • VirtualBox; • VMware; • Vagrant; • Parallels Desktop.

Выбираем версию Windows, а в случае с 7-й еще и версию Internet Explorer.



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

Passw0rd!

Windows 10 и 8.1 в рамках этого проекта – это ознакомительные 90-дневные редакции Enterprise с предустановленными платформами Microsoft Silverlight, Microsoft Visual C++ 2008 и 2020 и ПО Puppet.


Версия «Десятки» постоянно обновляется, на данный момент это 1803. Windows 7 – это 10-дневная триалка редакции Enterprise с предустановленными платформами Microsoft Silverlight, NET Framework Client Profile и ПО OpenSSH.

Недостаток проекта – низкая скорость отдачи файлов серверов Microsoft.

Бесплатный сыр только в мышеловке?

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

Как установить SDK 8 на Windows 7 32/64-bit

В связи с тем, что все давным давно обновили свои смартфоны до WP8.1, рекомендуем устанавливать SDK 8.1 Lite на свой компьютер.

Представляю вам способ по установке Windows Phone SDK 8 на Windows 7 32-бит или 64-бит. Многим известно то, что SDK 8 не удается установить на Windows 7 из-за ряда ограничений, оказывается это не так, Microsoft специально якобы убрала такую возможность, а все для того чтобы разработчики положили в казну Microsoft многочисленные вознаграждения за Windows 8.

Тем не менее нам, владельцам Windows Phone пакет разработки SDK 8 нужен в основном, чтобы сделать студенческий анлок и устанавливать взломанные игры на Windows Phone 8 смартфон. Теперь вы можете получить рабочие утилиты Windows Phone Developer Registration (регистрация телефона как разработчика) и Appication Deployment (установка XAP на смартфон с компьютера) таким способом.

Тестирование проходило на Windows 7 Ultimate x86 (32-бит) сборка 7601. Ниже на скриншоте показана работа этих двух утилит:


Внимание. Ставить все пакеты в инструкции ниже нужно на ЧИСТУЮ Windows 7. Если у вас был установлен пакет SDK 7.1, необходимо вычистить систему от него вплоть до реестра!
Пошаговая инструкция:

  1. Устанавливаем Framework 4.5 ().
  2. Скачиваем архив WPV.SDK.zip (зеркало) и распаковываем его.
  3. Запускаем WPSDK_en.msi в папке WPV.SDK SDK8.0.
  4. Нажимаем дважды кнопку «ОК», когда выскочит ошибка о невозможности создать ярлык.
  5. Запускаем и устанавливаем MobileTools_WPImages_enu.msi в папке WPV.SDK WPImages.
  6. Запускаем и устанавливаем MobileTools_ProfilerARM.msi в папке WPV.SDK MobileTools_ProfilerARM.
  7. Вставляем в телефон USB кабель от компьютера, нажимаем на Мой компьютер правой кнопкой мышки и заходим в Свойства.
  8. В новом окне нажимаем на Диспетчер устройств, в котором находим устройство Windows Phone 8 (в моем случае это Windows Phone 8S by HTC) со значком восклицательного знака в желтом треугольнике. Спойлер



Запустить утилиту Windows Phone Developer Registration вы можете из папки C:Program FilesMicrosoft SDKsWindows Phonev8.0ToolsPhone Registration. Или через Пуск -> Все программы -> Windows Phone SDK 8.0 -> Windows Phone Developer Registration.

Установить XAP на смартфон с Windows Phone 8 вы можете используя утилиту Application Deployment из папки C:Program FilesMicrosoft SDKsWindows Phonev8.0ToolsXAP Deployment. Или через Пуск -> Все программы -> Windows Phone SDK 8.0 -> Appication Deployment.

Внимание. Если при запуске Application Deployment у вас выбивает ошибку «Microsoft.SmartDevice.Connectity.PlatformNotFoundException» скачайте архив sdk7.1.7z, распакуйте его и запустите файл WPSDK_en.msi, дождитесь окончания установки.


Чтобы установить XAP на Windows Phone 8 читаем инструкцию Как установить XAP (в инструкции сразу же переходим к Способу №3)

Windows SDK (10.0.22000) для Windows 11 включает новейшие заголовки, библиотеки, метаданные и средства для создания приложений для Windows. Этот пакет SDK поможет вам создавать приложения универсальной платформы Windows (UWP), а также приложения Win32 для Windows 11 и предыдущих выпусков Windows.

Windows 10 версии 21H2 — это ограниченный набор функций для отдельных улучшений производительности и повышения качества. Разработчики должны знать об этом выпуске, но пока никаких действий не требуется.

Новый пакет Windows SDK для этой версии Windows выпущен не будет, так как в этом выпуске не вводятся новые API. Это означает, что нет необходимости вносить изменения в файлы проекта или задавать новую целевую версию Windows. Продолжайте использовать пакет Windows SDK (10.0.22000) для Windows 11.

НОВИНКА!Пакет SDK для приложений Windows

Пакет SDK для приложений Windows содержит унифицированный набор API и средств, которые отделены от ОС и предоставляются разработчикам с помощью пакетов NuGet. Эти API и инструменты могут согласованно использоваться любыми настольными приложениями в Windows 11 и ниже, вплоть до Windows 10 версии 1809.

Начало работы

Получить пакет Windows SDK можно двумя способами: установить с этой страницы, щелкнув ссылку для скачивания, или выбрать "Пакет SDK для Windows 11 (10.0.22000)" в дополнительных компонентах установщика Visual Studio 2019.

Перед установкой этого пакета SDK:

  1. Изучите все системные требования.
  2. Выйдите из Visual Studio перед установкой.
  3. Просмотрите заметки о выпуске и известные проблемы.

Системные требования

Минимальные системные требования этого пакета Windows SDK:

Поддерживаемые операционные системы

  • Разработка приложений универсальной платформы Windows (UWP)
    • Windows 10 1507 или более поздней версии: Домашняя, Профессиональная, для образовательных учреждений и Корпоративная (выпуски LTSB и S не поддерживаются)
    • Windows Server 2019, Windows Server 2016 и Windows Server 2012 R2 (только для командной строки)
    • Разработка приложений Win32
      • Windows 10 версии 1507 или более поздняя версия
      • Windows Server 2019, Windows Server 2016 и Windows Server 2012 R2 (только для командной строки);
      • Windows 8.1
      • Windows 7 с пакетом обновления 1 (SP1)

      (Не все средства поддерживаются в среде операционных систем более ранних версий)

      Требования к оборудованию

      • Процессор с частотой 1,6 ГГц или более мощный
      • 1 ГБ памяти (ОЗУ)
      • 4 ГБ свободного пространства на жестком диске

      Дополнительные требования для этого SDK

      Для установки пакета в среде Windows 8.1 и операционных систем более ранних версий необходимо сначала установить обновление KB2999226. Чтобы выполнить установку Windows SDK через Центр обновления Windows, перед этим необходимо установить последние рекомендованные обновления и исправления из Центра обновления Майкрософт.

      Что нового

      Windows SDK для Windows 11 позволяет обновить приложения для последней версии ОС Windows. Узнайте больше о новых возможностях Windows 11.

      Сведения о новых API, появившихся в Windows 11, см. в статье Новые API в Windows 11, сборка 22000.

      Выполните повторную сборку двоичных файлов Windows 11 в операционной системе ARM с помощью ARM64EC, чтобы любой системный код, загруженный приложениями x64, выполнялся на полной скорости. Воспользуйтесь преимуществами ARM64EC, чтобы постепенно перевести приложение в работу с полной скоростью на базе ARM, даже если у вас есть зависимости или подключаемые модули, которые еще не поддерживают ARM. Ознакомьтесь с объявлением.

      Примеры

      Примеры приложений для Windows теперь доступны через GitHub. Вы можете просмотреть код на веб-сайте GitHub, клонировать личную копию репозитория из Git или скачать запакованный архив со всеми примерами. Для нас очень важен ваш отзыв. Поэтому при возникновении проблемы или вопроса относительно репозитория без колебаний сообщайте нам. Эти примеры предназначены для запуска на настольном, мобильном и будущих устройствах, которые поддерживают платформу универсальных приложений для Windows (UWP).

      Предыдущие версии пакетов SDK

      Ранее выпущенные пакеты SDK и эмуляторы, а также сведения об обновлениях см. на странице архивов.

      Активация API-интерфейсов

      При использовании новых API целесообразно создавать адаптивные приложения, которые смогут правильно выполняться на множестве устройств Windows. Новые функции в адаптивных приложениях активируются, если устройство и версия Windows поддерживают их. В противном случае предоставляются только те возможности, которые доступны в версии обнаруженной платформы. Сведения о реализации см. в статье Адаптивный к версии код.

      Заметки о выпуске и известные проблемы

      Пакет SDK для Windows 10, версия 2104 Раскрыть заметки

      Пакет SDK для Windows 10, версия 2004 со служебным обновлением (выпущено 16.12.2020) Развернуть заметки

      Предоставить отзыв

      Запросы на новые функции для разработчиков можно подавать с помощью приложения Центра отзывов в категории "Платформа разработчиков/API".

      Другие ресурсы

      Загрузки и инструменты

      Получите новейшие выпуски средств разработки Visual Studio и Windows 10.

      Архив для пакета SDK

      Поиск предыдущих версий Window SDK и других инструментов.

      Блог Windows

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

      Информационный бюллетень о жизненном цикле Windows

      Основные даты выхода обновлений для выпусков Windows и окончания поддержки.


      Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.

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

      И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.

      Пора определяться

      Начнем с того, что определим, что такое SDK и зачем он может быть нужен.

      SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. SDK использует преимущества каждой платформы и сокращает время на интеграцию.

      Инженер-программист обычно получает SDK от разработчика целевой системы.

      Что ж, логично. Простыми словами, SDK — это пакет библиотек, для того, чтобы клиент мог легко и быстро начать работать с вашей системой (в данной статье речь пойдет про наш сервис, но всё изложенное в статье применимо и к другим видам SDK) или выполнять однотипные действия.

      Но, как и у любого подхода, у "Пути SDK" есть как преимущества, так и недостатки.

      Преимущества

      Высокая скорость интеграции нового клиента — вашим клиентам нужно писать меньше кода.

      Переиспользование кода — один и тот же код используется сразу в нескольких местах. Можно сказать, что это дублирование предыдущего пункта, но речь идет о том, что логика работы везде одинокава, из чего следует

      Предсказуемость поведения — использование одних и тех же библиотек приводит поведение систем к определенному стандарту, что сильно облегчает поиск и устранение ошибок и уязвимостей.

      Качество кода — много где любят экономить на тестировании (жалко бюджета, горят сроки и прочие причины). Понятно, что в реальном мире покрыть тестами все участки проекта это учень трудоемкая задача. Но качественно протестировать все модули SDK, а затем использовать их — это путь повышения процента покрытия тестами, что приведет вас к снижению количества ошибок.

      Документация — тот же сценарий, что и с тестами. Покрыть документацией весь проект достаточно проблематично. Переиспользование модулей SDK повышает процент покрытия документацией, что снижает порог вхождения новых сотрудников в проект и вообще помогает по жизни.

      Все преимущества, по сути, это следствия самого главного — мы очень качественно пишем код один раз, а затем его переиспользуем.

      Недостатки

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

      Установка ограничений — SDK — это набор библиотек для реализации стандартных сценариев. Иногда разработчики SDK полагают, что кроме реализации одного из предусмотренных сценариев клиенту ничего не потребуется, что клиенту проще сделать все с нуля самостоятельно, чем строить пьедестал из костылей для SDK.

      Dependency hell и обновления — при расширении функционала (например, кастомизации решения под конкретного клиента), вы выпустите новую версию библиотеки. Но существуют зависимости, различные наборы версий библиотек у разных клиентов, и нужно очень тщательно следить за обратной совместимостью или строгим версионированием.

      Когда SDK действительно нужен

      У вас есть несколько стандартных сценариев, которые реализуются заново из раза в раз — собственно, наш случай.

      Когда SDK скорее всего будет лишним

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

      Вы не умеете делать качественно — у меня для вас плохая новость: пора учиться. Но отдавать кривое решение клиенту это очень, очень неправильно. Клиентов надо уважать, в конце концов.

      Итак, мы определились, что такое SDK, с его преимуществами и недостатками и когда он нам нужен. Если после этого вы поняли, что SDK действительно нужен — приглашаю вас встать на "путь SDK" и разобраться, а каким он должен быть и как его, черт подери, делать?

      "А вы любите Lego?" — Модульность

      Представим все возможные сценарии использования SDK (вы же уже определились, зачем он вам нужен, правда?) и сделаем по библиотеке на сценарий. Чем не выход? Но это плохой подход, и так мы делать не будем. А будем так:

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

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

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

      Именно этим обусловлено то, что SDK не должен быть одной библиотекой (хотя очень хочется, понимаю. Ведь когда весь SDK в одной библиотеке, можно забыть о зависимостях и всем, что с ними связано), а быть комплектом библиотек. Дополнительным плюсом данного подхода будет уменьшение "веса" программы клиента — он будет тянуть тяжеловесный SDK, а подтянет только необходимые модули.

      Но не стоить плодить модули как попало, ведь чем больше модулей, тем больше головной боли от их зависимостей! Т.е. важно правильно разбить логику на модули, соблюдая баланс между решением "все в одном" и "на каждую функцию свой модуль".

      "А что, так можно было?!" — Универсальность

      Предоставьте клиенту различные интерфейсы для работы с вашей библиотекой. Приведу пример:

      Если предоставить только синхронную версию, то при реализации асинхронного приложения клиент вынужден будет делать асинхронные обертки вашего синхронного метода. Если предоставить только асинхронную версию — ситуация похожа. Дайте клиенту и то и другое и он скажет вам спасибо.

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

      Таким образом мы предоставили клиенту аж три реализации, которые он может использовать. Дженерики очень удобны, но при работе с динамическими типами их можно вызывать только через рефлексию, что накладно. Общий принцип универсальности, надеюсь, понятен.

      "Родитель 1, Родитель 2, Дети[ ]" — Именование

      Что самое трудное в работе программиста? Выдумывать имена для переменных.

      И тем не менее… Правильное именование модулей, классов, свойств и методов сильно помогут тем, кто будут с вашим SDK работать. Пример, не требующих комментариев:

      Kinect 2.0 SDK example

      Всё ясно из названий классов и методов. А если есть автодополнение кода в вашей IDE, то зачастую можно и в документацию не заглядывать, если и так все понятно.

      "Уверен, если бы Смерть знала, что такое бюрократия, люди бы никогда не умирали, вечно стоя в очереди. " — Документация

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

      Документация, в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.

      Мы выбрали самый простой путь — summary + articles. Мы добавляем Xml атрибуты для методов и классов, которые светятся в intellisense как подсказки. Используя Docfx мы строим документацию по этим атрибутам и получаем подробную и удобную документацию, которую дополняет статьями, описывающими сценарии использования и примеры.

      "— Чтобы чисто было! — Как я буду вилкой-то чистить?" — Тестирование

      Что можно сказать про тестирование в рамках обсуждения SDK… Must have! Лучшим решением будет TDD (несмотря на то, что я негативно отношусь к данному подходу, в данном случае я решил использовать именно его). Да, долго. Да, нудно. Но зато в будущем вы не повеситесь от постоянных падений SDK на стороне и следствий этого падения.

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

      "Жертва, которая не могла противостоять своему прошлому, была поглощена им" — Логи

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

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

      "Alarm! Achtung! Attention!" — Ошибки


      Долго размышляя на тему ошибок я пришел к интересному выводу — ни один метод в вашем SDK не должен отдавать ошибку, не описанную в документации. Согласитесь, очень неприятно, когда вы подключаете стороннюю библиотеку для работы с HttpRequest, а она вываливает на вас какой-нибудь NullPointerException и StackTrace, который уводит в недра библиотеки. И вам приходиться погружаться в эти самые "недра", пытаясь понять, насколько глубока кроличья нора, и в чем, собственно, проблема.

      Поэтому я предлагаю следующее решение — декларируйте закрытый список возможных исключений и документируйте их. Но, т.к. нельзя быть увереннным, что вы предусмотрели все, оберните метод в try-catch, а пойманную ошибку — в задекларируему. Например, ConfigurationException, который будет содержать InnerException — пойманную ошибку. Это позволит стороннему разработчику поймать все возможные ошибки, но в случае чего быстро разобраться в чем дело.

      Версии или "как не укусить себя за хвост"

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

      "Паровозик, который смог" — Deploy

      Необходимость актуальности документации и версий порождают требование к корректности деплоя. В своем решении мы используем следующее решение (костыли, но работают).
      Когда надо выпустить нвый релиз, разработчик дергает bat'ник с указанием номера релиза, а затем батник:

      • билдит релиз
      • кладет все библиотеки в архив
      • билдит свежую версию документации (docfx)
      • указывает версию релиза в документации и в названии архива
      • кладет всё самое свеженькое в гит-репозиторий
      • WebApp на MS Azure подтягивает свежий коммит по гит хуку и публикует изменения

      На выходе получаем обновленную версию сайта с документацией, откуда можно скачать архив с последней версией SDK.
      В планах на будущее — упаковка всего в Nuget пакеты и публикация в локальный Nuget репозиторий.

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

      "-А так можешь? — Фигня. Смотри как надо!" — Примеры & toolkit

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

      Заключение

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

      Спасибо за прочтение, буду рад вашим комментариям. Надеюсь, эта статья будет для вас полезной.

      Microsoft представила предварительную версию официального набора инструментов разработчиков Windows 10. SDK (Software Development Kit) позволяет разработчикам создавать программы, используя все преимущества, API и новшества грядущей операционной системы. Например, появится возможность создания универсальных WinRT-приложений, которые смогут исполняться на ПК, планшетах, смартфонах и даже на Xbox One.


      Одновременно был выпущен набор инструментов для создания эффективных и качественных драйверов аппаратной периферии с поддержкой последних возможностей Windows 10 — Windows Driver Kit (WDK). Заинтересованные разработчики могут скачать Windows 10 SDK и WDK с официального сайта.


      Одним из ключевых новшеств Windows 10 SDK является инструмент Adaptive UX, который упрощает создание интерфейсов универсальных приложений и оптимизирован как для пользователей систем с клавиатурой и мышью, так и для владельцев сенсорных устройств вроде смартфонов и планшетов. Adaptive UX позволяет создавать интерфейс, который умеет подстраиваться как к небольшим экранам смартфонов, так и к дисплеям настольных ПК.


      Кроме того, множество новых элементов управления в пользовательском интерфейсе Windows 10 во время работы умеют определять, каким способом пользователь взаимодействует с приложением, и соответствующим образом подстраиваются (например, на гибридном ноутбуке при нажатии пальцем на экран целевые области будут больше, чем при работе мышью).



      Кроме того, в Windows 10, в том числе в мобильной версии для смартфонов и ARM-планшетов, появится новая платформа DirectInk. С её помощью разработчики смогут буквально несколькими строчками кода добавить в свои приложения поддержку перьевого ввода и распознавания рукописного текста. Microsoft считает, что расширение возможностей ОС в области естественных интерфейсов — очень важная область новаций.

      Устройства Windows 10 будут выпускаться в самых разнообразных форматах и размерах, многие из них позволят рисовать на экране. Грядущая ОС наделена встроенной поддержкой нового оборудования для рукописного ввода с низкими задержками, в том числе на смартфонах. Кроме того, DirectInk поддерживает чувствительное к силе нажатия оборудование и улучшает распознавание случайных прикосновений ладонью при удерживании устройства.

      Кстати, компания продолжает оптимизировать интерфейс Windows 10 для смартфонов — скриншот из недавней презентации WinHec говорит о том, что в панель Action Centre будут добавлены две новые удобные функции — вызов фонарика и инструмент Quicknote для быстрого добавления новых заметок.

      Читайте также: