API програмування. Що таке API і для чого вони потрібні

API визначає функціональність, яку надає програма (модуль, бібліотека), при цьому API дозволяє абстрагуватись від того, як саме ця функціональність реалізована.

Якщо програму (модуль, бібліотеку) розглядати як чорну скриньку, то API - це безліч «ручок», які доступні користувачеві цієї скриньки, які він може крутити і смикати.

Програмні компоненти взаємодіють один з одним за допомогою API. При цьому зазвичай компоненти утворюють ієрархію – високорівневі компоненти використовують API низькорівневих компонентів, а ті, у свою чергу, використовують API ще більш низькорівневих компонентів.

За таким принципом побудовані протоколи передачі даних. Стандартний протокол Internet (мережева модель OSI) містить 7 рівнів (від фізичного рівня передачі пакетів біт до рівня протоколів додатків, подібних до протоколів HTTP і IMAP). Кожен рівень користується функціональністю попереднього рівня передачі і, своєю чергою, надає потрібну функціональність наступного рівня.

Поняття протоколу близьке за змістом до поняття API. І те й інше є абстракцією функціональності, тільки в першому випадку йдеться про передачу даних, а в другому – про побудову комп'ютерних програм.

API бібліотеки функцій та класів включає в себе опис сигнатурі семантики функцій.

Application Programming Interface (API) програмний інтерфейс взаємодії між системами, що дозволяє:

  • Отримувати доступ до бізнес-сервісів підприємства
  • Обмінюватися інформацією між системами та додатками
  • Спростити взаємодію між компаніями, партнерами, розробниками та клієнтами

Open API стратегія

API стратегія включає:

  • Розробка бізнес-продуктів на основі існуючих API
  • Надання внутрішніх сервісів розробникам
  • Моделі монетизації API для побудови мультиканальної взаємодії та підвищення прибутку

Реалізація концепції Open API допомагає трансформувати бізнес, вбудовувати його в гнучку проектну екосистему гравців ринку, створювати умови для постійної генерації нових ідей та формування додаткової цінності під час управління масивами корпоративних даних.

Ринок інтеграційних рішень розвивається у тих еволюції API - від EDI і SOAP до Web 2.0 , з якого почалася епоха громадських API. Число таких інтерфейсів у найближчі 3 роки може зрости більш ніж у 50 разів і досягти 1 мільйона. Це пов'язано з мультиканальністю: канали взаємодії з клієнтами мають змінюватись разом із ними. Безперервне зростання кількості споживачів та обсягу даних призвело до появи економіки API, що допомагає на основі відкритих інтерфейсів створювати інноваційні бізнес-моделі використання корпоративних активів та сервісів.

Сигнатура функції

Сигнатура функції- Частина загального оголошення функції, що дозволяє засобам трансляції ідентифікувати функцію серед інших. У різних мовах програмування існують різні уявлення про сигнатуру функції, що також тісно пов'язане з можливостями навантаження функції у цих мовах.

Іноді розрізняють сигнатуру викликуі сигнатуру реалізаціїфункції. Сигнатура виклику зазвичай складається за синтаксичною конструкцією виклику функції з урахуванням сигнатури області видимості даної функції, імені функції, послідовності фактичних типів аргументів у виклику та тип результату. У сигнатурі реалізації зазвичай беруть участь деякі елементи із синтаксичної конструкції оголошення функції: специфікатор області видимості функції, її ім'я та послідовність формальних типів аргументів.

Наприклад, у мові програмування Сі++ проста функція однозначно пізнається компілятором з її імені та послідовності типів її аргументів, що становить сигнатуру функції у цій мові. Якщо функція є методом деякого класу, то в сигнатурі братиме участь і ім'я класу.

Також необхідно зазначити, що у розпорядженні програміста часто знаходиться кілька різних API, що дозволяють досягти одного і того ж результату. У цьому кожен API зазвичай реалізований з допомогою API програмних компонент нижчого рівня абстракції.

Наприклад: щоб побачити в браузері рядок «Hello, world!» достатньо лише створити HTML-документ з мінімальним заголовком, і найпростішим тілом, що містить цей рядок. Що станеться, коли браузер відкриє цей документ? Програма-браузер передасть ім'я файлу (або вже відкритий дескриптор файлу) бібліотеці, що обробляє HTML-документи, та, у свою чергу, за допомогою API операційної системипрочитає цей файл, і розбереться в його пристрої, покликає через API бібліотеки стандартних графічних примітивів операції типу «очистити віконце», «написати вибраним шрифтом Hello, world!», при цих операціях бібліотека графічних примітивів звернеться до бібліотеки віконного інтерфейсу з відповідними запитами, ця бібліотека звернеться до API операційної системи із запитами виду «а поклади мені в буфер відеокарти ось це».

При цьому практично на кожному рівні реально існує кілька можливих альтернативних API. Наприклад: ми могли б писати вихідний документ не на HTML, а на LaTeX, для відображення могли б використовувати будь-який браузер. Різні браузери використовують різні HTML-бібліотеки, і, крім того, все це може бути (взагалі кажучи) зібрано з використанням різних бібліотек примітивів і на різних операційних системах.

Основними складностями існуючих багаторівневих систем API, таким чином, є:

  • Складність портування програмного коду з однієї системи API в іншу (наприклад, при зміні ОС);
  • Втрата функціональності при переході з нижчого рівня на вищий. Грубо кажучи, кожен шар АPI створюється для полегшення виконання деякого стандартного набору операцій. Але при цьому реально утруднюється або стає принципово неможливим виконання деяких інших операцій, які надає нижчий рівень API.

Основні типи API

Внутрішні API

  • Доступ до API надається лише внутрішнім розробникам
  • Програми націлені на працівників підприємства

Бізнес-драйвери:

  • Консистентність розробки
  • Зниження витрат
  • Підвищення ефективності розробки

Партнерські API

  • API доступні лише обмеженого наборубізнес-партнерів
  • Програми призначені для кінцевих споживачів та для бізнес-користувачів

Бізнес-драйвери:

  • Автоматизація процесу розробки
  • Розвиток партнерських відносин
  • Оптимізація процесу взаємодії із партнерами

Публічні API

Доступ надається будь-якому зовнішньому розробнику Програми націлені на кінцевих користувачів

Бізнес-драйвери:

  • Розробка нових сервісів
  • Розвиток екосистеми
  • Мультиканальна взаємодія

Найбільш відомі API

API операційних систем

API графічних інтерфейсів

  • Direct3D (частина DirectX)
  • DirectDraw (частина DirectX)

Windows API – набір функцій операційної системи

