Научите како да направите прилагођени ХТТП веб сервер користећи Руст'с Ацтик или Роцкет пакет.

ХТТП користи архитектуру клијент-сервер за пренос информација и података. Једна од карактеристика програмских језика на страни сервера као што је Руст је развој сервера и клијентских апликација за интеракцију са услугама заснованим на ХТТП-у.

Руст је погодан за изградњу ХТТП сервера због својих карактеристика безбедности, перформанси и поузданости. Руст-ови сандуци независних произвођача као што су Ацтик и Роцкет су популарни за изградњу софистицираних веб сервера који могу да поднесу велики саобраћај.

Зашто би требало да користите Руст за развој ХТТП веб сервера?

Руст је стекао популарност за развој веб сервера јер су неке од карактеристика језика управо захтеви за изградњу већине веб сервера.

Коришћење Руст-а обезбеђује ефикасно скалирање ваше апликације, чинећи језик идеалним за прављење апликација високих перформанси. Ево конкретних разлога да размислите о коришћењу Руста за ваш веб сервер и друге апликације на страни сервера.

Високе перформансе Руста

Високе перформансе су један од разлога зашто Руст чини одличан избор за изградњу ХТТП веб сервера. Руст обезбеђује приступ на ниском нивоу системским ресурсима, укључујући меморију и ЦПУ, омогућавајући вам да пишете код који ради брже са мање ресурса од других језика на страни сервера.

Поред тога, Рустов систем власништва елиминише потребу за прикупљањем смећа у време компајлирања, што је један од разлога зашто су неки језици на страни сервера спори.

Безбедност и сигурност

Рустов власнички систем управљања меморијом чини језик сигурним за развој веб сервера. Не доживљавате нулте или висеће референце показивача које могу довести до цурења меморије и других сигурносних пропуста.

Рустов систем власништва спречава ове уобичајене грешке како би ваш сервер и апликације били сигурни. Руст се такође фокусира на спречавање прекорачења бафера и других грешака у вези са меморијом.

Конкуренција

Конкуренција је могућност покретања више јединица програма на начин који није у реду без утицаја на излаз. Излаз конкурентног програма треба да буде исти као и излаз асинхроног програма.

Конкурентност може значајно да утиче на перформансе ваше апликације јер сервери морају да обрађују више захтева истовремено. Руст пружа подршку за коегзистенцију са лаганим моделом навоја.

Сос истовременог програмирања у Русту је у томе што вам систем власништва омогућава да пишете код који је сигуран у нити без потребе за закључавањем и другим примитивима за синхронизацију.

Руст стандардна библиотека и пакети трећих страна у Руст екосистему обезбедите модерне алате за ефикасно развој веб сервера.

Царго, Рустов менаџер пакета, поједностављује управљање зависношћу и гради процесе. Поред тога, Руст има одличну ИДЕ подршку са алатима као што је Руст Анализер који обезбеђују беспрекорно довршавање кода, истицање грешака и друге функције.

Преглед библиотека Ацтик и Роцкет

Руст-ова стандардна библиотека има већину услужног програма који ће вам требати за прављење веб сервера. Библиотеке трећих страна попут Ракета и Ацтик поједноставите прављење апликација на страни сервера помоћу Руста.

Ацтик и Ракета су популарни Руст веб оквири, али се библиотеке разликују по дизајну и карактеристикама.

Роцкет је веб оквир високог нивоа који даје предност продуктивности и једноставности коришћења. Роцкет пружа много апстракција и синтаксног шећера за прављење веб апликација у Русту. Роцкет је такође популаран због свог снажног куцања и интуитивног АПИ дизајна.

Можете додати Роцкет као зависност пројекта у вашем Царго.томл датотеку да бисте започели прављење веб апликација у Русту:

[зависности]
ракета = "0.4.11"

С друге стране, Ацтик-веб је оквир ниског нивоа који даје предност перформансама и скалабилности. Ацтик користи модел конкурентности заснован на актерима и обезбеђује неблокирајући И/О што пакет чини идеалним за изградњу ефикасних веб апликација.

Додајте Ацтик као зависност пројекта у зависности одељак вашег Царго.томл фајл:

[зависности]
ацтик-веб = "4.3.1"

Одабир библиотеке за ваш пројекат зависиће од спецификација вашег пројекта, карактеристика библиотеке и вашег искуства са Руст-ом и ХТТП-ом.

Изградња једноставног веб сервера у Русту

Након што креирате Руст пројекат и додате било који од Роцкет или Ацтик оквира у зависности вашег пројекта у Царго.томл датотеку, спремни сте да почнете да правите веб сервер у Русту.

Прављење једноставног веб сервера са Ацтик-ом

Можете користити серијализатор за захтеве када правите веб услуге у Русту.

Серде је популарна Руст библиотека за серијализацију и десеријализацију података између Руст типова и формата података као што су ЈСОН, ИАМЛ и ТОМЛ. Серде обезбеђује оквир за дефинисање конверзије података између Руст структура података и одговарајућих репрезентација у другим форматима података.

