Co to jest SDK? Przykłady, przypadki użycia i charakterystyka

SDK są wszędzie i pomagają programistom tworzyć oprogramowanie szybciej i łatwiej. W tym artykule przyjrzę się kilku przykładom SDK i omówię przypadki użycia i cechy dobrego SDK.

Czym jest zestaw SDK (Software Development Kit)?

Omawiamy to często w jednym z naszych innych artykułów – jak zbudować SDK od podstaw – ale zasadniczo, Software Development Kits (lub SDK) to biblioteki kodu zawierające warstwę abstrakcji, która ułatwia interakcję z oprogramowaniem lub sprzętem przy użyciu preferowanego języka programowania, przyspieszając proces tworzenia aplikacji.

Schemat blokowy kodu wywołującego SDK, który wywołuje API. Kod jest reprezentowany przez pluszową lamę korzystającą z laptopa, strzałki między blokami to brązowe strzałki plushie z neutralnym wyrazem twarzy. SDK to pluszowy klocek lisa z napisem SDK, a API to pluszowy klocek z napisem API, uśmiechniętą buźką i kremem na wierzchu.

Kod dewelopera wchodzi w interakcję z SDK, a ten z kolei wchodzi w interakcję z API, sprzętem lub innym oprogramowaniem.

Niektóre przykłady typów SDK obejmują:

  • API SDK: Służą one do interakcji z interfejsem API, takim jak Twitter API lub Stripe API.
  • Sprzętowe zestawy SDK: Służą one do interakcji ze sprzętem, począwszy od urządzeń konsumenckich, takich jak drukarki, po urządzenia IoT, inteligentne urządzenia konsumenckie i inne.
  • Mobilne zestawy SDK: Są one używane do interakcji z urządzeniami mobilnymi, takimi jak iOS lub Android SDK. Jeśli chcą Państwo korzystać z aparatu w telefonie lub obsługiwać powiadomienia, należy użyć mobilnych zestawów SDK.
  • Zestawy SDK interfejsu użytkownika: Służą one do implementacji komponentów interfejsu użytkownika na stronach internetowych, w aplikacjach mobilnych lub w aplikacjach desktopowych.

Lista przykładów SDK

Istnieje wiele rodzajów zestawów SDK i tysiące dostępnych zestawów SDK. Poniżej znajduje się kilka przykładów wymienionych powyżej typów zestawów SDK:

API SDK

API SDK to zestaw SDK, który ułatwia korzystanie z interfejsów programowania aplikacji lub interfejsów API. Wiele firm SaaS i chmurowych ma interfejsy API do korzystania ze swoich narzędzi i produktów, a bezpośrednie wywoływanie tych interfejsów API zwykle nie jest najlepszym podejściem. Można łatwo skończyć pisząc wiele standardowego kodu do obsługi takich rzeczy jak uwierzytelnianie, ponawianie prób i inne w wybranym języku programowania.

Urocza lama korzystająca z laptopa

Z drugiej strony, API SDK zapewni Państwu SDK w językach, których Państwo używają, i zajmie się całym kodem standardowym, zwykle implementując najlepsze praktyki dla tego API. Na przykład, zestaw SDK może zaimplementować uwierzytelnianie w sposób, który ma sens dla interfejsu API, lub obsługiwać ponowienia i backoff w najbardziej odpowiedni sposób.

Te zestawy SDK są również skonstruowane tak, aby miały sens dla korzystającego z nich programisty. Może to polegać na podzieleniu interfejsu API na wiele zestawów SDK lub zawinięciu wielu interfejsów API w jeden zestaw SDK. Zapewnią one również przykłady kodu, dokumentację i nie tylko w dostępnych językach SDK.

Przykłady zestawów SDK API obejmują:

  • Stripe SDK: Ten zestaw SDK ułatwia interakcję z interfejsem API Stripe w celu obsługi płatności. Zestawy SDK Stripe obejmują interfejsy API dla szerokiej gamy języków programowania i technologii.
  • Twilio SDK: Ten zestaw SDK ułatwia interakcję z interfejsem API Twilio w celu obsługi komunikacji, takiej jak SMS, głos i wideo.
  • AWS SDK: Ten zestaw SDK ułatwia interakcję z interfejsem API AWS w celu obsługi usług w chmurze, takich jak pamięć masowa, bazy danych i inne.

Hardware SDK