Абревіатура API багатьом програмістам-початківцям здається дуже таємничою і навіть лякаючою. Насправді Application Programming Interface (API) - це просто деякий готовий набір функцій, який можуть використовувати розробники додатків. У загальному випадку це поняття еквівалентне тому, що раніше найчастіше називали бібліотекою підпрограм. Однак, зазвичай, під API мається на увазі особлива категорія таких бібліотек.

Під час розробки практично будь-якого досить складного додатка (MyAppication) для кінцевого користувача формується набір специфічних внутрішніх функцій, що використовуються для реалізації цієї конкретної програми, яка називається MyApplication API. Проте часто виявляється, що ці функції можуть ефективно використовуватися і для створення інших програм, зокрема іншими програмістами. У цьому випадку автори, виходячи із стратегії просування свого продукту, повинні вирішити питання: чи відкривають вони доступ до цього набору для зовнішніх користувачів чи ні? При ствердній відповіді в описі програмного пакета як позитивна характеристика з'являється фраза: "Комплект включає відкритий набір API-функцій" (але іноді за додаткові гроші).

Таким чином, найчастіше API має на увазі набір функцій, що є частиною однієї програми, але при цьому доступних для використання в інших програмах. Наприклад, Excel, крім інтерфейсу кінцевого користувача, має набір функцій Excel API, який може використовуватися, зокрема, при створенні програм за допомогою VB.

Відповідно, Windows API - це набір функцій, що є частиною самої операційної системи і в той же час - доступний для будь-якої іншої програми, у тому числі написаної за допомогою VB. У цьому плані цілком виправдана аналогія з набором системних переривань BIOS/DOS, який є DOS API.

Відмінність у тому, що склад функцій Windows API, з одного боку, значно ширше проти DOS, з іншого - не включає багато засобів прямого управління ресурсами комп'ютера, які були доступні програмістам попередньої ОС. Крім того, звернення до Windows API виконується за допомогою звичайних процедурних звернень, а виклик функцій DOS через спеціальну машинну команду процесора, яка називається Interrupt («переривання»).

Навіщо потрібний Win API для VB-програмістів

Незважаючи на те, що VB має безліч різноманітних функцій, у процесі більш-менш серйозної розробки виявляється, що їх можливостей часто не достатньо для вирішення необхідних завдань. При цьому програмісти-новачки часто починають скаржитися на недоліки VB і подумувати про зміну інструменту, не підозрюючи, що на їхньому комп'ютері є величезний набір коштів і потрібно тільки вміти ними скористатися.

При знайомстві з Win API виявляється, що багато вбудованих VB-функцій - не що інше, як звернення до відповідних системних процедур, але лише реалізоване у вигляді синтаксису даної мови. З огляду на це необхідність використання APIвизначається наступними варіантами:

  1. API-функції, що повністю реалізовані у вигляді вбудованих VB-функцій. Тим не менш, іноді і в цьому випадку буває корисним перейти до застосування API, так як це дозволяє іноді істотно підвищити продуктивність (зокрема, за рахунок відсутності непотрібних перетворень параметрів, що передаються).
  2. Вбудовані VB-функції реалізують лише окремий випадок відповідної API-функції. Це досить простий варіант. Наприклад, API-функція CreateDirectory має ширші можливості порівняно з вбудованим VB-оператором MkDir.
  3. Величезна кількість API-функцій взагалі немає аналогів в існуючому сьогодні варіанті мови VB. Наприклад, видалити каталог засобами VB не можна – для цього потрібно використовувати функцію DeleteDirectory.

Слід також підкреслити, що деякі функції API (їх частка в Win API дуже незначна) не можуть викликатися з VB-програм через ряд обмежень мови, наприклад через відсутність можливості роботи з адресами пам'яті. Але в ряді випадків можуть допомогти нетривіальні прийоми програмування (зокрема, у випадку з тими самими адресами).

Особиста думка автора така - замість розширення від версії до версії вбудованих функцій VВ слід було б давати гарний описнайбільш ходових API-функцій. Водночас хочеться порадити розробникам не чекати на появу нової версіїзасоби з розширеними функціями, а уважніше вивчити склад існуючого Win API - цілком імовірно, що потрібні можливості можна було реалізувати вже у версії VB 1.0 випуску 1991 року.

Як вивчати Win API

Це не таке просте питання, якщо врахувати, що число функцій Win32 API оцінюється в розмірі близько 10 тисяч (точної цифри не знає ніхто, навіть Microsoft).

До складу VB (версій 4-6) входить файл з описом оголошень Win API - WIN32API.TXT (детальніше про його застосування ми розповімо пізніше). Але, по-перше, з його допомогою можна отримати відомості про призначення тієї чи іншої функції та її параметри лише за використовуваними мнемонічним іменами, а по-друге - перелік функцій у цьому файлі далеко не повний. Свого часу (сім років тому) у VB 3.0 були спеціальні довідкові файли з описом функцій Win16 API. Проте вже у v.4.0 ця корисна інформація із зручним інтерфейсом зникла.

Вичерпну інформацію про Win32 API можна знайти у довідковій системі Platform Software Development Kit, яка, зокрема, знаходиться на компакт-дисках MSDN Library, включених до складу VB 5.0 та 6.0 Enterprise Edition та Office 2000 Developer Edition. Проте розшукати там потрібну інформацію та розібратися у ній зовсім не просто. Не кажучи вже про те, що всі описи там наводяться стосовно мови C.

Загальновизнаним у світі посібником вивчення API-программирования серед VB є книжки відомого американського експерта Даніеля Епплмана (Daniel Appleman). Його серія Dan Appleman's Visual Basic Programmer's Guide to the Windows API (для Win16, Win32, стосовно різних версій VB) з 1993 року незмінно входить до бестселерів для VB-програмістів. Книгу Dan Appleman's VB 5.0 Programmer's Guide to the Win32 API, випущену в 1997 році, автору привіз із США приятель, який знайшов її у першому ж книгарні невеликого провінційного містечка.

Ця книга об'ємом понад 1500 сторінок включає опис загальної методики API-програмування серед VB, а також більше 900 функцій. Компакт-диск, що додається, містить повний текст книги та всіх програмних прикладів, а також кілька додаткових розділів, які не увійшли до друкованого варіанту. У 1999 році Ден Епплман випустив нову книгу Dan Appleman's Win32 API Puzzle Book and Tutorial для Visual Basic Programmers, яка включає відомості про ще 7600 функцій (хоч і не настільки докладні).

Win API та Dynamic Link Library (DLL)

