Server-side Web
03 януари 2019
Административни неща
- Мислете за проекти!
За боба, леба, и уеба
За боба, леба, и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
За боба, леба, и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
За боба, леба, и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
За боба, леба, и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
- Не подценявайте стойността на добре организиран фреймуърк. Уеба е "лесен" в такъв смисъл, че индивидуалните проблеми са сравнително лесни, но са много и обикновено трябва да се решават бързо. Организиран, подреден codebase означава удобен flow, лесно намиране на бъгове, лесна работа с други хора.
- Фреймуърк, който ви дава адекватна структура, ви позволява да се концентрирате върху бизнес логиката, вместо върху организационни глупости.
За боба, леба, и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
- Не подценявайте стойността на добре организиран фреймуърк. Уеба е "лесен" в такъв смисъл, че индивидуалните проблеми са сравнително лесни, но са много и обикновено трябва да се решават бързо. Организиран, подреден codebase означава удобен flow, лесно намиране на бъгове, лесна работа с други хора.
- Фреймуърк, който ви дава адекватна структура, ви позволява да се концентрирате върху бизнес логиката, вместо върху организационни глупости.
- (Уви, рядко се стига до 100% подреденост. Но спокойно може да е "good enough")
За боба, леба, и уеба
За боба, леба, и уеба
- Threaded vs event-based сървъри (preemptive vs cooperative multitasking)
За боба, леба, и уеба
- Threaded vs event-based сървъри (preemptive vs cooperative multitasking)
- Threaded: удобен за работа, неоптимален
За боба, леба, и уеба
- Threaded vs event-based сървъри (preemptive vs cooperative multitasking)
- Threaded: удобен за работа, неоптимален
- Event-based: ако не е написан като хората, може да се забатачи здраво :). Но потенциално се изстисква максимален performance.
За боба, леба, и уеба
- Threaded vs event-based сървъри (preemptive vs cooperative multitasking)
- Threaded: удобен за работа, неоптимален
- Event-based: ако не е написан като хората, може да се забатачи здраво :). Но потенциално се изстисква максимален performance.
- За Rust, проекти като tokio и hyper предоставят базата за event-based неща.
За боба, леба, и уеба
В node.js (server-side javascript) най-много си личи кооперативния multitasking:
1
2
3
4
5
6
7
function some_endpoint() {
var userId = request['id'];
return database.fetchUser(userId).then(function(err, user) {
// ...
});
}
Резултата, който се връща от handler-а на някакъв request, е Promise. Той се връща веднага, а функцията-callback се слага на някакъв worker thread. Когато той приключи, се връща крайния резултат, без да се блокира клиента.
Spotiferris
Ще разгледаме (началото на) малък проект за хостинг на музика. Stack-а:
Документация
- От документацията има какво да се желае. Иска се експериментиране и ровене из examples.
- За препоръчване е, ако искате да правите уеб проект, да минете през всички достъпни guides, и всички examples, и на gotham, и на diesel.
- Не игнорирайте и API документацията. Rust е език, в който import-ите могат да се проследяват, и можете да се ориентирате успешно във, примерно, http://docs.diesel.rs/diesel/index.html
Spotiferris
Demo
Spotiferris
Проблеми
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Няма удобен test setup. Има TestServer за gotham, и test_transaction за diesel, но няма как да "интегрирате" двете.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Няма удобен test setup. Има TestServer за gotham, и test_transaction за diesel, но няма как да "интегрирате" двете.
- Интеграцията между библиотеките иска работа.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Няма удобен test setup. Има TestServer за gotham, и test_transaction за diesel, но няма как да "интегрирате" двете.
- Интеграцията между библиотеките иска работа.
- Всичките библиотеки са версия 0.x -- нестабилни са като интерфейс.