Sprzętowe zestawy SDK zapewniają warstwę abstrakcji do komunikacji z narzędziami sprzętowymi, a nie narzędziami programowymi. Może to być urządzenie podłączone do komputera, takie jak skaner kodów kreskowych, do urządzeń zdalnych, takich jak urządzenia Internetu rzeczy (IoT), do sprzętu podłączonego do urządzenia mobilnego, takiego jak czytniki kart kredytowych.

Urocza lama korzystająca z karty kredytowej

Komunikacja ze sprzętem jest zazwyczaj kodem niskiego poziomu i może być bardzo złożona. Zestaw SDK dla sprzętu zapewni wyższy poziom abstrakcji, ułatwiając interakcję ze sprzętem.

Przykłady zestawów SDK dla sprzętu obejmują:

  • Square Reader SDK: Square Reader to karta kredytowa i urządzenie do płatności zbliżeniowych, które łączy się z telefonami komórkowymi. Ten zestaw SDK umożliwia integrację płatności z aplikacjami mobilnymi przy użyciu sprzętu czytnika. Czytnik ten można podłączyć przez gniazdo audio, więc SDK obsługuje konwersję sygnałów audio na dane potrzebne czytnikowi i z powrotem na dane potrzebne aplikacji.
  • Tuya IoT App SDK: Ten zestaw SDK umożliwia programistom aplikacji mobilnych tworzenie aplikacji, które współdziałają z szeregiem inteligentnych urządzeń domowych i IoT firmy Tuya. Może obsługiwać parowanie urządzeń, konfigurację urządzeń i sterowanie urządzeniami za pośrednictwem wielu protokołów, od Zigbee po Matter. SDK abstrahuje od protokołów i typów urządzeń, ułatwiając tworzenie aplikacji bez dbania o podstawową technologię.
  • Zebra Scanner SDK: Ten zestaw SDK umożliwia tworzenie aplikacji współpracujących z gamą skanerów kodów kreskowych firmy Zebra. Zapewnia on wyższy poziom abstrakcji niż niskopoziomowe interfejsy API skanerów kodów kreskowych, ułatwiając tworzenie aplikacji współpracujących ze skanerami.

Mobile SDK

Mobilne zestawy SDK są używane do interakcji z urządzeniami mobilnymi, takimi jak iOS i Android. Te pakiety SDK zapewniają wyższy poziom abstrakcji niż niskopoziomowe interfejsy API dostarczane przez mobilne systemy operacyjne, ułatwiając tworzenie aplikacji, które współdziałają z urządzeniami.

Urocza lama korzystająca z telefonu komórkowego

Niektóre mobilne zestawy SDK są dostarczane przez producenta urządzenia i zazwyczaj są one ograniczone pod względem języków, których można używać. Istnieją pakiety SDK innych firm, które działają nad nimi i zapewniają obsługę innych języków lub spójne środowisko programistyczne na wielu urządzeniach.

Przykłady mobilnych zestawów SDK obejmują:

  • iOS SDK: Ten zestaw SDK zapewnia szereg interfejsów API do tworzenia aplikacji na urządzenia z systemem iOS. Zawiera interfejsy API do interakcji ze sprzętem urządzenia, takim jak kamera, oraz do interakcji z systemem operacyjnym, takim jak obsługa powiadomień. Ten zestaw SDK obsługuje przede wszystkim Swift, ale mogą Państwo tworzyć aplikacje przy użyciu C++ i Objective C.
  • Android SDK: Podobnie jak iOS SDK, ten zestaw SDK zapewnia szereg interfejsów API do tworzenia aplikacji mobilnych na urządzenia z systemem Android. Ten zestaw SDK obsługuje przede wszystkim Java i Kotlin, ale mogą Państwo tworzyć aplikacje na Androida w C++.
  • Flutter SDK: Ten zestaw SDK zapewnia szereg interfejsów API do tworzenia aplikacji mobilnych na urządzenia z systemem iOS i Android. Zapewnia spójne środowisko programistyczne na obu platformach i obsługuje Dart język programowania.
  • .NET MAUI: Ten zestaw SDK zapewnia szereg interfejsów API do tworzenia aplikacji mobilnych na urządzenia z systemem iOS i Android. Zapewnia spójne środowisko programistyczne na obu platformach i obsługuje C# oraz F#.

UI SDK

Zestawy SDK interfejsu użytkownika zapewniają komponenty interfejsu użytkownika do wykorzystania w aplikacji internetowej, mobilnej lub komputerowej. Abstrahują one od szeregu doświadczeń użytkownika w różnych językach programowania i zapewniają spójny wygląd i działanie na różnych platformach.