Набір Win API реалізований як динамічних DLL-бібліотек. Далі фактично піде про технологію використання DLL у середовищі VB на прикладі бібліотек, що входять до складу Win API. Однак, говорячи про DLL, необхідно зробити кілька важливих зауважень.

В даному випадку під DLL ми маємо на увазі традиційний варіант двійкових динамічних бібліотек, які забезпечують пряме звернення до потрібних процедур - підпрограм або функцій (приблизно так само, як це відбувається при виклику процедур всередині VB-проекту). Такі бібліотеки можуть створюватися за допомогою різних інструментів: VC++, Delphi, Fortran, крім VB (подивимося, що з'явиться у версії 7.0) – останній може робити лише ActiveX DLL, доступ до яких виконується через інтерфейс OLE Automation.

Зазвичай файли динамічних бібліотек мають розширення.DLL, але це не обов'язково (для Win16 часто застосовувалося розширення.EXE); драйвери зовнішніх пристроївпозначаються за допомогою. DRV.

Як ми вже зазначали, визначити точну кількість API-функцій Windows і файлів, що містять їх, досить складно, проте всі вони знаходяться в системному каталозі. У цьому плані краще виділити склад бібліотек, що входять до ядра операційної системи, та основних бібліотек з ключовими додатковими функціями.

А тепер кілька порад.

Порада 1. Слідкуйте за правильним оформленням оголошення DL L-процедур

Саме звернення до DLL-процедур в програмі виглядає так само, як до «звичайних» процедур Visual Basic, наприклад:

Call DllName ([список аргументів])

Однак для використання зовнішніх DLL-функцій (в тому числі і Win API) їх потрібно обов'язково оголосити у програмі за допомогою оператора Declare, який має такий вигляд:

Declare Sub Ім'яПроцедури Lib _ “Ім'яБібліотеки” _ [([СписокАргументів])]

Declare Function Ім'яФункції _ Lib “Ім'яБібліотеки” _ [([СписокАргументів])]

Тут у квадратних дужках наведені необов'язкові елементи оператора, курсивом виділено змінні висловлювання, решта слів - ключові. У довідковій системі наведено досить добрий опис синтаксису оператора, тому зараз ми лише відзначимо деякі моменти.

Оголошення зовнішніх функційповинні розміщуватись у секції General Declarations модуля. Якщо ви розміщуєте його в модулі форми, то обов'язково потрібно вказати ключове слово Private (це оголошення буде доступне тільки всередині цього модуля) - таке обмеження для всіх процедур модуля форми.

Набір Win32 API реалізований лише у вигляді функцій (у Win16 API було багато підпрограм Sub). Здебільшого це функції типу Long, які найчастіше повертають код завершення операції.

Оператор Declare з'явився в MS Basic ще за часів DOS, причому він використовувався і для оголошення внутрішніх процедур проекту. Visual Basic цього не потрібно, так як оголошенням внутрішніх процедур автоматично є їх опис Sub або Function. Порівняно з Basic/DOS у новому описі обов'язково вказувати ім'я файла-бібліотеки, де знаходиться процедура. Бібліотеки Wip API розміщуються в системному каталозі Windows, тому достатньо лише навести назву файлу. Якщо ж ви звертаєтесь до DLL, яка знаходиться у довільному місці, потрібно записати повний шляхдо файлу.

Опис оператора Declare зазвичай займає досить багато місця і не міститься в один рядок у вікні коду. Тому ми рекомендуємо дотримуватися при написанні програм будь-якої певної схеми перенесення рядків, наприклад:

Declare Function GetTempPath _ Lib “kernel32” Alias ​​“GetTempPathA” _ (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long

І тут всі основні елементи опису рознесені різні рядки і тому добре читаються.

Порада 2. Будьте особливо уважні під час роботи з DLL-функціями

Використання Win API та різноманітних DLL-функцій суттєво розширює функціональні можливості VB та найчастіше дозволяє підвищити продуктивність програм. Однак розплата за це - ризик зниження надійності роботи програми, особливо в процесі налагодження.

Однією з найважливіших переваг середовища VB є надійність процесу розробки програм: функціонуючи під управлінням інтерпретатора, програмний кодтеоретично не може порушити роботу Windowsта самого VB. Програміст може не дуже уважно стежити за правильністю передачі параметрів у функції - подібні помилкибудуть легко виявлені самим інтерпретатором або в процесі трансляції коду або під час його виконання. В самому неприємному випадку просто відбудеться переривання режиму обробки, причому із зазначенням, де і чому сталася помилка.

Використання безпосередньо функцій Windows API або інших DLL-бібліотек знімає такий контроль за передачею даних та процесом виконання коду за межами середовища VB. Тому помилка у зверненні до зовнішніх функцій може призвести до непрацездатності та VB та операційної системи. Це особливо актуально на етапі розробки програми, коли наявність помилок – справа цілком природна. Таким чином, застосовуючи ширші можливості функцій базового шару системи, програміст бере він відповідальність за правильність їх застосування.

Проблема посилюється ще й тим, різні мови програмування використовують різні способи передачі параметрів між процедурами. (Вірніше, різні способипередачі використовуються за замовчуванням, так як багато мов може підтримувати кілька способів.) Win API реалізовані на C/C++ і застосовують угоди про передачу параметрів, прийняті в цій системі, які відрізняються від звичного для VB варіанту.

У зв'язку з цим слід зазначити, що поява вбудованих VB аналогів API-функцій виправдано саме адаптацією останніх до синтаксису VB і реалізацією відповідного механізму контролю обміну даними. Звернемо також увагу, що на етапі дослідного налагодження програми при створенні модуля, що виконується, краще використовувати варіант компіляції P-code замість Native Code (машинний код). У першому випадку програма працюватиме під управлінням інтерпретатора - повільніше проти машинним кодом, але надійніше з погляду можливого помилкового на операційну систему і забезпечуючи зручніший режим виявлення можливих помилок.

Порада 3. Десять рекомендацій Дена Епплмана щодо надійного API-програмування в середовищі VB

Використання функції API вимагає більш уважного програмування з використанням деяких не дуже звичних методів звернення до процедур (проти VB). Далі ми постійно звертатимемося до цих питань. А зараз наведемо виклад сформульованих Деном Епплманом порад на цю тему (їхній перший варіант з'явився ще в 1993 році) з деякими нашими доповненнями та коментарями.

1. Пам'ятайте про ByVal.Найбільш часта помилка, що здійснюється при зверненні до функцій API і DLL, полягає в некоректному використанні ключового слова ByVal: його або забувають ставити, або навпаки ставлять, коли в ньому немає необхідності.

На цих прикладах показано вплив оператора ByVal на передачу параметрів

Тип параметра З ByVal Без ByVal
Integer У стек міститься 16-розрядне ціле У стек міститься 32-розрядна адреса 16-розрядного цілого
Long У стек міститься 32-розрядне ціле У стек міститься 32-розрядна адреса 32-розрядного цілого
String Рядок перетворюється на формат, що використовується в С (дані та завершальний нульовий байт). 32-розрядна адреса нового рядкаміститься в стек У стек міститься VB-дескриптор рядка. (Такі дескриптори ніколи не використовуються самим Windows API і розпізнаються тільки в DLL, реалізованих спеціально для VB.)

Тут слід нагадати, що передача параметрів у будь-який системі програмування, у тому числі і VB, виконується двома основними шляхами: за посиланням (ByRef) або значенням (ByVal). У першому випадку передається адреса змінної (цей варіант використовується в VB за замовчуванням), у другому – її величина. Принципова відмінність полягає в тому, що за допомогою посилання забезпечується повернення в викликаючу програму зміненого значення параметра, що передається.

Щоб розібратися в цьому, проведіть експеримент за допомогою таких програм:

Dim v As Integer v = 2 Call MyProc(v) MsgBox “v = “ & v Sub MyProc (v As Integer) v = v + 1 End Sub

Запустивши на виконання цей приклад, ви отримаєте повідомлення зі значенням змінної, що дорівнює 3. Справа в тому, що в даному випадку в підпрограму MyProc передається адреса змінної v, фізично створеної в програмі, що викликає. Тепер змініть опис процедури на

Sub MyProc (ByVal v As Integer)

В результаті при виконанні тесту ви отримаєте v = 2, тому що в процедуру передається лише вихідне значення змінної - результат виконаних з ним операцій не повертається в програму, що викликає. Режим передачі значення можна змінити також за допомогою оператора Call наступним чином:

Sub MyProc (v As Integer) ... Call MyProc ((v)) '(v) - дужки вказують режим передачі _ за значенням.

Однак при зверненні до внутрішніх VB-процедур використання в операторі Call ключового слова ByVal заборонено - замість нього застосовуються круглі дужки. Цьому є пояснення.

У класичному випадку (С, Fortran, Pascal) відмінність режимів ByRef і ByVal залежить від того, що саме міститься в стек обміну даними - адреса змінної або її значення. В Basic історично використовується варіант програмної емуляції ByVal - у стеку завжди знаходиться адреса, але тільки при передачі за значенням для цього створюється тимчасова змінна. Щоб відрізнити ці два варіанти (класичний і Basic), використовуються різні способи опису режиму ByVal. Зазначимо, що емуляція режиму ByVal в VB забезпечує більш високу надійність програми: переплутавши форму звернення, програміст ризикує лише тим, що в програму, що викликає, повернеться (або не повернеться) виправлене значення змінної. У «класичному» варіанті така плутанина може призвести до фатальної помилки під час виконання процедури (наприклад, коли замість адреси пам'яті використовуватиметься значення змінної, рівне, скажімо, нулю).

DLL-функції реалізовані за «класичними» принципами і тому вимагають обов'язкового опису того, як відбувається обмін даними з кожним з аргументів. Саме цій меті служать оголошення функцій через опис Declare (точніше, списку аргументів, що передаються). Найчастіше передача настройок у функцію Windows API або DLL виконується за допомогою ключового слова ByVal. Причому воно може бути задане як у операторі Declare, так і безпосередньо при виклику функції.

Наслідки неправильної передачі параметрів легко передбачити. У разі отримання явно неприпустимої адреси, вам буде видано повідомлення GPF (General Protection Fault - помилка захисту пам'яті). Якщо ж функція отримає значення, що збігається з допустимою адресою, то функція API залізе в чужу область (наприклад, в ядро ​​Windows) з усіма катастрофічними наслідками, що звідси випливають.

2. Перевірте тип параметрів, що передаються.Не менш важливі правильне число і тип параметрів, що передаються. Необхідно, щоб оголошені в Declare аргументи відповідали очікуваним параметрам функції API. Найбільш часто зустрічається випадок помилки в передачі параметрів пов'язаний з різницею між NULL і рядком нульової довжини - слід пам'ятати, що це не те саме.

3. Перевіряйте тип значення, що повертається.

VB досить терпимо ставиться до розбіжності типів повертаються функцією значень, оскільки числові значення зазвичай повертаються через регістри, а чи не через стек. Наступні правила допоможуть визначити коректне значення, яке повертається функцією API:

  • DLL-функція, яка не повертає значення (аналог void в 'C'), має бути оголошена як VB Sub.
  • Функція API, що повертає ціле значення (Integer або Long), може бути визначена або як Sub або як Function, що повертає значення відповідного типу.
  • жодна з функцій API не повертає числа з плаваючою точкою, але деякі DLL можуть повертати такий тип даних.

4. З великою обережністю використовуйте конструкцію As Any.Багато функцій Windows API мають можливість приймати параметри різних типіві використовують при цьому поводження із застосуванням конструкції As Any (інтерпретація типу виконується в залежності від значення інших параметрів, що передаються).

Хорошим рішенням у разі може бути використання кількох псевдонімів (Alias) функції зі створенням двох і більше оголошень однієї і тієї ж функції, причому у кожному з описів вказуються параметри певного типу.

5. Не забувайте ініціалізувати рядки.У Win API існує безліч функцій, що повертають інформацію шляхом завантаження даних у рядкові буфери, що передаються як параметр. У своїй програмі ви можете як би все зробити правильно: не забути про ByVal, правильно передати параметри в функцію. Але Windows не може перевірити, який великий розмір виділеного під рядок ділянки пам'яті. Розмір рядка повинен бути достатнім для розміщення всіх даних, які можуть бути розміщені. Відповідальність за резервування буфера необхідного розміру лежить на VB-програміст.

Слід зазначити, що в 32-розрядних Windows при використанні рядків проводиться перетворення з Unicode (двобайтове кодування) в ANSI (однобайтове) і назад, причому з урахуванням національних установок системи. Тому для резервування буферів іноді зручніше використовувати байтові масиви замість рядкових змінних. (Докладніше про це буде розказано нижче.)

Найчастіше функції Win API дозволяють вам самим визначити максимальний розмірблоку. Зокрема, іноді для цього потрібно викликати іншу функцію API, яка підкаже розмір блоку. Наприклад, GetWindowTextLength дозволяє визначити розмір рядка, необхідний розміщувати заголовка вікна, одержуваного функцією GetWindowText. У цьому випадку Windows гарантує, що ви не вийдете за кордон.

6. Обов'язково використовуйте Option Explicit.

7. Уважно перевіряйте значення параметрів та величин, що повертаються. VB має хорошими можливостямиз перевірки типів. Це означає, що, коли ви намагаєтеся передати неправильний параметр у функцію VB, найгірше, що може статися, ви отримаєте повідомлення про помилку від VB. Але даний механізм, на жаль, не працює при зверненні до функцій Windows API.

Windows 9x має вдосконалену систему перевірки параметрів для більшості функцій API. Тому наявність помилки в даних зазвичай не викликає фатальної помилки, проте визначити, що ж стало її причиною - не так просто.

Тут можна порадити використати кілька способів налагодження помилки даного типу:

  • використовуйте покроковий режим налагодження або Debug.Print для перевірки кожного підозрілого виклику функції API. Перевірте результати цих дзвінків, щоб переконатися, що все в межах норми та функція коректно завершилася;
  • використовуйте Windows-наладчик типу CodeView та налагоджувальну версію Windows(є в Windows SDK). Ці засоби можуть виявити помилку параметрів та щонайменше визначити, яка функція API призводить до помилки;
  • використовуйте додаткові засоби третіх фірм для перевірки типів параметрів та допустимості їх значень. Такі засоби можуть не тільки знаходити помилки параметрів, але навіть вказати на рядок VB коду, де відбулася помилка.

Крім того, необхідно обов'язково перевіряти результат виконання API-функції.

8. Пам'ятайте, що цілі числа в VB і Windows - не одне й те саме.Насамперед слід пам'ятати, що під терміном «Integer» у VB розуміється 16-розрядне число, у документації Win 32 - 32-разрядное. По-друге, цілі числа (Integer і Long) в VB - це величини зі знаком (тобто один розряд використовується як знак, решта - як мантиса числа), у Windows - використовуються лише невід'ємні числа. Ця обставина потрібно мати на увазі, коли ви формуєте параметр за допомогою арифметичних операцій (наприклад, обчислюєте адресу за допомогою підсумовування деякої бази і зміщення). Для цього стандартні арифметичні функції VB не підходять. Що робити в цьому випадку, ми поговоримо окремо.

9. Уважно стежте за іменами функцій.На відміну від Win16 імена всіх функцій Win32 API є чутливими до точного використання малих і великих літер (у Win16 такого не було). Якщо ви десь застосовуєте маленьку літеру замість великої або навпаки, то потрібна функціяне буде знайдено. Слідкуйте також за правильним використаннямсуфікса A або W у функціях, які застосовують рядкові параметри. (Докладніше про це – див. нижче.)

10. Найчастіше зберігайте результати роботи.Помилки, пов'язані з неправильним використанням DLL і Win API, можуть призводити до аварійного завершення роботи VB-середовища, а можливо, і всієї операційної системи. Ви повинні подбати про те, щоб написаний вами код перед тестовим запуском було збережено. Найпростіше - встановити режим автоматичного запису модулів проекту перед запуском проекту в середовищі VB.

Після прочитання попередньої поради може виникнути думка, що використання функцій Win API – справа ризикована. Певною мірою це так, але тільки в порівнянні з безпечним програмуванням, що надається самим VB. Але при вмілому їх застосуванні та знанні можливих підводних каменів цей ризик мінімальний. До того ж повністю відмовитися від застосування Win API часто просто неможливо - вони все одно знадобляться при серйозній розробці.

До того ж раніше ми згадували про «підводні» камені для широкого класу DLL. У випадку з Win API все набагато простіше, тому що тут чітко уніфікована форма звернення до цих функцій. При цьому слід мати на увазі наступні основні моменти:

  1. Функції Win32 API є саме функціями, тобто процедурами типу Function (Win16 API було багато підпрограм Sub). Все це функції типу Long, тому їх описи записуються у такому вигляді: Declare Function name ... As Long ‘ тип функції _ визначається явно

    Declare Function name& ' тип функції _ визначається за допомогою суфікса

    Звертання до функції API виглядає так:

Result& = ApiName& ([ СписокАргументів]
  1. Найчастіше значення функції, що повертається, є кодом завершення операції. Причому ненульове значення означає у разі нормальне завершення, нульове - помилку. Зазвичай (але не завжди) можна уточнити характер помилки за допомогою звернення до функції GetLastError. Опис цієї функції має такий вигляд: Declare Function GetLastError& Lib “kernel32” ()

    УВАГА!При роботі в середовищі VB для отримання значення уточненого коду помилки краще використовувати властивість LastDLLError об'єкта Err, оскільки іноді VB обнулює функцію GetLastError у проміжку між зверненням до API та продовженням виконання програми.

    Інтерпретувати код, який повертається GelLastError, можна за допомогою констант, записаних у файлі API32.TXT, з іменами, що починаються з суфіксу ERROR_.

    Найбільш типові помилкимають такі коди:

    • ERROR_INVALID_HANDLE = 6& - неправильний описувач
    • ERROR_CALL_NOT_IMPLEMENTED = 120& - виклик у Windows 9x функції, доступної тільки для Windows NT
    • ERROR_INVALID_PARAMETER = 87& - неправильне значення параметра

    Однак багато функцій повертають значення деякого запитуваного параметра (наприклад OpenFile повертає значення описувача файлу). У разі помилка визначається якимось іншим спеціальним значенням Return&, найчастіше 0 або –1.

  2. Win32 API використовують строго фіксовані способи передачі найпростіших типів даних. а) ByVal... As Long

    З допомогою змінних типу Long виконується щонайменше 80% передачі аргументів. Зверніть увагу, що аргумент завждисупроводжується ключовим словом ByVal, а це, крім іншого, означає, що виконується одностороння передача даних - від VB-програми до API-функції.

    Б) ByVal ... As String

    Цей тип передачі даних також зустрічається досить часто, причому з аргументом також завждизастосовується ByVal. При виклику API-функції в стек записується адреса рядка, тому в цьому випадку можливий двосторонній обмін даними. Під час роботи з рядками слід враховувати кілька небезпек.

    Перша - резервування пам'яті під рядок проводиться у програмі, що викликає, тому якщо API-функція буде заповнювати рядки, то потрібно перед її викликом створити рядок необхідного розміру. Наприклад, функція GetWindowsDirectory повертає шлях до каталогу Windows, який не повинен займати більше 144 символів. Відповідно звернення до цієї функції має виглядати приблизно так:

    WinPath$ = Space$(144) ' резервуємо рядок в _ 144 символу Result& = GetWindowsDirectory& (WinTath$, 144) _ 'заповнення буфера ' Result& - фактичне число символів в імені _ каталогу WinPath$ = Left$(WinPath, Result&)

    Друга проблема полягає в тому, що при зверненні до API-функції проводиться перетворення вихідного рядка на її деяке внутрішнє уявлення, а при виході з функції - навпаки. Якщо за часів Win16 ця операція полягала лише у додаванні нульового байта наприкінці рядка, то з появою Win32 до цього додалася трансформація двобайтного кодування Unicode в ANSI і навпаки. (Про це докладно йшлося у статті «Особливості роботи з рядковими змінними в VB», Комп'ютерПрес 10'99 та 01'2000). Зараз же тільки зазначимо, що за допомогою конструкції ByVal... As String можна обмінюватися рядками лише із символьними даними.

    В) ... As Any

    Це означає, що в стек буде розміщена деяка адреса буфера пам'яті, інтерпретація вмісту якого буде виконуватися API-функцією, наприклад, залежно від значення інших аргументів. Однак As Any може використовуватися тільки в операторі Declare - при конкретному зверненні до функції як аргумент має бути визначена конкретна змінна.

    Г) ... As UserDefinedType

    Така конструкція також часто застосовується, коли необхідно обмінятись даними (загалом у обидві сторони) за допомогою деякої структури. Насправді ця конструкція - певний вид конкретної реалізації форми передачі As Any, у цьому випадку функція налаштована на фіксовану структуру.

    Форма структури даних визначається конкретною API-функцією, і програміст лежить відповідальність правильним чином описати і зарезервувати їх у зухвалої програмі. Така конструкція завждивикористовується безслова ByVal, тобто в даному випадку виконується передача за посиланням – у стек записується адреса змінної.

Приклад звернення до функції API

Проілюструємо сказане вище на прикладі використання двох корисних функційроботи з файлами - lopen і lread, які описуються так:

Declare Function lopen Lib "kernel32" _ Alias ​​"_lopen" (_ ByVal lpFileName As String, _ ByVal wReadWrite As Long) As Long Declare Function lread Lib "kernel32" _ Alias ​​"_lread" _ ByVal wBytes As Long) As Long

У VB їх аналогами - у разі точними - є оператори Open і Get (для режиму Binary). Звернемо відразу увагу використання ключового слова Alias ​​в оголошенні функції - це саме той випадок, коли без нього не обійтися. Справжні назви функції в бібліотеці починаються з символу підкреслення (типовий стиль мови C), що не дозволяється в VB.

Операція відкриття файлу може виглядати так:

Const INVALID_HANDLE_VALUE = -1 ' неправильне _ значення описувача lpFileName$ = “D:\calc.bas” ' ім'я файлу wReadWrite& = 2 ' режим “читання-запису” hFile& = lopen(lpFileName$, wReadWrite&) _ = INVALID_HANDLE_VALUE Then _ ' помилка відкриття файлу ' уточнюємо код помилки CodeError& = Err.LastDllError 'CodeError& = GetLastError _ ' ця конструкція не працює End If

Тут слід звернути увагу на два моменти:

  • як значення функції ми отримуємо значення описувача файлу. Помилки відповідає значення -1;
  • саме в цьому випадку не спрацьовує звернення до функції GetLastError - для отримання уточненого значення помилки ми звернулися до об'єкта Err (про можливість такої ситуації ми говорили вище).

Далі можна читати вміст файлу, але це передбачає, що програміст повинен мати деяке уявлення про його структуру (як і це відбувається при роботі з довільними двійковими файлами). У цьому випадку звернення до функції lread може виглядати так:

Dim MyVar As Single wBytes = lread (hFile&, MyVar, Len(MyVar) ' читання речового числа, 4 байти ' wBytes - число фактично прочитаних даних, ' -1 - помилка... Type MyStruct x As Single i As Integer End Type Dim MyVar As MyStruct wBytes = lread (hFile&, MyVar, Len(MyVar)) ' читання структури даних, 6 байтів

Ще раз зверніть увагу: другий аргумент функції передається за посиланням, решта – за значенням.

Dim MyVar As String MyVar = Space$(10) “резервуємо змінну для 10 символів wBytes = lread (hFile&, ByVal MyVar, Len(MyVar)) ” читання символьного рядка, 10 символів

Тут видно важливу відмінність від наведеного раніше прикладу - рядкова змінна обов'язково супроводжується ключовим словом ByVal.

Читання вмісту файлу в масиві (для простоти використовуватимемо одномірний байтовий масив) виконується таким чином:

Dim MyArray(1 To 10) As Byte wBytes = lread (hFile&, MyArray(1), _ Len(MyArray(1))* 10) ‘ читання 10 елементів масиву

Вказуючи перший елемент масиву як аргумент, ми передаємо адресу початку області пам'яті, зарезервованої під масив. Очевидно, що таким чином можна заповнити будь-який фрагмент масиву:

WBytes = lread (hFile&, MyArray(4), _ Len(MyArray(1))* 5) читання елементів масиву з 4-го по 8-й

Порада 5. Використовуйте Alias ​​для передачіта параметрів As Any

Тут на основі попереднього прикладу ми розкриємо суть четвертої ради Дена Епплмана.

Працюючи з функцією lread, слід пам'ятати, що при зверненні до неї з використанням рядкової змінної необхідно використовувати ключове слово ByVal (інакше повідомлення про нелегальну операцію не уникнути). Щоб убезпечити себе, можна зробити додатковий спеціальний опис цієї функції для роботи тільки з рядковими змінними:

Declare Function lreadString Lib “kernel32” _ Alias ​​“_lread” (_ ByVal hFile As Long, ByVal lpBuffer As String, _ ByVal wBytes As Long) As Long

При роботі з цим описом вказувати ByVal при зверненні вже не потрібно:

WBytes = lreadString (hFile&, MyVarString, _ Len(MyVarString)) ‘

Здавалося б, синтаксис оператора Declare дозволяє зробити такий спеціальний опис для масиву:

Declare Function lreadString Lib “kernel32” Alias ​​“_lread” (_ ByVal hFile As Long, lpBuffer() As Byte, _ ByVal wBytes As Long) As Long

Проте звернення

WBytes = lreadArray (hFile&, MyArray(), 10)

неминуче призводить до фатальної помилки програми.

Це продовження розмови про особливості обробки рядкових змінних у Visual Basic: VB використовує двобайтне кодування Unicode, Win API - однобайтне ANSI (причому з форматом, прийнятим С, - з нульовим байтом в кінці). Відповідно при використанні рядкових змінних як аргумент завжди автоматично проводиться перетворення з Unicode в ANSI при виклику API-функції (точніше, DLL-функції) і зворотне перетворенняпри поверненні.

Висновок з цього простий: за допомогою змінних String можна обмінюватися символьними даними, але їх не можна використовувати для обміну довільною двійковою інформацією (як це було при роботі з 16-розрядними версіями VB). У разі краще використовувати одномірний байтовий масив.

Як відомо, тип String можна використовувати для опису структури користувача. У зв'язку з цим слід пам'ятати таке:

  • Категорично не можна використовувати для звернення до Win API конструкцію наступного виду: Type MyStruct x As Single s As String рядок змінної довжини

    У разі рядка змінної довжини у складі структури передається дескриптор рядка з усіма наслідками у вигляді помилки виконання програми.

  • Як елемент структури можна використовувати рядок фіксованої довжини: Type MyStruct x As Single s As String*8 ‘ рядок фіксованої довжини End Type

При цьому провадиться відповідне перетворення кодувань.

І останнє зауваження: застосовувати масив рядкових змінних (як фіксованої, так і змінної довжини) при зверненні до функції API не можна в жодному разі. Інакше поява «нелегальної операції» буде гарантовано.

Цілком ймовірно, що у вас виникне ситуація, коли вам потрібно написати власну бібліотеку DLL-функцій. Потреба в цьому неминуче з'явиться, якщо ви використовуватимете технологію змішаного програмування - використання двох або більше мов програмування для реалізації однієї програми.

Зазначимо у зв'язку з цим, що змішане програмування - це звичайне явище для реалізації досить складного докладання. Дійсно, кожна мова (точніше, система програмування на базі мови) має свої сильні та слабкі сторонитому цілком логічно використовувати переваги різних інструментів для вирішення різних завдань. Наприклад, VB - для створення інтерфейсу користувача, С - для ефективного доступу до системних ресурсів, Fortran - для реалізації чисельних алгоритмів.

Думка автора така: хоч якесь серйозне заняття програмуванням вимагає від розробника володіння принаймні двома інструментами. Зрозуміло, в сучасних умовах чіткого поділу праці дуже складно бути відмінним експертом навіть за двома системами, тому більш логічною є схема «основної та допоміжної мови». Ідея тут полягає в тому, що навіть поверхове знання «допоміжної» мови (написання досить простих процедур) може дуже помітно підвищити ефективність застосування «основної». Зазначимо, що знання VB хоча б як допоміжне є сьогодні практично обов'язковою вимогою для професійного програміста. До речі, за часів DOS для будь-якого програміста, зокрема Basic, було дуже бажаним знання основ Асемблера.

Так чи інакше, але навіть в умовах групової роботи, коли кожен програміст займається своєю конкретною справою, уявлення про особливості процедурного інтерфейсу у різних мовах повинні мати усі учасники проекту. І знати, що багато систем програмування (у тому числі і VB), крім інтерфейсу, що використовується за умовчанням, дозволяють застосовувати інші, розширені методи звернення до процедур, які дають можливість адаптувати інтерфейс до іншої мови.

При вивченні міжпроцедурного інтерфейсу слід звернути увагу на такі можливі «підводні камені»:

  • Різні мови можуть використовувати різні угоди про правила написання ідентифікаторів. Наприклад, часто використовується знак підкреслення початку імені процедури, що заборонено в VB. Ця проблема легко вирішується за допомогою ключового слова Alias ​​в операторі Declare (див. приклад поради 2.3).
  • Може бути використана різна послідовність запису аргументів, що передаються в стек. Наприклад, у часи DOS (чесно зізнаюся - не знаю, як це виглядає зараз у середовищі Windows), C записував аргументи з кінця списку, інші мови (Fortran, Pascal, Basic) – з початку.
  • За замовчуванням використовуються різні принципи передачі параметрів - за посиланням або значенням.
  • Різні принципи зберігання рядкових змінних. Наприклад, в C (так само як у Fortran і Pascal) довжина рядка визначається нульовим байтом у її кінці, а в Basic довжина записується у явному вигляді у дескрипторі рядка. Зрозуміло, потрібно мати на увазі можливість використання різних кодуваньсимволів.
  • При передачі багатовимірних масивів слід пам'ятати, що можливі різні варіанти перетворення багатовимірних структур в одновимірні (починаючи з першого індексу або з останнього, стосовно двовимірних масивів - "по рядках" або "по стовпчикам").

З огляду на все це можна сформулювати наступні рекомендації:

  • Використовуйте найпростіші, перевірені способи передачі аргументів у функції DLL. Стандарти, прийняті для Win API, цілком підходять як зразок.
  • У жодному разі не передавайте масиви рядкових змінних.
  • Дуже уважно використовуйте передачу простих рядкових змінних та багатовимірних масивів.
  • Обов'язково спеціальним чином перевіряйте працездатність механізму передачі аргументів у процедуру, що викликається, і назад. Напишіть спеціальний тест для перевірки даних. Окремо перевірте правильність надсилання кожного аргументу. Наприклад, якщо у вас є процедура з кількома аргументами, перевірте спочатку коректність передачі кожного параметра варіанта з одним аргументом, а вже потім - для всього списку.

А що робити, якщо DLL-функція вже написана, наприклад, на Фортрані, але її вхідний інтерфейс не дуже добре вписується у наведені вище стандарти VB? Тут можна дати дві поради. Перший: напишіть тестову DLL-функцію і з її допомогою постарайтеся методом спроб та помилок підібрати потрібне звернення з VB-програми. Другий: напишіть процедуру-перехідник на тому ж Фортрані, який би забезпечував простий інтерфейс між VB та DLL-функцією з перетворенням простих структур даних на складні (наприклад, перетворював багатовимірний байтовий масив у рядковий масив).

Отже: використовуйте DLL функції. Але зберігайте пильність.

Комп'ютерПрес 9"2000

Почнемо з основ: що таке API? Абревіатура розшифровується як Application Programming Interface або інтерфейс для програмування додатків. Назва начебто говорить сама за себе, але краще розглянути більш детальне пояснення.

Як було зазначено, API – це, насамперед, інтерфейс. Інтерфейс, який дозволяє розробникам використовувати готові блоки для побудови програми. У випадку з розробкою мобільних додатківв ролі API може виступати бібліотека для роботи з "розумним будинком" - всі нюанси реалізовані в бібліотеці і ви звертаєтеся до цього API у своєму коді.

У випадку веб-застосунків, API може віддавати дані в відмінному від стандартного HTML форматі, завдяки чому їм зручно користуватися при написанні власних програм. Сторонні загальнодоступні API найчастіше віддають дані в одному з двох форматів: XML або JSON. На випадок, якщо ви вирішили зробити API для своєї програми, запам'ятайте, що JSON набагато лаконічніший і простіший у читанні, ніж XML, а сервіси, що надають доступ до даних у XML-форматі, поступово відмовляються від останнього.

API у веб-додатках на прикладах

Якийсь додаток – наприклад, Github – має свій API, яким можуть користуватися інші розробники. Те, як вони будуть користуватися ним, залежить від можливостей, які надає API і від того, наскільки добре працює фантазія у розробників. API Гітхаба дозволяє, наприклад, отримувати інформацію про користувача, його аватара, читачів, репозиторії та безліч інших корисних та цікавих відомостей.

Подібним чином можна надсилати запит будь-якою мовою, у тому числі і на Ruby. Відповіддю на запит буде приблизно така інформація:

( "login" : "Freika" , "id" : 3738638, "avatar_url" : "https://avatars.githubusercontent.com/u/3738638?v=3", "gravatar_id" : "" , "url" : "https://api.github.com/users/Freika", "html_url" : "https://github.com/Freika" , "followers_url" : "https://api.github.com/users/Freika/followers", "following_url" : "https://api.github.com/users/Freika/following(/other_user)", "gists_url" : "https://api.github.com/users/Freika/gists(/gist_id)", "starred_url" : "https://api.github.com/users/Freika/starred(/owner)(/repo)", "subscriptions_url" : "https://api.github.com/users/Freika/subscriptions", "organizations_url" : "https://api.github.com/users/Freika/orgs", "repos_url" : "https://api.github.com/users/Freika/repos", "events_url" : "https://api.github.com/users/Freika/events(/privacy)", "received_events_url" : "https://api.github.com/users/Freika/received_events", "type" : "User" , "site_admin" : false , "name" : "Evgeniy" , "company" : "" , "blog" : "http://frey.su/" , "location" : " Barnaul" , "email" : "" , "hireable" : true , "bio" : null, "public_repos" : 39, "public_gists" : 13, "followers" : 15, "following" : 21, "created_at" : "2013-03-01T13:48:52Z" , "updated_at" : "2014-12-15T13:55:03Z" )

Як видно з блоку вище, відповідь містить логін, аватар, посилання на профіль на сайті та в API, статус користувача, кількість публічних репозиторіїв та іншу корисну та цікаву інформацію.

Одного API недостатньо

Створити повноцінний API для своєї програми – лише половина справи. Як ви думаєте звертатися до API? Як до нього звертатимуться ваші користувачі?

Перше, що спадає на думку, це звичайна серія HTTP-запитів з метою отримання потрібної інформації, і це неправильна відповідь. Найочевидніший спосіб у цьому випадку не є найзручнішим і найпростішим. Набагато розумніше створити спеціальну бібліотеку для роботи з інтерфейсом, в якій будуть описані всі необхідні способи отримання і відправки інформації за допомогою API.

Ще раз скористаємося Github для наведення прикладу: для роботи з АПІ цього чудового сервісу (а інтерфейс у нього надає найширші можливості) створено кілька бібліотек різними мовами, наприклад, гем Octokit. У документації до таких бібліотек (і наведеному як приклад гему) будь-який зацікавлений розробник зможе знайти всі необхідні способи отримання інформації від Гітхаба та відправки її назад через API сервісу.

Таким чином, якщо ви створюєте власний API, подумайте, можливо варто потурбуватися про створення так само і бібліотек для роботи з ним найбільш поширеними мовами. І будьте готові, що за певного рівня затребуваності вашої програми хтось інший може створити власну бібліотеку для роботи з вашим API. Це нормально.

Корисні посилання

У наступних статтях ми розповімо про те, як правильно створювати API, забезпечити його безпеку та обмежити доступ до частини інформації.

Пісочниця

призовник 26 листопада 2012 в 13:59

Що таке API

  • Чулан *

Вітаю!
У цій статті ми з вами розглянемо, що таке API, де, як і для чого воно застосовується. Також ми розглянемо, як API можна застосувати у своїх веб-розробках і чим це може спростити життя програмісту.

Отже, почнемо з визначення. API (Application Programming Interface) – це інтерфейс програмування, інтерфейс створення програм. Якщо говорити зрозумілішою мовою, то API – це готовий код для спрощення життя програмісту. API створювався для того, щоб програміст реально міг полегшити завдання написання тієї чи іншої програми завдяки використанню готового коду (наприклад, функцій). Усім відомий jQuery, написаний на JavaScript теж є свого роду API. Якщо розглядати цей приклад, то jQuery дозволяє набагато полегшити написання коду. Те, що звичайними засобами JavaScript можна було зробити за 30 рядків, через jQuery пишеться через 5-6. Якщо розглядати API загалом, можна знайти дуже багато сервісів, що представляють рішення для розробки. Найвідоміший на сьогоднішній день це сервіс code.google.com, що надає близько півсотні різноманітних API! Це і інтерфейс для створення Android-програм, і різні API для роботи з AJAX, і різні API додатків, які можна легко підлаштувати під свій лад.

Адже чи є сенс писати код своїми руками? Навіщо працювати над тим, що вже створено? Хіба є сенс відмовлятися від безкоштовних рішень (а фактично, і від безкоштовної допомоги) web розробці? Якщо ви відповіли на ці запитання «НІ», то вважайте, що ви зрозуміли суть API.

Але ще хочу обмовитися. Розробникам-початківцям НЕ слід користуватися напівготовими рішеннями, оскільки в майбутньому вони не впораються з реальним завданням. Тому, якщо ви програміст-початківець, то не використовуйте напівфабрикати! Навчіться думати своєю головою, будувати різні алгоритми, щоб зрозуміти суть програмування. Також кажу, вже звертаючись до всіх, що API - це не готові рішення, це середовище, інтерфейс для створення своїх проектів. Ви ж не їсте заморожені котлети з магазину? Ви спочатку їх посмажіть, чи не так? Ця аналогія дуже ясно відображає суть API.

Загалом, я розповів, що таке API, де і як воно використовується найголовніше, для чого. Бажаю приємного вивчення web програмуванняі розуміння все більших його глибин!

Теги: api

Ця стаття не підлягає коментуванню, оскільки автор ще не є повноправним учасником спільноти. Ви зможете зв'язатися з автором лише після того, як він отримає



Завантаження...
Top