MicroFrameWorks для Squeak/Pharo Web Service
-
12-10-2019 - |
Вопрос
Многие языки имеют MicroFrameWorks для написания очень крошечных веб -сайтов или веб -сервисов, таких как колба для Python или Sinatra для Ruby. На скрипе, кажется, нет никаких эквивалентных; Илиад, Seaside и AIDA очень тяжелые, чтобы просто иметь небольшой сервис. Как предпочитает это сделать? Прямо вводить Hanlder в Comanche или Swazoo?
Решение
Я хотел бы поделиться тем, что, как мне кажется, является более современной информацией (по состоянию на конец 2012 года).
Цинковые компоненты
В настоящее время в Pharo 1.4/2.0 стандарт De-Facto для HTTP Client/Server, по-видимому, является Цинк HTTP -компоненты. Анкет И последняя версия Seaside (3.0) также переключилась на цинк.
Конечно, вы можете использовать цинк напрямую для реализации веб-услуг или обслуживания веб-страниц.
Посмотрите особенно на занятия ZnServer
и ищите такие занятия, как Zn*Delegate
(как ZnDefaultServerDelegate
или же ZnStaticFileServerDelegate
)
Приморский отдых
Последние версии Приморский Включите поддержку для Restful Web-Services. Это можно использовать для реализации веб-сервисов или обслуживания веб-страниц. Это довольно просто.
Для получения дополнительной информации посмотрите на главу «Службы отдыха» онлайн -приморская книга. Анкет Эта глава посвящена реализации веб-услуг, но она также работает для веб-страниц.
Ratpack
Мне также рассказали о Ratpack, похожей на синатрой веб-раме, разработанной Тимом Фельгенрефом. Есть два репозитория. Я думаю, что GitHub One более позднее. Глянь сюда:
Эта информация поступает из Подобный вопрос Я опубликовал недавно.
Другие советы
«В этом конкретном случае у меня буквально есть три URL -адреса, которые должны делать вещи через HTTP Post; вот и все».
Для действительно простых случаев, вы можете просто зарегистрироваться в (или подкласс) Httpservice, как SO (из комментария класса, см. Для получения дополнительной информации/параметров):
(HttpService on: 8080 named: 'Example Http Service')
onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
start
Вы также можете использовать чайник. Анкет Teapot - это микро -веб -структура поверх компонентов Zinc HTTP, которая фокусируется на простоте и простоте использования. Это менее 500 строк кода, не считая тестов.
Teapot on
GET: '/hi' -> 'Bonjour!';
GET: '/hi/<user>' -> [:req | 'Hello ', (req at: #user)];
GET: '/say/hi/*' -> (Send message: #greet: to: greeter);
start.
(ZnEasy get: 'http://localhost:1701/hi/user1') entity string. "Hello user1"
Есть доступные шаблоны усов, выходные трансформаторы, перед фильтрами. Структура хорошо задокументирована.
Вы можете подкласс Swazoisy в Swazoo для такого микроам-сайта, но я думаю, что вы скоро закончите вам необходимость большей функциональности, поэтому начинать непосредственно на одной из этих трех структур лучше делать долгосрочные.
То, что они тяжелые, возможно, просто впечатление и отсутствие лучшей документации об использовании для таких простых веб -сайтов. Кроме того, если вы посмотрите на Framework как Blackbox, которая сложна внутри, но проста внешне, то я бы сказал, что все веб -фреймворки Smalltalk довольно просты по сравнению с другими веб -структурами.