Urocza lama projektująca stronę internetową

Przykłady UI SDK obejmują:

  • DevExpress: Ten zestaw SDK zapewnia szereg komponentów interfejsu użytkownika dla aplikacji internetowych, mobilnych i stacjonarnych.
  • MUI: Ten zestaw SDK zapewnia szereg komponentów interfejsu użytkownika dla aplikacji internetowych i jest zbudowany na bazie React.
  • Material Design: Ten zestaw SDK zapewnia szereg komponentów interfejsu użytkownika dla aplikacji internetowych, a także aplikacji mobilnych zbudowanych przy użyciu systemu Android lub Flutter. Jest on oparty na systemie Google Material Design.

Przypadki użycia dla implementacji SDK

W przypadku wszystkich różnych typów zestawów SDK ogólny temat jest taki sam – zapewniają one sposób na wbudowanie funkcjonalności w aplikację bez konieczności samodzielnego pisania całego kodu. Oto kilka przypadków użycia dla implementacji SDK:

Płatności

Wszyscy lubimy otrzymywać płatności, prawda? Obsługa płatności może być jednak złożona i obejmować wiele przypadków brzegowych. Zestaw SDK do obsługi płatności, taki jak Stripe, może obsłużyć to wszystko za Ciebie, od obsługi interfejsu użytkownika do wprowadzania szczegółów płatności, po obsługę komunikacji z dostawcą płatności i obsługę odpowiedzi od tego dostawcy płatności. Jeśli budują Państwo platformę, na której trzeba kogoś obciążyć, można dodać płatności w zaledwie kilku linijkach kodu, wywołując odpowiedni zestaw SDK.

Analityka i metryki

Jako programiści chcemy wiedzieć, kto korzysta z naszych aplikacji, jakich funkcji używają, w jaki sposób odkrywają te funkcje i szczegółowe informacje, gdy coś pójdzie nie tak. W dzisiejszych czasach dodanie analityki i metryk do aplikacji za pomocą zestawu SDK, takiego jak Sentry, jest dość szybkie. Ponownie, kilka linijek kodu i mają Państwo analitykę, metryki i śledzenie błędów.

Media społecznościowe

Media społecznościowe zmieniły sposób, w jaki wchodzimy w interakcje z naszymi klientami, potencjalnymi klientami, przyjaciółmi i współpracownikami. Deweloper może wiele zrobić z mediami społecznościowymi, od otrzymywania powiadomień, gdy wspomina się o jego firmie, po planowanie postów. Zestaw SDK dla mediów społecznościowych pozwala zintegrować te funkcje z własnymi aplikacjami.

Niestandardowe zarządzanie relacjami (CRM)

Niestandardowe oprogramowanie do zarządzania relacjami lub CRM często musi być zintegrowane z innymi systemami, takimi jak systemy tworzone przez dewelopera. Na przykład, jeśli chcą Państwo dodać formularz kontaktowy do swojej strony internetowej i chcą Państwo przekazać dane klienta do CRM. Można to zrobić za pomocą CRM SDK z różnymi możliwościami SDK, od pełnego komponentu UI, który robi wszystko, po bardziej lekki SDK, w którym dane formularza są wysyłane do wywołania SDK.

Charakterystyka dobrego SDK

Chociaż zasadniczo SDK powinien poprawić Państwa doświadczenie programistyczne, nie zawsze tak jest. Istnieje kilka świetnych zestawów SDK, a także kilka całkowicie okropnych.