Ево директиве за додавање Сердеа као пакета треће стране за ваш пројекат.

[зависности]
серде = {верзија = "1.0.159", карактеристике = ["извести"] }

Када додате Серде и Ацтик као зависности од пројекта, можете створити основни веб сервер са Руст-ом. Ево како можете да подесите једноставно Здраво Свете! веб сервер који уписује стринг клијенту помоћу Ацтик-а:

Прво увезите потребне модуле и типове из ацтик_веб и серде сандуке:

користити ацтик_веб::{гет, веб, Апп, ХттпРеспонсе, ХттпСервер, Респондер};
користити серде::{Десериализе, Сериализе};

Користићете серде да серијализује поруку клијенту са структуром. Серде ће конвертовати структуру у ЈСОН за клијента. Ево структуре поруке:

#[дериве (Дебуг, Сериализе, Десериализе)]
струцтПорука {
порука: Низ,
}

Сада можете дефинисати функцију руковаоца за крајњу тачку. На врху функције руковаоца можете да додате декоратере за прилагођено понашање:

#[добити("/")]
асинцфнЗдраво() -> импл Одговори {
ХттпРеспонсе::Ок().јсон (порука {
порука: "Здраво Свете!".то_овнед(),
})
}

Тхе Здраво функција руковаоца рукује ГЕТ захтевима. Функција враћа тип који имплементира Одговори особина из Ацтик пакет.

Тхе јсон методом ХттпРеспонсе:: Ок() тип узима инстанцу структуре која Серде рукује испод хаубе и враћа одговор клијенту.

Након дефинисања крајње тачке, можете покренути инстанцу сервера и монтирати крајњу тачку на руту.

#[ацтик_веб:: маин]
асинцфнглавни() -> стд:: ио::Резултат {
ХттпСервер:: нев(|| Апп:: нев().сервице (здраво))
.бинд("127.0.0.1:8080")?
.трцати()
.чекати
}

Тхе ХттпСервер:: ново функција је нова инстанца сервера. Тхе главни функција се покреће, а сервер монтира Здраво функција руковаоца са новом инстанцом апликације. Тхе везати метод везује сервер за наведену УРЛ адресу, а трцати функција покреће сервер.

Прављење једноставног веб сервера са ракетом

Роцкет је минималистички, тако да можете поставити једноставан веб сервер без икаквих зависности осим Ракета сандук.

Ево како да подесите једноставан сервер са а Здраво Свете! крајња тачка користећи Роцкет:

Прво увезите потребне зависности за ваш сервер.

#![функција (проц_мацро_хигиене, децл_мацро)]

#[мацро_усе]
екстернсандук ракета;

// увоз из сандука ракете
користити ракета:: одговор:: садржај;
користити ракета:: Држава;

Тхе #![функција (проц_мацро_хигиене, децл_мацро)] атрибут омогућава Руст експерименталне карактеристике за оквир Роцкет. Тхе #[мацро_усе] атрибут увози макрое из ракета модул.

Ево функције руковања која служи ХТМЛ на захтев:

#[добити("/")]
фнЗдраво Свете() -> садржај:: Хтмл'статицстр> {
цонтент:: Хтмл("

Здраво Свете!

"
)
}

Тхе Здраво Свете функција враћа ХТМЛ статички стринг са садржај:: Хтмл функција.

Ево декларације конфигурационе структуре за сервер (конвенција Роцкет фрамеворк-а):

струцтЦонфиг {
Лука: у16,
}

#[добити("/Лука")]
фнЛука(конфигурација: држава) -> Низ {
формат!(„Сервер ради на порту {}“, цонфиг.порт)
}

Када покренете сервер, можете да постављате захтеве /port крајња тачка за статус порта.

Коначно, креираћете инстанцу сервера са запалити функција. Додајте конфигурације, монтирајте руте и покрените сервер:

фнглавни() {
дозволити цонфиг = Цонфиг { порт: 8000 };

ракета:: игните()
.манаге (цонфиг)
.моунт("/", руте![хелло_ворлд, порт])
.лансирање();
}

Тхе цонфиг променљива је инстанца Цонфиг струцт. Тхе запалити функција покреће инстанцу сервера, управљати метод додаје конфигурацију серверу, а моунт метода монтира функцију руковаоца на основне руте. Коначно, лансирање метода покреће сервер да слуша на наведеном порту.

Можете да направите моћне веб апликације у Русту помоћу ВАСМ-а

ВебАссембли (ВАСМ) је формат бинарних инструкција дизајниран за извршавање на претраживачима и другим уређајима. ВАСМ обезбеђује формат бајткода ниског нивоа који програмски језици вишег нивоа као што је Руст могу користити као циљ компилације.

Помоћу ВАСМ-а можете компајлирати свој Руст код у бинарни формат који већина популарних претраживача може да изврши. ВАСМ отвара свет могућности за прављење робусних веб апликација у Русту, укључујући веб апликације са пуним стеком.