Professional Documents
Culture Documents
АДиплом1
АДиплом1
ЗМІСТ
Contents
ЗМІСТ.......................................................................................................................4
ВСТУП......................................................................................................................5
1 ЗАГАЛЬНИЙ РОЗДІЛ.........................................................................................6
1.1 Бэкенд..............................................................................................................6
1.2 Клієнт-серверна архітектура.........................................................................9
2 РОЗРОБКА ТЕХНІЧНОГО ПРОЕКТУ.........................................................14
2.1 JavaScript..........................................................................................................14
2.2 TypeScript.........................................................................................................17
2.3 Node.js...............................................................................................................22
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ.............................................................23
ОКС 123
Змн. Арк. № докум. Підпис Дата
Розроб. . Літ. Арк. Акрушів
Перевір.
Н.Контроль
Н.Контроль
Реценз. ОККТ, гр.
Н.Контроль
Затвердив Козуб С.А.
5
ВСТУП
1 ЗАГАЛЬНИЙ РОЗДІЛ
1.1 Бэкенд
вибірках);
отримання відповіді від сервера і переклад інформації в читабельну
форму (висновок результату).
Таким чином, взаємодія з бекендом виглядає просто, але може бути
важкою в реалізації. Частково складність полягає в тому, що різні веб-сервери
використовують різні мови програмування для обробки даних. Також можуть
використовуватися різні бази даних, різні комунікаційні інтерфейси та
архітектури. Все це потрібно зібрати воєдино і перевіряти на кожному кроці,
інакше замість тексту можна отримати «кашу» символів.
Основні мови програмування використовуються для розробки логіки
сайту і бекенда. У список входять Java, PHP, Python, Ruby тощо. Розглянемо
більш глибше:
1. Java – це класична сильно типізована об'єктно-орієнтована мова
програмування загального призначення, розроблена Sun Microsystems. Зараз він
належить oracle. Саме на Java працює Android. Мова з'явився в 1995 році і в
даний час активно розвивається. Відзначається, що мова в деяких випадках
поступається программам на C/C++ по времени выполнения, однако иногда
наблюдается и обратная ситуация. Язык применяется как для веб-приложений,
так и для десктопных/мобильных.
2. PHP – ще одна класична бекенд-мова. Він також був створений в 1995
році. На відміну від Java, вона використовується лише для веб-додатків, але
вона є однією з найпопулярніших мов веб-розробки (хоча станом на 2022 рік
вона вважається трохи застарілою). Він керує Facebook, Вікіпедією, Yahoo!,
Baidu та багатьма іншими сайтами. Він також створює найпопулярніший веб-
движок WordPress.
3. Python – одна з мов, яка підходить як для веб-додатків, так і для
локальних. Ця мова повністю замінює старі, він кросплатформний і забезпечує
хорошу продуктивність програм. Звичайно, до PHP ще далеко, але процес йде
повним ходом. Він був створений в 1991 році.
4. Ruby – ще одна мова, який націлений на простоту і легкість розробки.
Він був створений в 1995 році і розвивається повільно, але його можливості
9
вражають.
1. Perl – ця мова вже пішов у минуле, але до сих пір багато хто ним
користуються. Це скриптова мова на стороні сервера з досить заплутаним
Синтаксис.
Ви також можете вибрати з різних систем керування базами даних.
Найчастіше використовується MySQL, але на ринку також є PostgreSQL,
SQLite, MongoDB та інші. Звичайно, кожна мова і кожна система баз даних
працює трохи по-різному. Так що є досить багато інструментів на вибір. Але
при цьому їх перелік досить жорсткий, що дозволяє не розосереджувати сили.
Розробнику бекенду потрібно знати і вміти:
знання мов програмування – php, python, ruby, java, go тощо;
навички роботи з базами даних і системами управління базами даних.
бажано mysql, але підійдуть і інші;
використання шаблонів програмування, фреймворків і так далі. серед
них відзначимо ruby on rails, yii, django;
знання алгоритмів серверної частини і вміння їх застосовувати.
Виходячи з вищенаписаного, бекенд розробнику необхідно виконати
наступні завдання:
підтримка веб-ресурсу, бізнес-логіки проекту і бекенд-системи в
цілому;
проектування та підтримка інфраструктури на базі sourcejs;
створити програмний інтерфейс веб-ресурсу для його взаємодії з
іншими платформами;
створити єдину бібліотеку елементів для інтерфейсних програмістів і
дизайнерів;
адаптувати систему до різних платформ, використовуючи css3 і html5;
розробка користувальницьких інтерфейсів;
оптимізувати існуючі веб-додатки для підвищення продуктивності.
Таким чином, бекенд-розробнику доводиться обслуговувати весь набір
веб-систем, крім функціонування самого веб-сервера і каналів зв'язку (це вже
10
в певну чергу і виконуються сервером по черзі. Іноді запити можуть мати свої
пріоритети. Частина запитів з більш високими пріоритетами буде постійно
виконуватися в першому порядку.
Параметри, які можуть бути реалізовані на стороні сервера:
зберігання, захист і доступ до даних;
робота з вхідними клієнтськими запитами;
процес відправки відповіді клієнту;
Параметри, які можуть бути реалізовані на стороні клієнта:
платформа для надання призначеного для користувача графічного
інтерфейсу;
формулювання запиту на сервер і його подальша відправка;
отримати результати запиту і відправити додаткову групу команд
(запити на додавання, оновлення інформації, видалення групи даних).
Архітектура клієнт-серверної системи формулює принципи віртуальної
комунікації між локальними комп'ютерами, а всі правила і принципи взаємодії
знаходяться всередині протоколу.
Мережевий протокол - це певний набір правил, який виконує точний
зв'язок між комп'ютерами всередині віртуальної мережі.
Типи мережевих протоколів [2]:
1. TCP/IP – це набір протоколів передачі інформації. Спеціальне
позначення всієї мережі, яке функціонує на основі протоколів TCP, а також IP.
2. TCP – це вид протоколу, який є сполучною ланкою для встановлення
якісного з'єднання між 2 пристроями, передачі даних і перевірки їх отримання.
3. IP – протокол, в функції якого входить правильна доставка
повідомлень за обраною адресою. При цьому інформація розбивається на
пакети, які можуть поставлятися різними способами.
4. MAC – це вид протоколу, на основі якого відбувається процес
перевірки мережевих пристроїв. Всі пристрої, які підключені до інтернету,
містять свій оригінальний MAC-адресу.
5. ICMP – це протокол, який відповідає за обмін даними, але не
12
2.1 JavaScript
2.2 TypeScript
class Person {
name: string;
year: number;
}
18
Буде еквівалентно:
class Person {
public name: string;
public year: number;
}
class Person {
private _name: string;
private _year: number;
constructor(name: string, age: number) {
this._name = name;
this._year = this.setYear(age);
}
public print(): void {
console.log(`Имя: ${this._name} Год рождения: ${this._year}`);
}
private setYear(age: number): number {
return new Date().getFullYear() - age;
}
let tom = new Person("Tom", 24);
tom.print();
}
}
class Person {
protected name: string;
private year: number;
constructor(name: string, age: number) {
this.name = name;
this.year = this.
setYear(вік);
}
захищений printPerson(): void {
console.log(`Імя: ${this.name} Рік народження: ${this.year}`);
}
private setYear(age: number): number {
return new Date().getFullYear() - вік;
}
}
class Employee extends Person {
захищена компанія: рядок;
конструктор (назва: рядок, вік: число,
company: string) {
super(name, age);
this.company = company;
}
public printEmployee(): void {
//console.log("Year:" + this.year); // поле року недоступне, тому що private
// setYear(25); // Метод setYear недоступний, оскільки private
this.printPerson();
// метод printPerson доступний, тому що protected
console.log(`Компанія: ${this.company}`);
}
}
let sam = New Employee("Sam", 31, "Microsoft");
sam.printEmployee();
20
2.3 Node.js
друга, потім третя і так далі. Може десь програма буде стрибати туди-сюди,
десь зациклюватися, але в цілому виконується лінійно.
У JS є хитрість – вона може виконувати код паралельно (умовно
кажучи). Програмісти називають цю подію обробкою. Програмі можна сказати:
"Якщо це коли-небудь станеться, виконайте цю функцію, вона знає, що
робити". Таких подій можна передбачити багато – виходить, що процеси
начебто паралельні. Програма може просто сидіти і чекати, коли щось
станеться.
Причому процеси асинхронні: програма може щось запросити на самому
початку роботи – наприклад, запитати щось з бази даних. І поки база даних
свербить, вузол.js програма буде продовжувати займатися своєю справою. І як
тільки прийде відповідь, він візьме його і обробить.
При розробці будь-якої програми Node.js можуть відбуватися сотні
таких паралельних подій і обробників. Щоб будь-який з них не натягнув ковдру
на себе, Node.js робить нескінченний цикл, в якому забезпечує процесорний час
кожної функції по колу.
В результаті створюється ілюзія, що вони працюють паралельно і не
заважають один одному, але насправді строго контролюються самою
платформою. Саме такий рівномірний розподіл всього в циклі подій дає Node.js
перевагу при створенні серверних додатків.
Давайте розглянемо як працює звичайний веб-сервер (рисунок 2.1) та як
веб-сервер вузла.js (рисунок 2.2). Звичайний веб-сервер:
1. На сторінці потрібно, наприклад, показати аватарку і нікнейм
користувача. Для цього, сервер зробив запит в базу даних, щоб отримати звідти
цю інформацію.
2. Поки база даних не відповість, сервер нічого не може зробити, він
терпляче чекає.
3. Коли з бази приходить відповідь з картинкою і ніком, сервер знову
оживає, продовжує завантажувати сторінку і в самому кінці запитує фонове
зображення для сайту з бази даних. Сервер чекає.
4. Сторінка також поки не працює, тому що не завантажилася до кінця.
22
Сервер вузла.js:
1. На сторінці потрібно, наприклад, показати аватарку і нікнейм
користувача.
2. Для цього сервер робить запит в базу даних, щоб отримати звідти цю
інформацію, і вона продовжує формувати сторінку далі.
3. Поки не прийшов аватар, сервер вже зробив все інше і побачив, що
потрібна фонова картинка.
4. Сервер запитує картинку, і в цей час він отримав аватарку від
попереднього запиту. Після того, як аватар прибув, сервер вставляє його в
потрібне місце. Поки він це робив, з'явилася фонова картина.
5. Всі матеріали на місці, можна показати сторінку користувачеві.
Сторінка завантажується швидше, тому що збірка відбувалася паралельно.
Крім веб-додатків, ця мова використовується для створення будь-яких
сервісів, де необхідний постійний обмін інформацією з користувачем:
чати;
23
соціальні мережі;
системи спільної роботи над проектом;
онлайн-текстові редактори (рис. 2.2).
2.4 RestApi
конкретне завдання;
список завдань.
2. Ресурс URI. При розробці сервісів RESTful слід акцентувати свою
увагу на ресурсах програми. Спосіб, яким ми ідентифікуємо ресурс, який
потрібно розкрити, полягає в тому, щоб присвоїти йому URI, уніфікований
ідентифікатор ресурсу. Наприклад:
створити користувача: POST /users;
видалити користувача: DELETE /users/1;
отримайте всіх користувачів: GET /users;
отримайте одного користувача: GET /users/1.
Важливо зазначити, що з REST вам потрібно думати про свій додаток з
точки зору ресурсів. Треба визначити, які ресурси ви хочете відкрити для
зовнішнього світу та використовати вже визначені http дієслова для виконання
операцій на цих ресурсах. Ось як зазвичай реалізується послуга REST:
1. Формат обміну даними: тут немає обмежень. JSON є дуже
популярним форматом, хоча можна використовувати і інші, такі як XML.
2. Транспорт: завжди HTTP. REST повністю побудований на основі
HTTP.
3. Визначення послуги: Для цього немає стандарту, а REST гнучкий. Це
може бути недоліком у деяких сценаріях, оскільки споживаючій програмі може
знадобитися зрозуміти формати запитів та відповідей. Однак широко
використовуються мова визначення веб-додатків (WADL) і Swagger.
REST фокусуться на ресурсах і на тому, наскільки ефективно ви
виконуєте операції над ними за допомогою HTTP.
данных.
5. Дотримання вимог щодо хостингу даних, суверенітету даних та
затримки. Для деяких компаній бази даних краще працювати локально. У таких
випадках ідеально підійдуть готові системи, які налаштовані і оптимізовані для
розміщення баз даних. З Oracle Exadata клієнти досягають високої доступності,
підвищують продуктивність і знижують витрати до 40%.
Всі ці завдання можуть зайняти багато часу і відвернути дБАС від
стратегічних завдань.
30