Oto kilka cech dobrego zestawu SDK:

  1. Łatwość instalacji: Podczas gdy łatwe jest terminem subiektywnym, Państwa zestaw SDK musi być łatwy do zainstalowania przez użytkowników. Czasami jest to tak proste, jak zapewnienie, że jest on hostowany w menedżerze pakietów, takim jak npm, pip, nuget lub maven.

  2. Dokumentacja: Bez dobrej dokumentacji zestaw SDK może być trudny w użyciu lub bezużyteczny. Dobra dokumentacja powinna zawierać dokumentację referencyjną we wszystkich obsługiwanych językach, przewodniki dotyczące wdrażania typowych funkcji oraz samouczki umożliwiające szybkie rozpoczęcie pracy.

  3. Próbki kodu: Programiści uwielbiają kopiować i wklejać, a posiadanie świetnych przykładów kodu naprawdę pomaga programistom szybko tworzyć aplikacje, czerpiąc z przykładów wszystko, od inspiracji po ogromne fragmenty kodu. Mogą one znajdować się w dokumentacji lub w osobnym repozytorium przykładów na GitHub. Dobre próbki kodu mogą nawet pomóc asystentom kodowania AI w zintegrowanym środowisku programistycznym lub IDE.

  4. Przykładowe aplikacje: Przykładowe aplikacje, będące rozszerzeniem próbek kodu, mogą pomóc użytkownikom zrozumieć większe przypadki użycia zestawu SDK i zobaczyć, jak można go wdrożyć w większej aplikacji, a nie tylko w jednym miejscu. Gdy programiści tworzą swoje aplikacje, próbki te mogą przyspieszyć czas ich dostarczenia, ponieważ mogą zapewnić pełną implementację referencyjną. Na przykład aplikacja z przykładowym kodem pokazującym, w jaki sposób można zaimplementować uwierzytelnianie użytkownika w jednym miejscu w aplikacji, a następnie w jaki sposób uwierzytelniony użytkownik może być używany w całej aplikacji.

  5. Idiomatyczne dla języka: Dobry SDK obsługuje szereg języków programowania, a dla każdego języka implementacja powinna być idiomatyczna dla tego języka. Od dokumentacji w odpowiednim formacie, aby umożliwić łatwą integrację z IDE, po korzystanie z odpowiednich funkcji językowych, dobry SDK powinien sprawiać wrażenie, że został napisany przez programistę, który dobrze zna język, dzięki czemu tworzenie oprogramowania przy jego użyciu jest naturalne. Nie powinien również wymyślać koła na nowo, wykorzystując w miarę możliwości standardowe biblioteki i frameworki dla tego języka.

  6. Niewiele zależności: W przypadku SDK bardzo łatwo jest mieć ogromną liczbę zależności, co może prowadzić do problemów z zarządzaniem nimi, gdy chce się dodać zależności do własnego projektu. Dobry SDK powinien mieć jak najmniej zależności.

  7. Prosty w użyciu: Prostota to kolejny subiektywny termin, ale dobry SDK powinien wydawać się deweloperowi łatwy w użyciu i wyrażać koncepcje i wzorce w sposób zorientowany na użytkownika, koncentrując się na przypadkach użycia, które może mieć deweloper. Państwa SDK powinien być napisany ze zrozumieniem typów problemów, które użytkownicy chcą rozwiązać, i zapewniać wygodne sposoby na ich rozwiązanie, a nie być tylko opakowaniem wokół wewnętrznej struktury bazy danych lub sprzętu. Na przykład, w przypadku SDK dla skanera kodów kreskowych, programiści korzystający z niego prawdopodobnie chcą po prostu uzyskać zdarzenie uruchamiane po zeskanowaniu kodu kreskowego z numerem kodu kreskowego, a nie martwić się o pisanie pętli kontrolnych w celu monitorowania tego, co skaner wykrywa przez cały czas, odpytywanie w celu sprawdzenia, czy kod kreskowy został znaleziony, a następnie pobieranie kodu.

  8. Aktualizacja: Dobry zestaw SDK powinien być aktualny z najnowszą wersją interfejsu API lub sprzętu, który obsługuje. Może to być wyzwaniem, ale ważne jest, aby SDK był aktualny, ponieważ użytkownicy będą chcieli korzystać z najnowszych funkcji API lub sprzętu. Aby w tym pomóc, proszę sprawić, by Państwa SDK był jak najbardziej łatwy w utrzymaniu (aby zapoznać się z kilkoma wskazówkami dotyczącymi SDK TypeScript, proszę zajrzeć na naszą stronę “Quick tips for making your SDK more maintainable in TypeScript: routes edition” artykuł).

Wnioski

Dobry SDK może znacznie poprawić doświadczenia programistów dla użytkowników. W przypadku sprzętu otrzymują oni ładną abstrakcję, która jest łatwiejsza do zaprogramowania, zamiast wysyłania surowych, niskopoziomowych poleceń sprzętowych; w przypadku API otrzymują modele i klasy usług, które ułatwiają interakcję z tym API, obsługując takie rzeczy jak uwierzytelnianie, ponawianie prób i wiele innych. Aby dowiedzieć się więcej na temat tego, czy warto tworzyć SDK, proszę zapoznać się z naszym artykułem na temat “dlaczego muszę zbudować SDK.”